制作嵌入式busybox rootfs系统

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中的选项进行配置:

制作嵌入式busybox rootfs系统_第1张图片

对如下进行配置:

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/sh

profile内容:

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

你可能感兴趣的:(linux,运维,服务器)