编译busybox 创建initramfs
下载busybox
下载并解压
wget https://www.busybox.net/downloads/busybox-1.36.1.tar.bz2
tar -xvf busybox-1.31.0.tar.bz2
cd busybox-1.36.1
配置busybox
make defconfig
make menuconfig
配置为静态编译
在 Settings --->
下, 设置 Build static binary (no shared libs)
为 [*]
...
--- Build Options
[*] Build static binary (no shared libs)
...
编译并安装
安装会将编译好的文件拷贝到_install
make -j $(nproc)
make install
创建initramfs
文件
创建系统目录
cd _install
mkdir -p mnt sys dev etc/init.d
创建rcS文件
# create the init script
cat << EOF > etc/init.d/rcS
mkdir -p /sys
mkdir -p /tmp
mkdir -p /proc
mkdir -p /mnt
mkdir -p /lib/modules/4.0.0+
/bin/mount -a
mkdir -p /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
mount -t 9p -o trans=virtio kmod_mount /mnt
EOF
给rcS文件添加可执行权限
chmod +x etc/init.d/rcS
创建fstab文件
cat << EOF > etc/fstab
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
debugfs /sys/kernel/debug debugfs defaults 0 0
EOF
创建inittab文件
# create inittab
cat << EOF > etc/inittab
::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
::askfirst:-/bin/sh
::ctrlaltdel:/bin/umount -a -r
EOF
创建设备节点
# create the device nodes
sudo mknod -m 666 dev/console c 5 1
sudo mknod -m 666 dev/null c 1 3
创建镜像文件
# generate the initramfs
find . | cpio -o --format=newc | gzip -9 > ../initramfs.cpio.gz
cd ..