Created
March 6, 2021 06:42
-
-
Save copy/c6fd91ce0c9a56917ba8f6220fc53aff to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
set -ve | |
if [ $(id -u) != "0" ] | |
then | |
echo "Please run as root" | |
exit 1 | |
fi | |
OUTFILE=/tmp/debian-full.img | |
CONTAINER_NAME=debian-full | |
dd if=/dev/zero of=$OUTFILE bs=1 count=0 seek=10G | |
( | |
echo o # Create a new empty DOS partition table | |
echo n # Add a new partition | |
echo p # Primary partition | |
echo 1 # Partition number | |
echo 2048 # First sector | |
echo # Last sector (Accept default: varies) | |
echo a # make bootable | |
echo w # Write changes | |
echo q # quit | |
) | fdisk $OUTFILE | |
# 1048576 is 2048 (first sector) * 512 (sector size) | |
mkfs.ext4 -F -E offset=1048576 $OUTFILE | |
kpartx -a -v $OUTFILE | |
function finish_kpartx { | |
kpartx -d $OUTFILE | |
} | |
trap finish_kpartx EXIT | |
# XXX: Assumes loop0 | |
mount /dev/mapper/loop0p1 /mnt | |
function finish_mount { | |
umount /mnt | |
finish_kpartx | |
} | |
trap finish_mount EXIT | |
docker export $CONTAINER_NAME | tar -xC /mnt/ | |
grub-install --recheck --target=i386-pc --locales= --themes= --fonts= --root-directory /mnt/ /dev/loop0 | |
cat > /mnt/boot/grub/grub.cfg << 'EOF' | |
set root='hd0' # XXX: I believe this has no significance, but is required to exist by grub | |
set timeout_style=menu | |
set timeout=0 | |
menuentry 'Linux' { | |
#insmod ext2 | |
#insmod gzio | |
#insmod fat | |
set root='hd0,msdos1' | |
echo 'Loading Linux linux ...' | |
linux /vmlinuz rw root=/dev/sda1 rootfstype=ext4 init=/bin/systemd vga=ask | |
#linux /boot/vmlinuz debug verbose rw root=/dev/sda1 rootfstype=ext4 | |
#linux /boot/vmlinuz-virthardened nosplash debug verbose rw root=/dev/sda1 rootfstype=ext4 | |
echo 'Loading initial ramdisk ...' | |
initrd /initrd.img | |
#initrd /boot/initramfs-vanilla | |
#initrd /boot/initramfs-virthardened | |
} | |
EOF | |
echo $OUTFILE created. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment