我想从 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,它就必须正常启动系统。
启动