关于如何引导Linux,我遇到了一个问题。如果只有一个驱动器和一个ESP,我尝试并成功地启动。但我的目标是有两个不同的驱动器与他们自己的ESP。第一个驱动器有Windows和它自己的ESP,第二个驱动器用于Linux和它自己的ESP。
我这样做是为了使这些驱动器能够独立引导,即使没有其他驱动器。
我所做的就是删除包含窗口的第一个驱动器,并在第二个驱动器上安装Linux。如果第一个驱动器没有连接,Linux就可以完美地启动。
现在我的问题是,如果这两个驱动器都是连接的,并且当我启动到Linux时,它会告诉我no init found try init=bootargs,但是带有Windows的驱动器非常好。
发布于 2018-07-29 11:59:12
no init found消息告诉我,Linux内核已经启动,但是它未能在根文件系统上找到/sbin/init,可能是因为它看错了位置。
了解Linux引导程序设置如何标识根文件系统。通常,它是Linux内核的一个root=选项。
如果根文件系统被标识为/dev/sdaN (其中N是一个数字),那么它将指定由initramfs/initrd文件中包含的驱动程序首先检测到的哪个磁盘上的第N分区。当您只连接Linux驱动器时,这个假设是正确的,并且您的系统启动良好。但是,当连接两个磁盘时,首先检测到Windows盘,root=/dev/sdaN选项实际上指向了错误的磁盘。
解决这个问题的最好方法是以一种不依赖于磁盘检测顺序的方式指定根文件系统。
在Linux中,以根用户身份运行blkid。它将列出它可以看到的每个磁盘分区,以及它们的所有标识符。找到与包含根文件系统的分区相匹配的行:它应该有一个UUID=<a long hexadecimal string>值。它可能也可能没有LABEL=<a short name>。还会有一个PARTUUID,也可能列出一个PARTLABEL;忽略它们。
在大多数Linux发行版中,您可以将root=/dev/sdaN选项更改为表单root=UUID=<the long hexadecimal string form blkid>。这样,您的根文件系统将由唯一的文件系统UUID显式地标识,而不是通过它的检测顺序来识别。
由于您没有指定Linux发行版的名称和版本,所以我无法确切地告诉您应该在哪里进行修改,因为在不同的Linux发行版中,引导加载程序配置的位置有所不同。但是在现代发行版中,/etc/default/grub可能是一个很好的猜测。修改/etc/default/grub之后,通常需要运行一些命令来更新实际的引导加载程序:它可能是update-grub或grub-mkconfig或类似的东西。
https://unix.stackexchange.com/questions/459157
复制相似问题