不使用 initramfs,如何启动 Linux

2018-10-28 19:43:50 +08:00
 station

我之前问题帖子有人说到来了无 initramfs/initrd

受启发我找到了 https://www.zhihu.com/question/30599860/answer/49143877

我用 efi-stub 代替 grub

裁剪的内核基础驱动(硬盘驱动,文件系统)和一些硬件驱动都编译进内核了

我也知道是错误问题是 root device,但找不到头绪

5627 次点击
所在节点    Linux
55 条回复
Osk
2018-10-28 19:57:48 +08:00
要使用 uuid5 来指定根,恐怕 initramfs 少不了,印象中这是 initramfs 里的用户空间程序识别的,不使用 initramds 只有指定 /dev/sdxy 这种了,或者试试 /dev/disk/by-uuid/xxxxx 这种?
choury
2018-10-28 19:58:40 +08:00
它下面不是列出了识别出来的分区 UUID 了吗,没有你指定的那个,要么你指定的 UUID 所需要的驱动没有,所以没找到,要么你指定的 UUID 是错的,你看它列出来的 ID 哪个是你的 root 分区,改成那个
rock6y
2018-10-28 20:01:13 +08:00
编译内核把驱动加进去
cattyhouse
2018-10-28 20:34:12 +08:00
启动 linux 连 bootloader 都可以不要,直接 UEFI Shell
station
2018-10-28 20:58:10 +08:00
station
2018-10-28 21:03:52 +08:00
@Osk root device 可以了 但现在又卡住了,看上一楼回复图片
henglinli
2018-10-28 21:05:37 +08:00
root 分区所使用的文件系统一定要 builtin,否则得用 initramfs。
使用内核参数 root=PARTUUID=更好,兼容 @cattyhouse 说的那种。使用 blkid | grep sda2 获取。
bootload 建议用 systemd-boot。多数系统都使用 systemd 了,估计也会自带 systemd-boot。
我的 /etc/kernel/cmdline
root=PARTUUID=f0db77e4-6f83-4c85-b6d7-135c9b0582c9 rw rootfstype=btrfs rootflags=subvol=exherbo,autodefrag,compress=lzo init=/usr/lib/systemd/systemd
choury
2018-10-28 21:12:06 +08:00
@station #5 把 init 换成 sh 启动试下吧,不知道是不是 init 卡住了
likuku
2018-10-28 21:33:46 +08:00
想起以前玩 gentoo 时候的经验了,也是不用 EFI,不用 UUID

确保:
内核里 把正确的硬盘控制器编进去 y 而非 m,
内核里 把 kernel 和 root 所在分区的文件系统编进去 y 而非 m

引导工具 (不确定你使用 grub ) 里,所在的分区要写对,
假若是 GRUB 里是这么写: kernel(hd0,0) 代表 sda1 # 设备和分区都从 0 开始,告诉 GRUB kernel 所在的分区
kernel 后面的 root=/dev/sda1 这么写,是让 kernel 完成加载后,传递给 kernel 的参数,让 kernel 找到 /

若以上都可以正常工作,那么 / 已经就可以载入了。

最后,选择性可以把 /etc/fstab 里其它分区也都按 /dev/sda1 / 类似的格式写,不要用 UUID
station
2018-10-28 22:13:32 +08:00
@choury 还在试

接这张图真费劲 https://s1.ax1x.com/2018/10/28/igeQHI.png
choury
2018-10-28 22:21:56 +08:00
@station #10 确定下 /usr/lib/systemd/systemd 是否存在吧,error -2 的意思是文件不存在
station
2018-10-28 22:27:21 +08:00
@choury 存在是肯定的
station
2018-10-28 22:34:08 +08:00
@choury 换成 sh 也是同样的问题,估计是挂载问题吧
station
2018-10-28 22:34:44 +08:00
@henglinli /usr/lib/systemd/systemd 提示找不到文件,看 10 楼图
station
2018-10-28 22:36:12 +08:00
@likuku 最后,选择性可以把 /etc/fstab 里其它分区也都按 /dev/sda1 / 类似的格式写 这个怎么讲
henglinli
2018-10-28 22:42:44 +08:00
@station 这是我的例子啊。你的 init 是什么要看发行版或者管理员原配置。一般情况下不指定 init 或者使用 /sbin/init。
发现你使用的是 xfs,已经挂载上了。这个搞定之后,建议你在折腾下安全启动,给 bootloader kernel 都签下名。
xivisi
2018-10-28 22:42:56 +08:00
我目前就没有用 initramfs
gentoo
station
2018-10-28 22:47:27 +08:00
@henglinli 应该无关签名和安全启动,之前编译的使用了 initramfs 和 efi-stub 的都能启动
henglinli
2018-10-28 22:49:26 +08:00
@xivisi 我也没用 initramfs 而且所有模块 builtin,包括网卡和蓝牙的固件。
可惜前不久电脑意外断电就再也不行了。
henglinli
2018-10-28 22:53:19 +08:00
@station 没说有关啊。给他进一步折腾找个新路。也可以装下黑苹果。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/501949

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX