從光碟機插槽中的 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 的方式?
這將幫助我在一個方向或另一個方向上進行搜尋。
NB:在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
閱讀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 菜單時付出額外的努力。
安裝 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
以查看可用的不同選項。