mini2440 使用mdev创建设备节点问题

本文详细介绍了使用mdev创建设备节点的方法,并通过调整/etc/fstab、/etc/init.d/rcS文件及修改inittab来解决系统启动时遇到的问题。通过将mdev操作提前执行,确保了系统正确加载所需设备。最终通过调整rcS脚本顺序,成功解决了目录不存在的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近日看韦东山老师视频制作根文件系统,有一讲是使用mdev创建设备节点。主要方法参照busybox源码中docs/mdev.txt这篇文档。

下面是这篇文档部分内容:

<pre name="code" class="plain">Here's a typical code snippet from the init script:
[0] mount -t proc proc /proc
[1] mount -t sysfs sysfs /sys
[2] echo /bin/mdev > /proc/sys/kernel/hotplug
[3] mdev -s
......
Of course, a more "full" setup would entail executing this before the previous
code snippet:
[4] mount -t tmpfs -o size=64k,mode=0755 tmpfs /dev
[5] mkdir /dev/pts
[6] mount -t devpts devpts /dev/pts
 


根据这些内容,以及参照韦老师讲解,我是这么做的。

1. /etc/fstab文件中添加(对应文档步骤[0] [1])

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
tmpfs           /tmp            tmpfs   defaults            0       0   
sysfs           /sys            sysfs   defaults            0       0


2. /etc/init.d/rcS文件中添加(对应文档步骤[2] [3] [4] [6])

<pre name="code" class="plain">echo /bin/mdev > /proc/sys/kernel/hotplug
mdev -s
mount -t tmpfs -o size=64k,mode=0755 tmpfs /dev
mount -t devpts devpts /dev/pts
 


3. 手动创建/dev/pts目录(对应文档步骤[5])

PS:我是使用nfs网络文件系统,在host端的目录下直接创建的该目录。按道理说在启动后直接能看到该目录。


4. /etc/inittab文件中

console::askfirst:-/bin/sh
修改为

s3c2410_serial0::askfirst:-/bin/sh
PS:只看视频的同学可能不知道这一步,书上介绍了mdev生成的/dev目录串口名为s3c2410_serial0。至于console怎么了,以后再说。


好了上电,发现出现以下问题:

mount point /dev/pts does not exist

can't open /dev/s3c2410_serial0: No such file or directory

PS:错误为节选,不全,也可能不是原话。

意思是说/dev/pts和/dev/s3c2410_serial0不存在。我就在我host机上看了下/dev目录的内容,发现都存在啊,然后就各种纠结了。后来我想再仔细看看busybox提供的文档。我发现这么一句我可能理解错了。

Of course, a more "full" setup would entail executing this before the previous<pre name="code" class="plain">code snippet:

 我看到entail第一反应就是结尾处,所以步骤[4] [5] [6]应该在[0] [1] [2] [3]后面执行。后来才知道entail是“需要“的意思。(o(╯□╰)o,英语就是渣啊)这句话是说下面的内容要在上面的内容之前执行。跟开始的理解正好相反。 


修改下方案。

1. /etc/init.d/rcS文件修改为

#! /bin/sh
echo "yb's first filesystem!"
mount -t tmpfs -o size=63k,mode=0755 tmpfs /dev
mkdir /dev/pts
mount -t devpts devpts /dev/pts
mount -a
echo /bin/mdev > /proc/sys/kernel/hotplug
mdev -s

重启后,一切OK~

我在板子上执行mount -t tmpfs -o size=63k,mode=0755 tmpfs /dev后,看/dev目录空了,也就是这个原因导致了前面提到的错误(注意,以前创建的console也没有了,正常启动时被s3c2410_serial0替代)。


最后提下,文档中步骤[2]中/bin/mdev其实应该为/sbin/mdev,mdev是在/sbin目录下的。这是看别人blog看到的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值