如何制作Linux根文件系统
Linux的根文件系统以树形结构组织,包括内核和系统管理所需的各种文件和程序。一般来说,根目录“/”下的顶级目录都有一些固定的名称和用途。
下面列出了Linux根文件系统中常见的目录结构:
/bin存储二进制可执行命令的目录。
该目录包含所有用户都可以使用的基本命令。这些命令可以在挂载其他文件系统之前使用,因此/bin目录必须与根文件系统在同一个分区中。
/bin目录下常用的命令有:cat、chgrp、chmod、CP、ls、sh、kill、mount、umount、mkdir、mknod、[、test和其他"["命令其实就是测试命令。当我们使用Busybox制作根文件系统时,在生成的bin目录中可以看到一些可执行文件,也就是一些可用的命令。
存储设备文件的/dev目录。
设备文件存储在这个目录中,这是Linux中特有的文件类型。在Linux系统下,各种设备都是以文件的形式访问的,即通过读写一个设备文件来操作一个特定的硬件。比如串口0可以通过“dev/ttySAC0”文件操作,MTD设备的第二个分区可以通过“/dev/mtdblock1”访问。
/etc存储系统管理和配置文件的目录。
各种配置文件都存储在这个目录中。对于PC上的Linux系统,/etc目录下有很多文件和目录。这些目录文件是可选的,它们取决于系统中的应用程序以及这些程序是否需要配置文件。在嵌入式系统中,这些内容可以大大减少。
/home用户的主目录,比如用户的主目录是/home/user,可以用~user来表示。
用户目录,这是可选的。对于每一个普通用户来说,在/home目录下都有一个以用户名命名的子目录,存放用户相关的配置文件。
/lib是动态链接* * *享库的目录。
这个目录存储* * *共享库和可加载(驱动),* * *共享库用于启动系统。运行根文件系统中的可执行程序,比如/bin /sbin目录中的程序。
/sbin是存储系统管理员使用的hypervisor的目录。
该目录存储系统命令,即只能由管理员使用的命令。系统命令也可以存储在/usr/sbin、/usr/local/sbin目录中。/sbin目录存储基本的系统命令,这些命令用于启动系统和修复系统。与/bin目录类似,/sbin可以在挂载其他文件系统之前使用,因此/sbin目录必须与根文件系统位于同一位置。
/sbin目录下的常用命令有:shutdown reboot fdisk fsck等。本地用户安装的系统命令放在/usr/local/sbin目录中。
/tmp通用的临时文件存储点
用于存储临时文件,通常是一个空目录,位于某些需要生成临时文件的程序所使用的/tmp目录下,所以/tmp目录必须存在并且可以访问。
/root系统管理员的主目录
root用户的目录,对应的,普通用户的目录是/home下的子目录。
/mnt system为用户临时挂载其他文件系统提供此目录。
用来临时挂载文件系统的挂载点通常是一个空的目录,也可以在里面创建一个空的子目录,比如/mnt/cdram /mnt/hda1。用于临时安装CD和硬盘。
/proc虚拟文件系统,可以直接访问它来获取系统信息。
这是一个空目录,通常用作proc文件系统的挂载点。proc文件系统是一个虚拟文件系统,它没有实际的存储设备。里面的目录和文件是内核临时生成的,用来指示系统的运行状态,也可以操作文件控制系统。
/usr是最大的目录,几乎所有要用的应用程序和文件都在这个目录里。
/usr目录的内容可以存储在另一个分区中,然后在系统启动后链接到根文件系统中的/usr目录。其中存储的程序和数据是* * *共享的,只读的,说明/usr目录中的内容可以在多台主机之间共享,这主要是符合FHS标准的。/usr中的文件应该是只读的,与其他主机相关的变量文件应该保存在其他目录中,比如/var。/usr目录可以在嵌入式系统中细化。
/var一些大文件的溢出区。
与/usr目录相反,/var目录存储可变数据,例如假脱机目录(邮件、新闻)、日志文件和临时文件。
-
一、移植环境:
1,Ubuntu 10.10分配
2、优步. bin
3.目标机器:FS_S5PC100平台。
4.交叉编译器ARM-Cortex _ A8-Linux-GNUEABI-GCC
-
二、移植步骤
1,源代码下载
我们选择的版本是busybox-1.17.3 . tar . bz2 .下载路径是:
/下载/
2.解压缩源代码
$ tar xvf busybox-1.17.3 . tar . bz2
3.输入源目录
$ cd busybox-1.17.3
4.配置源代码
$ make menuconfig
Busybox设置-& gt;
构建选项-& gt;
[*]将BusyBox构建为静态二进制文件(没有共享库)
[ ]强制NOMMU构建
[ ]支持大文件构建(用于访问文件& gt2 GB)
(arm-cortex_a8-linux-gnueabi-)交叉编译器前缀
()附加CFLAGS
5.编制
$ make
6.装置
busybox的默认安装路径是源目录中的_install。
$进行安装
7.输入安装目录。
$ cd _install
$ ls
bin linuxrc sbin usr
8.创建其他所需的目录。
$ mkdir dev等管理进程变量tmp系统根
9.添加库
在_install目录下创建一个lib文件夹,将工具链中的库复制到lib目录下。
$ mkdir库
$ CP/home/Linux/x-tools/arm-cortex _ A8-Linux-gnueabi/arm-cortex _ A8-Linux-gnueabi/lib/*。/lib/
删除所有目录,。o文件和。a文件下的lib和slim down库,以减少文件系统的大小。
$ rm *。o *。a
$ arm-cortex _ A8-Linux-gnueabi-strip lib/*
10,添加系统启动文件
在etc下添加文件inittab。
$ vim /etc/inittab
该文件的内容如下:
#除了在单用户模式下启动之外,它首先运行。
* sysinit:/etc/init . d/rcS
所选tty上的# /bin/sh调用
#在控制台上启动一个“ask first”shell(不管是什么)
* ask first:-/bin/sh
#重新启动初始化进程时要做的事情
* restart:/sbin/init
#重启前要做的事情
* ctrl altdel:/sbin/reboot
在etc下添加文件fstab。
$ vim /etc/fstab
该文件的内容如下:
#设备挂载点类型选项转储fsck顺序
过程/过程过程默认值0 0
tmpfs /tmp tmpfs默认值0 0
sysfs /sys sysfs默认值0 0
tmpfs /dev tmpfs默认值0 0
这里有三个文件系统:proc、sysfs和tmpfs。在内核中,默认情况下proc和sysfs都受支持,但tmpfs不受支持。我们需要添加tmpfs支持。
修改内核配置:
$ make menuconfigFile系统-& gt;
伪文件系统-& gt;
[*]虚拟内存文件系统支持(以前的shm fs)
[*] Tmpfs POSIX访问控制列表
重新编译内核
$ make zImage
在etc下创建init.d目录,在init.d下创建rcS文件。
$ mkdir /etc/init.d -p
$ vim /etc/init.d/rcS
rcS文件的内容是:
#!/bin/sh
#这是init进程调用的第一个脚本
/bin/mount -a
为rcS添加可执行权限:
$ chmod +x init.d/rcS
在etc下添加配置文件。
$ vim /etc/profile
文件内容是:
#!/bin/sh
导出主机名=远视
导出用户=root
导出主页=根
# export PS 1 = " \[\ u @ \ h \ W \]\ $ "
export PS 1 = "[$ USER @ $ HOSTNAME \ W]\ # "
PATH =/bin:/sbin:/usr/bin:/usr/sbin
LD _ LIBRARY _ PATH =/lib:/usr/lib:$ LD _ LIBRARY _ PATH
导出路径LD_LIBRARY_PATH
11,设备文件创建
根文件系统中必须有一个设备节点。在dev下创建一个控制台节点。
$ mknod开发/控制台c 5 1
重要提示:如果新创建的文件系统的大小超过8M,请删除不必要的库文件。