Headless Installation of CentOS 7 on PC Engines APU2C4
How to Install NethServer (or CentOS) into PC Engine
PC Engines APU2 - Ubuntu 18.04 LTS server
Installing Ubuntu LTE over serial console on APU board
Per prima cosa mi server un computer con sopra Linux su cui installare i pacchetti necessari e scaricare la iso (Debian/Ubuntu/CentOS):
# yum install genisoimage syslinux isomd5sum
# mkdir /media/iso
# mount [nome del file iso].iso /media/iso
# cp -pRf /media/iso /tmp/[nome della distro] && umount /media/iso
Sia nel caso di CentOS 7 che per Ubuntu 18 devo modificare isolinux.cfg
che si trova in /tmp/[nome della distro]/isolinux
ma si presentano in modo completamente diverso. Con queste modifiche potrò accedere all'installazione tramite console su Ubuntu mentre su CentOS addirittura tramite VNC.
CentOS 7:
timeout 100
label linux
menu label ^Install CentOS 7
menu default
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 text inst.vnc inst.vncpassword=vncpass console=tty0 console=ttyS0,115200n8
# genisoimage -U -r -v -T -J -joliet-long -V "CentOS 7 x86_64" -volset "CentOS 7 x86_64" -A "CentOS 7 x86_64" -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e images/efiboot.img -no-emul-boot -o ../CentOS-7-x86_64-Minimal-1708-VNC.iso .
# isohybrid CentOS-7-x86_64-Minimal-1708-VNC.iso
# implantisomd5 CentOS-7-x86_64-Minimal-1708-VNC.iso
# dd if=CentOS-7-x86_64-Minimal-1708-VNC.iso of=/dev/sdb
Ubuntu 18.04:
serial 0 115200
console 0
path
include menu.cfg
default vesamenu.c32
prompt 0
timeout 0
Nel caso di Ubuntu devo modificare anche il file txt.cfg
che si trova nella stessa cartella:
append boot=casper initrd=/casper/initrd console=tty0 console=ttyS0,115200n8 ---
A questo punto posso ricreare la iso con le modifiche fatte:
CentOS 7:
# genisoimage -U -r -v -T -J -joliet-long -V "CentOS 7 x86_64" -volset "CentOS 7 x86_64" -A "CentOS 7 x86_64" -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e images/efiboot.img -no-emul-boot -o ../CentOS-7-x86_64-Minimal-1708-VNC.iso .
Ubuntu 18.04:
# genisoimage -U -r -v -T -J -joliet-long -V "ubuntu-18.04.6" -volset "ubuntu-18.04.6" -A "ubuntu-18.04.6" -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e EFI/BOOT/BOOTx64.EFI -no-emul-boot -o ../ubuntu-18.04.6-live-server-amd64.iso .
E poi
# isohybrid CentOS-7-x86_64-Minimal-1708-VNC.iso
# implantisomd5 CentOS-7-x86_64-Minimal-1708-VNC.iso
In ultimo la posso copiare sulla pendrive usb:
# dd if=[nome della iso].iso of=/dev/sdb
Si può installare facilmente la iso ubuntu-20.04.2-live-server-amd64.iso
. Basta montarla sulla USB e quando compare sulla seriale il messaggio di errore
graphics initialization failed
Error setting up gfxboot
digitare il comando
live console=ttyS0,115200n8
partirà l'installer in modalità testuale e quando lo chiede è meglio selezionare "Continue in basic mode".
Al termine è anche possibile passare alla 22.04.3 LTS con il comando do-release-upgrade
.
Lo stesso sistema invece non mi ha funzionato provando a scaricare direttamente la iso di Ubuntu 22.04.3 LTS, non so perchè.
La APU4 ha tipicamente 3 NIC che possono passare a 5 aggiungendo una scheda pci-e.
Guardando il retro (?) del dispositivo, su Ubuntu le varie porte di rete sono nominate così:
NIC | NIC | Serial | NIC | NIC | NIC | 2xUSB | Power |
---|---|---|---|---|---|---|---|
enp8s0 | enp7s0 | enp2s0 | enp3s0 | enp4s0 |
Quindi la connessione di rete principale va collegata su enp2s0
. Se voglio che tutte siano in DHCP, ma allo stesso tempo il sistema al boot non attenda che tutte le porte siano pronte, è necessario modificare la configurazione:
# vim /etc/netplan/00-installer-config.yaml
network:
ethernets:
enp2s0:
dhcp4: true
optional: false
enp3s0:
dhcp4: true
optional: true
enp4s0:
dhcp4: true
optional: true
enp7s0:
dhcp4: true
optional: true
enp8s0:
dhcp4: true
optional: true
version: 2
# netplan apply
In alternativa se voglio che tutte le porte siano in bridge tra di loro (per avere uno switch) e che siano anche gestite da nmcli/networkctl:
network:
version: 2
renderer: NetworkManager
ethernets:
enp2s0:
dhcp4: false
enp3s0:
dhcp4: false
enp4s0:
dhcp4: false
enp7s0:
dhcp4: false
enp8s0:
dhcp4: false
bridges:
br0:
optional: true
dhcp4: true
interfaces:
- enp2s0
- enp3s0
- enp7s0
- enp4s0
- enp8s0