制作根文件系统
文件系统层次结构标准 【Filesystem Hierarchy Standard (FHS)】
– Linux和UNIX的文件系统是一个以“/ “为根的阶层式的树状文件结构,/ 因此 被称为根目录。
– 在早期的UNIX系统中,各个厂家各自定义了自己的UNIX系统的文件系统构成, 比较混乱。为了避免在Linux也产生同样的问题,在Linux面世不久,就开始了 对Linux文件系统进行标准化的活动。 – FHS标准定义了如下的内容。 1. 文件系统中每个区域的用途 2. 所需要的最小构成的文件和目录
根文件系统
• 配置基本的linux命令(嵌入式linux通过busybox制作)
– cat, chmod, chown, cp, chroot, copi, date, dd, df, dmesg, dos2unix, du, echo, env, expr, find, grep, gunzip, gzip, halt, id, ifconfig, init, insmod等等
crw-------- 1 root root 13, 32 Feb 23 2004 /dev/input/mouse0
crw-rw-rw 1 root root 1,
•
典型设备
keyboards, mice, parallel port, IrDA, Bluetooth port, consoles, terminals, sound, video...
•
– 提高软件的可移植性
•
根文件系统 /bin
/dev /etc /lib /mnt /opt /proc /sbin /tmp
目录
内容
可执行程序 块、字符设备节点文件 主要配置文件和初始化执行文件 基本的库文件, 茹:C 库,和内核模块(modules) 挂载点,临时挂载文件系统用 附加的软件包 虚拟文件系统,用于内核和进程通讯 基本的系统管理程序 临时文件目录
$ mknod /dev/hda1 b 3 1
•
基本设备节点(见下表)
•
根文件系统
根文件系统
• 使用不同的文件目录层次结构?
– FHS规定了制定根文件系统的规则 • 通常大多少应用程序和发布依赖这些规则,但这些规则不是内核强制的 – 在嵌入式Linux系统中,你可以构建一个完全不同的根目录层备中的哪个设备 – 内核中的相关文档 Documentation/devices.txt
根文件系统
• 创建设备节点
– 创建设备文件的一般语法: $ mknod /dev/<device> [c|b] <major> <minor> – 例如:
$ mknod /dev/ttySAC0 c 4 64
•
配置用户自己的应用
– 桌面管理器等等
根文件系统
• 库文件目录
– /lib: 系统和运行基本命令时需要的动态库文件 – /usr/lib:所有的其他库 – /usr/lib/xxx: 一些工具包的私有库
– 如:/usr/lib/perl5
根文件系统
• Linux 设备文件
– Linux 系统中所有的对象(包括设备)都是以文件的形式体现的 – Linux系统中,所有的设备文件(如:设备节点),通常放到 /dev下 – 嵌入式系统中只需要创建必须的设备节点即可
• int, insmod, route, mkfs, rmmod, ifconfig
– /usr/bin: 更多非必须的用户程序 • autorun, bibtex, latex, biff, ftp, wc, whereis, whoami – /usr/sbin: 更多非必须的root工具程序 • automount, httpd, in.telnetd, in.talkd, sendmail
根文件系统
• 块设备
– “b” 指明该设备节点是块设备 (ls -l) brw-rw--- 1 root disk 3, 1 Feb 23 2004 hda1 brw-rw--- 1 jdoe floppy 2, 0 Feb 23 2004 fd0
brw-rw--- 1 root disk
brw-rw--- 1 root disk brw------- 1 root root – 典型块设备
• 相应的AP配置需要适当调整
– 建议遵循FHS来构建根文件系统
构建根文件系统的步骤
•
• • • • • •
制作根文件系统
主要内容
•
• • • • • •
根文件系统
构建根文件系统的步骤 BusyBox简介 配置编译BusyBox Busybox init启动过程分析 构建根文件系统的其他部分 文件系统特性
根文件系统
• 根文件系统:根文件系统(root filesystem)是存放运行、维护系统所必 须的各种工具软件、库文件、脚本、配置文件和其他特殊文件的地方,也 可以安装各种软件包。
/usr
/sys /var
更多的用户程序,包括X server
虚拟文件系统 sysfs 挂载点 可变信息储存,如log等
根文件系统
• 程序文件目录
– /bin: 普通用户和root用户都能执行的基本程序 • ping, mknod, mount, tar, grep, gzip, etc – /sbin: root用户能执行的基本程序
7, 0 Feb 23 2004 loop0
1, 1 Feb 23 2004 ram1 8, 1 Feb 23 2004 sda1
磁盘, ramdisk,SD卡,U盘等等
根文件系统
• 设备的主设备号次设备号
– Linux系统是通过主设备号和次设备号来区分设备的 – 主设备号: (major) • 内核用来区分哪类设备
根文件系统
• 字符设备
ls –l /dev/ “c” 指明该设备节点是字符设备 crw-rw---- 1 root uucp 4, crw--w---- 1 jdoe tty 64 Feb 23 2004 /dev/ttyS0 136, 1 Feb 23 2004 /dev/pts/1 3 Feb 23 2004 /dev/null