Arch-Linux

從光碟機插槽中的 SSD 雙啟動

  • May 6, 2017

我有一台裝有 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 的方式?

這將幫助我在一個方向或另一個方向上進行搜尋。

NB:在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

閱讀http://gpuenteallott.blogspot.co.uk/2012/12/dual-boot-windows-7-and-ubuntu-with-uefi.html上的部落格文章,這似乎是 Sony Vaio 電腦的問題, Windows 總是忽略安裝的任何其他作業系統,繞過 Grub。作者提供了一個對我有用的解決方案,所以我將在下面描述它。

NOTE1:我實際上已經嘗試過使用 Ubuntu 而不是 Arch Linux,因為我決定切換,但我認為這裡的問題與 Windows 的安裝方式有關,而不是與 Linux 版本有關,所以我希望這適用於 Arch也是。如果沒有,我使用 Arch Linux 和 Windows 的方式是使用MBR 分區安裝 Arch Linux,然後在 UEFI 和 Legacy 之間切換 BIOS 以選擇是執行 Windows 還是 Arch。無論何時將引導模式設置為 UEFI,Windows 都會啟動,而無論何時將其設置為 Legacy 模式,都會啟動 Arch(每個都無法看到其他作業系統)。出於實際目的,這與 Grub 的預期結果相似,只是需要在啟動筆記型電腦時按 F2 並在每次需要切換時導航 BIOS 菜單時付出額外的努力。

  1. 安裝 Windows,然後安裝 Linux。

  2. 啟動到 Windows 並在命令行中執行:

  3. diskpart

  4. select volume [volume_number](見文末注2 )

  5. assign letter [any unused letter (usually different from C:)]

  6. B:(或您剛剛選擇的任何字母)

  7. cd EFI/Microsoft/Boot

  8. rename bootmgfw.efi bootmfgw.efi.old

  9. 重新啟動電腦,它應該直接進入 Linux,因為它不會找到/EFI/Microsoft/Boot/bootmgfw.efi我們剛剛重命名的那個。

  10. 打開終端並輸入sudo gedit /etc/grub.d/11_Windows

  11. 在文本文件中輸入下面的程式碼,您應該在其中替換hd0gpt1根據您的情況使用實際的驅動器和卷。就我而言,它是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. (繼續)

  2. 保存文件並關閉編輯器

  3. 更改文件權限:sudo chmod a+x /etc/grub.d/11_Windows

  4. 更新 Grub,使我們剛剛定義的選項在啟動電腦時出現在列表中:sudo update-grub

就是這樣,現在當您重新啟動電腦時,您應該會在菜單上看到 Linux 和 Windows。

**注意2:**在連結的教程中,作者選擇了磁碟和分區而不是卷,但在我的情況下,我只需要指定卷(實際上它不會工作)。卷號、磁碟號和分區號將取決於電腦以及您安裝 Sony 提供的 Windows 的方式。在我的情況下,它是第 3 卷。要找到您的,您需要重複該過程(remove letter [letter]每次使用刪除您分配的字母),直到找到包含/EFI包含bootmgfw.efi. 鍵入list volume/ list disk/list partition以查看可用的不同選項。

引用自:https://unix.stackexchange.com/questions/337996