是否可以在内核启动时将一个子目录作为根文件系统挂载?

我试图从我的主目录中的来源(如select创build一个专用的分区)安装一个Linux。 基本系统(glibc,kernel和init)安装在$ HOME / lfs / root下。 我使用安装在我的USB驱动器中的grub来启动这个系统,这里是grub.cfg中的相关部分(我必须将grub root更改为hd1,因为hd0是我的usb棒):

menuentry“Custom linux HD”{set root ='(hd1,1)'linux / home / thiago / lfs / root / boot / bzImage root = / dev / sda1 / home / thiago / lfs / root ro}

似乎只有设备是“root =”的有效参数。 那有什么办法可以工作吗? 我不想惹我目前的分区。

我没有对它进行testing,但理论上(使用最近的发行版和内核),可以select使用initramfs或initrd。 内核将首先以root身份运行initramfs,并运行其启动脚本。 启动脚本所做的最后一件事情应该是在挂载的“真实”根目录上调用pivot_root ,然后运行real /sbin/init

如果你可以得到一个initramfs或initrd的工作,也许你可以调整启动脚本做你想要的子目录中的pivot_root?

我不认为你可以这样做。 但是,也许是时候看到虚拟化了? 您将拥有一个用于磁盘的文件,并在该磁盘中启动一个虚拟机。