Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save 4abhinavjain/893ec13c651bee08088c8f4661998952 to your computer and use it in GitHub Desktop.
Save 4abhinavjain/893ec13c651bee08088c8f4661998952 to your computer and use it in GitHub Desktop.
DIY install debian on Oracle Cloud Infrastructure ( Free Tier ) - ARM64
# 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.
@romor001
Copy link

Worked fine with the Debian 10 image. Did a manual upgrade to Debian 11 afterwards. Thanks a lot for this! Much apreciated!

@nepto
Copy link

nepto commented Feb 20, 2024

It still works well. Good job!

The image for the Debian/12 (Bookworm) is:
https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-arm64.tar.xz

@4abhinavjain
Copy link
Author

Great! Glad ghait works on Debian 12 as well. Thanks for the feedback

@th-in-gs
Copy link

Still working in 2025. I used an Intel VM (VM.Standard3.Flex) because there were no ARM ones left (could not provision one due to capacity limits), and started with a Ubuntu-22.04-Minimal, then switched to debian-12-generic-amd64. Seems to be working great.

@kesz24
Copy link

kesz24 commented Feb 24, 2025

Still working in 2025. I used an Intel VM (VM.Standard3.Flex) because there were no ARM ones left (could not provision one due to capacity limits), and started with a Ubuntu-22.04-Minimal, then switched to debian-12-generic-amd64. Seems to be working great.

but its not free tier right ? i though free tier only support arm ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment