From 4cacdc777c1fa8f8ddae16f3f100de6a3829cab7 Mon Sep 17 00:00:00 2001 From: Ralph Ronnquist Date: Fri, 9 Jun 2023 23:56:39 +1000 Subject: [PATCH] initial --- bootmenu.cfg | 14 +++ mkit.sh | 201 ++++++++++++++++++++++++++++++++++++++++++++ splash.png | Bin 0 -> 42438 bytes syslinux-legacy.cfg | 2 + syslinux-uefi.cfg | 2 + syslinux.cfg | 5 ++ vm.sh | 19 +++++ 7 files changed, 243 insertions(+) create mode 100644 bootmenu.cfg create mode 100755 mkit.sh create mode 100644 splash.png create mode 100644 syslinux-legacy.cfg create mode 100644 syslinux-uefi.cfg create mode 100644 syslinux.cfg create mode 100755 vm.sh diff --git a/bootmenu.cfg b/bootmenu.cfg new file mode 100644 index 0000000..e51abba --- /dev/null +++ b/bootmenu.cfg @@ -0,0 +1,14 @@ +default vesamenu.c32 + +menu margin 0 +menu rows 7 +menu background /splash.png +menu title Tiniest + +label linux + kernel /vmlinuz + append initrd=/initrd.gz init=/init console=ttyS0 root=/dev/ram0 + +label other + kernel /vmlinuz + append initrd=/initrd.gz init=/init console=ttyS0 root=/dev/ram0 diff --git a/mkit.sh b/mkit.sh new file mode 100755 index 0000000..710a123 --- /dev/null +++ b/mkit.sh @@ -0,0 +1,201 @@ +#!/bin/bash +# +# A script to prepare the tiniest "linux system". It's a kernel and an +# initrd within a FAT with a syslinux boot loader. The initrd contains +# a fully expanded busybox and uses /bin/sh as its init. +# +# This script creates and packs that initrd, as well as the whole, +# boot image. + +set -e + +### Step 1. Download original .deb file from the source +REPO="deb.devuan.org/merged" +SUITE="daedalus" +SECTION="main" +ARCH="amd64" + +PKGFILE=${REPO//\//_}_${SUITE}_${SECTION}_binary-${ARCH}_Packages +if [ ! -r $PKGFILE ] ; then + wget -O - http://$REPO/dists/$SUITE/$SECTION/binary-$ARCH/Packages.xz | \ + xzcat - > ${PKGFILE} +fi + +# Reduce that Packages file into two maps for finding filename and depends +echo "# Creating mapdepends.txt and mapfile.txt" +awk ' +BEGIN { print "###" > "mapdepends.txt"; print "###" > "mapfile.txt"; } +$1=="Package:" {P=$2; next} +$1=="Depends:" {print P,$2 >> "mapdepends.txt";next } +$1=="Filename:" {print P,$2 >> "mapfile.txt";next } +' ${PKGFILE} + +# Function to find the filename (or an map file) for a given package +maplookup() { + awk -v P="$1" '$1==P {$1="" ;print; exit}' ${2-mapfile.txt} | \ + sed 's/ //' +} + +# Function to download a deb file and return its name +debfile() { + local F="$(maplookup $1 mapfile.txt)" + if [ ! -e "${F##*/}" ] ; then + wget "http://$REPO/$F" || return 1 + fi + echo "${F##*/}" +} + +# Function to extract from a deb without executing and pre/post scripts +# $1 = rootfs $2 = package +debextract() { + ar p $2 data.tar.xz | tar xJf - -C $1 +} + +# Deteremine which kernel to use; this is +echo -n "# Determining kernel: " +KERNEL="$(maplookup linux-image-amd64 mapdepends.txt | \ + sed 's/.*\(linux-image[^ ]*\).*/\1/')" +echo $KERNEL + +### Step 2. Create and populate the initrd, and packit up. +# The initrd contains only a few kernel modules for coping with a +# later pivoting onto a "full" filesystem. + +echo "# Create initrd filesystem" +rm -r initrd + +echo "# Install busybox, and fluff it up" +fakechroot fakeroot \ +dpkg --log=dpkg.log --root=initrd -i $(debfile busybox-static) +for L in $(initrd/bin/busybox --listfull) ; do + mkdir -p $(dirname initrd/$L) + case "$L" in + bin/busybox) : ;; + usr/*) ln -s ../../bin/busybox initrd/$L ;; + sbin/*) ln -s ../bin/busybox initrd/$L ;; + bin/*) ln -s busybox initrd/$L ;; + linuxrc) ln -s bin/busybox initrd/$L ;; + esac +done + +echo "# Extract the kernel package ($KERNEL)" +echo "# .. and syslinux stuff if needed" +if [ ! -d kernel ] ; then + mkdir kernel + debextract kernel $(debfile $KERNEL) + debextract kernel $(debfile syslinux) + debextract kernel $(debfile syslinux-common) + debextract kernel $(debfile syslinux-efi) + debextract kernel $(debfile syslinux-utils) +fi + +echo "# Include some kernel modules in the initrd" +MODULES=( + # disk + scsi_common scsi_mod libata ata_piix ata_generic cdrom sr_mod + crc32-pclmul crct10dif_common crc-t10dif crc64 crc64-rocksoft + t10-pi sd_mod sg nls_cp437 nls_ascii fat vfat ext4 isofs + # input + psmouse evdev + # network + e1000 +) +MOODLES="" +B=$(pwd) +for m in ${MODULES[@]} ; do + km=$(find kernel/lib/modules -name $m.ko) + if [ -z "$km" ] ; then + echo "Missing module $m" + continue + fi + im=initrd/${km#kernel/} + MOODLES+=" $B/$im" + mkdir -p $(dirname $im) + cp -n $km $im +done +V=${KERNEL#linux-image-} +mkdir -p initrd/boot initrd/lib/modules/$V +cp kernel/boot/System.map-$V initrd/ +cp kernel/lib/modules/$V/modules.order initrd/lib/modules/$V/ +cp kernel/lib/modules/$V/modules.builtin initrd/lib/modules/$V/ +depmod -F initrd/System.map-$V -b initrd $V $MOODLES + +echo "# setup a scripted init. The kernel runs this via the #! interpreter" +rm -f initrd/sbin/init # just in case +cat < initrd/init +#!/bin/sh +echo +echo +echo "Hi there, tiniest lover!" + +mkdir /proc +mount -t proc proc /proc +mount -t devtmpfs devtmpfs /dev +mkdir /dev/pts +mount -t devpts devpts /dev/pts +mkdir /sys +mount -t sysfs sysfs /sys +$(for m in ${MODULES[@]} ; do echo modprobe $m ; done) +exec /bin/sh +EOF +chmod a+x initrd/init + +echo "# Now pack up that initrd as initrd.gz" +( cd initrd ; find . | fakeroot cpio -H newc -o | gzip ) >initrd.gz + +### Step 3. create a 32 Mb fat filesystem with bios and UEFI boot +rm -f bootimage.raw +dd if=/dev/zero of=bootimage.raw bs=32M count=1 + +# Prepare a dos partition table with a first partition marked as EFI +sfdisk bootimage.raw < syslinux-legacy.cfg +path /boot/syslinux/bios +include /bootmenu.cfg +EOF + +mmd $IMG ::/boot +mmd $IMG ::/boot/syslinux +mmd $IMG ::/boot/syslinux/bios +mcopy $IMG \ + kernel/usr/lib/syslinux/modules/bios/* ::/boot/syslinux/bios +mcopy $IMG syslinux-legacy.cfg ::/syslinux.cfg + +echo "# Set up UEFI boot" +cat < syslinux-uefi.cfg +path /EFI/BOOT/efi64 +include /bootmenu.cfg +EOF + +mmd $IMG ::/EFI +mmd $IMG ::/EFI/BOOT +mmd $IMG ::/EFI/BOOT/efi64 +mcopy $IMG kernel/usr/lib/SYSLINUX.EFI/efi64/syslinux.efi \ + ::/EFI/BOOT/bootx64.efi +mcopy $IMG \ + kernel/usr/lib/syslinux/modules/efi64/* ::/EFI/BOOT +mcopy $IMG syslinux-uefi.cfg ::/EFI/BOOT/syslx64.cfg + +syslinux --install --offset=${IMG#*@@} bootimage.raw +dd conv=notrunc of=bootimage.raw bs=440 count=1 \ + if=kernel/usr/lib/syslinux/mbr/mbr.bin + +exit diff --git a/splash.png b/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..0b4daa58f5ef4f6ece709f535f0dbabd03017ea2 GIT binary patch literal 42438 zcmeFZcT|+i(l0znQi+O44kAH7a?T>jAtN~sNR9){kfSJ|D4;{mO3pbAIU_m8AqUBW z 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 literal 0 HcmV?d00001 diff --git a/syslinux-legacy.cfg b/syslinux-legacy.cfg new file mode 100644 index 0000000..491c759 --- /dev/null +++ b/syslinux-legacy.cfg @@ -0,0 +1,2 @@ +path /boot/syslinux/bios +include /bootmenu.cfg diff --git a/syslinux-uefi.cfg b/syslinux-uefi.cfg new file mode 100644 index 0000000..ee8bd6c --- /dev/null +++ b/syslinux-uefi.cfg @@ -0,0 +1,2 @@ +path /EFI/BOOT/efi64 +include /bootmenu.cfg diff --git a/syslinux.cfg b/syslinux.cfg new file mode 100644 index 0000000..e7a530c --- /dev/null +++ b/syslinux.cfg @@ -0,0 +1,5 @@ +path /syslinux/bios +default linux auto +label linux +kernel /vmlinuz +append initrd=/initrd.gz init=/init console=ttyS0 root=/dev/ram0 diff --git a/vm.sh b/vm.sh new file mode 100755 index 0000000..74274e6 --- /dev/null +++ b/vm.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# +# QEMU setup for trial3 VM + +if [ -n "$EFI" ] ; then + BOOT="-bios /usr/share/OVMF/OVMF_CODE.fd" +else + BOOT="-boot menu=on" +fi +ARGS=( + -m 2G -M pc,accel=kvm -cpu host + -serial mon:stdio -echr 0x1c + -vga qxl + $BOOT + -drive index=0,id=disk,media=disk,format=raw,file=disk.raw + -drive index=1,id=boot,media=disk,format=raw,file=bootimage.raw +) + +qemu-system-x86_64 ${ARGS[@]} -- 2.39.2