#!/bin/bash set -e BUSYBOX=busybox-1.31.0 INITRD=$PWD/initramfs.cpio.gz ## Build busybox echo "[+] configure & build $BUSYBOX ..." [[ ! -d $BUSYBOX ]] && { wget https://busybox.net/downloads/$BUSYBOX.tar.bz2 bunzip2 $BUSYBOX.tar.bz2 && tar xf $BUSYBOX.tar } cd $BUSYBOX make defconfig sed -i 's/# CONFIG_STATIC .*/CONFIG_STATIC=y/' .config make -j4 busybox make install ## Create initrd echo "[+] create initrd $INITRD ..." cd _install # 1. create initrd folder structure mkdir -p bin sbin etc proc sys usr/bin usr/sbin dev # 2. create init process cat < init #!/bin/sh mount -t proc none /proc mount -t sysfs none /sys exec setsid cttyhack sh EOF chmod +x init # 3. create device nodes sudo mknod dev/tty c 5 0 sudo mknod dev/tty0 c 4 0 sudo mknod dev/ttyS0 c 4 64 # 4. created compressed initrd find . -print0 \ | cpio --null -ov --format=newc \ | gzip -9 > $INITRD