# 20210818 install fcos aarch64 builder
Machines:
Cavium specs: 48CPU 128GBRAM ~465gb ssd DISK
Mustang specs: 8CPU 16GBRAM ~465gb ssd DISK
A. Cavium, no serial, no network
B. Cavium, serial connection, no network
C. Mustang, serial connection, no network
D. Mustang, serial + network
---
### PXE boot method
download artifacts and generate a PXE grub config:
```bash
version=34.20210901.20.0
ignition=https://dustymabe.fedorapeople.org/fcos-aarch64-builder.ign
disk=sda
baseurl="https://builds.coreos.fedoraproject.org/prod/streams/testing-devel/builds/${version}/aarch64"
filesdir=/var/lib/tftpboot/
ip='8.43.85.80'
gateway='8.43.85.254'
netmask='255.255.255.0'
interface='eth0'
hostname='fcos-aarch64-builder'
nameserver='8.8.8.8'
pushd $filesdir
for f in fedora-coreos-${version}-live-kernel-aarch64{,.sig} fedora-coreos-${version}-live-initramfs.aarch64.img{,.sig}; do
curl -L -O "${baseurl}/${f}"
done
curl https://getfedora.org/static/fedora.gpg | gpg2 --import
for f in *.sig; do
gpg2 --verify $f
done
popd
cat <<EOF >> $filesdir/grub2.cfg
menuentry 'Install FCOS' {
linuxefi ${filesdir}fedora-coreos-${version}-live-kernel-aarch64 coreos.live.rootfs_url=${baseurl}/fedora-coreos-${version}-live-rootfs.aarch64.img ignition.firstboot ignition.platform.id=metal console=ttyS0 coreos.inst.install_dev=/dev/${disk} coreos.inst.ignition_url=${ignition} net.ifnames=0 ip=${ip}::${gateway}:${netmask}:${hostname}:${interface}:none:${nameserver}
initrdefi ${filesdir}fedora-coreos-${version}-live-initramfs.aarch64.img
}
EOF
```
-----
## Grub replacement method
run this as root on the machine you want to replace:
```bash
version=34.20210901.20.0
ignition=https://dustymabe.fedorapeople.org/fcos-aarch64-builder.ign
disk=sda
baseurl="https://builds.coreos.fedoraproject.org/prod/streams/testing-devel/builds/${version}/aarch64"
bootroot=/
ip='8.43.85.80'
gateway='8.43.85.254'
netmask='255.255.255.0'
interface='eth0'
hostname='fcos-aarch64-builder'
nameserver='8.8.8.8'
pushd /boot/
for f in fedora-coreos-${version}-live-kernel-aarch64{,.sig} fedora-coreos-${version}-live-initramfs.aarch64.img{,.sig}; do
curl -L -O "${baseurl}/${f}"
done
curl https://getfedora.org/static/fedora.gpg | gpg2 --import
for f in *.sig; do
gpg2 --verify $f
done
popd
cat <<EOF >> /boot/efi/EFI/fedora/grub.cfg
menuentry 'Install FCOS' --class red --class gnu-linux --class gnu --class os {
load_video
insmod gzio
insmod part_gpt
insmod ext2
set root='hd0,gpt2'
linux ${bootroot}fedora-coreos-${version}-live-kernel-aarch64 coreos.live.rootfs_url=${baseurl}/fedora-coreos-${version}-live-rootfs.aarch64.img ignition.firstboot ignition.platform.id=metal console=ttyS0 coreos.inst.install_dev=/dev/${disk} coreos.inst.ignition_url=${ignition} net.ifnames=0 ip=${ip}::${gateway}:${netmask}:${hostname}:${interface}:none:${nameserver}
initrd ${bootroot}fedora-coreos-${version}-live-initramfs.aarch64.img
}
EOF
```
if the machine you're on uses BLS you can do something like this instead of appending to grub.cfg directly
```
cat <<EOF > /boot/loader/entries/fcos.conf
title Install FCOS
version ${version}
linux ${bootroot}fedora-coreos-${version}-live-kernel-aarch64
initrd ${bootroot}fedora-coreos-${version}-live-initramfs.aarch64.img
options coreos.live.rootfs_url=${baseurl}/fedora-coreos-${version}-live-rootfs.aarch64.img ignition.firstboot ignition.platform.id=metal console=ttyS0 coreos.inst.install_dev=/dev/${disk} coreos.inst.ignition_url=${ignition} net.ifnames=0 ip=${ip}::${gateway}:${netmask}:${hostname}:${interface}:none:${nameserver}
EOF
```