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 {file}/usr/bin/clang++ is being used rather than {file}/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 default - Install to to a hard disk using the
setup-alpinecommand, need to use a classic ("sys mode") installation - Enable community repo by
sed -i -e 's|^#||g' /etc/apk/repositories - Install KDE Plasma using
setup-desktop; set up a user rc-update add sddmandrc-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 searchandapk add sudo suto become root (there is nosudoconfigured on Alpine Linux by default)- Build and
make installthe three core components of helloDesktop (launch, Menu, and Filer) as above - From 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).
