Skip to content

Instantly share code, notes, and snippets.

@frazei
Last active October 11, 2023 15:40
Show Gist options
  • Save frazei/5aa21f8286c1f7d5102be1e5ca673985 to your computer and use it in GitHub Desktop.
Save frazei/5aa21f8286c1f7d5102be1e5ca673985 to your computer and use it in GitHub Desktop.
PC Engines apu2c4

Reference

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

CentOS 7 oppure Ubuntu 18.04

Preparazione del sistema (su CentOS 7)

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

Modifica dei file

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  ---

Preparazione della iso

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

Ubuntu 20.04.6 LTS (Focal Fossa)

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è.

Configurazioni

Networking

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment