Edit: Re-reading -- the article is about using an x86 box as a router. Plenty of articles about there here on the forum.
My suggestion is the ODROID H2 -- you can see its performance at Comparative Throughput Testing Including NAT, SQM, WireGuard, and OpenVPN as the Celeron J4105 device.
You'll need the patches for EFI boot, presently at https://github.com/openwrt/openwrt/pull/1968
https://github.com/openwrt/openwrt/pull/1968.patch will get you the patch.
After you clone the repo
git checkout -b my-name-for-my-branch
wget https://github.com/openwrt/openwrt/pull/1968.patch
git am 1968.patch
Wiki at https://openwrt.org/docs/guide-developer/build-system/install-buildsystem and following
From my notes:
I run "headless" over SSH, so I don't need a graphical user environment.
(There may be steps missing here that were "obvious" to me)
apt install sudo
usermod -a -G sudo jeff # Use your "normal" user name here
Log out, and log in as your "normal" user
Update the install
sudo apt update
sudo apt upgrade
and get ready to build your first ROM!
sudo apt install build-essential git gitk libncurses5-dev gawk unzip wget curl ccache rsync zlib1g-dev
git clone https://git.openwrt.org/openwrt/openwrt.git
cd openwrt
git checkout master
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
Select your device's target, subtarget, and specific board -- this selects "good" defaults, without LuCI (it should include PPP-related kernel modules automatically).
I select Developer Options, then the entries for
(Hint: The /
key will let you search in make menuconfig
)
CONFIG_BUILD_LOG=y
CONFIG_CCACHE=y
I use the nginx-based HTTP-S version of LuCI
CONFIG_PACKAGE_luci-ssl-nginx=y
CONFIG_PACKAGE_luci-app-sqm=y
The first build will need to build the toolchain. This takes a while. Figure around an hour for the first build.
make -j12 clean download toolchain/install world
Set the -j12
to the number of cores on your build box or VM, or perhaps one less if you want to do something else compute-intensive on the box (more than watching the output or running [h]top or the like) while it's building.
re-builds are much faster (5-10 min for me), and you generally can just do
make -j12 clean download world
Using ccache makes "clean" not really cost a lot of time, so I do it every time out of habit.
Important: With your own builds, best is to add packages to a new ROM, as the OpenWrt package repos won't be consistent with your build. I have added "simple" packages (no "kmods" needed) on occasion, when I needed something without taking down a device to flash it.