页次: 1
手里有个250G移动硬盘,是用U启动制作工具 做的支持BIOS+UEFI启动工具盘。
想在上面安装个Archlinux,实现bios+UEFI方式引导Arch,同时保留原有的维护工具。我的安装过程:
1,规划分区
按照这几天网上搜索的方案 ,进Winpe用diskgen工具规划分区,前面的(UD)隐藏分区和最后的EFI分区不动,用户分区划分30G空间用于安装linux,如图:
2,安装Arch
之后安装按照百度出来的常见教程,小坑都百度解决了,与教程不同的是安装配置grub命令:
pacman -S grub efibootmgr os-prober
grub-install --recheck /dev/sdx :我估计这条命令会破坏原来U启动制作的引导,所以跳过这个直接运行下一行了。
grub-mkconfig -o /boot/grub/grub.cfg :这条命令之后,挂载efi分区,把生成成的grub.cfg文件,拷贝到efi分区/boot/grub/目录。
3,处理引导
一、 UEFI启动:
进windows,把400mEFI分区原有win8启动efi文件:G:\EFI\boot\bootx64.efi 改名为bootx64win8.efi
网上帖子里下载提取了grubx64.efi,复制到G:\EFI\boot\ ,改名为bootx64.efi ,此时UEFI启动就会引导grub2加载grub.cfg菜单了。
之后添加win8PE启动项,记事本打开grub.cfg文件,在Archlinux的menuentry之前添加:
menuentry "UqidongWin8x64Pe" {
insmod part_msdos
insmod fat
search --no-floppy -f --set=root /EFI/boot/bootx64win8.efi
chainloader /EFI/boot/bootx64win8.efi
}
二、bios方式启动
windows下用Fbinst工具,编辑隐藏分区IUQD/GRUB/MENU.LST文件,添加菜单项:
title Arch linux
uuid 7f1d2fbe-7dc8-4a68-a21c-b4f5b2d1072e
kernel /boot/vmlinuz-linux root=UUID=7f1d2fbe-7dc8-4a68-a21c-b4f5b2d1072e rw loglevel=3 quiet
initrd /boot/initramfs-linux.img
}
制作完成,测试结果:
单位的技嘉B360主板,UEFI 与Bios方式都能启动linux
单位的技嘉B85主板,F12启动设备选单不出UEFI设备, csm uefi明明都是开启的。bios方式正常启动linux。
以下内容最最重要,本帖目的就是想求助解决我家电脑不能启动Archlinux的问题:
我家的P43-ES3G主板,不支持UEFI,bios启动无法进入linux报错类似下图(图片网上搜的别人的,反正都是找不到设备 uuid什么什么的),我的uuid数据是从安装过程生成的grub.cfg里拷贝的,确定是对的。
感谢6楼前辈指出我用图不妥当,现在把我家里电脑报错拍上来:
在这个报错界面,键盘失灵无法输入,家里还就只有这一个usb的键盘。
最近编辑记录 来看看就走 (2020-03-06 16:20:47)
离线
我之前只尝试过 bios 方式在优盘启动 arch,类似的界面也曾遇到过。
能看到这个界面, 说明 bios 启动成功了, 中断在了 grub 引导这一步, 没有找到指定 UUID 的设备(分区)。
原因,我觉得有这几个方面:
1. UUID 是否准确, 这需要检查 grub.cfg 配置
2. 分区表的问题,BIOS+UEFI 双启动是采用分区工具,在移动设备上创建畸形的分区表, 来兼顾 BIOS 和 UEFI。有可能 grub 对于这种畸形的分区表支持不好, 不认。
3. 因前置 USB 供电不足导致移动硬盘在启动时没有准确识别。可以把移动硬盘连接到主机箱后面的 USB 口启动,试试看。
暂时想到了这些, 希望能帮到楼主。
曾经用过 CentOS,怀念 Gnome2 的桌面!现在投奔 ArchLinux 阵营,深深地被它 K.I.S.S 理念所吸引了……
离线
我之前只尝试过 bios 方式在优盘启动 arch,类似的界面也曾遇到过。
能看到这个界面, 说明 bios 启动成功了, 中断在了 grub 引导这一步, 没有找到指定 UUID 的设备(分区)。原因,我觉得有这几个方面:
1. UUID 是否准确, 这需要检查 grub.cfg 配置
2. 分区表的问题,BIOS+UEFI 双启动是采用分区工具,在移动设备上创建畸形的分区表, 来兼顾 BIOS 和 UEFI。有可能 grub 对于这种畸形的分区表支持不好, 不认。
3. 因前置 USB 供电不足导致移动硬盘在启动时没有准确识别。可以把移动硬盘连接到主机箱后面的 USB 口启动,试试看。暂时想到了这些, 希望能帮到楼主。
错误,这是内核已正常运行,但是initial ramfs没有找到目标设备作为真根文件系统挂载
反社会,精神极其不稳定,随时可能炸碎身边所有人
离线
你grub-install的时候哪个分区挂载到了哪里也没说啊
记不太清了, 好像/dev/sda3挂载到/mnt了,然后安装好看见Arch装到30G分区了。
没有运行过grub-install 命令,怕把原来的启动项搞没,我还想保留原有的启动着。
离线
我之前只尝试过 bios 方式在优盘启动 arch,类似的界面也曾遇到过。
能看到这个界面, 说明 bios 启动成功了, 中断在了 grub 引导这一步, 没有找到指定 UUID 的设备(分区)。原因,我觉得有这几个方面:
1. UUID 是否准确, 这需要检查 grub.cfg 配置
2. 分区表的问题,BIOS+UEFI 双启动是采用分区工具,在移动设备上创建畸形的分区表, 来兼顾 BIOS 和 UEFI。有可能 grub 对于这种畸形的分区表支持不好, 不认。
3. 因前置 USB 供电不足导致移动硬盘在启动时没有准确识别。可以把移动硬盘连接到主机箱后面的 USB 口启动,试试看。暂时想到了这些, 希望能帮到楼主。
在B85 和 B360主板能正常启动到xfce4界面,排除UUID错误问题,不能完全排除分区表兼容性问题。
我一直都是把usb头和辅助供电头全插在主机后置usb的,基本排除供电不足问题。
离线
“图片网上搜的别人的,反正都是找不到设备 uuid什么什么的”这种描述和图片没有任何帮助,你觉得类似就是类似,你就这么自信实际情况不是差很多?能这样描述问题也是奇葩了
所有黑底白字的图都类似,是不是我遇到问题也可以随便到网上找张黑底白字的告诉你差不对就这样,这个报错就是黑底白字的,你软件有问题,你去修理吧
反社会,精神极其不稳定,随时可能炸碎身边所有人
离线
“图片网上搜的别人的,反正都是找不到设备 uuid什么什么的”这种描述和图片没有任何帮助,你觉得类似就是类似,你就这么自信实际情况不是差很多?能这样描述问题也是奇葩了
所有黑底白字的图都类似,是不是我遇到问题也可以随便到网上找张黑底白字的告诉你差不对就这样,这个报错就是黑底白字的,你软件有问题,你去修理吧
我这确时有问题,发帖时在单位值班,没啥事的时候就在在网上搜了搜我家里电脑遇到的问题,看见贴吧有个贴好像和我的问题一样还没解决方案,就把图搞过来用了一下。现在我换移动硬盘启动下电脑,然后拍个图上来。
离线
可能你写内核参数的方法不对,应该写root=UUID=7f1d2fbe7dc84a68a21cb4f5b2d1072e 你再查一下你的grub.cfg
我怀疑你在单位的电脑上根本就没有用BIOS方式启动,主板最终以UEFI方式boot了内核,起作用的是你的grubx64.efi,也就是grub.cfg作为菜单配置其作用了,而你的grub.cfg是正确书写的。
但是到了家里UEFI彻底没了,然后就只有你的grub legacy+menu.lst起作用,然后你这个参数写的不对,initramfs无法处理你这个参数
其实说白了你还是有很多问题没说清楚的,你的分区表MBR还是GPT,你没有执行grub-install,你编辑的这个隐藏分区IUQD/GRUB/MENU.LST文件路径也很奇怪,我们就猜你是MBR,并且MBR里面有个grub-legacy吧
前面的(UD)隐藏分区 你这个什么说法我也不懂,你贴的磁盘管理器的截图显示前面一大段都没有分区,是未分配的空间,它不是分区你就不要乱表达,很容易造成误判
最近编辑记录 xtricman (2020-03-06 19:40:19)
反社会,精神极其不稳定,随时可能炸碎身边所有人
离线
细节我就不看了,太多。直接从错误现象入手:你应该使用 fallback 那个 initramfs。因为默认的那个为了效率,只打包了当前硬件环境需要的内核模块,所以换硬件之后就会出问题。
另外你的步骤有些野,怎么还跑到 Windows 下用 grub4dos 了?grub 是支持 UEFI 和 MBR 启动的,所以只要分别安装好就可以了,配置文件可以共用。参见: http://adam8157.info/blog/2015/04/hybri … gacy-bios/
离线
怎么还跑到 Windows 下用 grub4dos 了?grub 是支持 UEFI 和 MBR 启动的,所以只要分别安装好就可以了,配置文件可以共用。参见: http://adam8157.info/blog/2015/04/hybri … gacy-bios/
可能是原来装了Win8pe的时候就有这个东西了。我早就发现了grub-install没执行却要搞menu.lst是什么操作,应该就是有个grub-legacy了,grub4dos就是这种东西。
至于fallback的initramfs会有用吗?我觉得该找不到的文件系统估计还是找不到哦,要不就是某些接口的旧磁盘在默认的initramfs里面没有驱动就找不到?
反社会,精神极其不稳定,随时可能炸碎身边所有人
离线
可能你写内核参数的方法不对,应该写root=UUID=7f1d2fbe7dc84a68a21cb4f5b2d1072e 你再查一下你的grub.cfg
我怀疑你在单位的电脑上根本就没有用BIOS方式启动,主板最终以UEFI方式boot了内核,起作用的是你的grubx64.efi,也就是grub.cfg作为菜单配置其作用了,而你的grub.cfg是正确书写的。
但是到了家里UEFI彻底没了,然后就只有你的grub legacy+menu.lst起作用,然后你这个参数写的不对,initramfs无法处理你这个参数其实说白了你还是有很多问题没说清楚的,你的分区表MBR还是GPT,你没有执行grub-install,你编辑的这个隐藏分区IUQD/GRUB/MENU.LST文件路径也很奇怪,我们就猜你是MBR,并且MBR里面有个grub-legacy吧
前面的(UD)隐藏分区 你这个什么说法我也不懂,你贴的磁盘管理器的截图显示前面一大段都没有分区,是未分配的空间,你这基础概念搞不清就不要瞎使用名词
关于UUID,我都是复制粘贴来的,efi分区里的/boot/grub/grub.cfg是安装时的linux环境下由30G分区cp过来的,在单位B360主板uefi模式启动成功就证明efi分区里的/boot/grub/grub.cfg菜单没问题。之后的写入隐藏分区的grub4启动项里用的UUID是在windows环境打开efi盘/boot/grub/grub.cfg复制的。下面整段菜单项来自grub.cfg:
menuentry 'Arch Linux, with Linux linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-7f1d2fbe-7dc8-4a68-a21c-b4f5b2d1072e' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_msdos
insmod ext2
set root='hd0,msdos3'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275/(null)/sas/disk@0,msdos3' --hint-bios=hd0,msdos3 --hint-efi=hd0,msdos3 --hint-baremetal=ahci0,msdos3 7f1d2fbe-7dc8-4a68-a21c-b4f5b2d1072e
else
search --no-floppy --fs-uuid --set=root 7f1d2fbe-7dc8-4a68-a21c-b4f5b2d1072e
fi
echo 'Loading Linux linux ...'
linux /boot/vmlinuz-linux root=UUID=7f1d2fbe-7dc8-4a68-a21c-b4f5b2d1072e rw loglevel=3 quiet
echo 'Loading initial ramdisk ...'
initrd /boot/initramfs-linux.img
}
关于分区表,在diskgen里查看是MBR的,有图:
关于隐藏分区IUQD/GRUB/MENU.LST,这些是用U启动工具UEFI版制作生成的,支持bios+UEFI启动,制作工具图:
制作之后它在我的盘上创建了3部分,1.隐藏分区870M(里面存的bios启动的菜单和各种镜像) 2.用户数据分区230G 3.卷标为EFI的400M FAT格式分区。 (30G分区是我用diskgen手动从230G分区划出来的装了Arch)
关于“我怀疑你在单位的电脑上根本就没有用BIOS方式启动,主板最终以UEFI方式boot了内核”,可能性不大,这个盘UEFI引导调用grub.cfg第一级菜单是个黑底白字三行(我加了个win8PE项变得3行),BIOS启动的grub4菜单是个彩色的好多行而且菜单项里没有涉及grub2的grub.cfg,两种模式应该不会错的,图:
关于(UD)隐藏分区 和 编辑bios模式的grub4菜单,(UD)这个东西我搜索的FbinstTool里打开我的盘看到的,估计它是一类设备或者U启动工具给此处特殊硬盘空间自定义的名字,我也是用FbinstTool工具编辑添加grub4菜单项的,图:
图2:
图3:
离线
哦,那就试试依云说的用fallback的吧,可能真就那个initramfs里面没有你硬盘的内核模块,本来是想让你在那个shell里看下/dev,但是你就一个USB键盘,估计也是不能了。
至于这个U启动…我们不知道这类玩意搞了什么操作,看似傻瓜操作,实则无法debug的,如果真的这里有问题,我们也不会关心,只会让你用手工方法自己部署bootloader,
从现象推断bootloader确实正确启动了Linux内核并加载了initramfs只是没有找到根文件系统,这就压根不是什么bootloader的问题,是OS自己的问题,所以你还是试下fallback initramfs
最近编辑记录 xtricman (2020-03-06 19:54:37)
反社会,精神极其不稳定,随时可能炸碎身边所有人
离线
细节我就不看了,太多。直接从错误现象入手:你应该使用 fallback 那个 initramfs。因为默认的那个为了效率,只打包了当前硬件环境需要的内核模块,所以换硬件之后就会出问题。
另外你的步骤有些野,怎么还跑到 Windows 下用 grub4dos 了?grub 是支持 UEFI 和 MBR 启动的,所以只要分别安装好就可以了,配置文件可以共用。参见: http://adam8157.info/blog/2015/04/hybri … gacy-bios/
感谢,启动fallback 那个 initramfs成功了,目前图省事还是在grub4的菜单加了一项fallback的:
title Arch fallback
uuid 7f1d2fbe-7dc8-4a68-a21c-b4f5b2d1072e
kernel /boot/vmlinuz-linux root=UUID=7f1d2fbe-7dc8-4a68-a21c-b4f5b2d1072e rw loglevel=3 quiet
initrd /boot/initramfs-linux-fallback.img
感觉链接给的方案更好,之后再找个盘鼓捣一下。
离线
哦,那就试试依云说的用fallback的吧,可能真就那个initramfs里面没有你硬盘的内核模块,本来是想让你在那个shell里看下/dev,但是你就一个USB键盘,估计也是不能了。
至于这个U启动…我们不知道这类玩意搞了什么操作,看似傻瓜操作,实则无法debug的,如果真的这里有问题,我们也不会关心,只会让你用手工方法自己部署bootloader,
从现象推断bootloader确实正确启动了Linux内核并加载了initramfs只是没有找到根文件系统,这就压根不是什么bootloader的问题,是OS自己的问题,所以你还是试下fallback initramfs
ok成功了,感谢前辈耐心回帖。
离线
页次: 1