怎么自己制作系统文件 (怎么自己制作系统文件夹)


前言

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


BusyBox生成工具

1. 下载Busybox

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


2. 配置Busybox

tar jxvf busybox-x.x.x.tar.bz2cd busybox-x.x.x/make menuconfig


(1)选择编译静态库

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

电脑


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

Settings --》Cross compiler prefix

填写交叉编译工具链前缀


(3)选择安装目录

Settings --》Destination path for 'make install'

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


3. 编译安装

makemake install

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

电脑


构建根文件系统

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

mkdir rootfscd 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 0sysfs /sys sysfs defaults 电脑 0 0tmpfs /tmp tmpfs defaults 0 0tmpfs                 /dev           tmpfs    defaults       0         0


制作镜像文件

1. 制作ubifs镜像

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

2.制作yaffs2镜像

mkyaffs2image ./rootfs rootfs.yaffs2

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


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

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


电脑 电脑