我有一个嵌入式系统,它从紧凑型闪存启动并以 root 身份安装 initrd.img ramdisk 运行。启动时,它会以只读模式挂载 initrd 映像,但是当 inittab 运行时,它似乎会跳过第一个挂载命令,即
null::sysinit:/bin/mount -o remount,rw /
据我所知,我的 /etc/fstab 设置具有正确的选项:
/dev/root / ext2 rw,noauto,noatime 1 1
然后系统设法给我一个命令提示符,然后我可以以 root 身份登录并输入 mount 命令,该命令可以正常工作。
此外,同样的设置也适用于看似相同的目标硬件。不同之处在于,我是从我的笔记本电脑而不是我们使用的常用服务器创建启动映像。我的笔记本电脑正在运行较新版本的 grub,我用它来为映像制作引导加载程序。也许我还有一个较新版本的 genext2fs,用于制作用作 ramdisk 的映像。服务器运行的是 FC10,但我的笔记本电脑使用的是 ubuntu,因此一定存在一些我忽略的差异,这些差异影响了 mount 或 inittab。这可能与/dev/null 有关吗?
为什么系统不重新挂载 ramdisk 映像?如何修复?
答案1
我设法用两个步骤解决了我的问题:
第一个是删除 inittab 中行开头的 null,它只允许在控制台上看到错误。这表明错误与 /proc/mounts 有关。我更改了 inittab,使其::sysinit:/bin/mount -t proc /proc
位于remount,rw /
内容之上,现在可以了。
谜团仍然是为什么另一个系统无论如何都会使用据称相同的内核和 busybox 二进制文件启动 - 我仍然认为 genext2fs 必须在我的版本中设置不同的东西,以便该mount -o remount,rw
命令很乐意在没有 /proc/mounts 的情况下继续进行
答案2
你确定你的发行版是这样的吗/etc/inittab
?
例如,Ubuntu 现在使用upstart
,它使用一组不同的配置文件。
另一个想法:在其中放置另一个条目来运行mount
并将输出重定向到文件。这将证明是否inittab
正在读取,以及文件系统在您尝试运行重新安装时是否处于预期状态。