make minimal bootable linux disk
#!/bin/bash
TARGET_DISK="/dev/sdb"
TARGET_EFI="${TARGET_DISK}1"
TARGET_ROOT="${TARGET_DISK}2"
MOUNTPOINT="/mnt/newroot"
RELEASE="noble"
MIRROR="http://archive.ubuntu.com/ubuntu/"
echo "WARNING: This will erase ${TARGET_DISK}"
echo "Press CTRL+C now if this is wrong."
sleep 10
sudo apt-get update
sudo apt-get install -y debootstrap gdisk dosfstools e2fsprogs grub-efi-amd64-bin grub-efi-amd64-signed shim-signed linux-image-generic
sudo umount "${TARGET_EFI}" 2>/dev/null
sudo umount "${TARGET_ROOT}" 2>/dev/null
sudo umount "${MOUNTPOINT}/boot/efi" 2>/dev/null
sudo umount "${MOUNTPOINT}" 2>/dev/null
sudo sgdisk --zap-all "${TARGET_DISK}"
sudo sgdisk -n 1:2048:+512M -t 1:ef00 -c 1:"EFI System" "${TARGET_DISK}"
sudo sgdisk -n 2:0:0 -t 2:8300 -c 2:"Linux root" "${TARGET_DISK}"
sudo partprobe "${TARGET_DISK}"
sleep 3
sudo mkfs.vfat -F 32 "${TARGET_EFI}"
sudo mkfs.ext4 -F "${TARGET_ROOT}"
sudo mkdir -p "${MOUNTPOINT}"
sudo mount "${TARGET_ROOT}" "${MOUNTPOINT}"
sudo mkdir -p "${MOUNTPOINT}/boot/efi"
sudo mount "${TARGET_EFI}" "${MOUNTPOINT}/boot/efi"
sudo debootstrap --arch=amd64 "${RELEASE}" "${MOUNTPOINT}" "${MIRROR}"
sudo mount --bind /dev "${MOUNTPOINT}/dev"
sudo mount --bind /dev/pts "${MOUNTPOINT}/dev/pts"
sudo mount -t proc proc "${MOUNTPOINT}/proc"
sudo mount -t sysfs sys "${MOUNTPOINT}/sys"
sudo mount -t tmpfs tmpfs "${MOUNTPOINT}/run"
ROOT_UUID=$(sudo blkid -s UUID -o value "${TARGET_ROOT}")
EFI_UUID=$(sudo blkid -s UUID -o value "${TARGET_EFI}")
sudo tee "${MOUNTPOINT}/etc/fstab" >/dev/null <<EOF
UUID=${ROOT_UUID} / ext4 defaults 0 1
UUID=${EFI_UUID} /boot/efi vfat umask=0077 0 1
EOF
sudo tee "${MOUNTPOINT}/etc/hostname" >/dev/null <<EOF
hp-lubuntu
EOF
sudo tee "${MOUNTPOINT}/etc/hosts" >/dev/null <<EOF
127.0.0.1 localhost
127.0.1.1 hp-lubuntu
EOF
sudo tee "${MOUNTPOINT}/etc/apt/sources.list" >/dev/null <<EOF
deb ${MIRROR} ${RELEASE} main restricted universe multiverse
deb ${MIRROR} ${RELEASE}-updates main restricted universe multiverse
deb ${MIRROR} ${RELEASE}-security main restricted universe multiverse
EOF
sudo chroot "${MOUNTPOINT}" apt-get update
sudo chroot "${MOUNTPOINT}" apt-get install -y linux-image-generic grub-efi-amd64 shim-signed network-manager sudo lubuntu-desktop
sudo chroot "${MOUNTPOINT}" grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --recheck --removable
sudo chroot "${MOUNTPOINT}" update-grub
sudo chroot "${MOUNTPOINT}" passwd root
sudo umount "${MOUNTPOINT}/run"
sudo umount "${MOUNTPOINT}/sys"
sudo umount "${MOUNTPOINT}/proc"
sudo umount "${MOUNTPOINT}/dev/pts"
sudo umount "${MOUNTPOINT}/dev"
sudo umount "${MOUNTPOINT}/boot/efi"
sudo umount "${MOUNTPOINT}"
echo "Done. Put the drive back in the HP laptop and boot using Esc then F9."
TARGET_DISK="/dev/sdb"
TARGET_EFI="${TARGET_DISK}1"
TARGET_ROOT="${TARGET_DISK}2"
MOUNTPOINT="/mnt/newroot"
RELEASE="noble"
MIRROR="http://archive.ubuntu.com/ubuntu/"
echo "WARNING: This will erase ${TARGET_DISK}"
echo "Press CTRL+C now if this is wrong."
sleep 10
sudo apt-get update
sudo apt-get install -y debootstrap gdisk dosfstools e2fsprogs grub-efi-amd64-bin grub-efi-amd64-signed shim-signed linux-image-generic
sudo umount "${TARGET_EFI}" 2>/dev/null
sudo umount "${TARGET_ROOT}" 2>/dev/null
sudo umount "${MOUNTPOINT}/boot/efi" 2>/dev/null
sudo umount "${MOUNTPOINT}" 2>/dev/null
sudo sgdisk --zap-all "${TARGET_DISK}"
sudo sgdisk -n 1:2048:+512M -t 1:ef00 -c 1:"EFI System" "${TARGET_DISK}"
sudo sgdisk -n 2:0:0 -t 2:8300 -c 2:"Linux root" "${TARGET_DISK}"
sudo partprobe "${TARGET_DISK}"
sleep 3
sudo mkfs.vfat -F 32 "${TARGET_EFI}"
sudo mkfs.ext4 -F "${TARGET_ROOT}"
sudo mkdir -p "${MOUNTPOINT}"
sudo mount "${TARGET_ROOT}" "${MOUNTPOINT}"
sudo mkdir -p "${MOUNTPOINT}/boot/efi"
sudo mount "${TARGET_EFI}" "${MOUNTPOINT}/boot/efi"
sudo debootstrap --arch=amd64 "${RELEASE}" "${MOUNTPOINT}" "${MIRROR}"
sudo mount --bind /dev "${MOUNTPOINT}/dev"
sudo mount --bind /dev/pts "${MOUNTPOINT}/dev/pts"
sudo mount -t proc proc "${MOUNTPOINT}/proc"
sudo mount -t sysfs sys "${MOUNTPOINT}/sys"
sudo mount -t tmpfs tmpfs "${MOUNTPOINT}/run"
ROOT_UUID=$(sudo blkid -s UUID -o value "${TARGET_ROOT}")
EFI_UUID=$(sudo blkid -s UUID -o value "${TARGET_EFI}")
sudo tee "${MOUNTPOINT}/etc/fstab" >/dev/null <<EOF
UUID=${ROOT_UUID} / ext4 defaults 0 1
UUID=${EFI_UUID} /boot/efi vfat umask=0077 0 1
EOF
sudo tee "${MOUNTPOINT}/etc/hostname" >/dev/null <<EOF
hp-lubuntu
EOF
sudo tee "${MOUNTPOINT}/etc/hosts" >/dev/null <<EOF
127.0.0.1 localhost
127.0.1.1 hp-lubuntu
EOF
sudo tee "${MOUNTPOINT}/etc/apt/sources.list" >/dev/null <<EOF
deb ${MIRROR} ${RELEASE} main restricted universe multiverse
deb ${MIRROR} ${RELEASE}-updates main restricted universe multiverse
deb ${MIRROR} ${RELEASE}-security main restricted universe multiverse
EOF
sudo chroot "${MOUNTPOINT}" apt-get update
sudo chroot "${MOUNTPOINT}" apt-get install -y linux-image-generic grub-efi-amd64 shim-signed network-manager sudo lubuntu-desktop
sudo chroot "${MOUNTPOINT}" grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --recheck --removable
sudo chroot "${MOUNTPOINT}" update-grub
sudo chroot "${MOUNTPOINT}" passwd root
sudo umount "${MOUNTPOINT}/run"
sudo umount "${MOUNTPOINT}/sys"
sudo umount "${MOUNTPOINT}/proc"
sudo umount "${MOUNTPOINT}/dev/pts"
sudo umount "${MOUNTPOINT}/dev"
sudo umount "${MOUNTPOINT}/boot/efi"
sudo umount "${MOUNTPOINT}"
echo "Done. Put the drive back in the HP laptop and boot using Esc then F9."