The purpose of this repository is to maintain all the configuration files and scripts that are used for rolling out a FreeBSD Wifibox guest based on Alpine Linux.
This is a work-in-progress experimental software project without any guarantees or warranties. It is shared in the hope that is going to be useful and inspiring for others. Please report issues at the FreeBSD Wifibox repository directly.
For building the virtual disk image, the following third-party software is employed, which must be installed beforehand.
- SquashFS Tools NG or the
sysutils/squashfs-tools-ng
FreeBSD package. - GNU Tar or the
archivers/gtar
FreeBSD package. - PatchELF or the
sysutils/patchelf
FreeBSD package.
Note that the build process also uses native 64-bit Linux binaries,
that is why the Linuxulator must be activated by loading the
linux64
kernel module.
# kldload linux64
Whenever possible, use the net/wifibox-alpine
FreeBSD port from the
freebsd-wifibox-port repository, which aims to automate the tasks
described below and offers proper removal of the install files.
There is a Makefile
present in the root of the repository that could
be used to drive the installation process. It is mostly recommended
for development and testing.
# make install \
PREFIX=<prefix> \
LOCALBASE=<prefix of third-party software> \
MINIROOTFS=<Alpine minimal root file system tarball> \
PACKAGES=<Alpine package set> \
BOOT_SERVICES=<services to launch on boot> \
DEFAULT_SERVICES=<default services> \
SYSINIT_SERVICES=<system initialization services> \
ETC_SRCS=<location of application-specific configuration files> \
EXTRA_VIRTFS_MOUNTS=<fstab entries for shared file systems> \
FIRMWARE_FILES=<List of firmware files to keep> \
SQUASHFS_COMP=<Squashfs compression type>
The following make(1)
variables are available to control the build
process:
-
PREFIX
is optional, it is set to/usr/local
by default. This is the prefix under which the guest's file system will be constructed, in theshare/wifibox/guest
sub-directory. It is possible to set theLOCALBASE
variable as well to tell if the prefix under which various third-party utilities, such asgit
andmksquashfs
were installed is different. -
MINIROOTFS
should point to the Alpine minimal root file system tarball for thex86_64
architecture, which is going to be used in the bootstrapping phase. Such tarballs can be retrieved from the Alpine Linux web site. By default, that is set toalpine-minirootfs.tar.gz
. -
PACKAGES
should tell which Alpine Linux packages to install for the guest. Those are all must be local files with the.apk
extension. By default, that is*.apk
, which means that all available packages are looked up in the current directory and utilized during the installation process. -
BOOT_SERVICES
should specify which OpenRC services have to be launched on booting the guest. They greatly depend on what the installed packages provide. -
DEFAULT_SERVICES
should set which services are launched by default. Their actual set depends on the contents of the installed packages. -
SYSINIT_SERVICES
should tell which services are launched as part of the guest system initialization phase, along with the kernel. They have to be sync with the installed packages. -
ETC_SRCS
should point to a location where the guest's generic configuration files could be found. This helps to choose between application-specific configuration defaults. Currently, such files are offered forwpa_supplicant
andhostapd
, see theetc
directory in the repository. -
EXTRA_VIRTFS_MOUNTS
can optionally contain information about further 9P/VirtFS entries for the guest's/etc/fstab
file. First, the VirtFS share has to be named, which is then followed by the location where it should be mounted in the guest. These are separated by a:
, visually:share:/target/directory
-
FIRMWARE_FILES
is to tell which exact firmware files to keep to reduce further the size of the disk image. It is optional, mostly recommended in case ofiwlwifi
. -
SQUASHFS_COMP
configures the compression method used for building the Squashfs file system. By default, that is the rather conservativelzo
setting, butlz4
,gzip
,xz
, andzstd
are also available.
Besides these, it is considered that a directory named guest
might
be present for holding further files and directories that shall be
added to the virtual disk image, under its root.
There is a manual page available that describes how the guest can be used once installed.
# man wifibox-alpine