Given something like ubuntu.img

  1. Check partition layout:
fdisk -l ubuntu.img
Device      Boot  Start      End  Sectors  Size Id Type
ubuntu.img1 *      2048   526335   524288  256M ef EFI (FAT-12/16/32)
ubuntu.img2      526336 12582911 12056576  5.7G 83 Linux
  1. Mount using loop device:
# create mountpoints
sudo mkdir -p /mnt/ubuntu /mnt/ubuntu/boot/efi
 
# setup loop device
sudo losetup -fP ubuntu.img
sudo losetup -a   # note the loop device number, like /dev/loop0
 
# mount root and EFI partitions
sudo mount /dev/loop0p2 /mnt/ubuntu
sudo mount /dev/loop0p1 /mnt/ubuntu/boot/efi
  1. Prepare chroot environment:
# mount necessary system directories
for i in /dev /dev/pts /proc /sys /run; do
  sudo mount -B $i /mnt/ubuntu$i
done
  1. (Optional) Setup emulation working with a different arch (like aarch64):
sudo apt-get install qemu-user-static binfmt-support
sudo update-binfmts --import qemu-aarch64
sudo cp /usr/bin/qemu-aarch64-static /mnt/ubuntu/usr/bin/
  1. Chroot and Do Work:
sudo chroot /mnt/ubuntu
echo "im in ur chroot, configurin ur t00ls"

Cleanup:

# exit chroot
exit
 
# unmount all the things
for i in /dev/pts /dev /proc /sys /run /boot/efi; do
  sudo umount /mnt/ubuntu$i
done
sudo umount /mnt/ubuntu
 
# remove loop device
sudo losetup -d /dev/loop0