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