3.2 根文件系统制作

3.2 根文件系统制作

没有根文件系统是启动不了linux,会出错,见3.1中的演示。

文件系统

什么是文件系统?

文件系统包含两个层次的含义:

1. 按照固定格式组织的目录与文件(看得见)

2. 在特定的存储介质上管理这些目录和文件需要的数据(看不见)

制作根文件系统

如何制作嵌入式linux所需的文件系统?

1. 创建目录和文件

2. 为创建好的目录和文件建立管理数据

演示

1. 创建目录和文件

mkdir rootfs

cd rootfs

mkdir bin dev etc lib proc sbin sys usr mnt tmp var

mkdir usr/bin usr/lib usr/sbin lib/modules

3.2 根文件系统制作_第1张图片

2. 创建设备文件

cd dev/

mknod -m 666 console c 5 1

mknod -m 666 null c 1 3

cd ..

3.2 根文件系统制作_第2张图片

3. 安装/etc(etc目录下的是配置文件,是通用的,所以是直接从别的地方拷贝过来)

tar xvzf etc.tar.gz -C /xxx/rootfs

3.2 根文件系统制作_第3张图片

4. 编译内核模块

进入linux内核目录(linux 2.6.36)

在3.1中做的是内核的编译,而没有做内核模块的编译。这里是模块的编译,并且要安装到文件系统中去。是安装在lib/modules/下面,此时这个目录下还是空的。

make modules ARCH=arm CROSS_COMPILE=arm-linux-

3.2 根文件系统制作_第4张图片

...

38342565

5. 安装内核模块

make modules_install ARCH=arm INSTALL_MOD_PATH=/xxx/rootfs

INSTALL_MOD_PATH是指定安装的路径。

3.2 根文件系统制作_第5张图片

查看是不是将上面编译生成的模块拷贝到了rootfs/lib/modules下面:

3.2 根文件系统制作_第6张图片

6. 配置busybox(安装linux命令工具)

我们这里使用的是busybox-1.17.2,首先解压:

tar zxvf busybox-1.17.2.tgz

39403840

进入busybox目录中执行:make menuconfig

39434088

注意:这里的控制台窗口必须拉大一点,否则出错:

3.2 根文件系统制作_第7张图片

对于哪些功能要,哪些不要,这个是根据自己的需要来的。但是有些是必须的,比如说静态链接等。

a. 配置

进入Busybox Setting -->

build options -->

<1> 选中"Build busybox as a static binary",静态链接

3.2 根文件系统制作_第8张图片

<2> Cross Compiler prefix(arm-linux-)

指明使用到的交叉工具链的前缀,也可以在make命令中使用"CROSS_COMPILE=arm-linux-"来指明

3.2 根文件系统制作_第9张图片

Installation Options -->

<1> 选中"Don't use /usr",选中该项可以避免busybox被安装到宿主机系统的/usr目录下,破坏宿主机

3.2 根文件系统制作_第10张图片

<2> Busybox Installation Prefix(/xxx/rootfs)

该选项表明编译后的busybox的安装位置。

3.2 根文件系统制作_第11张图片

3.2 根文件系统制作_第12张图片

可以在editors里面去掉vi编辑器,因为在嵌入式里面不需要这个工具,awk,cmp,diff,sed等这些命令都不需要:

3.2 根文件系统制作_第13张图片

find,grep,xargs命令也不需要:

3.2 根文件系统制作_第14张图片

b. 编译busybox

make

3.2 根文件系统制作_第15张图片

c. 安装busybox

在安装之前,rootfs/bin/下面是空的:

41199567

make install

3.2 根文件系统制作_第16张图片

再查看下rootfs/bin/下面是否是空(当然其他目录下也会有东西加进去,比如sbin):

3.2 根文件系统制作_第17张图片

里面多了好多的东西,这都是安装进去的命令工具。而且他们都是一些软连接,连接到busybox的应用程序上

41582893

所以我们执行的命令都是busybox提供的。它根据命令的名称来分辨是哪个命令。

你可能感兴趣的:(3.2 根文件系统制作)