最小根文件系统制作

2025-04-28

一、移植

所谓制作根文件系统,就是创建各种目录,并且在里面创建各种文件。对于创建一个最下根文件系统,只需要在/dev目录下创建必要的设备节点、在/etc目录下创建一些配置文件就可以了,如果使用动态链接库,那还要在/lib目录下包含库文件。支持库和glibc库,对.2.x之后的内涵支持良好。的源码可以从 下载,我下载的是-1.7.5.tar.bz2.

(1)解压

$tar -jxvf -1.7.5.tar.bz2

(2)配置

$make

--->

Build --->

[ ] Build as a (no libs) (是否编译成静态库,在这里我没选,使用动态库)

--->

[*] Tab (tab缩进功能)

[*]

[*] Fancy shell (这两项在创建/etc/文件时要用,这样可以命令行有提示符显示)

其它配置自己可以参考着修改,我就没动了。退出记得保存!

(3)编译和安装

3.1编译之前首先修改,使用交叉编译器

$vim

175 ARCH ?= arm

176 ?= arm-linux-gnu-

然后执行"make"命令编译

如果出现什么错误,你尽可上网搜索,一般都可以解决。我这里没什么问题。

3.2安装"make =/home/ stall"

=/home/为指定安装目录(前提你首先得在home目录创建目录,只要mkdir /home/)

如果你没有指定只执行:make 那么在默认的-1.7.5目下会生成目录,

$ls /home/

bin sbin usr

如果是make 那么-1.7.5/目录下会有一样的结果。

二、使用glibc库

在你安装交叉工具链时,已经生成了glibc库,可以直接使用它来构建根文件系统。

在上面我用的是编译动态库,所以要拷贝一些应用程序使用的库,否则你交叉编译应用程序要加上-表示静态链接

这样生成的文件非常大。

首先进入我/home/

$cd /home/

$mkdir lib

$cp //gcc-3.4.5-glibc-2.3.6/arm-linux-gnu/arm-linux-gnu/lib/*so* ./lib -a

注意:记得加 -a否则非常大,-a可以把软连接形式保存,不用直接拷贝

顺便可以给库瘦身,这样可以减小库的大小

$arm-linux-gnu-strip lib/* sbin/* bin/*

$du -h lib (可以看出减小了很多,不信你不用瘦身试试)

3.3Mlib

这样库就加好了!

三、构建etc目录

etc目录下的内容取决于要运行的程序,init进程根据/etc/文件来创建其它进程,比如调用脚本文件配置IP地址、

挂接其它文件系统,最后启动shell等。

在这里我们只要在etc目录下创建3个文件:etc/、etc/init.d/rcS、etc/fstab、etc/。

$mkdir etc

$vim etc/

(1)创建etc/文件

内容如下:

根文件系统制作过程_最小根文件系统制作_小型文件系统

:::/etc/init.d/rcS

:::-/bin/sh

:::/sbin/init

:::/sbin/

::: -a -r

$cd etc

$mkdir init.d

$vim init.d/rcS

(2)创建etc/init.d/rcS文件

内容如下:

mount -a

mkdir /dev/pts

mount -t /dev/pts

echo /sbin/mdev > /proc/sys//

mdev -s

给rcS加上可执行权限

$sudo chmod +x rcS

$cd ../

$vim fstab

(3)创建etc/fstab文件

内容如下:

# mount-point type dump fsck order

proc /proc proc 0 0

sysfs /sys sysfs 0 0

tmpfs /temp tmpfs 0 0

tmpfs /dev tmpfs 0 0

$vim

(4)创建etc/文件 (前面配置提到,用于命令行提示符号)

内容如下:

#!/bin/sh

=caoyi

USER=root

HOME=root

PS1="[$USER@$ \W]\#"

PATH=/bin:/sbin:/usr/bin:/usr/sbin

=/lib:/usr/lib:$

PATH

四、创建其它目录

创建一些常用的目录,只要执行命令:

$cd /home/

$mkdir dev home temp proc sys

五、还要创建两个基本的设备文件

$cd /home//dev

$ mknod c 5 1

$ mknod null c 1 3

至此一个最小根文件系统已经制作成功,里面含有命令行提示符、mdev功能!那么你可以通过NFS挂载到你的开发板做其它实验。

如果你觉得有点小,那么你可以在这个基础上扩展。

下一篇:没有了
上一篇:学习园地:几种Linux日志文件系统的介绍
相关文章
返回顶部小火箭