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}
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##*/}"
}
}
# 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.
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
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
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