ARM Cortex-A8移植Linux系列(三)----使用busybox制作文件系统

一、安装busybox

1、下载

    去Busybox的官网:https://busybox.net/downloads/。下载相应的版本源码,笔者下的是1.30.0版本。

2、配置

    解压源代码后,进入根目录,然后右键“在终端中打开”,执行“make menuconfig”命令,然后在“Settings --->”下设置“[*] Build static binary (no shared libs)”和“(arm-unknown-linux-gnueabi-)Cross compiler prefix”   "(./_install) Destination path for 'make install' (NEW)"。然后退出保存。

    注意:我这里交叉编译工具链需要在终端下配置,所以在“make menuconfig”前需要执行“export PATH=/opt/arm-unknown-linux-gnueabi/bin:$PATH”,启动交叉编译工具环境。

3、安装

    执行“make ”“make install” 

二、制作文件结构

1、创建文件

    在busybox平级目录创建rootfs文件夹,并在rootfs下创建 dev、etc、lib、proc、sys、tmp、var、root文件夹。

2、拷贝库

    将交叉编译工具链下面lib目录下的so文件全部拷贝到rootfs/lib文件夹下面,将busybox下/examples/bootfloppy/etc/内的所有文件拷贝到rootfs/etc文件夹下面。

3、修改配置文件

a.修改/etc/inittab文件

# 系统启动时
::sysinit:/etc/init.d/rcS

# 系统关机时
::shutdown:/sbin/swapoff -a
::shutdown:/bin/umount -a -r

# 系统重启时
::restart:/sbin/init

b.修改/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

c.修改/etc/fstab文件

#                         
proc                  /proc          proc     defaults       0         0
sysfs                 /sys           sysfs    defaults       0         0
tmpfs                 /tmp           tmpfs    defaults       0         0
tmpfs                 /dev           tmpfs    defaults       0         0


d.修改/etc/profile文件

# 主机名
export HOSTNAME=XXX

# 用户名
export USER=root

# 用户目录
export HOME=/root

# 终端默认提示符
export PS1="[$USER@$HOSTNAME:\$PWD]\# "    

# 环境变量
export PATH=/bin:/sbin:/usr/bin:/usr/sbin

# 动态库路径
export LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH

三、制作文件系统

    执行“sudo apt install mtd-utils”安装mtd-utils,

    在rootfs平级目录执行“mkfs.ubifs -m 2048 -e 128KiB -c 4096 -r ./rootfs -o rootfs.ubifs”生成UBIFS文件系统,

    新建文件“ubinize.cfg”,

    并修改内容为:

[ubifs]
mode=ubi
image=rootfs.ubifs       # mkfs.ubi生成的源镜像 
vol_id=0                 # 卷号
vol_size=1024MiB         # 卷大小,一般要设置的比分区大,防止有坏块
vol_type=dynamic         # 卷类型,动态卷
vol_name=rootfs          # 卷名,rootfs
vol_flags=autoresize     # 自动大小

    执行“ubinize -m 2048 -p 128KiB ubinize.cfg -o rootfs_ubifs.img”生成文件系统的img文件。

你可能感兴趣的:(嵌入式,系统)