Setting up a desktop workstation using Alpine Linux for me typically just requires two components, if I'm on a laptop, a Wi-Fi connection, and a desktop environment (in this case XFCE). For the sake of simplicity, I have written some scripts that automate components from the Alpine Linux documentation.
You'll need two scripts, first wireless_net.sh
, which will look like this:
#!/bin/bash
# Automates <https://wiki.alpinelinux.org/wiki/Connecting_to_a_wireless_access_point>
function pkgs() {
apk --update add \
wireless-tools \
wpa_supplicant
}
function configIface() {
if [ "$(ip link | awk '{print $2}' | grep wlan0 | wc -l)" = "1" ]; then \
echo "OK"
else
echo "wlan0 not found"
exit 1
fi
ip link set wlan0 up
}
function connectNetwork() {
if [ ! ${SSID} ]; then
read -p "WiFi Network SSID: " SSID
fi
if [ ! ${WIFI_PASS} ]; then
read -sp "WiFI Pass: " WIFI_PASS
fi
wpa_passphrase "$SSID" "$WIFI_PASS" > /etc/wpa_supplicant/wpa_supplicant.conf
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf && \
udhcpc -i wlan0 && \
ip addr show wlan0
if [ ! ${CONNECT_ON_BOOT} ]; then
read -p "Connect to ${SSID} on boot? [y/n] " CONNECT_ON_BOOT
fi
if [ "$CONNECT_ON_BOOT" = "y" ];
rc-update add wpa_supplicant boot ; \
rc-update add wpa_cli boot
fi
}
pkgs && \
configIface && \
connectNetwork
and desktop.sh
, which looks like:
#!/bin/bash
# Automates <https://wiki.alpinelinux.org/wiki/XFCE_Setup>
function update_repos() {
for r in $(grep community /etc/apk/repositories); do echo $(echo $r | sed -e 's|#||g') | tee -a /etc/apk/repositories; done && \
apk update
}
function pkgs() {
echo "Use xf86-video-modesetting for Qemu/KVM guests.
Tip: Probably for KVM/Qemu guests you want to use qxl Video and Display Spice. For this purpose install xf86-video-qxl on guest and run a Spice client on the host
Use xf86-video-vmware and xf86-video-vboxvideo for Virtualbox/VMware guests.
Tip: If you want to run XFCE in an Oracle VM Virtual Box, you need to install the VirtualBox guest additions as well. They contain parts of the driver, without them, XFCE won't start.
Use xf86-video-fbdev for Hyper-V guests.
Tip: If you use Hyper-V, you should install the Hyper-V guest services as well."
if [ ! ${DRIVER} ]; then
read -p "Which video driver? (i.e. intel, vmware) " DRIVER
fi
setup-xorg-base xfce4 xfce4-terminal lightdm-gtk-greeter xfce-polkit xfce4-screensaver consolekit2 dbus-x11 sudo && \
if [ "$(apk search xf86-video-$DRIVER | wc -l)" = "0" ]; then
echo "Invalid driver specified" ;
exit 1
else
apk --update add xf86-video-$DRIVER
fi
apk add xf86-input-synaptics ; \
apk add xf86-input-mouse xf86-input-keyboard kbd
}
function config_user(){
if [ ! ${USER} ]; then
read -p "Username: " USER
fi
if [ ! ${PASSWORD} ]; then
read -sp "Password: " PASSWORD
fi
adduser --quiet --disabled-password --shell /bin/ash --home /home/$USER --gecos "User" $USER && \
echo "$USER:$PASSWORD" | chpasswd && \
echo "$USER ALL=(ALL) NOPASSWD:ALL" | tee -a /etc/sudoers
}
function svcs() {
rc-service dbus start && \
rc-update add dbus && \
rc-service lightdm start && \
rc-update add lightdm && \
apk add faenza-icon-theme gvfs-fuse gvfs-smb
}
update_repos && \
pkgs && \
config_user && \
svcs
To configure the wifi connection, run the script using the following arguments:
SSID="mynetwork" WIFI_PASS="p@$$w0rd" CONNECT_ON_BOOT="y" ./wireless_net.sh
which is just the network SSID, the password, and your connection preference for boot.
For the desktop, environment, it will also configure a non-root user, who will have passwordless-sudo capability:
USER="me" PASS="s3cr3t" DRIVER="modesetting" ./desktop.sh
The modesetting
value for DRIVER
will need to match your system (i.e. vmware, intel, etc.) For virtualized envrionments, the script notes the following:
"Use xf86-video-modesetting for Qemu/KVM guests.
Tip: Probably for KVM/Qemu guests you want to use qxl Video and Display Spice. For this purpose install xf86-video-qxl on guest and run a Spice client on the host
Use xf86-video-vmware and xf86-video-vboxvideo for Virtualbox/VMware guests.
Tip: If you want to run XFCE in an Oracle VM Virtual Box, you need to install the VirtualBox guest additions as well. They contain parts of the driver, without them, XFCE won't start.
Use xf86-video-fbdev for Hyper-V guests.
Tip: If you use Hyper-V, you should install the Hyper-V guest services as well."
After rebooting, the system should come online with your XFCE environment loaded and your Wi-Fi connection active if set when you ran the driver, otherwise, run the script again when you wish to connect.
The scripts can be found here on Github:
Alpine Linux Workstation Setup
These scripts configure the basics for my Alpine Linux workstation.
Configure Wireless Network
The wireless_net.sh
script configures a Wifi client.
Usage
This requires SSID
, WIFI_PASS
, and CONNECT_ON_BOOT
, if not provided like so:
SSID="mynetwork" WIFI_PASS="p@$$w0rd" CONNECT_ON_BOOT="y" ./wireless_net.sh
otherwise, you'll be prompted as the script runs.
Configure XFCE Desktop
This script configures an administrative user, installs the desktop environment, and configures services for startup.
Usage
This requires USER
, PASS
, and DRIVER
(for your chipset, i.e. intel
, or vmware
):
USER="me" PASS="s3cr3t" DRIVER="modesetting" ./desktop.sh
If not provided, you will be prompted as the script runs.
Note for Virtualized Guests
Per the Alpine Linux documentation:
Use xf86-video-modesetting for Qemu/KVM guests Tip: Probably for KVM/Qemu guests you want to use qxl Video and Display…
Top comments (0)