Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
DIY install debian on Oracle Cloud Infrastructure ( Free Tier )
# should works on any cloud-init enabled hypervisor (openstack.. )
# start from a ubuntu minimal install
# we need to shrink down the used space to move it in a tmpfs of 700MB
# make sure we are on the highest kernel, so we can delete all the others ...
sudo apt update && sudo apt upgrade -y && reboot
# ... reconnect
sudo apt install lsof
sudo snap remove --purge oracle-cloud-agent && sudo snap remove --purge core18 && sudo snap remove --purge snapd && sudo sudo apt -y purge snapd && sudo rm -rf ~/snap /snap /var/cache/snapd
sudo apt purge $(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/*
# ok, the disk usage of / should be less than 600MB now
cd /
mount -t tmpfs -o size=700m 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
# now the root storage is the RAM
# lets restart all runnig process
service ssh restart
# now switch to a new ssh connexion to let the old sshd terminate
service systemd-udevd restart
service systemd-journald restart
service systemd-networkd restart
service systemd-timesyncd restart
service systemd-resolved restart
service systemd-logind restart
service networkd-dispatcher restart
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
# now, just copy the debian cloud image on the disk.
# curl https://cdimage.debian.org/cdimage/openstack/current/debian-10-openstack-amd64.raw | dd of=/dev/sda bs=1M
# update :
curl -L https://cdimage.debian.org/cdimage/openstack/testing/debian-testing-openstack-amd64.raw | dd of=/dev/sda bs=1M
sync
reboot
@4abhinavjain
Copy link

4abhinavjain commented Jan 27, 2022

@Angu0083 did you manage to make it work? I also want to get Debian on ARM processors.

@4abhinavjain
Copy link

4abhinavjain commented Jan 27, 2022

It worked on ARM64 ubuntu image as well! thank you @ClashTheBunny and @dotsh

Here is the gist for anyone who wants to do the same: https://gist.github.com/4abhinavjain/893ec13c651bee08088c8f4661998952

@dotsh I never thought something like this could be possible. It is just brilliant!

@dotsh
Copy link
Author

dotsh commented Jan 28, 2022

Well done ! 👍

@Angu0083
Copy link

Angu0083 commented Jan 28, 2022

Hi Guys,

  I've waited for response almost five days, but no one was responded. So, I choose the alternative way.  

  Upload the Debian 10 qcow2 image to Oracle cloud storage, and then import as a custom image.

  After I created the instance using the custom image and its perfectly working fine. But this method takes extra time and data usage.     

Image: https://cdimage.debian.org/cdimage/openstack/10.11.2-20211129/debian-10.11.2-20211129-openstack-arm64.qcow2

@4abhinavjain
Copy link

4abhinavjain commented Jan 31, 2022

Thanks, @Angu0083 . Glad that you could do it that way. My account doesn't support custom images and I had no other way to install Debian.

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