Last active
March 1, 2025 19:48
-
-
Save zengxinhui/01afb43b8d663a4232a42ee9858be45e to your computer and use it in GitHub Desktop.
Replace Oracle Cloud Linux with Arch Linux ARM remotely
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
[02/25/2025] | |
Refs: | |
1. http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz | |
2. https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/aarch64/alpine-virt-3.21.3-aarch64.iso | |
3. https://wiki.alpinelinux.org/wiki/Replacing_non-Alpine_Linux_with_Alpine_remotely | |
4. https://wiki.archlinux.org/index.php/installation_guide#Configure_the_system | |
5. https://archlinuxarm.org/platforms/armv8/generic | |
See also: | |
1. Convert to Debian https://gist.github.com/zengxinhui/ee0ad6b7c7f99e2ead6cd0d2bd6641fd | |
2. Convert to arch x64 https://gist.github.com/zengxinhui/f328fdce54f5039689ee3aa4e91fc805 | |
3. Convert to arch arm https://gist.github.com/zengxinhui/01afb43b8d663a4232a42ee9858be45e | |
Requirement: | |
Console access. | |
# Prepare alpine linux, which can be configured to run from ram only. | |
# Alpine is leveraged to do the conversion. | |
# In any linux(ubuntu/debian/arch tested) become root first: | |
sudo su - | |
cd /tmp && wget https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/aarch64/alpine-virt-3.21.3-aarch64.iso | |
dd if=alpine-virt-3.21.3-aarch64.iso of=/dev/sda && sync && reboot | |
# In Alpine with console: | |
# [Bring up networking] | |
ip li set eth0 up | |
udhcpc eth0 | |
# [Setup SSH, answer RET, yes, RET] | |
setup-sshd | |
# [set temp password] | |
passwd | |
# [At this point it's easier to use SSH to copy & paste] | |
# [Per Ref #3] | |
mkdir /media/setup | |
cp -a /media/sda/* /media/setup | |
mkdir /lib/setup | |
cp -a /.modloop/* /lib/setup | |
/etc/init.d/modloop stop | |
umount /dev/sda | |
mv /media/setup/* /media/sda/ | |
mv /lib/setup/* /.modloop/ | |
# [Setup apk and bring in pacman] | |
setup-apkrepos | |
# [enable community] | |
vi /etc/apk/repositories | |
apk update | |
apk add e2fsprogs arch-install-scripts | |
# [Disk partitioning & mounting] | |
# (use gpt table, set esp partition 15 size 256M), set root partition 1 size remaining) | |
# g, n, 15, RET, +512m, t, 1, n, RET, RET, RET, p, w | |
fdisk /dev/sda | |
ls /dev/sda* | |
# if sda1 or sda15 is missing, do "/etc/init.d/devfs restart" | |
mkfs.vfat /dev/sda15 | |
mkfs.ext4 /dev/sda1 | |
mount /dev/sda1 /mnt | |
mkdir /mnt/boot | |
mount /dev/sda15 /mnt/boot | |
cd /mnt && wget http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz | |
tar xf /mnt/ArchLinuxARM-aarch64-latest.tar.gz -C /mnt | |
genfstab -U /mnt >> /mnt/etc/fstab | |
cd /; arch-chroot /mnt/ | |
# This is your arch root password. Choose carefully and remember it | |
# do the same for user `alarm` if you prefer to use that account and lots of `sudo` | |
passwd | |
userdel -r alarm | |
cat > ~/.ssh/authorized_keys << EOF | |
<your key here> | |
EOF | |
cat > /etc/resolv.conf << EOF | |
nameserver 1.1.1.1 | |
nameserver 4.2.2.2 | |
nameserver 8.8.8.8 | |
EOF | |
pacman-key --init | |
pacman-key --populate archlinuxarm | |
pacman --noconfirm -Syu grub efibootmgr | |
# [EFI boot] | |
grub-install --efi-directory=/boot --bootloader-id=GRUB | |
vi /etc/default/grub | |
# Better console. Comparison below: | |
# GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet" | |
# GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 console=ttyS0,115200" | |
# Or use perl/sed to replace | |
# perl -pi.bak -e "s/quiet/console=ttyS0,115200/" /etc/default/grub | |
# sed -i.bak -e "s/quiet/console=ttyS0,115200/" /etc/default/grub | |
grub-mkconfig -o /boot/grub/grub.cfg | |
exit | |
reboot |
Try the last 10 lines or so to reinstall grub.
Thanks will do
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Try the last 10 lines or so to reinstall grub.