1、busybox下载
BusyBox
此篇使用版本BusyBox 1.31.1 (stable)
2、设置交叉编译环境变量
source environment-setup-aarch64-poky-linux或者其他架构的编译链工具
3、busybox编译设置
cd busybox-1.31.1
修改根目录Makefile中的CROSS_COMPILE和ARCH参数
比如ARCH ?= arm64
也可以在make menuconfig中的选项进行配置:
对如下进行配置:
Path to sysroot--->/home/rd/xxx_test/tool/sysroots/aarch64-poky-linux
Additional CFLAGS--->--sysroot=/home/rd/xxx_test/tool/sysroots/aarch64-poky-linux)
Additional LDFLAGS进行配置--->--sysroot=/home/rd/xxx_test/tool/sysroots/aarch64-poky-linux)
另外建议选择动态库编译,静态会导致占用空间大
4、编译
make ARCH=arm64 CROSS_COMPILE=arm-linux-gnueabihf-
5、安装
make CONFIG_PREFIX=./installed install //安装到指定目录 或者选择其他目录
6、生成产物
ls
bin dev etc home lib linuxrc mnt opt proc root sbin sys tmp usr var
注意: 在rootfs 上添加目录 dev etc home mnt opt proc root sys tmp var
fstab内容:
proc /proc proc defaults 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
inittab内容:::sysinit:/etc/init.d/rcS
ttySTM0::respawn:-/bin/ash
::restart:/sbin/init
::shutdown:/bin/umount -a -r
或者
::sysinit:/etc/init.d/rcS
tty2::respawn:/bin/getty -L tty2 115200 vt100
console::askfirst:/bin/shprofile内容:
export PS1="[\u@\h \W]# " if [ ! -z ${SSH_TTY} ]; then export PATH=/sbin:/usr/sbin:/bin:/usr/bin fi
group内容:
root:x:0:
passwd内容:
root:x:0:0:root:/root:/bin/sh
rcS内容:
echo "Starting rcS..."
echo "++ Mounting filesystem"
echo /sbin/mdev > /proc/sys/kernel/hotplug也可参考如下:
#! /bin/sh
#
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel
#Charactor modules
/bin/mknod /dev/pts/0 c 136 0
/bin/ln -s /dev/v4l/video0 /dev/video0
/bin/ln -s /dev/fb/0 /dev/fb0
/bin/ln -s /dev/vc/0 /dev/tty1
/bin/ln -s /dev/scsi/host0/bus0/target0/lun0/part1 /dev/sda1
/bin/mount -t proc none /proc
/bin/mount -t tmpfs none /tmp
/bin/mount -t tmpfs none /var
/bin/mkdir -p /var/lib
/bin/mkdir -p /var/run
/bin/mkdir -p /var/log
/sbin/ifconfig lo 127.0.0.1
/sbin/ifconfig eth0 192.168.0.111 up
/bin/hostname -F /etc/hostname注:
一些情况需要先创建节点“console”、“null”。否则在系统启动时内容会提示以下错误:
Warning: unable to open an initial console.
Kernel panic - not syncing: Attempted to kill init!
创建节点的命令如下:
# mknod dev/console c 5 1
# mknod dev/null c 1 3