DIY install debian on Oracle Cloud Infrastructure ( Free Tier ) - ARM64 The article provides a step-by-step guide for replacing the default Ubuntu 20.04 operating system on an Oracle Cloud Infrastructure (OCI) Free Tier ARM64 instance with a Debian 10 cloud image. The process involves booting into a RAM-based temporary filesystem, deleting the original Ubuntu installation, and writing the Debian image directly to the disk. The author confirms success after a forced reboot, noting that the new system uses the same SSH public key but requires logging in with the username "debian." reinstall VPS from inside.txt 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 Show hidden characters should works on any cloud-init enabled hypervisor openstack.. start from a normal ubuntu 20.04 install as minimal was not available for ARM64 Since ARM64 machines has higher RAM, Shrinking is desired but not necessary. Instead we will increase tmpfs to 1700MB Getting root if sudo -i doesn't work then set a root password beforehand using 'sudo passwd root' sudo -i make sure we are on the highest kernel, so we can delete all the others ... sudo apt update && sudo apt dist-upgrade -y && sudo apt install lsof && sudo reboot snap removal didn't work so proceed without it. sudo snap remove --purge oracle-cloud-agent && sudo snap remove --purge core18 sudo apt purge -y $ dpkg-query -Wf '${Package}\n' | grep header $ apt list --installed | grep -oP "^linux. \d\d\d\d-oracle" | grep -v "$ uname -r " linux-modules-extra-$ uname -r lxc lxd vim && sudo apt -y autoremove && sudo apt -y autoclean && sudo apt -y clean sudo rm -rf /var/log/ /var/lib/apt/lists/ use df to check the size. It should be now ~1100MB. If it is higher than 1700 MB then increase the size below make sure you have root here cd / mount -t tmpfs -o size=1700m tmpfs mnt tar --one-file-system -c . | tar -C /mnt -x mount --make-private -o remount,rw / mount --move dev mnt/dev mount --move proc mnt/proc mount --move run mnt/run mount --move sys mnt/sys sed -i '/^ ^ /d;' mnt/etc/fstab echo 'tmpfs / tmpfs defaults 0 0' mnt/etc/fstab cd mnt mkdir old root mount --make-private / unshare -m pivot root . old root commands below open 1022 port a ssh port. Please ensure the port you select is open under Oracle's VNIC /usr/sbin/sshd -D -p 1022 & iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 1022 -j ACCEPT reconnect on port 1022: I kept the old putty session on port 22 open and it didn't disconnect now the root storage is the RAM pkill agetty pkill dbus-daemon pkill atd pkill iscsid pkill rpcbind pkill unattended-upgrades kill 1 check with "lsof /old root" that there is no remaining process umount -l /dev/sda1 check : df -h lsblk the disk should be unmount ; for me lsblk showed a /dev/sda1 partiion but it went well. now, just copy the debian cloud image on the disk. I wanted an ARM64 image and Debian 10 , therefore I used this one https://cloud.debian.org/cdimage/cloud/buster/latest/debian-10-generic-arm64.tar.xz curl -L https://cloud.debian.org/cdimage/cloud/buster/latest/debian-10-generic-arm64.tar.xz | tar -OJxvf - disk.raw | dd of=/dev/sda bs=1M sync reboot reboot command didn't work and returned an error "running in chroot, ignoring request" ; I tried exiting as they told here https://bbs.archlinux.org/viewtopic.php?id=184076 but it was of no use I forced rebooted it from the Oracle instances' GUI and it seemed stuck on "STOPPING." But after an hour I noticed that the VM was rebooted and running. I was able to login with the same public key as original ubuntu, but the username that worked was debian SUCCESS I checked with lsb release -a and it showed Debian 10 earlier it was showing ubuntu Additional things: You may want to reinstall the Oracle cloud agent that was removed in the beginning.