我正在开发一个嵌入式 Linux 系统,它使用 busybox 作为 init。
系统启动时,有如下两条错误日志,
[ 3.901185] Run /linuxrc as init process
[ 3.909861] process '/bin/busybox' started with executable stack
mount: mounting devpts on /dev/pts failed: No such file or directory
mount: mounting tmpfs on /dev/shm failed: No such file or directory
在我登录到 Linux 并运行“mount”命令后,我得到以下信息,
# mount
......
devtmpfs on /dev type devtmpfs (rw,relatime,size=41768k,nr_inodes=10442,mode=755)
proc on /proc type proc (rw,relatime)
tmpfs on /tmp type tmpfs (rw,relatime)
tmpfs on /run type tmpfs (rw,nosuid,nodev,relatime,mode=755)
sysfs on /sys type sysfs (rw,relatime)
devpts on /dev/pts type devpts (rw,relatime,mode=600,ptmxmode=000) <<<<
tmpfs on /dev/shm type tmpfs (rw,relatime) <<<<
令我惊讶的是,它们已经安装在那里了!!
busybox使用的/etc/fstab如下,
# cat /etc/fstab
# <file system> <mount pt> <type> <options> <dump> <pass>
/dev/root / ext2 rw,noauto 0 1
proc /proc proc defaults 0 0
devpts /dev/pts devpts defaults,gid=5,mode=620,ptmxmode=0666 0 0
tmpfs /dev/shm tmpfs mode=0777 0 0
tmpfs /tmp tmpfs mode=1777 0 0
tmpfs /run tmpfs mode=0755,nosuid,nodev 0 0
sysfs /sys sysfs defaults 0 0
我认为 /dev/pts 和 /dev/shm 出现在系统中可能会有一些延迟,所以我在 busybox 的 mount.c 中添加了延迟,但得到了相同的error!
我还尝试通过将这两行移动到文件末尾来编辑 /etc/fstab,但得到了相同的error!
然后我将内核命令行更改为“init=/bin/bash”,以便在启动时转到 bash。
在 bash 中,我检查了 /dev/pts 和 /dev/shm,它们不在那里!
我尝试手动挂载它们,但仍然遇到“No such file or directory”的错误。
我不知道为什么会这样,这似乎是无害的,但在系统中看到“错误消息”很烦人,所以我想弄清楚并修复它。