Install an Alpine Desktop VM
Sometimes you need a small desktop on the cluster to do stuff. Alpine is a pure Linux OS, it's tiny. Adding a desktop, and it's there, a lightweight, minimalistic and customizable Linux experience in a VM. It uses OpenRC, not systemd.
Alpine Linux is widely used in containerized environments like Docker images. Why, its small size, fast boot time, and reduced attack surface and enabling efficient resource utilization.
Nice things
- Minimalistic: Alpine Linux is designed to be lightweight, making it ideal for resource-constrained systems (minimal disk space and low memory requirements). But, still or because of it good performance.
- Enhanced security: Alpine has a strong emphasis on security practices and advanced measures such as stack protection, hardened kernel, and Address Space Layout Randomization (ASLR). Skipping the normal bloat and use a minimal package set reduces the attack surface and ensures a more secure desktop environment.
- APK : Alpine Package Keeper lets you choose from many lightweight window managers, desktop environments, and a vast repository of software packages.
- Active Community Support
Installation
Download the ISO image Visit the download page and for AMD64 architectures click the “x86_64” button in the “STANDARD” section, less than 220 MB.
Create a small VM and use that image, 1-2 GB memory and 8-12 GB disk. The reason we use so many resources is that we will create a Desktop. Here you may like to set the CPU Resources Limits, 2 cores but limit to 1.0 (2 * 50%).
Start and login as root, no password.
Start the Alpine Linux Installation
Type setup-alpine
and press Enter
to begin the Alpine installation.
If you do don't know what to answer, use the ?
if available.
Any mistake can be corrected by re-running the setup-alpine
.
Next enter the hostname as FQDN, e.g., foo.example.com
Next enter networking details IP (192.0.2.39) address or DHCP. Netmask 255.255.255.0, GW (192.0.2.1)
Next is the DNS domain name and the DNS servers
Next, use a proxy or answer none
Next the important step root password, New password: enter a long and complicated one
Next your timezone, (I used to work for multinationals, and it was all UTC) Enter the Region/Capital to select. For more info, see Reference ³.
Next select an Alpine Linux mirror (random, detect and fastest or edit)
Add a normal user. We don't like running things as root, it's dangerous. If you don't have an SSH key for the user, you need to add it later for security reasons. Select your SSH server, OpenSSH is default.
Next select the disk, sda
and select how to use it
Choose between the following options :
- System disk mode (sys): a traditional hard-disk install that creates three partitions on the selected storage device, “/boot,” “swap,” and “/” (the filesystem root). Most suitable for generic desktop machines.
- Data disk mode (data): This mode runs from system RAM but swaps storage, and the entire “/var” directory gets mounted from a persistent storage device. Helpful in having RAM-accelerated servers.
- Crypt: As the names suggest, you can set up an encrypted LUKS volume. You will be asked again for “sys” or “data” mode.
- LVM: Enable logical volume manager and ask again for “sys” or “data” mode.
For a desktop system, we select sys
mode, confirm by hitting Enter
.
All done, please reboot and add the key for your user.
Post Installation Steps
Edit the /etc/apk/repositories
file and remove the comment (#) before the community repository line to enable it if you didn't do it at install.
Next, we’ll install a Bash shell (by default it's sh) and the sudo
(by default it's doas
) command or create an alias sudo=doas
. Finally, we’ll add our user to the “wheel” group so that we can execute commands with root privileges and set his default shell to Bash.
apk add bash bash-completion sudo shadow
echo '%wheel ALL=(ALL) ALL' > /etc/sudoers.d/wheel
adduser climber wheel
usermod -s /bin/bash climber
Reboot the system
Adding the community repo
If you need things like the Qemu-Guest-Agent or sudo, you need to activate the community repo. Edit the file /etc/apk/repositories
and remove the #
in front of the …/community
lines.
Setup X-window
Alpine Linux provides users with the setup-xorg-base
command to automatically install all needed packages for running a desktop environment.
Install Xfce on Alpine Linux
Xfce is lightweight, efficient, and visually appealing while using minimal system resources desktop environment, so it’s a perfect match for your Alpine system.
First, execute the basic Xfce desktop, LightDM login manager, and Firefox:
apk add xfce4 xfce4-terminal xfce4-screensaver lightdm-gtk-greeter dbus firefox
Next, install additional fonts:
apk add font-awesome font-dejavu font-inconsolata font-liberation font-noto font-noto-cjk font-noto-extra font-terminus
Enabled LightDM and D-Bus services to start up on boot automatically:
rc-update add dbus
rc-update add lightdm
Reboot the system
First log in your keyboard is US, change to yours.
References
Alpine Linux homepage, getting started User Handbook, Downloads ↩︎
Difference with UTC, GMT and ZULU time timeanddate.com, Zulu (military/aviation) is just the synonym for UTC and always 24 h. Non of them useses DST. Today we use UTC, List of TZ database wikipedia, the TZ DB wikipedia ↩︎