orangepi one H3 busybox文件系统制作
1. 简介
BusyBox 将许多具有共性的小版本的UNIX工具结合到一个单一的可执行文件。这样的集合可以替代大部分常用工具比如的GNU fileutils , shellutils等工具,BusyBox提供了一个比较完善的环境,可以适用于任何小的嵌入式系统。
2. 文件系统构建
orangepi_one/H3-linux4.11_bsp/busybox-1.27.2.tar.bz2是下载的源码
tar -jxvf busybox-1.27.2.tar.bz2
cd busybox-1.27.2
# 清除编译过程文件
1) make distclean
# 进入配置界面
2) 配置buxybox
make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
//静态编译busybox,不依赖其它动态库
//指定使用交叉编译器
//指定生成的文件系统安装到./_install目录
Busybox Settings --->
Build Options --->
[*] Build BusyBox as a static binary (no shared libs)
(arm-linux-gnueabihf-) Cross Compiler prefix
(./_install) BusyBox installation prefix (NEW)
3) 保存退出
4) 编译安装
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
make install
5) 创建文件系统目录,把编译好一文件系统复制到新创建的目录
创建好的目录:orangepi_one/H3-linux4.11_bsp/rootfs
cp ./_install/* ../rootfs/ -rfv
6) 在生成的文件系统中增加一些系统配置和文件
cd rootfs
mkdir dev proc sys tmp var mnt etc lib
cd var
mkdir log lock lib run
cd ../
mkdir etc/init.d -p
touch etc/init.d/rcS
vi etc/init.d/rcS
增加如下内容:
mount -t proc none /proc
mount -t sysfs none /sys
mount -t tmpfs none /tmp
mount -t ramfs none /dev
mdev -s
syslogd
echo /sbin/mdev > /proc/sys/kernel/hotplug
touch etc/inittab
vi etc/inittab
增加内容:
::sysinit:/etc/init.d/rcS
ttyS0::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/sbin/swapoff -a
::shutdown:/bin/umount -a -r
::restart:/sbin/init
touch etc/profile
vi etc/profile
增加内容:
export PS1="orangePiOne \w # "
touch etc/fstab
vi etc/fstab
增加内容:
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
将工具链中的库文件复制到rootfs/lib目录
cp ../toolchain-master/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/lib/* ./lib/ -rfv
给rootfs整个目录设置权限
chmod 0777 rootfs -R
打包(进入rootfs):
tar cf rootfs.tar ./*
3. 烧录到TF卡
将TF卡接入虚拟机
mount /dev/sdb2 /mnt/media2/
tar xvf rootfs.tar -C /mnt/media2/
umount /mnt/media2/
4. bootloadr环境变量修改
// 告诉内核文件系统在第一个mmc的第二个分区,串口波特率是115200,文件系统类型是ext4
setenv bootargs “root=/dev/mmcblk2p2 rw console=ttyS0,115200 rootfstype=ext4”;saveenv
能看到如下信息,说明文件系统启动成功: