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/isoSia 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/sdbUbuntu 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.isoIn ultimo la posso copiare sulla pendrive usb:
# dd if=[nome della iso].iso of=/dev/sdbSi 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.yamlnetwork:
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 applyIn 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