嵌入式Linux根文件系统制作汇编

上传人:最**** 文档编号:117488034 上传时间:2019-12-05 格式:PPTX 页数:49 大小:247.35KB
返回 下载 相关 举报
嵌入式Linux根文件系统制作汇编_第1页
第1页 / 共49页
嵌入式Linux根文件系统制作汇编_第2页
第2页 / 共49页
嵌入式Linux根文件系统制作汇编_第3页
第3页 / 共49页
嵌入式Linux根文件系统制作汇编_第4页
第4页 / 共49页
嵌入式Linux根文件系统制作汇编_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《嵌入式Linux根文件系统制作汇编》由会员分享,可在线阅读,更多相关《嵌入式Linux根文件系统制作汇编(49页珍藏版)》请在金锄头文库上搜索。

1、数字集成电路设计与系统应用专业 1 嵌入式Linux根文件系统制作 数字集成电路设计与系统应用专业 All rights reserved uBUAA All rights reserved; uThe information contained in this document is subject to change without notice ; 数字集成电路设计与系统应用专业 内容提纲 n根文件系统主要目录结构 基本的根文件系统上存放的内容 n制作一个基本的根文件系统的方法 n根文件系统镜像的使用 3 数字集成电路设计与系统应用专业 4 n根文件系统(Root filesystem)

2、是存放运行、 维护系统所必须的各种工具软件、库文件、脚 本、配置文件和其他特殊文件的地方,也可以 安装各种软件包。 什么是根文件系统 根文件系统主要目录结构 5 目录内容 /bin可执行程序 /dev块、字符设备节点文件 /etc主要配置文件和初始化执行文件 /lib 基本的库文件, 如:C 库,和内核模块(modules) /mnt挂载点,临时挂载文件系统用 /opt附加的软件包 /proc虚拟文件系统,用于内核和进程通讯 /sbin基本的系统管理程序 /tmp临时文件目录 /usr更多的用户程序,包括X server /sys虚拟文件系统 sysfs 挂载点 /var可变信息储存,如log

3、等 数字集成电路设计与系统应用专业 文件系统层次结构标准 n文件系统层次结构标准 【Filesystem Hierarchy Standard (FHS)】 Linux和UNIX的文件系统是一个以“/ “为根的阶层式的树状文件结 构,/ 因此被称为根目录。 在早期的UNIX系统中,各个厂家各自定义了自己的UNIX系统的 文件系统构成,比较混乱。为了避免在Linux也产生同样的问题, 在Linux面世不久,就开始了对Linux文件系统进行标准化的活动 ,于1994年推出了名为FSSTND(Filesystem Standard)的Linux文 件系统层次结构标准。 FHS标准使得众多的Linux

4、发布包有了可以遵循的标准,使得软件 和用户可以预测已经安装了的文件和目录的位置。它定义了如下 的内容。 定义了文件系统中每个区域的用途 定义了所需要的最小构成的文件和目录 提高软件的可移植性 6 数字集成电路设计与系统应用专业 程序文件的放置 n程序文件目录 /bin: 普通用户和root用户都能执行的基本程序 nping, mknod, mount, tar, grep, gzip, etc /sbin: root用户能执行的基本程序 nint, insmod, route, mkfs, rmmod, ifconfig /usr/bin: 更多非必须的用户程序 nautorun, bibte

5、x, latex, biff, ftp, wc, whereis, whoami /usr/sbin: 更多非必须的root工具程序 nautomount, httpd, in.telnetd, in.talkd, sendmail 7 数字集成电路设计与系统应用专业 定制应用程序 n配置基本的linux命令(嵌入式linux通过busybox制 作) cat, chmod, chown, cp, chroot, copi, date, dd, df, dmesg, dos2unix, du, echo, env, expr, find, grep, gunzip, gzip, halt, i

6、d, ifconfig, init, insmod等等 n配置用户自己的应用 桌面管理器等等 8 数字集成电路设计与系统应用专业 库文件的放置 n/lib: boot系统和运行基本命令时需要的动态 库文件 n/usr/lib:所有的其他库 n/usr/lib/xxx: 一些工具包的私有库 如:/usr/lib/perl5 9 数字集成电路设计与系统应用专业 定制库文件 n配置基本的 glibc 库(动态库) n仅保留使用到的库 n可以用 ldd 查看应用程序用到的动态库 $ arm-linux-ldd rootfs/bin/busybox $ arm-linux-readelf -a root

7、fs/bin/busybox | grep “Shared Library” n复制相应的库到自己的根文件系统 $ cp -a *.so rootfs/lib/ nStrip 复制到根文件系统下的动态库: $ arm-linux-strip ./lib/*.so 10 数字集成电路设计与系统应用专业 安装内核模块(驱动) n通过 make Install_modules 安装模块到 rootfs 相应目录 修改内核源码 Makefile 并安装模块 $ export INSTALL_MOD_PATH = / $ make modules $ make modules_install 内核源码中

8、的模块将被安装到 your_rootfs 上 n/lib/modules/ n可以将内核中的模块安装到知道目录,然后在将其复制到 your_rootfs 上 $ cp a /tmp/lib/modules/ ./lib/modules/ 11 数字集成电路设计与系统应用专业 Linux 设备文件 nLinux 系统中所有的对象(包括设备)都是以文件的形式体 现的 nLinux系统中,所有的设备文件(如:设备节点),通常放 到 /dev下 n嵌入式系统中只需要创建必须的设备节点即可 12 数字集成电路设计与系统应用专业 字符设备举例 nLs l /dev/ “c” 指明该设备节点是字符设备 cr

9、w-rw- 1 root uucp 4, 64 Feb 23 2004 /dev/ttyS0 crw-w- 1 jdoe tty 136, 1 Feb 23 2004 /dev/pts/1 crw- 1 root root 13, 32 Feb 23 2004 /dev/input/mouse0 crw-rw-rw 1 root root 1, 3 Feb 23 2004 /dev/null n典型设备 keyboards, mice, parallel port, IrDA, Bluetooth port, consoles, terminals, sound, video. 13 数字集成

10、电路设计与系统应用专业 块设备举例 n “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 7, 0 Feb 23 2004 loop0 brw-rw- 1 root disk 1, 1 Feb 23 2004 ram1 brw- 1 root root 8, 1 Feb 23 2004 sda1 n典型块设备 磁盘, ramdisk,SD,U盘等等 14 数字集成电路设计与系统应用专业 设

11、备的主版本号次版本号 nLinux系统是通过主设备号和次设备号来区分设备的 n主设备号: (major) 内核用来区分哪类设备 n次设备号: (minor) 区分某类设备中的哪个设备 n内核中的相关文档 Documentation/devices.txt 15 数字集成电路设计与系统应用专业 创建设备节点 n设备文件不能在加载驱动程序时自动创建 ,要通过指令创建 n创建设备文件的一边语法: $ mknod /dev/ c|b n例如: $ mknod /dev/ttyS0 c 4 64 $ mknod /dev/hda1 b 3 1 16 数字集成电路设计与系统应用专业 基本的设备节点 17

12、名称描述Major Minor mem物理内存访问设备11 nullNull 设备13 zero从该设备读取将得到零15 random非确定随机数发生设备18 tty0当前的虚拟终端设备40 tty1第一个虚拟终端设备41 ttyS0第一个串口设备464 tty当前的 TTY 设备50 console系统console设备51 数字集成电路设计与系统应用专业 使用不同的文件目录层次结构? nFHS规定了制定根文件系统的规则 通常大多少应用程序和发布依赖这些规则,但这些规则不是内核强制的 n在嵌入式Linux系统中,你可以构建一个完全不同的根目录层次结构 相应的AP配置需要适当调整 n一个极端的

13、做法是构建嵌入式Linux系统时 root 文件系统,但不推荐这 么做 18 数字集成电路设计与系统应用专业 19 Linux系统的引导过程 BootloaderBootloader initinit Kernel.bootKernel.boot shellshell mingettymingetty inittabinittab loginlogin rcrc /etc/init.d/rcS/etc/init.d/rcS 数字集成电路设计与系统应用专业 init 程序 n通过命令行知道 init=/linuxrc n/sbin/init 是默认的第一个用户空间程序 n启动系统服务程序,自动运

14、行的程序等 (sshd, X server.) n嵌入式linux系统使用busybox 的 init 程序 20 数字集成电路设计与系统应用专业 /linuxrc n用来初始化系统的一个简单的启动脚步程序 通过内核命令行产生 init 指定 ninit=/linuxrc n通常用在 initrds 上或一个简单的系统中 n通常是 nash or busybox sh 脚步 n这个脚步可以执行多种任务: 加载驱动 设置网络 挂载文件系统 切换到一个新的根文件系统 . 21 数字集成电路设计与系统应用专业 创建根文件系统 n采用Busybox创建基本命令 n创建基本的目录 /lib /etc /

15、var /tmp /dev /sys /proc等 n添加Glibc基本动态库 n创建基本的设备节点 n创建启动脚步(/linuxrc) n添加启动配置和脚步程序 /etc/inittab /etc/fstab /etc/init.d/rcS n测试根文件系统 n制作根文件系统镜像 22 数字集成电路设计与系统应用专业 BusyBox项目构建系统命令 nBusyBox 项目是由Bruce Perens in 在1996创建的 BusyBox 是在 GNU GPL 许可协议下发行的开源软件 n享有“嵌入式Linux的瑞士军刀”美誉,Erik Andersen 先生维护; nBusybox是一个U

16、NIX系统工具集,它将很多普通的 UNIX工具集成到一个很小的可执行文件中,为普通 用户提供大多数常用的命令; nBusyBox维护的主要指令包括 cat, chmod, chown, cp, chroot, copi, date, dd, df, dmesg, dos2unix, du, echo, env, expr, find, grep, gunzip, gzip, halt, id, ifconfig, init, insmod, etc 23 数字集成电路设计与系统应用专业 安装 BusyBox nBusyBox 可以编译成一个静态可执行程序,也可以使用glibc 或者 uClibc编译成一个使用动态库的可执行程序 n编译Busybox步骤 下载代码,解压代码 配置Busybox n$ cd $PRJROOT/busybox-1.00-pre10/ n$ make menuconfig n 主要配置有哪

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号