我有一台装有 Windows 7 64 位的 Sony Vaio SVS15,其中我已将光驱替换为驱动器盒上的 SSD。我的目标是将 Windows 单独保留在原始硬盘驱动器(也是 SSD)中,并在第二个驱动器(在光驱位置)上安装 Arch Linux。
新 SSD 的安装非常顺利,并且可以正确检测、可格式化等。我已经按照本教程中的说明从 U 盘安装了 Arch Linux:
我遇到的问题是,当我启动计算机时,它会直接进入Windows,而我是在Windows之后安装Arch的。两个驱动器都使用 GPT,并且 Windows 7 64 位支持 UEFI。
我的问题是:您认为问题是否出在 Arch 所在的 SSD(也就是光驱所在的位置)上?或者你认为它来自我安装 Arch/Grub 的方式?
这将对我朝某个方向或另一个方向进行搜索有很大帮助。
注意:在BIOS的启动顺序中,仍然有“光驱”,即更换为SSD时没有进行修改。所以选项是(按照目前设置的顺序):
- 内置光盘驱动器
- 外部设备
- 内置硬盘驱动器
- 网络
谢谢!
编辑:
我已经重新运行安装过程,以防我犯了一些愚蠢的错误。虽然我仍然无法让它工作,但我在配置 Grub2 时注意到一条可能相关的消息。我输入的命令是:
grub-mkconfig -o boot/grub/grub.cfg
我arch-chroot
之前已经执行过并在 /boot 中安装了 512MiB EFI 分区。运行该命令时,我收到一些警告和“错误的幻数”消息。然后它说“完成”,所以我不确定这是否是一个错误:
[root@archiso /]# grub-mkconfig -o boot/grub/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-linux
Found initrd image(s) in /boot: initramfs-linux.img
Found fallback initrd image(s) in /boot: initramfs-linux-fallback.img
WARNING: Failed to connect to lvmetad. Falling back to device scanning.
[ 171.937201] FAT-fs (md126p4): bogus number of reserved sectors
[ 171.940041] squashfs: SQUASHFS error: Can't find a SQUASHFS superblock on md126p4
[ 171.942729] EXT4-fs (md126p4): VFS: Can't find ext4 filesystem
[ 171.945366] EXT4-fs (md126p4): VFS: Can't find ext4 filesystem
[ 171.948756] EXT4-fs (md126p4): VFS: Can't find ext4 filesystem
[ 171.955360] FAT-fs (md126p4): bogus number of reserved sectors
[ 171.957919] ntfs: (device md126p4): read_ntfs_boot_sector(): Primary boot sector is invalid.
[ 171.958986] ntfs: (device md126p4): read_ntfs_boot_sector(): Mount option error=recover not used. Aborting without trying to recover.
[ 171.960112] ntfs: (device md126p4): ntfs_fill_super(): Not an NTFS volume.
[ 171.965184] ufs: You didn't specify the type of your ufs filesystem
[ 171.965184]
[ 171.965184] mount -t ufs -o ufstype=sun|sunx86|44bsd|ufs2|5xbsd|old|hp|nextstep|nextstep-cd|openstep ...
[ 171.965184]
[ 171.965184] >>>WARNING<<< Wrong ufstype may corrupt your filesystem, default is ufstype=old
[ 171.970303] ufs: ufs_fill_super(): bad magic number
done
答案1
阅读博客文章http://gpuenteallott.blogspot.co.uk/2012/12/dual-boot-windows-7-and-ubuntu-with-uefi.html,这似乎是 Sony Vaio 计算机的问题,Windows 总是在启动时忽略已安装的任何其他操作系统,绕过 Grub。作者提供了一个对我有用的解决方案,所以我将在下面描述它。
注1:实际上,我已经在 Ubuntu 而不是 Arch Linux 上进行了尝试,因为我决定切换,但我相信这里的问题与 Windows 的安装方式有关,而不是与 Linux 版本有关,所以我希望这也适用于 Arch 。如果没有,我使用 Arch Linux 和 Windows 的方法是使用MBR分区,然后在 UEFI 和 Legacy 之间切换 BIOS 以选择运行 Windows 还是 Arch。每当将启动模式设置为 UEFI 时,都会启动 Windows,而每当将启动模式设置为 Legacy 模式时,都会启动 Arch(两者都无法看到其他操作系统)。出于实际目的,这与 Grub 的预期结果类似,只是需要在启动笔记本电脑时按 F2 以及每次需要切换时导航 BIOS 菜单。
- 安装 Windows,然后安装 Linux。
启动进入 Windows 并在命令行中运行:
diskpart
select volume [volume_number]
(看笔记2在帖子的最后)assign letter [any unused letter (usually different from C:)]
B:
(或您刚刚选择的字母)cd EFI/Microsoft/Boot
rename bootmgfw.efi bootmfgw.efi.old
重新启动计算机,它应该直接进入 Linux,因为它找不到
/EFI/Microsoft/Boot/bootmgfw.efi
我们刚刚重命名的。- 打开终端并输入
sudo gedit /etc/grub.d/11_Windows
- 在文本文件中输入下面的代码,您应该在其中替换
hd0
并替换gpt1
为您所在情况的实际驱动器和卷。就我而言,是的set root='(hd0,gpt3)
。
- 打开终端并输入
#!/bin/sh -e
echo "Adding Windows 7">&2
cat << EOF
menuentry "Windows 7"{
set root='(hd0,gpt1)'
chainloader /EFI/Microsoft/Boot/bootmgfw.efi.old
}
EOF
- (继续)
- 保存文件并关闭编辑器
- 更改文件权限:
sudo chmod a+x /etc/grub.d/11_Windows
- 更新 Grub,以便我们刚刚定义的选项出现在启动计算机时的列表中:
sudo update-grub
就是这样,现在当您重新启动计算机时,您应该在菜单上看到 Linux 和 Windows。
笔记2:在链接的教程中,作者选择了磁盘和分区而不是卷,但在我的情况下,我需要的只是指定卷(实际上否则它不会工作)。卷号、磁盘号和分区号将取决于计算机以及您安装 Sony 提供的 Windows 的方式。就我而言,它是第 3 卷。要找到您的卷,您需要重复该过程(remove letter [letter]
每次使用删除您分配的字母),直到找到/EFI
包含bootmgfw.efi
.键入list volume
/ list disk
/list partition
查看可用的不同选项。