wmirescue/bookworm-amd64/bin/ramdisk_config

83 lines
1.9 KiB
Bash

#!/bin/sh
TARGET=$1
KERNEL_VERSION=$2
LANG=C
cat << EOF > ${TARGET}/message
** WMI Rescue Linux (amd64) booting **
EOF
for cmd in cat echo find insmod mkdir mount sh switch_root tar; do
ln -s busybox ${TARGET}/bin/${cmd}
done
cat << EOF > ${TARGET}/init
#!/bin/sh
# WMI Rescue Linux init script.
# (C)2011 Michał Siejak <masterm@wmi.amu.edu.pl>
# (C)2012-2017 Mateusz Hromada <ruanda@wmi.amu.edu.pl>
# (C)2019 Tomasz Zaworski <zawoor@wmi.amu.edu.pl>
# Print message banner
cat /message
# Mount virtual filesystems
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount -t devtmpfs devfs /dev
# Create dev directories
mkdir -p /dev/pts
mkdir -p /dev/shm
# Create mount points
mkdir /rootfs
mkdir /mnt
mkdir /mnt/squashfs
mkdir /mnt/tmpfs
# Load modules
modprobe loop
modprobe squashfs
modprobe overlay
# Mount root filesystem
echo "INITRAMFS: Mounting overlayfs branches ..."
mount -t squashfs -o loop,ro /rootfs.squash /mnt/squashfs
mount -t tmpfs -o mode=755,rw tmpfs /mnt/tmpfs
mkdir /mnt/tmpfs/rw
mkdir /mnt/tmpfs/work
mount -t overlay -o rw,workdir=/mnt/tmpfs/work,upperdir=/mnt/tmpfs/rw,lowerdir=/mnt/squashfs overlay /rootfs
# Extract any addon packages
if [ -n "\$(find . -maxdepth 1 -name '*.tar')" ]; then
for i in /*.tar; do
echo "INITRAMFS: Extracting: \$i ..."
tar x -f \$i -C /rootfs
done
fi
echo "INITRAMFS: Preparing rootfs environment ..."
# Move aufs branches to new root
mkdir -p /rootfs/media/.squashfs
mkdir -p /rootfs/media/.tmpfs
mount --move /mnt/squashfs /rootfs/media/.squashfs
mount --move /mnt/tmpfs /rootfs/media/.tmpfs
# Move virtual filesystems to new root
mount --move /proc /rootfs/proc
mount --move /sys /rootfs/sys
mount --move /dev /rootfs/dev
# Switch to new root filesystem
echo "INITRAMFS: Switching to new rootfs ..."
exec switch_root -c /dev/console /rootfs /sbin/init
# Should not reach here
echo "INITRAMFS: Could not switch to new rootfs! System halted."
exit 0
EOF
chmod a+x ${TARGET}/init