Building on Linux
helloSystem is designed for use with helloSystem, which is based on FreeBSD.
However, developers may want to verify that the code is reasonably platform independent by building on Linux from time to time.
Note
That the code build does not necessarily mean that it works properly on Linux or that all features are implemented for Linux.
Building in a chroot on a FreeBSD host
To verify that the code builds on Linux without needing a different development machine, one can use an Alpine Linux chroot in FreeBSD.
Beginning with build 0H165, helloSystem ships with an alpine rc.d script. When started for the first time, this downloads a minimal root filesystem.
$ sudo service linux stop
$ sudo service debian stop
$ sudo service alpine onestart
$ sudo chroot /compat/alpine /bin/sh
In the chroot, build the essential helloSystem components
// launch, open, and other essential command line tools that are required
$ git clone https://github.com/helloSystem/launch
$ mkdir -p launch/build
$ cd launch/build
$ grep ^apk ../README.md | sh
$ cmake ..
$ sudo make -j $(nproc) install
$ cd ../../
// Menu
$ git clone https://github.com/helloSystem/Menu
$ mkdir -p Menu/build
$ cd Menu/build
$ grep ^apk ../README.md | sh
$ cmake ..
$ sudo make -j $(nproc) install
$ cd ../../
// Filer
$ git clone https://github.com/helloSystem/Filer
$ mkdir -p Filer/build
$ cd Filer/build
$ grep ^apk ../README.md | sh
$ cmake ..
$ sudo make -j $(nproc) install
$ cd ../../
After you are done,
$ sudo service alpine onestop
Note
If the compiler crashes, make sure that /usr/bin/clang++
is being used rather than /usr/bin/c++
. This can be edited in CMakeCache.txt.
Running helloDesktop on Linux
Run Alpine Linux, e.g., in VirtualBox on helloSystem, or on real hardware.
Download ISO from https://alpinelinux.org/downloads/, “Standard”
User
root
, no password is the defaultInstall to to a hard disk using the
setup-alpine
command, need to use a classic (“sys mode”) installationEnable community repo by
sed -i -e 's|^#||g' /etc/apk/repositories
Install KDE Plasma using
setup-desktop
; set up a userrc-update add sddm
andrc-service sddm start
Log into a KDE Plasma session on Alpine Linux.
Important
Select X11 session. Wayland doesn’t work smoothly
Optionally, install VirtualBox related guest packages using
apk search
andapk add
sudo su
to become root (there is nosudo
configured on Alpine Linux by default)Build and
make install
the three core components of helloDesktop (launch, Menu, and Filer) as aboveFrom within the running KDE Plasma session, you can switch to the minimal helloDesktop with
#!/bin/sh
launch Menu &
sleep 1
launch Filer &
killall plasmashell
Menu shoud work including full text search in the filesystem.
The result will look somewhat like this:
Note
That the code runs does not necessarily mean that it works properly on Linux or that all features are implemented for Linux. Please keep in mind that for the best desktop experience, you should be using helloSystem which helloDesktop has been designed for.
Building and running helloDesktop on Raspberry Pi
Loosely follow https://wiki.alpinelinux.org/wiki/Classic_install_or_sys_mode_on_Raspberry_Pi (not all commands seem to be working exactly as written anymore), but also create “Linux Swap” partition. Alternatively, in the running Alpine Linux system
# fallocate -l 8G /swapfile
# mkswap /swapfile
# swapon /swapfile
to have enough RAM or else the compilation will be killed (at least on the 1GB and less RAM models).