Create an init process in Rust that can mount the initial file systems appropriately.

This commit is contained in:
2021-01-06 08:33:28 -08:00
parent 1838e73db3
commit 5def920817
11 changed files with 205 additions and 36 deletions

View File

@@ -1,40 +1,12 @@
#!/bin/bash
ARCH="x86_64"
BB_VER="1.31.0"
# Dirs
mkdir -p root
cd root
mkdir -p bin dev etc lib mnt proc sbin sys tmp var
mkdir -p image/{bin,dev,etc,lib,mnt,proc,sbin,sys,tmp,var}
cd image
mkdir -p
cd -
# Utils
if [ ! -f "root/bin/busybox" ]; then
curl -L "https://www.busybox.net/downloads/binaries/${BB_VER}-defconfig-multiarch-musl/busybox-${ARCH}" >root/bin/busybox
fi
cd root/bin
chmod +x busybox
ln -s busybox mount
ln -s busybox sh
cd -
# Init process
cat >>root/init << EOF
#!/bin/busybox sh
/bin/busybox --install -s /bin
mount -t devtmpfs devtmpfs /dev
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount -t tmpfs tmpfs /tmp
setsid cttyhack sh
exec /bin/sh
EOF
chmod +x root/init
# initramfs creation
cd root
cd image
find . | cpio -ov --format=newc | gzip -9 >../initramfs
cd -