--- title: Installing FreeBSD on a PC Engines APU4C2 description: > Installing FreeBSD on a PC Engines APU4C2 posted: !!timestamp '2019-08-08' created: !!timestamp '2019-08-08' time: 11:08 PM tags: - FreeBSD --- I recently upgraded my internet connection, and needed some additional performance, so I purchased a [APU.4C2](https://www.pcengines.ch/apu4c2.htm). When I tried to boot it up, I would get to loading the kernel, but then I would not get anything. After a quick search I found Dr. David A. Eckhardt's post on [How to Install FreeBSD 12.0 on a PC Engines apu2 Machine (apu4c4)](https://www.cs.cmu.edu/~davide/howto/apu4c4.html). The instructions require mounting the memstick image on a FreeBSD box, but I don't have one hand for mounting the image. Once I knew what I needed to do, I realized I didn't need to mount the image to set the options needed. First on boot, I hit F10 so that I'd be presented with a boot menu. Strictly this isn't needed, but helped me time the next part. I then selected the USB drive that had the memstick image, and as soon as I selected the image, I immediately started hitting space bar. This dropped me into the first stage boot loader: ``` Select boot device: 1. USB MSC Drive Generic STORAGE DEVICE 0566 2. ata0-0: SATA SSD ATA-11 Hard-Disk (15272 MiBytes) 3. Payload [memtest] 4. Payload [setup] Booting from Hard Disk... - FreeBSD/x86 boot Default: 0:ad(0,a)/boot/loader boot: ``` This is the point to enter in the line that would normally go into `boot.conf`: `-h -S115200 -v` Once that is entered, this proceeded to the loader boot loader. I selected `3` to escape to the loader prompt. This allowed me to enter some of the commands that would go into `loader.conf`. Note that the commands w/ a `.` in them need to be preceded w/ the `set` command: ``` Type '?' for a list of commands, 'help' for more detailed help. OK boot_serial="YES" OK console="comconsole" OK comconsole_speed="115200" OK set kern.cam.boot_delay="15000" OK set kern.cam.scsi_delay="15000" OK set hw.igb.enable_msix=0 OK set hw.pci.enable_msix=0 OK set hint.ahci.0.msi="0" OK set hint.ahci.1.msi="0" OK boot ``` And as you can see, I finally booted the kernel using "`boot`". This started the install process and things proceeded as normal. I decided to use GPT instead of MBR for the partitioning scheme. It is not a big deal which one is picked. I also did the recommended settings so that upon reboot the above settings would keep. I do plan on attempting to flash the bios and see if I can't get MSI and/or MSI-X working, as that would be a huge advantage for interrupts. One option for reducing CPU heat is to run powerd. The powerd daemon will monitor CPU usage, and dynamically adjust the frequency of the CPU to match the current load.