株洲网站网络推广怎么做,儿童网页设计素材,强大的网站,外贸必备的app根文件系统一直以来都是所有类Unix操作系统的一个重要组成部分#xff0c;也可以认为是嵌入式Linux系统区别于其他一些传统嵌入式操作系统的重要特征#xff0c;它给Linux带来了许多强大和灵活的功能#xff0c;同时也带来了一些复杂性。我们需要清楚的了解根文件系统的基本… 根文件系统一直以来都是所有类Unix操作系统的一个重要组成部分也可以认为是嵌入式Linux系统区别于其他一些传统嵌入式操作系统的重要特征它给Linux带来了许多强大和灵活的功能同时也带来了一些复杂性。我们需要清楚的了解根文件系统的基本结构以及细心的选择所需要的系统库、内核模块和应用程序等并配置好各种初始化脚本文件以及选择合适的文件系统类型并把它放到实际的存储设备的合适位置 Linux的根文件系统以树型结构组织包含内核和系统管理所需要的各种文件和程序一般说来根目录”/”下的顶层目录都有一些比较固定命名和用途。 下面列出了一个Linux根文件系统中的比较常见的目录结构 /bin 存放二进制可执行命令的目录 该目录下存放所有用户都可以使用的、基本的命令这些命令在挂接其它文件系统之前就可以使用所以/bin目录必须和根文件系统在同一个分区中。 /bin目录下常用的命令有cat,chgrp,chmod,cp,ls,sh,kill,mount,umount,mkdir,m knod,[,test等“[”命令其实就是test命令我们在利用Busybox制作根文件系统时在生成的bin目录下可以看到一些可执行的文件也就是可用的一些命令。 /dev 存放设备文件的目录 该目录下存放的是设备文件设备文件是Linux中特有的文件类型在Linux系统下以文件的方式访问各种设备即通过读写某个设备文件操作某个具体硬件。比如通过dev/ttySAC0文件可以操作串口0通过/dev/mtdblock1可以访问MTD设备的第2个分区。 /etc 存放系统管理和配置文件的目录 该目录下存放着各种配置文件对于PC上的Linux系统/etc目录下的文件和目录非常多这些目录文件是可选的它们依赖于系统中所拥有的应用程序依赖于这些程序是否需要配置文件。在嵌入式系统中这些内容可以大为精减。 /home 用户主目录比如用户user的主目录就是/home/user可以用~user表示 用户目录它是可选的对于每个普通用户在/home目录下都有一个以用户名命名的子目录里面存放用户相关的配置文件。 /lib 存放动态链接共享库的目录 该目录下存放共享库和可加载驱动程序共享库用于启动系统。运行根文件系统中的可执行程序比如/bin /sbin 目录下的程序。 /sbin存放系统管理员使用的管理程序的目录 该目录下存放系统命令即只有管理员能够使用的命令系统命令还可以存放在/usr/sbin,/usr/local/sbin目录下/sbin目录中存放的是基 本的系统命令它们用于启动系统修复系统等与/bin目录相似在挂接其他文件系统之前就可以使用/sbin所以/sbin目录必须和根文件系统在同一个分区中。 /sbin目录下常用的命令有shutdown reboot fdisk fsck等本地用户自己安装的系统命令放在/usr/local/sbin目录下。 /tmp 公用的临时文件存储点 用于存放临时文件通常是空目录一些需要生成临时文件的程序用到的/tmp目录下所以/tmp目录必须存在并可以访问。 /root 系统管理员的主目录 根用户的目录与此对应普通用户的目录是/home下的某个子目录。 /mnt 系统提供这个目录是让用户临时挂载其他的文件系统。 用于临时挂载某个文件系统的挂接点通常是空目录也可以在里面创建一引起空的子目录比如/mnt/cdram /mnt/hda1 。用来临时挂载光盘、硬盘。 /proc 虚拟文件系统可直接访问这个目录来获取系统信息。 这是一个空目录常作为proc文件系统的挂接点proc文件系统是个虚拟的文件系统它没有实际的存储设备里面的目录文件都是由内核临时生成的用来表示系统的运行状态也可以操作其中的文件控制系统。 /usr 最庞大的目录要用到的应用程序和文件几乎都在这个目录。 /usr目录的内容可以存在另一个分区中在系统启动后再挂接到根文件系统中的/usr目录下。里面存放的是共享、只读的程序和数据这表明/usr目录下的内容可以在多个主机间共享这些主要也符合FHS标准的。/usr中的文件应该是只读的其他主机相关的可变的文件应该保存在其他目录下比如/var。/usr目录在嵌入式中可以精减。 /var 某些大文件的溢出区 与/usr目录相反/var目录中存放可变的数据比如spool目录mail,newslog文件临时文件。 --------------------------------------------------------------------- 一、移植环境 1、 Ubuntu 10.10发行版 2、 u-boot.bin 3、 目标机FS4412平台 4、 交叉编译器 arm-none-linux-gnueabi-gcc --------------------------------------------------------------------- 二、移植步骤 1、 源码下载 我们选择的版本是busybox-1.17.3.tar.bz2下载路径为http://busybox.net/downloads/ 2、 解压源码 $ tar xvf busybox-1.17.3.tar.bz2 3、 进入源码目录 $ cd busybox-1.17.3 4、 配置源码 $ make menuconfig Busybox Settings ---Build Options ---[*] Build BusyBox as a static binary (no shared libs)[ ] Force NOMMU build[ ] Build with Large File Support (for accessing files 2 GB)(arm-cortex_a8-linux-gnueabi-) Cross Compiler prefix() Additional CFLAGS 5、 编译 $ make 6、 安装 busybox默认安装路径为源码目录下的_install $ make install 7、 进入安装目录下 $ cd _install
$ ls
bin linuxrc sbin usr 8、 创建其他需要的目录 $ mkdir dev etc mnt proc var tmp sys root 9、 添加库 在_install目录下创建一个lib文件夹将工具链中的库拷贝到lib目录下 $ mkdir lib
$ cp /home/linux/x-tools/arm-cortex_a8-linux-gnueabi/arm-cortex_a8-linux-gnueabi/lib/* ./lib/ 删除lib下的所有目录、.o文件和.a文件对库进行瘦身以减小文件系统的大小 $ rm *.o *.a
$ arm-cortex_a8-linux-gnueabi-strip lib/* 10、 添加系统启动文件 在etc下添加文件inittab $ vim /etc/inittab 文件内容如下 #this is run first except when booting in single-user mode.
:: sysinit:/etc/init.d/rcS
# /bin/sh invocations on selected ttys
# Start an askfirst shell on the console (whatever that may be)
::askfirst:-/bin/sh
# Stuff to do when restarting the init process
::restart:/sbin/init
# Stuff to do before rebooting
::ctrlaltdel:/sbin/reboot 在etc下添加文件fstab $ vim /etc/fstab 文件内容如下 #device mount-point type options dump fsck order
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0 这里我们挂在的文件系统有三个proc、sysfs和tmpfs在内核中proc和sysfs默认都支持而tmpfs是没有支持的我们需要添加tmpfs的支持 修改内核配置 $ make menuconfig File systems ---Pseudo filesystems ---[*] Virtual memory file system support (former shm fs)[*] Tmpfs POSIX Access Control Lists 重新编译内核 $ make zImage 在etc下创建init.d目录并在init.d下创建rcS文件 $ mkdir /etc/init.d -p
$ vim /etc/init.d/rcS rcS文件内容为 #!/bin/sh
# This is the first script called by init process
/bin/mount -a 为rcS添加可执行权限 $ chmod x init.d/rcS 在etc下添加profile文件 $ vim /etc/profile 文件内容为 #!/bin/sh
export HOSTNAMEfarsight
export USERroot
export HOMEroot
#export PS1\[\u\h \W\]\$
export PS1[$USER$HOSTNAME \W]\#
PATH/bin:/sbin:/usr/bin:/usr/sbin
LD_LIBRARY_PATH/lib:/usr/lib:$LD_LIBRARY_PATH
export PATH LD_LIBRARY_PATH 11、 设备文件创建 根文件系统中有一个设备节点是必须的在dev下创建console节点 $ mknod dev/console c 5 1 重要新制作的文件系统尺寸若超出8M删除不需要的库文件。