-
-
Save ishad0w/10a536f82c79d3b890d04243634df806 to your computer and use it in GitHub Desktop.
#!/bin/bash | |
trap "exit" INT | |
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 | |
EOL | |
echo "Check free space! for "/" mountpoint. <=700mb" | |
waittime=15 | |
while [ $waittime -gt 0 ]; do | |
echo -ne "$waittime\033[0K\r" | |
sleep 1 | |
: $((waittime--)) | |
done | |
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="20240701-1795" | |
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)" | |
waittime=180 | |
while [ $waittime -gt 0 ]; do | |
echo -ne "$waittime\033[0K\r" | |
sleep 1 | |
: $((waittime--)) | |
done | |
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 ...
with SSH (public key) access to a remote Oracle Cloud Instance
Where do I put the ssh key address while doing /oci_ubuntu_to_debian.multiarch.sh my_vps_ip_address
?
This doesn't work: /oci_ubuntu_to_debian.multiarch.sh my_vps_ip_address -i ~/some_folder/my_public_ssh_key.pub
edit: I was accidentally using pub key, also I added -i ~/some_folder/my_public_ssh_key
manually into the file wherever we login
Thanks!
Works perfectly!