6. TrueOS Pico™¶
As a result of TrueOS using OpenRC and other changes, an update to these instructions, especially server initialization, is forthcoming.
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 server software.
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 Pico Server™.
- 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 Pico Server™.
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 session only.
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:
The Configuration Settings Table will expand
as more options are developed and added to
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 the client.
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 last step.
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.
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 toolkit.
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.
6.4.2. Pulse Audio¶
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 documentation 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 application.
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:
|pico-server||Primary Pico command. All commands begin with pico-server and a space.|
|-list||Displays all connected clients, as either “pico_auth <#>” or the specific logins (“testuser_pico”)|
|-kill pico_auth <#>||Immediately reboots the specified client.|