Ben's notes

Linux, Unix, network, radio...

User Tools

Site Tools


pc_engines_apu_centos_7

PC Engines APU - install CentOS 7

This pages describes the installation of CentOS 7 on PC Engines APU hardware.

Preparation

Console

  • Connect a serial console, or USB↔Serial adapter. Make sure your locale is set to UTF-8.
    $ locale
    LANG="en_US.UTF-8"
    LC_COLLATE="en_US.UTF-8"
    LC_CTYPE="en_US.UTF-8"
    LC_MESSAGES="en_US.UTF-8"
    LC_MONETARY="en_US.UTF-8"
    LC_NUMERIC="en_US.UTF-8"
    LC_TIME="en_US.UTF-8"
    LC_ALL="en_US.UTF-8"
  • If locale is not set right, add the following lines to your ~/.profile and login again.
    export LC_ALL=en_US.UTF-8
    export LANG=en_US.UTF-8
  • Connect to serial console:
    screen /dev/tty.usbserial-A7022O5B 115200

PXE

  • Edit /tftpboot/pxelinux.cfg/default:
    serial 0 115200
    default centos7
    prompt 0
    timeout 0
    
    label centos7
      kernel http://yourrepo.host/centos/7/CentOS7-base/images/pxeboot/vmlinuz
      append initrd=http://yourrepo.host/centos/7/CentOS7-base/images/pxeboot/initrd.img ks.device=bootif ip=dhcp ks=http://yourpxe.host/apu-centos7.ks console=ttyS0,115200

Kickstart

  • Edit kickstart file apu-centos7.ks:
    ####
    #### PC Engines APU KickStart installation
    ####
    install
    
    # Base repo
    url --url=http://repo/centos/7/CentOS7-base
    # Configure updates repo
    repo --name="CentOS7-updates"  --baseurl=http://repo/centos/7/CentOS7-updates
    
    network --onboot yes --bootproto dhcp
    lang en_US.UTF-8
    keyboard --vckeymap=us --xlayouts='us','us'
    rootpw --iscrypted <sha512 password hash>
    firewall --service=ssh
    authconfig --enableshadow --passalgo=sha512
    selinux --enforcing
    timezone --utc Europe/Amsterdam
    
    # Set serial console and change disk elevator to noop for SSD.
    bootloader --location=mbr --driveorder=sda --append="console=tty0 console=ttyS0,115200 elevator=noop rd_NO_PLYMOUTH"
    
    # Any disks whose formatting is unrecognized are initialized.
    zerombr
    
    # Erases all partitions from the system.
    clearpart --all --drives=sda --initlabel
    
    # Initialize boot partition.
    part /boot --fstype=xfs --size=512 --asprimary
    
    # Create LVM pv and vg.
    part pv.01 --size=1000 --grow --asprimary
    volgroup vg pv.01
    
    # Create lv's, set discard, noatime and commit time. Leave some space left in the VG for later use.
    logvol swap  --vgname=vg --size=512  --name=lv_swap --fstype=swap
    logvol /     --vgname=vg --size=4096 --name=lv_root --fstype=xfs
    logvol /var  --vgname=vg --size=4096 --name=lv_var  --fstype=xfs
    logvol /home --vgname=vg --size=512  --name=lv_home --fstype=xfs
    
    # Create non administrative user
    user --name=username --homedir=/home/username --password=<sha512 password hash>
    
    # Reboot after installation.
    reboot
    
    # Install minimal, exclude @Base, exclude documentation
    %packages --nobase --excludedocs
    @Core		#default
    bind-utils      #dig, host, nslookup
    openssh-clients #ssh client, key agent, sftp, scp
    nc		#nc (netcat)
    %end
    
    %post
    # Disable SSH root login
    /bin/sed -i.bak 's/#PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config
    
    # Mount /tmp as tmpfs.
    systemctl enable tmp.mount
    
    #Add weekly fstrim job
    cat << EOF >  /etc/cron.weekly/fstrim
    #!/bin/sh
    #this script will run weekly, will overwrite log.
    
    trimlog=/var/log/fstrim.log
    echo > \$trimlog
    for fs in \$(lsblk -o MOUNTPOINT,DISC-MAX,FSTYPE | grep -E '^/.* [1-9]+.* ' | awk '{print \$1}'); do
      printf "\`date\` - \`fstrim -v \$fs\`\n" >>\$trimlog
    done
    EOF
    chmod +x /etc/cron.weekly/fstrim
    
    # Enable LVM to issue discards.
    /bin/sed -i.bak 's/issue_discards = 0/issue_discards = 1/g' /etc/lvm/lvm.conf
    
    # Reduce swappiness.
    echo "vm.swappiness=1" >> /etc/sysctl.d/swappiness.conf
    echo "vm.vfs_cache_pressure=50" >> /etc/sysctl.d/swappiness.conf
    
    # Set chassis name and icon
    /bin/hostnamectl set-chassis "server"
    
    exit 0
    %end

Installation

  • Boot the APU and press F12, select “iPXE” to boot from network.
pc_engines_apu_centos_7.txt · Last modified: 2021/10/09 15:14 by 127.0.0.1