Last active
April 15, 2024 21:07
-
-
Save ishad0w/10a536f82c79d3b890d04243634df806 to your computer and use it in GitHub Desktop.
Debian 12 on Oracle Cloud (Free Tier) - (AMD64/ARM64)
This file contains 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
#!/bin/bash | |
echo -e "\nHost:" | |
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=ERROR -p 22 ubuntu@$1 \ | |
'uname -a && arch && uptime && sudo touch /home/ubuntu/.hushlogin /root/.hushlogin' | |
echo -e "\nAdding temporary SSH-key for Ubuntu root user..." | |
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=ERROR -p 22 ubuntu@$1 \ | |
'sudo cat /home/ubuntu/.ssh/authorized_keys | sudo tee /root/.ssh/authorized_keys' | |
echo -e "\nSystem trimming..." | |
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=ERROR -p 22 root@$1 -T <<'EOL' | |
export DEBIAN_FRONTEND=noninteractive | |
snap remove --purge oracle-cloud-agent && snap remove --purge core18 | |
apt-get purge -y linux-* lxc* lxd* vim* snapd* python* | |
apt-get update && apt-get install -y lsof | |
apt-get -y autoremove --purge | |
apt-get -y autoclean | |
rm -rf /var/log/* /var/lib/apt/* /var/cache/apt/* | |
df -h | |
echo "Check free space! for "/" mountpoint. <=700mb" | |
sleep 15 | |
EOL | |
echo -e "\nPreparing system..." | |
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=ERROR -p 22 root@$1 -T <<'EOL' | |
cd / | |
echo "Mounting tmpfs..." | |
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 / | |
sleep 2 | |
echo "Changing the root mount..." | |
unshare -m | |
pivot_root . old_root | |
sleep 5 | |
echo "Starting SSH on 1022..." | |
iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 1022 -j ACCEPT | |
nohup /usr/sbin/sshd -D -p 1022 > /dev/null 2>&1 & | |
EOL | |
echo -e "\nFlashing the Debian image..." | |
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=ERROR -p 1022 root@$1 -T <<'EOL' | |
echo "Arch is $(arch)..." | |
IMAGEMIRROR="https://cloud.debian.org/images/cloud/bookworm" | |
IMAGEVERSION="debian-12-genericcloud" | |
IMAGEBUILD="20240211-1654" | |
for i in agetty dbus-daemon atd iscsid rpcbind unattended-upgrades; do pkill $i; done; kill 1; umount -l /dev/sda1 | |
if [ $(arch) = "x86_64" ] | |
then curl -L $IMAGEMIRROR/$IMAGEBUILD/$IMAGEVERSION-amd64-$IMAGEBUILD.tar.xz | tar -OJxvf - disk.raw | dd of=/dev/sda bs=1M; | |
elif [ $(arch) = "aarch64" ] | |
then curl -L $IMAGEMIRROR/$IMAGEBUILD/$IMAGEVERSION-arm64-$IMAGEBUILD.tar.xz | tar -OJxvf - disk.raw | dd of=/dev/sda bs=1M; | |
else | |
echo Unsported architecture! | |
fi | |
sleep 5 | |
echo "Syncing changes to the block storage..." | |
sync | |
sleep 5 | |
echo "Rebooting into Debian!" | |
nohup sh -c 'echo "1" > /proc/sys/kernel/sysrq && sleep 5 && echo "b" > /proc/sysrq-trigger' > /dev/null 2>&1 & | |
EOL | |
echo -e "\nWaiting until Debian starts... (3 min)" | |
sleep 180 | |
echo -e "\nAdding temporary SSH-key for Debian root user..." | |
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=ERROR -p 22 debian@$1 \ | |
'sudo cat /home/debian/.ssh/authorized_keys | sudo tee /root/.ssh/authorized_keys' | |
echo -e "\nDebian inititialisation..." | |
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=ERROR -p 22 root@$1 -T <<'EOL' | |
export DEBIAN_FRONTEND=noninteractive | |
echo "deb http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware | |
deb http://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware | |
deb http://deb.debian.org/debian/ bookworm-backports main contrib non-free non-free-firmware | |
deb http://security.debian.org/debian-security/ bookworm-security main contrib non-free non-free-firmware" > /etc/apt/sources.list | |
apt-get update && apt-get install -y locales-all | |
rm -rf /root/.ssh/ | |
sync | |
reboot | |
EOL | |
sleep 10 | |
echo -e "\nDone!" |
有三个方案可以安装Debian12
- 通过dd安装Debian
- 修改grub方式安装
- ”Custom images“ Debian12.vmdk
#1 AMD,目前只能正常安装Debian11,再升级到12,root密码为”XXXX“自己修改,
bash <(wget --no-check-certificate -qO- 'https://moeclub.org/attachment/LinuxShell/InstallNET.sh') -d 11 -v 64 -p "XXXX" -a -firmware
#1 ARM,可以正常安装Debian12,root密码为”XXXX“自己修改
bash <(wget --no-check-certificate -qO- 'https://moeclub.org/attachment/LinuxShell/InstallNET.sh') -d 12 -v arm64 -p "XXXX" -a -firmware
#2 grub 方式安装需要通过VNC,查看https://netboot.xyz/docs/kb/providers/oci/
#3 只适合已升级的账户
3.1 Storage > Buckets > Create Bucket, Upload debian12.vmdk or debian12.cow2
3.2 Compute > Custom images > Import image > Custom image details > Edit details > Compatible shapes
3.3 Create compute instance ...
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks!
Works perfectly!