有没有办法等到根文件系统挂载?

时间:2011-02-17 20:04:58

标签: linux linux-kernel

我在内核中有一个静态链接代码(不是模块),应该在根文件系统挂载后启动内核线程。问题是我不知道如何在不修改prepare_namespace()内核函数的情况下执行此操作。我认为可以通过initcalls做但是 它们在内核处理rootfs之前执行。 有谁知道最好的方法吗?

更新[1]: @BenVoigit在评论中提出了以下解决方案: 好像你应该在它上面打开/ proc / mounts和poll_wait。请参阅`mounts_poll'的来源

UPDATE [2]:我查看了RSBAC补丁,RSBAC修改了prepare_namespace()函数,以便在文件系统挂载后进行一些操作。这似乎是最简单的方法。

1 个答案:

答案 0 :(得分:0)

那么,目前的Linux映像太大了,无法适应PC启动扇区。像grub这样的现代引导程序会在真正的RAM之前在RAM中安装一个小文件系统。

要了解幕后发生的情况,您可以打开位于/ boot下的磁盘映像。例如,在Ubuntu中:

mkdir test
cd test
zcat /boot/initrd.img-2.6.35-24-generic > image.cpio
cpio -i < image.cpio
vim init

最后,它只是一堆shell脚本 - 简单几乎是诗意的。