个人有两台笔记本电脑,一台Sony安装Win10,平时给岳父上上网,自己使用比较少;另一台是MBA,自己在捣腾点代码,写点东西。今天心血来潮,想体验一个KDE的plasma 5,于是又来折腾Sony安装双系统。由于在使用MBA之前,也在Sony上安装过Archlinux,不过后来安装Win10,又把Archlinux删除了。这次的双系统,Linux还是选择Archlinux。
安装Archlinux按照Wiki一路下来很顺利,最后安装plasma,使用了一下,感觉也不够如此,可能是使用Mac OSX时间长了的原因。后面发现想回到Win10,发现Grub默认没有生成Win10的引导菜单。
我的Sony本本比较老,并不支持UEFI,所以系统选择安装Grub来引导。
# grub-install --target=i386-pc --recheck /dev/sda# grub-mkconfig -o /boot/grub/grub.cfg采用grub-mkconfig生成的grub.cfg并没有引导Win10的菜单,解决方法如下。为了实现多系统启动,需要安装os-prober。进入到/etc/grub.d/目录下,发现存在30_os-prober文件,说明os-prober是安装的(pacman -S grub会自动安装)。
我的Windows分区是/dev/sda1。首先,找到Windows系统分区的UUID(bootmgr存放其上)。
# mount /dev/sda1 /mnt# grub-probe --target=fs_uuid /mnt/bootmgr70B235F6749E84AE# grub-probe --target=hints_string /mnt/bootmgr--hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1接着,将下面的代码添加到/boot/grub/grub.cfg中,注意替换其中的fs_uuid,即70B235F6749E84AE。保存grub.cfg文件,重启系统,在gurb菜单就可以看到Windows 10 (loader) (on /dev/sda1)项了。选择,成功进入win10。
### BEGIN /etc/grub.d/30_os-prober ###menuentry 'Windows 10 (loader) (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-chain-70B235F6749E84AE' { insmod part_msdos insmod ntfs set root='hd0,msdos1' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 70B235F6749E84AE else search --no-floppy --fs-uuid --set=root 70B235F6749E84AE fi parttool ${root} hidden- drivemap -s (hd0) ${root} chainloader +1}set timeout_style=menuif [ "${timeout}" = 0 ]; then set timeout=10fi### END /etc/grub.d/30_os-prober ###注:后经验证,grub-mkconfig无法扫描到win10,是由于少安装了os-prober。
# pacman -S os-prober参考:GRUB_(简体中文)