前言

虽然现在像Buildroot或Yocto这类开源项目已经让我们的开发很方便了。但是自己手动去制作根文件系统还是很有意义的,它可以让我们理解其工作流程。废话不多说!

BusyBox生成工具

1. 下载Busybox

Busybox的官方源码下载路径为:https://busybox.net/downloads/。

2. 配置Busybox

tar jxvf busybox-x.x.x.tar.bz2 cd busybox-x.x.x/ make menuconfig

怎样重新建立源文件(手把手教你制作根文件系统)(1)

(1)选择编译静态库

Settings --》Build static binary(no shared libs)

怎样重新建立源文件(手把手教你制作根文件系统)(2)

(2)选择交叉编译工具链

Settings --》Cross compiler prefix

填写交叉编译工具链前缀

怎样重新建立源文件(手把手教你制作根文件系统)(3)

(3)选择安装目录

Settings --》Destination path for 'make install'

根据个人需要修改路径,默认:./_install

怎样重新建立源文件(手把手教你制作根文件系统)(4)

3. 编译安装

make make install

安装完之后会生成bin、sbin、usr这 3个目录和软链接linuxrc

怎样重新建立源文件(手把手教你制作根文件系统)(5)

构建根文件系统

新建一个目录用来存放制作的根文件系统,可以命名为rootfs。

mkdir rootfs cd rootfs

1.Bosybox生成的文件拷贝到rootfs

cp ../busybox-1.33.1/_install/* ./

2. 添加目录结构

然后创建根文件系统所需的目录:

mkdir dev etc lib proc sys tmp var

3. 添加C运行库文件

库文件可直接从交叉工具链获取:

cp -a /usr/arm-linux-gnueabihf/lib/*so* ./lib/

4. 添加初始化配置脚本

初始化配置脚本放在/etc目录下,用于系统启动所需的初始化配置脚本。BusyBox提供了一些初始化范例脚本,在 examples/bootfloppy/etc/ 目录下。我们可以拿过来作为模板再进行修改。

cp -a ../busybox-x.x.x/examples/bootfloppy/etc/* etc/

5. 修改etc/inittab文件

# 系统启动时 ::sysinit:/etc/init.d/rcS # 系统启动按下Enter键时 ::askfirst:-/bin/sh # 按下Ctrl Alt Del键时 ::ctrlaltdel:/sbin/reboot # 系统关机时 ::shutdown:/sbin/swapoff -a ::shutdown:/bin/umount -a -r # 系统重启时 ::restart:/sbin/init

以上内容定义了系统启动时,关机时,重启时,按下Ctrl Alt Del键时执行的进程。

6. 修改/etc/init.d/rcS文件

#! /bin/sh # 挂载 /etc/fstab 中定义的所有文件系统 /bin/mount -a # 挂载虚拟的devpts文件系统用于用于伪终端设备 /bin/mkdir -p /dev/pts /bin/mount -t devpts devpts /dev/pts # 使用mdev动态管理u盘和鼠标等热插拔设备 /bin/echo /sbin/mdev > /proc/sys/kernel/hotplug # 扫描并创建节点 /sbin/mdev -s

7. 修改/etc/fstab文件

/etc/fstab文件存放的是文件系统信息。在系统启动后执行 /etc/init.d/rcS 文件里 /bin/mount -a 命令时,自动挂载这些文件系统。内容如下:

# <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0 tmpfs /tmp tmpfs defaults 0 0 tmpfs/devtmpfsdefaults00

制作镜像文件

1. 制作ubifs镜像

mkfs.ubifs -m 2048 -e 128KiB -c 4096 -r ./rootfs -o rootfs.ubifs

2.制作yaffs2镜像

mkyaffs2image ./rootfs rootfs.yaffs2

注意: 请根据实际情况来选择镜像文件类型。

喜欢这篇文章,欢迎点赞,分享,关注

更多精彩文章,欢迎关注微信公众号"嵌入式软件开发交流"

,