-
-
Save zengxinhui/01afb43b8d663a4232a42ee9858be45e to your computer and use it in GitHub Desktop.
| [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 |
Followed this guide and with a few tiny mods got Arch up and running. I had one or a few reboots in the process.
When I issued poweroff - Arch powered off but the instance said Running in my Oracle account. I stopped the instance, and the next time I tried running it - it wouldn't boot up, no pings, no SSH. The console shows me Shell> only.
Is the intention here that Alpine is running 24/7 and when it stops - your Arch OS is gone or did I just miss a step somewhere and it's an easy recover?
Played with it for a while. I can get to the UEFI shell and launch EFI/GRUB/grubaa64.efi directly, but this is not a long-term solution. Right now I have a functioning system but whenever I need to power it up I need to create a serial connection and launch OS manually. I even created /boot/startup.nsh but that didn't help
Followed this guide and with a few tiny mods got Arch up and running. I had one or a few reboots in the process.
When I issued
poweroff- Arch powered off but the instance said Running in my Oracle account. I stopped the instance, and the next time I tried running it - it wouldn't boot up, no pings, no SSH. The console shows meShell>only.Is the intention here that Alpine is running 24/7 and when it stops - your Arch OS is gone or did I just miss a step somewhere and it's an easy recover?
Played with it for a while. I can get to the UEFI shell and launch
EFI/GRUB/grubaa64.efidirectly, but this is not a long-term solution. Right now I have a functioning system but whenever I need to power it up I need to create a serial connection and launch OS manually. I even created/boot/startup.nshbut that didn't help
Try the last 10 lines or so to reinstall grub.
Try the last 10 lines or so to reinstall grub.
Thanks will do
just a doubt, I have to create an instance with Oracle Linux 8, is that it?
The only change I would make is to switch ext4 to BTRFS + ZSTD