|
|
@@ -0,0 +1,75 @@ |
|
|
|
--- |
|
|
|
title: Installing FreeBSD on a PC Engines APU4C2 |
|
|
|
description: > |
|
|
|
Installing FreeBSD on a PC Engines APU4C2 |
|
|
|
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. |