From 6f3be1243d15d3e90e4e3bde7bfc3fa07ebf8a4f Mon Sep 17 00:00:00 2001 From: Ralph Ronnquist Date: Sat, 28 Oct 2023 18:04:04 +1100 Subject: [PATCH] * commenting cleanup * add password-less root login * populate the extra partition from directory extra/ if any --- mkit.sh | 37 +++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/mkit.sh b/mkit.sh index 728fe33..4012566 100755 --- a/mkit.sh +++ b/mkit.sh @@ -9,21 +9,21 @@ set -e -### Step 1. Download original .deb file from the source +echo '### Step 1. Download original Packages file from the source' REPO="deb.devuan.org/merged" SUITE="daedalus" SECTION="main" ARCH="amd64" -MBR=dos # or dos +MBR=dos # gpt PKGFILE=${REPO//\//_}_${SUITE}_${SECTION}_binary-${ARCH}_Packages if [ ! -r $PKGFILE ] ; then - wget -O - http://$REPO/dists/$SUITE/$SECTION/binary-$ARCH/Packages.xz | \ + wget -qO - 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" +echo '# Reduce 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} @@ -42,7 +42,7 @@ maplookup() { debfile() { local F="$(maplookup $1 mapfile.txt)" if [ ! -e "${F##*/}" ] ; then - wget "http://$REPO/$F" || return 1 + wget -q "http://$REPO/$F" || return 1 fi echo "${F##*/}" } @@ -54,12 +54,12 @@ debextract() { } # Deteremine which kernel to use; this is -echo -n "# Determining kernel: " +echo "# Determine kernel" KERNEL="$(maplookup linux-image-amd64 mapdepends.txt | \ sed 's/.*\(linux-image[^ ]*\).*/\1/')" -echo $KERNEL +echo "# ... $KERNEL" -### Step 2. Create and populate the initrd, and packit up. +echo '### 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. @@ -132,10 +132,14 @@ rm -f initrd/sbin/init # just in case cp init/init initrd/init chmod a+x initrd/init +echo "# Declare password-less root" +mkdir -p initrd/etc +echo 'root::0:0:root:/root:/bin/bash' > initrd/etc/passwd + 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 +echo '### 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 @@ -151,9 +155,10 @@ EOF mkfs.fat -n TINIEST --offset 2048 -F 16 bootimage.raw IMG="-i bootimage.raw@@$((2048*512))" -# Add an ext2 filesystem at offset 61440*512 +# Add an ext2 filesystem at offset 34816*512 # Copy initrd.gz and kernel into the fat filesystem root -mke2fs -t ext4 -E offset=$((34816*512)) -F bootimage.raw 15M +EXT=offset=$((34816*512)) +mke2fs -t ext4 -E $EXT -F bootimage.raw 15M mcopy $IMG initrd.gz :: mcopy $IMG kernel/boot/vm* ::/vmlinuz @@ -204,4 +209,12 @@ esac dd conv=notrunc of=bootimage.raw bs=440 count=1 \ if=kernel/usr/lib/syslinux/mbr/$MBRBIN +echo "# populate the extra partition" +if [ -d extra ] ; then + mkdir -p X + fuse2fs -o fakeroot -o$EXT bootimage.raw X + rsync -r extra/. X/. + umount X +fi + exit -- 2.39.2