在嵌入式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目录的设备文件就会在系统启动时自动生成。

构建根文件系统的/dev目录相关推荐

  1. 教你用 buildroot 构建根文件系统

    如果想要构建完整的根文件系统,大家一般都是使用buildroot,它不仅包含了 busybox 的功能,而且里面还集成了各种软件,需要什么软件就选择什么软件,不需要我们去移植. 嵌入式系统三大部分:b ...

  2. 构建根文件系统(一)

    接着前边内核移植的文章,记录根文件系统的构建. 这里要用到强大的busybox,我选择的版本是busybox-1.18.5.tar.bz2 ,1.17的也可以:之所以选择这个版本是因为基于现在的交叉编 ...

  3. buildroot构建根文件系统

    buildroot构建根文件系统 一.简介 Buildroot是Linux平台上一个构建嵌入式Linux系统的框架.整个Buildroot是由Makefile脚本和Kconfig配置文件构成的.本文使 ...

  4. Buildroot 构建根文件系统(Jz2440)

    1. Buildroot 简介      Buildroot是Linux平台上一个构建嵌入式Linux系统的框架.整个Buildroot是由Makefile脚本和Kconfig配置文件构成的.你可以和 ...

  5. 野火i.MX6ULL Pro开发板构建根文件系统

    眼瞅着2020年马上就要到头了,承诺给大家的Linux移植三部曲还差最后一篇,这个拖延癌晚期恐怕今年是治不好了,不到最后的DL绝不妥协-- (这句话是年前写的,写了个开头就疫情了,封城,电脑丢在了公司 ...

  6. 从零开始构建根文件系统

    以下内容源于网络资源的学习与整理,如有侵权请告知删除. 参考博客 Uboot和系统移植(19)------- 根文件系统构建过程详解_big__C的博客-CSDN博客 一.总结 (1)本节在前面的理论 ...

  7. 笔记:使用buildroot构建根文件系统

    文章目录 简介 构建过程 buildroot包下载 配置 Target options配置项 Build options配置项 Toolchain配置项 System configuration配置项 ...

  8. 【ARM】使用Busybox构建根文件系统

    Busybox构建根文件系统 介绍 下载 配置busybox 配置交叉编译器 取消静态库编译 添加vi命令的支持 取消简化模块 支持mdev 中文支持 编译 完善根文件系统 创建必要文件夹 复制库 启 ...

  9. 基于ubuntu-base构建根文件系统并移植到RK3568开发板

    目录 前言 一.根文件系统是什么? 二.构建根文件系统的方法 1.debootstrap 2.builroot 3.busybox 4.ubuntu-base 三.进入主题--如何使用ubuntu-b ...

最新文章

  1. simulink和psim仿真结果不同_案例展示金属增材制造过程仿真分析 (下篇)- 微观尺度...
  2. 在windows中python安装sit-packages路径位置 在Pycharm中导入opencv不能自动代码补全问题
  3. 学科网站建设的尝试与思考
  4. 多租户数据中心该如何布线?
  5. echarts 折线图悬停拐点大小不变_echarts-折线图(折线虚实/颜色与拐点样式修改)...
  6. Java客户端操作zookeeper:创建永久节点和临时节点
  7. LeetCode 多线程 1116. 打印零与奇偶数
  8. Windows CE File System [2/2]
  9. python环境变量的配置 alias_配置别名
  10. 红安一中高考2021成绩查询,红安一中2019高考喜报成绩、一本二本上线人数情况...
  11. Apache httpd 安装
  12. kafka jar包_Kafka系列文章之安装测试-第2篇
  13. 【java】对学生成绩进行排序
  14. python的cvtcolor_Python cv.CvtColor方法代碼示例
  15. Using 1.7 requires compiling with Android 4.4 (KitKat); currently using API XX
  16. echarts学习笔记1
  17. 月结2 - 维护汇率[OB08]
  18. 重定向和转发的概念及区别
  19. 直线相交的交点(Line-Line Intersection)
  20. oracle数据库管理员账户锁定,Oracle数据库账号被锁定解决方法

热门文章

  1. android 拔插键盘自动切换输入法
  2. 怎么删除电脑上的另一个用户名?删除电脑上多余的用户名
  3. 21级计科专业计算机组成原理实验一报告
  4. 利用反射动态修改 EasyPoi 导出Excel表格标题名称
  5. SHA256加密-前端 中 HMAC-SHA256的base64加密 和 md5加密
  6. 学生信息管理系统之 查询学籍信息流程
  7. 关于《那些年啊,那些事——一个程序员的奋斗史》的更新
  8. 微信公众号现金红包红包 企业付款openid 获取
  9. 讯时O口MX8网关对接昆石软交换vos3000
  10. 21.BOM的理解,常见的BOM对象你了解哪些?