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."

Popular posts from this blog

Automatically Fix Song Metadata and Filenames on Linux with Beets

DropboxMount turns your Dropbox into a live, on-demand drive instead of a sync folder.

script to create an EFI partition on a target bootdrive if none exists