===========================================================
This is a single only full article for first users, targeted for mid-impatient that just want the way to see the desktoip in some hours:
If you are impatient: .. use this guide named Fast Forward XFCE desktop If you want wayland crap: .. use this guide named Fast Forward Wayland desktop
This guide structure all the commands in blocks, each block its separated by a line spaced, so you must tipe each line as is.. and hit enter, but if you are in gui or remotelly just do:
If you have another computer or gui, try to use SSH client like putty or just in terminal (MAC or Linux) do:
sed -i 's|.*PermitRootLogin.*|PermitRootLogin yes|g' /etc/ssh/sshd_config;service sshd restart
ssh -l root <ip>
change “<ip>
” with the address of your device.
3 after finish, rerun: sed -i -r 's|.*PermitRootLogin.*|PermitRootLogin no|g' /etc/ssh/sshd_config;service sshd restart
Warning Some Linux or/and Mac terminals have security cut/paste locks, so if you paste, the first line will be preceded by garbage, check always the first char of your paste.
This guide will assume all the hard disk storage for the installation otherwise check the best option at alpine-newbie-install.md
Ok but if you are impatient: .. use this guide named Fast Forward XFCE desktop
Alpine is the OS (Operating System), that runs on your machine. Programs such as a web browser runs on the OS, and web pages like this are handled by the web browser.
About desktop? alpine is the Program combo that really runs in dockers, because of that, the desktop part its not so targeted and focused.. Linux is just the kernel that handles and manages the hardware to the operating system
If you must tune up we recommended to use virtual machine or check the best option at alpine-newbie-install.md
All the 15 steps are the description of the installation process when you run setup-alpine
To have a usable desktop without having to wonder why it doesn’t sound, or why the video file doesn’t display, you should avoid minimalisms if you don’t already have advanced knowledge of alpine and even more so of linux.
If you dont have wired internet connection, check lack of wireless setup section of this document.
Or just please use our direct VenenuX Alpine ISOS CURRENT LINK https://t.me/alpine_linux/762, but ask in telegram alpine network for newer one
Runs following commands as root user:
venenux-desktop
, please avoid symbolsdaru
, check the daru user explanation section of this documentdaru
as standardsed -i -r 's|#PermitRootLogin.*|PermitRootLogin no|g' /etc/ssh/sshd_config
service sshd restart
rc-update add sshd default
hostname venenux-desktop
echo 'hostname="venenux-desktop"' > /etc/conf.d/hostname
echo "venenux-desktop" > /etc/hostname
rc-update add networking boot
cat > /root/.cshrc << EOF
unsetenv DISPLAY || true
HISTCONTROL=ignoreboth
EOF
cp /root/.cshrc /root/.bashrc /root/.profile
echo "root:toor" | chpasswd
cat > /etc/apk/repositories << EOF
http://dl-4.alpinelinux.org/alpine/v$(cat /etc/alpine-release | cut -d'.' -f1,2)/main
http://dl-4.alpinelinux.org/alpine/v$(cat /etc/alpine-release | cut -d'.' -f1,2)/community
EOF
apk update
apk add tcsh && add-shell '/bin/csh'
adduser -D -g "" -u 998 -h /opt/daru -s /bin/csh daru
echo "daru:daru" | chpasswd
rm -f /opt/daru/*
mkdir /opt/daru
cat > /opt/daru/.cshrc << EOF
unsetenv DISPLAY
export PAGER=less
set autologout = 6
set prompt = "$ "
set history = 0
set ignoreeof
EOF
cp /opt/daru/.cshrc /opt/daru/.bashrc
Those command put your alpine in “minimal user mode” so means only one user will
be able to login from remote using ssh, the normal user will be “general”, but
for more info of daru
, check the daru user explanation
section of this document
Next section will cover the suser management and programs support:
include(alpine-newbie-shells.md)
This will convert and configures your alpine installation into a more close and working linux operating system, you will have:
cat > /etc/apk/repositories << EOF
http://dl-4.alpinelinux.org/alpine/v$(cat /etc/alpine-release | cut -d'.' -f1,2)/main
http://dl-4.alpinelinux.org/alpine/v$(cat /etc/alpine-release | cut -d'.' -f1,2)/community
EOF
apk update
apk add bash bash-doc bash-dev bash-completion readline readline-doc dialog dialog-doc
apk add coreutils coreutils-doc mandoc man-pages nano nano-doc binutils binutils-doc
apk add sed sed-doc lsof lsof-doc less less-doc groff groff-doc gawk gawk-doc
apk add wget wget-doc curl curl-doc aria2 aria2-doc
apk add zip zip-doc p7zip p7zip-doc xz xz-doc tar tar-doc lha lha-doc attr attr-doc cpio cpio-doc lha lha-doc lz4 lz4-libs lz4-doc lz4-static
apk add file file-doc arch-install-scripts arch-install-scripts-doc tree tree-doc apk add e2fsprogs e2fsprogs-doc btrfs-progs btrfs-progs-doc exfat-utils f2fs-tools f2fs-tools-doc dosfstools dosfstools-doc xfsprogs xfsprogs-doc jfsutils jfsutils-doc
apk add musl-locales musl-locales-lang tzdata tzdata-utils terminus-font
apk add pciutils pciutils-doc usbutils usbutils-doc lshw lshw-doc rsyslog rsyslog-doc
The packages that have a “-doc” part handles the manpages.. you can avoid those packages, if Alpine usage will be for GUI only or minimal setup.
The packages of locales will be need as base for multi-lang enviroment.
If you are impatient: .. use this guide named Fast Forward XFCE desktop
Now we need an user, to use the system, the root
account only will do delicate
or administrative task, you never use anything under root unless setup things!
and you must to avoid any user elevation command, always run su
for that!
We will follow a protocol for better identification of all the commands in further documents, the user will be called “general”; this is important that it has does matter, what does not matter is for you cos you only “use”.
The other important part here is the groups, user will not have proper access to resources because the OS manages the access using levels by groups. Of course all of this only works using the proper policy kit software.
general
for your desktop or console daily workgeneral
user in the most used need groups to have proper access to resourcesapk add shadow shadow-doc shadow-uidmap doas doas-doc doas-sudo-shim
cat > /tmp/tmpcs.tmp << EOF
set history = 10000
set prompt = "$ "
EOF
for i in $(ls /home);do cat /tmp/tmpcs.tmp > /home/$i/.cshrc;done
cat > /tmp/tmpbs.tmp << EOF
set prompt = "$ "
set history = 10000
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
EOF
for i in $(ls /home);do cat /tmp/tmpbs.tmp > /home/$i/.bashrc;done
mkdir /etc/skel
cat /tmp/tmpcs.tmp > /etc/skel/.cshrc
cat /tmp/tmpbs.tmp > /etc/skel/.bashrc
cat > /etc/skel/.Xresources << EOF
Xft.antialias: 0
Xft.rgba: rgb
Xft.autohint: 0
Xft.hinting: 1
Xft.hintstyle: hintslight
EOF
cat > /etc/default/useradd << EOF
# useradd defaults file
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
EOF
cat > /etc/login.defs << EOF
USERGROUPS_ENAB yes
LOG_OK_LOGINS no
SYSLOG_SU_ENAB yes
SYSLOG_SG_ENAB yes
SULOG_FILE /var/log/sulog
SU_NAME su
ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
UMASK 022
UID_MIN 1000
UID_MAX 60000
SYS_UID_MIN 100
SYS_UID_MAX 999
GID_MIN 1000
GID_MAX 60000
SYS_GID_MIN 100
SYS_GID_MAX 999
LOGIN_RETRIES 3
LOGIN_TIMEOUT 60
CONSOLE_GROUPS floppy:audio:cdrom:users
EOF
useradd -m -U -c "" -G wheel,input,disk,floppy,cdrom,dialout,audio,video,lp,netdev,games,users,ping general
for u in $(ls /home); do for g in disk lp floppy audio cdrom dialout video lp netdev games users ping; do addgroup $u $g; done;done
In the last part the general
user is created since for purposes of usage
the name its hard coded for the commands that can be sense and important,
because of the references in further documents.
At last, the groups are cofigured for the user, each one will define a
resource access, specially those for disk
, audio
, video
and netdev
.
Until this point, we have a user that can login to the system, and bunch of programs to interact with the OS, but still do not have any programs to make the computer or device work for us.. this target depends of the set of programs, this section will configure the graphical environment to property setup any desktop.
apk add acpi alpine-conf eudev eudev-doc eudev-rule-generator eudev-openrc linux-firmware cpufreqd pciutils util-linux zram-init
modprobe fbcon && echo "fbcon" >> /etc/modprobe
setup-devd udev
rc-update add udev
rc-update add acpid
rc-update add cpufreqd
apk add xorg-server xorg-server-xnest xorg-server-doc xf86-video-modesetting xf86-input-libinput freeglut glew glu
apk add mesa mesa-gl mesa-utils mesa-osmesa mesa-egl mesa-gles mesa-dri-gallium mesa-va-gallium libva-intel-driver intel-media-driver
apk add xf86-video-dummy xf86-video-vesa xf86-video-qxl xf86-input-evdev xf86-input-synaptics
apk add xf86-video-apm xf86-video-openchrome xf86-video-r128 xf86-video-sis
apk add xf86-video-i128 xf86-video-i740 xf86-video-savage xf86-video-s3virge xf86-video-chips xf86-video-tdfx
apk add xf86-video-ast xf86-video-rendition xf86-video-ark xf86-video-siliconmotion xf86-video-fbdev
apk add xf86-video-amdgpu xf86-video-nouveau xf86-video-intel xf86-video-vmware xf86-video-ati xf86-video-nv
apk add linux-firmware-amdgpu linux-firmware-radeon linux-firmware-nvidia linux-firmware-i915 linux-firmware-intel
apk add libxinerama xrandr kbd setxkbmap xinit xf86-input-evdev rsyslog rsyslog-doc
apk add dbus dbus-x11 elogind elogind-openrc elogind-lang polkit polkit-openrc polkit-elogind lightdm lightdm-lang lightdm-gtk-greeter
dbus-uuidgen > /var/lib/dbus/machine-id
rc-update add dbus
rc-update add elogind
rc-update add polkit
rc-service dbus restart
rc-service elogind restart
rc-service polkit restart
rc-update add rsyslog
rc-update add lightdm
rc-service rsyslog restart
rc-service lightdm restart
apk add fuse fuse-exfat-utils archivemount fuse-exfat avfs vte3 pcre2
rc-service fuse start
rc-update add fuse
apk add gvfs udisks2 udisks2-lang udisks2-doc gvfs-fuse gvfs-archive gvfs-dav gvfs-nfs gvfs-lang
If you are impatient: .. use this guide named Fast Forward XFCE desktop
Now we have support for graphics in the operating system, but still do not have any graphical program, so we will prepare minimal set of software for the right working of the programs such like the fonts and the support of multi languajes.
apk add terminus-font
setfont /usr/share/consolefonts/ter-132n.psf.gz
sed -i "s#.*consolefont.*=.*#consolefont="ter-132n.psf.gz"#g" /etc/conf.d/consolefont
rc-update add consolefont boot
apk add ttf-dejavu font-bitstream-type1 font-bitstream-100dpi font-bitstream-75dpi font-adobe-utopia-type1 font-adobe-utopia-75dpi font-adobe-utopia-100dpi font-noto-georgian
apk add font-noto font-noto-extra font-noto-cjk font-noto-cjk-extra font-arabic-misc ttf-liberation ttf-linux-libertine
apk add font-misc-cyrillic font-mutt-misc font-screen-cyrillic font-winitzki-cyrillic font-cronyx-cyrillic
apk add font-noto-hebrew font-noto-arabic font-noto-armenian font-noto-cherokee font-noto-devanagari font-noto-ethiopic
apk add font-noto-lao font-noto-malayalam font-noto-tamil font-noto-thaana font-noto-thai
apk add font-noto-cjk font-noto-cjk-extra font-isas-misc
If you want to bypass and dont know anything, run steps from 1 to 4 adn then
after step 4 just install font-noto-all
that provides support for all
langs symbols words.
Audio support these days depends on video support, although it can still be configured separately, nowadays it is strongly tied to video, that’s why its placed here this section, just below of the hardware video setup.
It should be noted that in Linux there is the system audio layer and the user audio layer, formerly the first was and can used directly, nomadays, by using the second we are in transition to the wonderful pipewire framework.
apk add alsa-utils alsa-utils-doc alsa-plugins alsa-plugins-doc alsa-tools alsa-tools-doc alsaconf linux-pam
apk add pipewire pipewire-doc pipewire-pulse pipewire-alsa pipewire-jack sndio sndio-doc wireplumber-logind
rc-update add alsa
rc-service dbus restart
amixer sset Master unmute;
amixer sset PCM unmute;
amixer set Master 100%;
amixer set PCM 100%;
cat > /etc/security/limits.d/audio-limits.conf << EOF
@audio - memlock 4096
@audio - nice -11
@audio - rtprio 88
@pipewire - memlock 4194304
@pipewire - nice -19
@pipewire - rtprio 95
EOF
apk add bluez bluez-deprecated bluez-openrc pipewire-spa-bluez
modprobe btusb && echo "btusb" >> /etc/modprobe
rc-update add bluetooth
rc-service bluetooth start
for u in $(ls /home); do chown -R $u:$u /home/$u; done
Now at this point we have audio and video configured, additionally we have basic support for managing devices dynamically when connecting or disconnecting, the only kind of devices not covered yet until this point are printers.
For any desktop this is the point where you choose which graphical environment or desktop to install. Next section will prefers the XFCE4 desktop setup, currently ws the first and its the most complete desktop packaged in the repos.
Warning: pipewire needs
XDG_RUNTIME_DIR
configured correctly, if not~/pulse
will be created and pavucontrol willnot access to!
This means no dbus and no XDG_RUNTIME_DIR
setup, the pipewrite can
be configured to assumed never will exits a graphical session running,
also the package eudev
must be installed for alsa cards.
This method is not sure to work in almost all cases, so if fails just leave only alsa packages and setup alsa only!
cp -a /usr/share/pipewire /etc
cp -a /usr/share/wireplumber /etc
sed -i 's|.*support.dbus.* =.*| support.dbus = false|g' /etc/pipewire/pipewire.conf
sed -i 's|.*support.dbus.* =.*| support.dbus = false|g' /etc/wireplumber/wireplumber.conf
sed -i 's|.*\["with-logind"\].*=.*| ["with-logind"] = false|g' /etc/wireplumber/bluetooth.lua.d/50-bluez-config.lua
sed -i 's|.*\["alsa.reserve"\].*=.*| ["alsa.reserve"] = false|g' /etc/wireplumber/main.lua.d/50-alsa-config.lua
Only do this if you never will run a managed xdg sesion or x11/wayshit setup, of
course this also will need the linux-pam
and pipewire
packages, becouse the second
does not depends on the first so will fails if you dont installed xplicit!
PROBLEMS: if you try to run any alsa or app and get “Host is down”, means that
the pipewire session and the access is wronly configured. try “alsamixer -c0” to
check if work or alsamixer -c1
or similar, and if work the pipewire session
must be reconfigured to provide media device access, try to added the user to the
group of pipewire.
Since Alpine 3.13 the XFCE4 desktop its full modern, this means its pretty more heavy, cos is build using GTK3 only.
On older or cheap devices, mostly for 32bit devices its better to use alpine 3.10 or 3.12 that uses GTK2 for almost all the programs.
apk add gtk-update-icon-cache hicolor-icon-theme paper-gtk-theme adwaita-icon-theme mate-themes xdg-user-dirs-gtk
apk add xfce4 xfce4-session xfce4-panel xfce4-terminal xarchiver mousepad network-manager-applet xfwm4-themes xfce-polkit xfce4-skel xfce4-power-manager xfce4-settings
apk add lightdm elogind elogind-openrc elogind-lang polkit polkit-openrc polkit-elogind lightdm lightdm-lang lightdm-gtk-greeter
rc-update add lightdm
rc-service lightdm restart
apk add xfce4-clipman-plugin xfce4-xkb-plugin xfce4-screensaver xfce4-screenshooter xfce4-taskmanager xfce4-whiskermenu-plugin xfce4-battery-plugin
apk add xfce4-panel-lang xfce4-clipman-plugin-lang xfce4-xkb-plugin-lang xfce4-screenshooter-lang xfce4-taskmanager-lang xfce4-whiskermenu-plugin-lang xfce4-battery-plugin-lang xfce4-power-manager-lang xfce4-settings-lang
for u in $(ls /home); do chown -R $u:$u /home/$u; done
The XFCE4 desktop is the most complete in Alpine, MATE and others have almost complete packages, with minor fails or missing. The newers LXQT and CoreCube desktops are made in QT technology so are more heavyweith for older devices, specially 32bit systems.
the LXDE desktop is not completed in alpine due the stupid mantainers policy of GTK3 targeted.
The media in linux its per se reduced, and in alpine so then more limited, with this lines you will have all the need suported, for converting and playing, and minimal support for editing.
apk add e2fsprogs e2fsprogs-doc btrfs-progs btrfs-progs-doc xfsprogs xfsprogs-doc \
exfat-utils exfat-utils-doc f2fs-tools f2fs-tools-doc dosfstools dosfstools-doc \
jfsutils jfsutils-doc parted parted-doc partimage partimage-doc testdisk testdisk-doc
apk add gst-plugins-base gst-plugins-bad gst-plugins-bad-lang gst-plugins-ugly gst-plugins-ugly-lang gst-plugins-good gst-plugins-good-gtk gst-plugin-pipewire
apk add libcanberra-gtk2 libcanberra-gtk3 libcanberra-gstreamer wxgtk-media wxgtk3-media wxgtk-lang pipewire-pulse pipewire-zeroconf pipewire-lang
apk add mediainfo ffmpeg ffmpeg-doc ffmpeg-libs lame lame-doc rtkit rtkit-doc
apk add mpv mpv-doc deadbeef deadbeef-lang deadbeef-doc
apk add gvfs gvfs-fuse gvfs-archive gvfs-afp gvfs-afp gvfs-afc gvfs-cdda gvfs-gphoto2 gvfs-mtp pcmanfm blueman
apk add libxinerama xrandr wpa_supplicant dhcpcd chrony macchanger wireless-tools iputils
apk add network-manager-applet network-manager-applet-lang networkmanager networkmanager-lang networkmanager-elogind networkmanager-elogind-lang networkmanager-elogind-openrc networkmanager-openvpn networkmanager-openvpn-lang
rc-update add chrony
rc-update add wpa_supplicant
rc-update add networkmanager
for u in $(ls /home); do for g in plugdev audio cdrom dialout video netdev; do addgroup $u $g; done;done
cat > /etc/network/interfaces << EOF
auto lo
iface lo inet loopback
EOF
service networking restart
service wpa_supplicant restart
service networkmanager restart
for u in $(ls /home); do chown -R $u:$u /home/$u; done
In linux world there’s no mayor suite or programs in such topic, just we need a reader (pdf, ebooks, cbr, zbr, etc) and office suite for word/calc processing (doc, xls, odt, ods, etc).
apk add libreoffice libreoffice-gnome evince evince-lang evince-doc
The programs will appear in the Office menu category.
Disk paths, Networks and WIFI in linux have two scopes, the system and the user, alpine uses a scope that is overwritten and superset if others apps are installed, like networkmanager or desktops is installed, therefore, the network configuration we make is temporary, and we assumed then wired one cos is easy to setup.
WIFI networks are a little more complicated, that’s why a wired network is assumed, if you don’t have the possibility of having an internet network, simply use our complete iso that already has everything, and there you can use the wifi directly from the graphical desktop check Internet required or offile iso section.
The meaning of “daru” user is to able to login to you from another computer by restrictions.. so no one can login with other user.. daru have a restricted shell and restricted commands.
The right way its to use SSH Key Pair and limited hosts, but that is so complicated for new users, so using a restricted user for connections its enought untill that point.
Alpine developers dont understand that normal users first wants to see the things working, and later after understand the most relevenat for thems (desktop usage), users can setup others things..
CC BY-NC-SA: the project allows reusers to distribute, remix, adapt, and build upon the material in any medium or format for noncommercial purposes only, and only so long as attribution is given to the creators involved. If you remix, adapt, or build upon the material, you must license the modified material under identical terms, includes the following elements:
https://codeberg.org/alpine/alpine-wiki/src/branch/main#license