3.2 根文件系统制做

3.2 根文件系统制做

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

文件系统

什么是文件系统?编辑器

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

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

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

制做根文件系统

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

1. 建立目录和文件it

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

演示

1. 建立目录和文件console

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

27102974

2. 建立设备文件

cd dev/

mknod -m 666 console c 5 1

mknod -m 666 null c 1 3

cd ..

27342248

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

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

27852059

4. 编译内核模块

进入linux内核目录(linux 2.6.36)

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

make modules ARCH=arm CROSS_COMPILE=arm-linux-

38317074

...

38342565

5. 安装内核模块

make modules_install ARCH=arm INSTALL_MOD_PATH=/xxx/rootfs

INSTALL_MOD_PATH是指定安装的路径。

38426649

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

38556224

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

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

tar zxvf busybox-1.17.2.tgz

39403840

进入busybox目录中执行:make menuconfig

39434088

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

39614769

对于哪些功能要,哪些不要,这个是根据本身的须要来的。可是有些是必须的,好比说静态连接等。

a. 配置

进入Busybox Setting -->

build options -->

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

40643876

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

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

40621568

Installation Options -->

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

40573910

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

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

40538451

40466550

能够在editors里面去掉vi编辑器,由于在嵌入式里面不须要这个工具,awk,cmp,diff,sed等这些命令都不须要:

40679366

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

40716884

b. 编译busybox

make

41112534

c. 安装busybox

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

41199567

make install

41251547

再查看下rootfs/bin/下面是不是空(固然其余目录下也会有东西加进去,好比sbin):

41490743

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

41582893

因此咱们执行的命令都是busybox提供的。它根据命令的名称来分辨是哪一个命令。

相关文章
相关标签/搜索