Last active
April 26, 2023 13:57
-
-
Save Filiprogrammer/601095701430d205b9fc7c9712e8f693 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
| #!/bin/sh | |
| cd "$(dirname "$(readlink -f "$0")")" | |
| set -e | |
| set -x | |
| IMAGE_SIZE=2G | |
| BOOT_PARTITION_SIZE=64MiB | |
| IMAGE_OUTPUT_FILE=debian.img | |
| DEBIAN_ROOT=$(mktemp -d) | |
| dd bs=$IMAGE_SIZE seek=1 of=$IMAGE_OUTPUT_FILE count=0 | |
| parted -s $IMAGE_OUTPUT_FILE mklabel gpt | |
| parted -m $IMAGE_OUTPUT_FILE print | |
| parted -s $IMAGE_OUTPUT_FILE -- mkpart EFI fat16 0% $BOOT_PARTITION_SIZE | |
| parted -s $IMAGE_OUTPUT_FILE set 1 msftdata on | |
| parted -m $IMAGE_OUTPUT_FILE print | |
| parted -s $IMAGE_OUTPUT_FILE -- mkpart primary ext2 $BOOT_PARTITION_SIZE 100% | |
| parted -m $IMAGE_OUTPUT_FILE print | |
| KPARTX_OUTPUT=$(kpartx -asv $IMAGE_OUTPUT_FILE) | |
| DEB_P1=$(echo $KPARTX_OUTPUT | awk '{print $3}') | |
| DEB_P2=$(echo $KPARTX_OUTPUT | awk '{print $12}') | |
| /sbin/mkfs -t vfat -n FILDEBFIRM /dev/mapper/$DEB_P1 | |
| /sbin/mkfs -t ext4 -L FILDEBROOT /dev/mapper/$DEB_P2 | |
| mkdir -p $DEBIAN_ROOT | |
| mount /dev/mapper/$DEB_P2 $DEBIAN_ROOT | |
| mkdir -p $DEBIAN_ROOT/boot/efi | |
| mount /dev/mapper/$DEB_P1 $DEBIAN_ROOT/boot/efi | |
| apt-get update | |
| apt-get install --no-install-recommends debootstrap | |
| debootstrap --verbose --arch amd64 --variant=minbase --components main,contrib,non-free bullseye $DEBIAN_ROOT http://deb.debian.org/debian | |
| mount --rbind /sys $DEBIAN_ROOT/sys | |
| mount --make-rslave $DEBIAN_ROOT/sys | |
| mount --rbind /dev $DEBIAN_ROOT/dev | |
| mount --make-rslave $DEBIAN_ROOT/dev | |
| mount --rbind /proc $DEBIAN_ROOT/proc | |
| mount --make-rslave $DEBIAN_ROOT/proc | |
| # Add some mirrors to the package manager. | |
| echo "deb http://deb.debian.org/debian bullseye main contrib non-free" > $DEBIAN_ROOT/etc/apt/sources.list | |
| echo "deb http://deb.debian.org/debian bullseye-updates main contrib non-free" >> $DEBIAN_ROOT/etc/apt/sources.list | |
| echo "deb http://security.debian.org/debian-security bullseye-security main contrib non-free" >> $DEBIAN_ROOT/etc/apt/sources.list | |
| chroot $DEBIAN_ROOT apt-get update | |
| chroot $DEBIAN_ROOT apt-get -y install --no-install-recommends linux-image-amd64 firmware-linux grub-efi-amd64 systemd-sysv | |
| chroot $DEBIAN_ROOT apt-get -y install --no-install-recommends grub-pc | |
| # Clean up package manager cache to free up some space. | |
| chroot $DEBIAN_ROOT apt-get clean | |
| chroot $DEBIAN_ROOT rm -rf /var/lib/apt/lists | |
| echo "LABEL=FILDEBROOT / ext4 rw 0 1" > $DEBIAN_ROOT/etc/fstab | |
| echo "LABEL=FILDEBFIRM /boot/efi vfat rw 0 2" >> $DEBIAN_ROOT/etc/fstab | |
| echo "tmpfs /tmp tmpfs rw,nosuid,nodev 0 0" >> $DEBIAN_ROOT/etc/fstab | |
| echo "debian" > $DEBIAN_ROOT/etc/hostname | |
| sed -i 's,root:[^:]*:,root::,' $DEBIAN_ROOT/etc/shadow | |
| chroot $DEBIAN_ROOT grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck --no-nvram --removable | |
| chroot $DEBIAN_ROOT update-grub | |
| umount $DEBIAN_ROOT/boot/efi | |
| umount -R $DEBIAN_ROOT/sys | |
| umount -R $DEBIAN_ROOT/dev | |
| umount -R $DEBIAN_ROOT/proc | |
| umount $DEBIAN_ROOT | |
| kpartx -dsv $IMAGE_OUTPUT_FILE |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment