A boot splah image for qemu's boot menu; doesn't seem to work though.
[rrq/tiniest.git] / mkit.sh
diff --git a/mkit.sh b/mkit.sh
index 64e461e3099cf7ec4a1f6de0891e113d7b78a37a..e8dc6574ae53b3e76416d7e799dcb544ed9adda9 100755 (executable)
--- a/mkit.sh
+++ b/mkit.sh
@@ -14,6 +14,7 @@ REPO="deb.devuan.org/merged"
 SUITE="daedalus"
 SECTION="main"
 ARCH="amd64"
+MBR=gpt # or dos
 
 PKGFILE=${REPO//\//_}_${SUITE}_${SECTION}_binary-${ARCH}_Packages
 if [ ! -r $PKGFILE ] ; then
@@ -26,7 +27,8 @@ 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=="Pre-Depends:" {print P,$0 >> "mapdepends.txt";next }
+$1=="Depends:" {print P,$0 >> "mapdepends.txt";next }
 $1=="Filename:" {print P,$2 >> "mapfile.txt";next }
 ' ${PKGFILE}
 
@@ -64,9 +66,9 @@ echo $KERNEL
 echo "# Create initrd filesystem"
 rm -fr initrd
 
-echo "# Install busybox, and fluff it up"
-fakechroot fakeroot \
-dpkg --log=dpkg.log --root=initrd -i $(debfile busybox-static)
+echo "# Extract busybox, and fluff it up"
+mkdir initrd
+debextract initrd $(debfile busybox-static)
 for L in $(initrd/bin/busybox --listfull) ; do
     mkdir -p $(dirname initrd/$L)
     case "$L" in
@@ -87,6 +89,7 @@ if [ ! -d kernel ] ; then
     debextract kernel $(debfile syslinux-common)
     debextract kernel $(debfile syslinux-efi)
     debextract kernel $(debfile syslinux-utils)
+    debextract kernel $(debfile isolinux)
 fi
 
 echo "# Include some kernel modules in the initrd"
@@ -151,8 +154,10 @@ echo "# Now pack up that initrd as initrd.gz"
 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
+# Prepare a gpt/dos partition table with a first partition marked as EFI
 sfdisk bootimage.raw <<EOF
+label: $MBR
+
 2048 32767 U *
 - - L
 EOF
@@ -163,7 +168,7 @@ IMG="-i bootimage.raw@@$((2048*512))"
 
 # Add an ext2 filesystem at offset 61440*512
 # Copy initrd.gz and kernel into the fat filesystem root
-mke2fs -t ext4 -E offset=$((34816*512)) -F bootimage.raw
+mke2fs -t ext4 -E offset=$((34816*512)) -F bootimage.raw 15M
 
 mcopy $IMG initrd.gz ::
 mcopy $IMG kernel/boot/vm* ::/vmlinuz
@@ -198,8 +203,19 @@ 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
+
+case "$MBR" in
+    dos) MBRBIN=mbr.bin ;;
+    gpt)
+       MBRBIN=gptmbr.bin
+       sfdisk --relocate gpt-bak-std bootimage.raw
+       sfdisk -f --part-attrs bootimage.raw 1 LegacyBIOSBootable
+       ;;
+    *) exit 1 ;;
+esac
 dd conv=notrunc of=bootimage.raw bs=440 count=1 \
-   if=kernel/usr/lib/syslinux/mbr/mbr.bin
+   if=kernel/usr/lib/syslinux/mbr/$MBRBIN
 
 exit