/bin 存放二进制可执行命令的目录
/dev 存放设备文件的目录
/etc 存放系统管理和配置文件的目录
/home 用户主目录
/lib 存放动态链接共享库的目录
/sbin 存放系统管理员使用的管理程序的目录
/tmp 公用的临时文件存储点
/root 系统管理员的主目录
/mnt 系统临时挂载其他文件系统的目录
/proc 虚拟文件系统,可直接访问来获取系统信息
/var 某些大文件的溢出区
/usr 最庞大的目录
最小的文件系统
mknod console c 5 1
2)添加可执行文件依赖库ld-linux.so.3
cp ld-linux.so.3 lib/
3) 查看依赖库ld-linux.so.3
是否有其他依赖
readelf -d linuxrc |grep NEEDED
busybox项目:http://www.busybox.net
make defconfig;make
make menuconfig
make CONFIG_PREFIX = ../mini_rootfs/ install
配置交叉编译:
make menuconfig
-busybox setting
-build option
-cross cpmpilerprefix 第一步设置交叉编译器
-path to sysrootb 第二步设置交叉编译器路径
嵌入式常用的工具命令:
设备驱动管理:
fdisk fsck hwclock mkdosfs
insmod rmmod rmmod lsmod mknod modprobe
lsusb mdev mount umount
文件编辑处理:
mkdir mkfifo ln mv cp touch rm unlink
awk cat cut find vi sed wc tar
grep head tail less more xargs od stat
网络信息管理:
udhcpc udhcpd route netstat ping ifconfig
系统信息管理:
chmod clear date dd df echo free
ipcrm ipcs ls ps pwd top uptime
kill killall reboot sleep sysctl usleep
init.c
① 信号处理
②初始化控制终端
③环境变量配置
④单用户模式
⑤解析inittab
文件
new_init_atcion
:
⑥运行action::sysiniit、wait、once、respawn
⑦系统重启
/etc/iniittab文件:
sysinit
——为init提供初始化命令行的路径及脚本程序
respawn
——每当相应的进程终止执行便重启
askfirst
——类似respawn ,不过它的主要用途是减少系统上执行的终端应用程序的数量。
wait
——告诉init必须等到相应的进程一次,而且不会等待它完成
once
—— 仅执行相应的进程一次,而且不会等待它完成
restart
——当init重启时,执行相应的进程,通常此处所执行的进程就是init本身
shutdown
——当系统关机时,执行相应的进程
/etc/init.d 目录下的文件:
初始化脚本:rcS -> 系统环境准备与配置
应用及服务脚本:
K(kill)开头的文件:系统初始化过程中不启动该服务
S(start)开头的文件:系统初始化过程中启动该服务
数字越大,优先级越低
procfs 是linux内核信息的抽象文件借口,大量内核中的信息以及可调参数都被作为常规文件映射到一个目录树中/proc。通过echo或cat命令可对系统信息 进行查取和调整。系统工具也通过procfs获取内核参数,如:ps、lspci等。
procfs的内容: 进程信息和系统信息
procfs信息查看: cat /proc/cmdline
2)tmpfs
tmpfs是一种虚拟内存文件系统,使用内存作为存储分区进行文件的临时性存取,掉电会丢失,创建时不需要使用mkfs等进行格式化。
tmpfs的挂载:
mount -t tmpfs -0 size = 10M tmpfs /tmp
df -h
tmpfs的作用:
提高存存效率,存在ram的
避免对flash存储设备的频繁读写,提高使用寿命
3)devfs
为设备文件提供一种类似于文件的方法来管理位于/dev目录下的所有设备。
4)sysfs
挂载于 /sys目录下,把实际连接到系统上的设备和总线组织成一个分级的文件。
5) nfs
挂载远程主机的目录,访问该目录就像访问本地目录一样。
nfs挂载格式:mount -o nolock [server IP]:/[share dir] [local mount dir]
6) ramdisk
占据一块固定的内存,虚拟化成ram的快设备。事先要使用特定的工具如mke2fs格式化,还需要一个文件系统驱动来固定容量空间。
7)initramfs
过渡根文件系统机制:将加载真正的根文件系统所需的设备驱动、工具以及初始化程序先加载到内存运行 . iniitramfs
就是过渡根文件系统的一种。
initramfs : initial ram file system
在内核启动完成后把它复制到rootfs中,作为内核初始化的根文件系统,完成挂载系统真正根文件系统。
使用initramfs
init 程序文件:hello
交叉编译:arm-linux -gcc -static hello -o hello.c
修改命名:mv hello init
打包initramfs镜像
find .|cpio -o -H newc |gzip > ~myinitramfs.cpio.gz
8)只读压缩文件系统
提高文件系统的可靠性安全性与降低文件系统的空间占用:只读 + 压缩
cramfs文件系统: compressed ROM filesystem
特性:
支持 最大分区: 272MB (256MB + 16MB)
支持最大文件:16M
压缩格式:zlib ,压缩比一般可以达到1:2,美页单独进行压缩处理
动态解压:访问数据时实时解压访问到的页到内存,节省内存空间
使用透明:解压缩以及解压缩之后的内存中数据存放位置都是由cramfs文件系统本身进行维护,对外部使用透明
squashfs文件系统:
特性:
支持 最大分区: 16EB
支持最大文件:2TB
支持多种压缩格式:GZIP LZMA /L2MA2(XZ) LZO
9)Flash 文件系统: