aboutsummaryrefslogtreecommitdiffhomepage
path: root/content/2019-10-27-kernel-debugging-qemu/build_initrd.sh
diff options
context:
space:
mode:
Diffstat (limited to 'content/2019-10-27-kernel-debugging-qemu/build_initrd.sh')
-rwxr-xr-xcontent/2019-10-27-kernel-debugging-qemu/build_initrd.sh54
1 files changed, 54 insertions, 0 deletions
diff --git a/content/2019-10-27-kernel-debugging-qemu/build_initrd.sh b/content/2019-10-27-kernel-debugging-qemu/build_initrd.sh
new file mode 100755
index 0000000..fd82990
--- /dev/null
+++ b/content/2019-10-27-kernel-debugging-qemu/build_initrd.sh
@@ -0,0 +1,54 @@
+#!/bin/bash
+
+if test $(id -u) -ne 0; then
+ SUDO=sudo
+fi
+
+set -e
+
+BUSYBOX=busybox-1.33.1
+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 <<EOF > 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