构建根文件系统的/dev目录

在嵌入式ARM开发中,用busybox制作根文件系统时,其中必须构建的一个目录就是/dev目录。这个目录对所有的用户都十分重要,因为在这个目录中包含了所有Linux系统中使用到的外部设备,即所有的设备节点。

    构建/dev目录时,有两种方法:即静态构建和mdev设备管理工具构建。

    1. 静态构建:

    使用静态方法构建,就是根据预先知道要挂载的驱动,用mknod命令逐一构建各种设备节点。

    新建/dev目录,先创建5个设备文件(必须的):

mkdir -p root_fs/dev
cd root_fs/dev
sudo mknod console c 5 1
sudo mknod null c 1 3
sudo mknod ttySAC0 c 204 64
sudo mknod mtdblock0 b 31 0
sudo mknod mtdblock1 b 31 1
sudo mknod mtdblock2 b 31 2

    其他设备文件:当系统启动后,使用cat /proc/devices命令查看内核中注册了那些设备,然后一一创建相应的设备文件。

    使用静态创建dev目录的缺点:不支持热插拔设备

    2. mdev动态创建:

    mdev是udev的简化版本,通过读取内核相应信息来动态创建设备文件或设备节点。其主要用途有:初始化dev目录、动态更新、支持热插拔。要使用mdev设备管理系统,需要内核支持sysfs文件系统,为了减少Flash的读写,还要支持tmpfs文件系统(事实上目前dev目录都为tmpfs文件系统目录)。一般情况下,默认的内核配置已经满足使用mdev的要求。

    修改etc/init.d/rcS文件,修改后如下:

#!/bin/sh

echo "Mount Pseudo Filesystem ......"
mount -t tmpfs -o size=64k,mode=0755 tmpfs /dev  // dev目录为tmpfs文件系统目录
mkdir /dev/pts
mount -t devpts devpts /dev/pts
mount -t sysfs sysfs /sys
echo /sbin/mdev > /proc/sys/kernel/hotplug   // 支持热插拔
mdev -s

    其中的语句是和mdev的使用方法几乎一样。可参考busybox/doc/mdev.txt文档。

    另外,mdev是通过init进程启动,在使用mdev构造/dev目录前,init进程至少要用到/dev/console和/dev/null,所以要像使用静态方法一样先构建它们。在/dev/下执行

sudo mknod console c 5 1
sudo mknod null c 1 3

而proc mnt tmp sys root 等都按照原来方法构建空目录即可。

这样,跟文件系统的dev目录的设备文件就会在系统启动时自动生成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值