从光驱插槽中的 SSD 双重启动

从光驱插槽中的 SSD 双重启动

我有一台装有 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时没有进行修改。所以选项是(按照目前设置的顺序):

  1. 内置光盘驱动器
  2. 外部设备
  3. 内置硬盘驱动器
  4. 网络

谢谢!

编辑:

我已经重新运行安装过程,以防我犯了一些愚蠢的错误。虽然我仍然无法让它工作,但我在配置 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 菜单。

  1. 安装 Windows,然后安装 Linux。
  2. 启动进入 Windows 并在命令行中运行:

    1. diskpart
    2. select volume [volume_number](看笔记2在帖子的最后)
    3. assign letter [any unused letter (usually different from C:)]
    4. B:(或您刚刚选择的字母)
    5. cd EFI/Microsoft/Boot
    6. rename bootmgfw.efi bootmfgw.efi.old
  3. 重新启动计算机,它应该直接进入 Linux,因为它找不到/EFI/Microsoft/Boot/bootmgfw.efi我们刚刚重命名的。

    1. 打开终端并输入sudo gedit /etc/grub.d/11_Windows
    2. 在文本文件中输入下面的代码,您应该在其中替换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
  1. (继续)
    1. 保存文件并关闭编辑器
    2. 更改文件权限:sudo chmod a+x /etc/grub.d/11_Windows
    3. 更新 Grub,以便我们刚刚定义的选项出现在启动计算机时的列表中:sudo update-grub

就是这样,现在当您重新启动计算机时,您应该在菜单上看到 Linux 和 Windows。

笔记2:在链接的教程中,作者选择了磁盘和分区而不是卷,但在我的情况下,我需要的只是指定卷(实际上否则它不会工作)。卷号、磁盘号和分区号将取决于计算机以及您安装 Sony 提供的 Windows 的方式。就我而言,它是第 3 卷。要找到您的卷,您需要重复该过程(remove letter [letter]每次使用删除您分配的字母),直到找到/EFI包含bootmgfw.efi.键入list volume/ list disk/list partition查看可用的不同选项。

相关内容