6. TrueOS Pico®
As a result of TrueOS using OpenRC and other changes, an
update to these instructions, especially server initialization, is
TrueOS Pico® is an initiative to connect multiple small ARM device thin
clients to a single TrueOS® system. Similar to the SysAdm™ project,
TrueOS Pico® utilizes two primary pieces of software: Pico Server® and Pico Client®.
The goal for the TrueOS Pico® is to provide a low-cost solution for users who
wish to have a central server provide resources to multiple low-cost,
low-power systems. In effect, TrueOS Pico® allows one system to
provide all the processing power and graphical “muscle” for as many
computers the user wishes to add on the network. For example, three or
four users can log into their thin clients and open utilities, browse
the Internet, or even play games while one central server dynamically
provides the needed resources for each of these tasks.
Pico Server® is available through pkg and in AppCafe®. Configure
the server software before downloading the client software or
initializing the Pico Client®.
To download the Pico Client® software, visit the TrueOS®
download page. A separate computer
is required to unpack and transfer the
.img file to a microSD
card for insertion into the thin client.
Currently, the TrueOS Pico® software is functional for TrueOS® and the
Raspberry Pi 2 model B v1.1. The bulk of development efforts are being
directed toward ensuring graphics and sound functionality. Future
development goals include supporting a wider variety of ARM devices and
potential thin clients, and building cross-platform support for the
6.1. TrueOS Pico® Initialization
To create a TrueOS Pico® network, several elements are required:
- A TrueOS® system with both an internet and local network connection
to download the necessary files and be used as the Pico Server®. For this
system, it is recommended to use strong hardware to provide the
smoothest experience for each connected client.
For best performance, it is recommended to have wired
network connections from the Pico Server® to all connected clients.
- An ARM device to act as the thin client (as many as the user wants or
the server can support). Currently, only the Raspberry Pi 2 model B
v1.1 is supported, with up to five simultaneous connections on one
- A microSD card for each thin client.
Using a microSD card larger than 4 GB in size is largely
unnecessary, as the server stores almost all created data.
- Adapter or connector for microSD cards to connect to the Pico Server®
(Ex. a USB to microSD card reader).
Each thin client will need:
- HDMI monitor. Currently, 1920x1080 is the maximum supported
resolution and the monitor should have integrated speakers for audio
to function properly.
- Network cable.
- USB mouse.
- USB keyboard.
- Power adapter.
Once all these components are assembled, it’s time to configure the
6.2. Pico Server®
Installing and configuring the Pico Server® is done via the command prompt,
with superuser permissions (su or
sudo <rest of command>). Open a terminal and download the
Pico Server® package with sudo pkg install picoserver (also
available in AppCafe®). Next, enable the Pico Server® using
sysrc -f /etc/rc.conf picoserver_enable=yes. Finally, start
the Pico Server® with service picoserver start.
These commands will ensure the Pico Server® automatically starts
and remains active when the system is booted. Type
picoserver onestart to run the server for the current
Once the Pico Server® starts, a new
picoserver.ini file is created on
the system, found in
holds the initialization settings for the Pico Server® and has three sections,
seen in Table 6.2.1:
Table 6.2.1 Pico Server Configuration Settings
Set the compression setting to any number from 1 to 9. The default
setting is recommended as turning up the compression can introduce
performance issues on the Pico Client®.
Pico uses Virtual GL (VGL) for graphics hardware acceleration. VGL
works with any OpenGL supported graphics card, but Nvidia cards are
generally recommended at this time.
Turning on VGL may introduce security vulnerabilities on a
network with untrusted clients.
If the server does not support video acceleration or to avoid any
potential security vulnerabilities on the Pico network, edit
picoserver.ini and change enablevgl= to false.
Currently, audio only functions over the HDMI connection port on the
Raspberry Pi, meaning audio will only work on monitors with built-in
audio capabilities. Change true to false to disable all audio.
Once satisfied with the settings in
picoserver.ini, new user
accounts/logins may need to be created for the client systems. See the
User Manager section of the SysAdm™ handbook
for detailed instructions on creating new users on a TrueOS® system.
After any necessary accounts are created, the next step is to initialize
6.3. Starting the Pico Client®
The process of initializing a Pico Client® begins on a separate TrueOS®
system. On this system, navigate to the TrueOS® website’s
download page and download the
<pico>.img.xz file. This file is compressed with xz;
decompress the file before burning it to a microSD card. Using the
command line, navigate to the file’s location to use unxz to
unpack the file:
[tmoore@Observer] ~% cd Downloads/
[tmoore@Observer] ~/Downloads% unxz TrueOS-pico-rpi2-2016-10-29.img.xz
It may take a few moments for the system to decompress the file.
Once the file is decompressed to a
.img file, insert a microSD
card into the system. An adapter might be necessary if the system has no
microSD card slots. As the superuser, use the dd
command line utility to write the
.img file to the card:
Be sure the dd if= command points to the correct
storage device. In the example below, the microSD card is connected
to a USB adapter, identified as da0 on the system.
[tmoore@Observer] ~/Downloads% dd if=TrueOS-pico-rpi2-2016-10-29.img of=/dev/da0 bs=4m
512+0 records in
512+0 records out
2147483648 bytes transferred in 426.140554 secs (5039379 bytes/sec)
This command may take some time to process.
.img file is written to the microSD card; connect the
Pico Client® to the Pico Server®:
- Insert the microSD card into the thin client.
- Attach the network cable. Be sure the client is wired into the same
network as the Pico Server®.
- Plug in the USB Mouse and Keyboard.
- Attach the monitor’s HDMI cable.
- Plug in the ARM device’s power cable. This should always be the
For the Raspberry Pi, inserting the power cable will generally turn on
the client device. The Pico Client® then searches for and connects to any
Pico Server® on the network, bringing the user to the TrueOS® login screen.
The Pico Client® is now ready for use.
6.4. Using the Pico Client®
There are a few differences in TrueOS® when using a Pico Client®.
If the server uses the Lumina® Desktop Environment, hovering over the
Network Status Icon in the System Tray displays the client’s
IP address, the server’s IP address, and the client’s unique
pico_auth number, seen in Image 6.4.1. This is
intended to efficiently provide relevant network information for
simplified server administration.
Fig. 6.4.1 Pico Client® IP display
When logging out with the Pico Client®, several processes begin. The client
clears the session, then restarts the discovery and connection
processes. The server will destroy the previous user’s
file, along with the previously assigned pico_auth #. These
processes prepare the server for a new connection and user login from
the same Pico Client®.
6.4.1. VGL Graphics Acceleration
VirtualGL (VGL) is the toolkit used by the TrueOS Pico® to provide 3D hardware
acceleration to the Pico Client®. VGL redirects OpenGL commands and data to
the GPU in the Pico Server®, then pulls back the rendered 3D images to the
client. For further information about this open-source project, please
refer to the VirtualGL website
VirtualGL also has an extensive
user guide to
help guide new users through the various features of this useful
On a Pico Client®, test VGL functionality by opening the command line and
typing /usr/local/VirtualGL/bin/vglrun glxgears. A window
will popup, displaying several moving gears, as seen in
Image 6.4.2. The terminal also displays the framerate
of the gears, and updates periodically.
Fig. 6.4.2 VirtualGL Gears Test
6.4.2. Pulse Audio
is the preferred audio solution for the Pico Client®. Pulse Audio allows a
Pico Client® play audio sent from the server. The Pulse Audio user
provides a wealth of information on configuring Pulse Audio, including
streaming audio over the network. Advanced controls for Pulse Audio are
available in AppCafe® with the pavucontrol multimedia
6.5. Pico Server® Administration
Once the Pico Server® and thin clients are installed and ready to use, there
are a number of administrative commands available, seen in
Table 6.5.1. Any new commands will be added to this
Table 6.5.1 Pico Server® Administration Commands
||Primary Pico command. All commands begin
with pico-server and a space.
||Displays all connected clients, as either
“pico_auth <#>” or the specific logins
|-kill pico_auth <#>
||Immediately reboots the specified client.