mkdir and mount in initramfs



我正在编写一个initramfs,在busybox中执行,在其中我使用以下命令装载分区:

/bin/busybox mount -n -t proc proc /proc
mount -n -t devtmpfs devtmpfs /dev
mount -n -t sysfs sysfs /sys
mount -n -t tmpfs inittemp /mnt
mkdir /mnt/saved
mount -n -t "${rootfstype}" -o "${rootflags}" ${device} /mnt/saved

但当系统启动时,我会出现以下错误:

mount: mounting /dev/mmcblk0p2 on /mnt/saved failed: No such file or directory

我知道当找不到设备时,会出现类似Device does not exist的消息,所以我认为问题来自尚未正确创建的目录/mnt/saved

我尝试在mkdir之后添加一个ls -l /mnt,以检查目录是否正确创建,但大多数情况下,如果我这样做,错误就会消失。所以我认为问题可能是同步问题(tmpfs的问题,很奇怪!(所以我尝试了其他一些事情,比如在目录中创建一个伪文件来强制进行某种同步。这是有效的,但这是一个肮脏的解决方法,我想找到问题的真正原因,以构建一个干净的解决方案。

当我写问题的时候,我终于自己找到了解决方案……无论如何,我都会发布它,以防有人像我一样被卡住。

实际上,busyboxmount命令在找不到设备的情况下不会显示有关设备的消息,而是始终显示No such file or directory

我的问题实际上来自根设备,它还没有准备好,所以还不在/dev目录中。为了使其正确工作,我只是在mount:之前添加了这一行

while ${rootwait} && ! [ -b "${device}" ]; do sleep 1; done

相关内容

  • 没有找到相关文章

最新更新