在不改变win10引导前提下,新增多个linux引导的方法
利用win10操作系统已有的EFI分区,在不改变默认从win10启动的前提下,通过修改grub.cfg的方法,可以实现多个系统的引导,但进入linux稍微比较麻烦。
安装puppy Linux到U盘,确认可引导
在官网https://puppylinux.com/ 下载一个最新的FossaPup64 9.5 吧,安装方法不记得了,iso的文件,应该是写入U盘就可以了。 开机从U 盘UEFI模式启动,确认能正常进入puppy的系统。 如果是最新的WiFi无线网卡,可能需要手工下载驱动,比如 AX200需要iwlwifi-cc-a0-50.ucode驱动文件。 dmesg|grep iwlwifi 可以看到无线网卡信息,记得是拷贝到某个路径下就完成驱动安装。
$ lspci |grep -i net
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)
02:00.0 Network controller: Intel Corporation Wi-Fi 6 AX200 (rev 1a)
puppy迁移到本地D盘
把puppy的U盘内容拷贝到D盘(我的是ntfs分区),在配置好之后就可以去掉U盘,通过本地硬盘引导。
EFI分区是fat格式的,windows版本的Disk Genius估计可以实现。 如果是ext分区的,建议在linux下挂载后拷贝,win下软件不太好找,Disk Genius免费版只能拷贝小文件。
把puppy的efi/boot目录下的文件grubx64.efi和grub.cfg,拷贝到wind10的EFI分区,也是efi/boot目录。 未替换原有的bootx64.efi文件。
puppy的grub.cfg 默认内容如下,直接使用,grub应该是找不到D盘的内核vmlinuz文件,从而出现panic错误,无法启动linux。
set timeout=5
set gfxmode=auto,1024x768
menuentry 'fossapup64 9.5' --class puppy {
linux /vmlinuz pfix=fsck pmedia=usbflash
initrd /initrd.gz
}
确认D盘的分区编号 xxyy@xyhp:~$ lsblk
NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
sda
├─sda1 vfat COREELEC C176-BC81 84.7M 83% /media/xxyy/COREELEC
└─sda2 ext4 STORAGE 44a7dec3-2b8f-435c-8a3c-1ffd60445d35 23.8G 10% /media/xxyy/STORAGE
nvme0n1
├─nvme0n1p1 vfat SYSTEM D861-F479
├─nvme0n1p2
├─nvme0n1p3 ntfs Windows C8D0F585D0F579D0 46.7G 64% /media/xxyy/Windows
├─nvme0n1p4 ntfs data C822D67B22D66E46 382G 46% /media/xxyy/data
├─nvme0n1p5 ext4 linux c664dd10-7cb6-8e4b-a72f-634dc6c08ba2 95G 14% /
└─nvme0n1p6 ntfs Windows RE Tools F0C0E1BEC0E18AE4
xxyy@xyhp:~$
我的D 盘的盘符是data,对应分区编号是4, 挂载win10的efi分区 root@xyhp:~# mount /dev/nvme0n1p1 /mnt
需要在 menuentry ‘fossapup64 9.5’ 的下一行加上 set root=(hd0,gpt4) 如果不对,可以在出现操作系统选择菜单的时候,选中按e,输入hd按tab查看。
引导Linux方法
HP开机按ESC再选择F9的那个,选择Boot From File,再选中EFI/boo/grubx64.efi来引导linux。 去掉U盘,顺利的话,应该可以进入puppy。之前搞的,记不清楚了。
UOS的grub引导菜单修改
我的UOS是从虚拟机直接拷贝过来的,不是在笔记本电脑上安装的。 生成一个新的引导文件new root@xyhp:/mnt/EFI/boot# grub-mkconfig -o new 合并成新的grub.cfg。 合并时,去掉puppy的两行
但是默认并不能引导UOS,AMD5800U识别不了。 通过尝试,发现修改点为: 1、 #set root=(hd0,gpt5)不是必须的,可以不增加,grub通过uuid识别的。 2、需要把ro修改为rw,否则会出现蓝色统信UOS闪烁后死机;需要删除DEEPIN_GFXMODE=$DEEPIN_GFXMODE;去掉quiet便于查看日志。
linux /boot/vmlinuz-5.7.7-amd64-desktop root=UUID=c664dd10-7cb6-8e4b-a72f-634dc6c08ba2 ro quiet splash DEEPIN_GFXMODE=$DEEPIN_GFXMODE
修改后:
linux /boot/vmlinuz-5.7.7-amd64-desktop root=UUID=c664dd10-7cb6-8e4b-a72f-634dc6c08ba2 rw splash
3、增加AMD CPU的微码,提前准备文件 /boot/amd-ucode.img,并把
initrd /boot/initrd.img-5.7.7-amd64-desktop
修改为
initrd /boot/amd-ucode.img /boot/initrd.img-5.7.7-amd64-desktop
记录一下windows的引导菜单
开机默认引导windows,这个菜单没有必要;如果费心进入grub后选择这个菜单,也是可以引导进入win10的。
menuentry 'Windows Boot Manager (on /dev/nvme0n1p1)' --class windows --class os $menuentry_id_option 'osprober-efi-D861-F479' {
insmod part_gpt
insmod fat
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root D861-F479
else
search --no-floppy --fs-uuid --set=root D861-F479
fi
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
|