![如何在从 GRUB 手动启动“实时”Linux 发行版期间合并 squashfs 文件?](https://linux22.com/image/149414/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%BB%8E%20GRUB%20%E6%89%8B%E5%8A%A8%E5%90%AF%E5%8A%A8%E2%80%9C%E5%AE%9E%E6%97%B6%E2%80%9DLinux%20%E5%8F%91%E8%A1%8C%E7%89%88%E6%9C%9F%E9%97%B4%E5%90%88%E5%B9%B6%20squashfs%20%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我想从 GRUB 2.0 命令行启动 Linux 发行版。我已经尝试对几个发行版这样做,并且在“最佳”情况下我收到initramfs
提示,如果发行版以标准方式运行,则不会启动 GUI。生成的文件系统似乎包含 initrd 文件(小于 100Mb)中的文件,但不包含在 filesystem.squashfs(大于 1Gb)中。
vmlinux、initrd 和 filesystem.squashfs 文件位于casper
发行版中 grub.cnf 的菜单条目中的文件夹和 linux 命令中boot=casper
,我怀疑文件夹名称casper
对于内核选项的工作来说不是必需的,据我了解,casper 是持久性相关的选项维基百科。
另外,据我了解这个问题,当启动进程尝试执行 unionfs 操作时,它无法找到包含除内核发行版内容之外的所有内容的 SquashFS 文件。我如何让它知道它的位置?也许问题是有其他根本原因,请告诉我。
添加 0:我更改了linux (hd0,msdos2)/casper/vmlinuz
命令添加root=UUID=what ls command gives for partition with distro
,现在开始,最后得到很多行stdin: Not a typewriter
,然后(initramfs) Unable to find a medium containing live file system
一次又一次 CLI 提示。屏幕上的标准输出与没有根选项的行相同...我只是不太记得,启动期间有这么多行。
据我从 GRUB 手册和我的尝试错误中了解到,root
变量只能指向设备,而不是设备内的路径,所以我看到设置它不会指向 casper 文件夹内的 squashfs 文件。
添加1:我grep -rnw 'initrd file loop mounted location' -e 'filesystem.squashfs'
按照https://stackoverflow.com/questions/16956810/how-do-i-find-all-files-containing-specific-text-on-linux但什么也没得到,所以不知道 init 进程如何找到该 squashfs 文件。
答案1
对于引导,您应该指定操作系统和初始化程序图像,否则你可能会遇到问题。
在 Linux 部分中,在指定路径之前不应包含磁盘/分区,因为您已经在根目录中指定了它。在示例中我放置了 /dev/sda1,但它可以是 sdb 或其他
linux /casper/vmlinuz-version-pae root=/dev/sda1
然后你必须指定 initrd;在此步骤中,您不必指定根,因为您已经指定了它。
initrd /casper/initrd.img-版本-pae
最后但并非最不重要的一点是,只需输入 boot,它就必须正常启动系统。
启动