From 02913ad2807a18f8fb36e9ad75c49360b0be4f16 Mon Sep 17 00:00:00 2001 From: Storm Dragon Date: Sat, 2 Apr 2022 22:29:36 -0400 Subject: [PATCH] Pi3 support coming back. --- pi3/build/build-stormux.sh | 252 ++++++++++++++++++ {files => pi3/files}/boot/config.txt | 0 .../etc/X11/xorg.conf.d/10-headless.conf | 0 {files => pi3/files}/etc/hostname | 0 {files => pi3/files}/etc/hosts | 0 {files => pi3/files}/etc/log2ram.conf | 0 {files => pi3/files}/etc/motd | 0 {files => pi3/files}/etc/pam.d/nodm | 0 .../files}/etc/sysctl.d/20-quiet-printk.conf | 0 .../files}/etc/systemd/journald.conf | 0 .../etc/systemd/resolved.conf.d/dnssec.conf | 0 .../usr/lib/systemd/system/ntpd.service | 0 .../files}/usr/local/bin/configure-stormux | 0 .../files}/var/lib/alsa/asound.state | 0 {build => pi4/build}/build-stormux.sh | 0 pi4/files/boot/config.txt | 10 + .../etc/X11/xorg.conf.d/10-headless.conf | 20 ++ pi4/files/etc/hostname | 1 + pi4/files/etc/hosts | 5 + pi4/files/etc/log2ram.conf | 37 +++ pi4/files/etc/motd | 8 + pi4/files/etc/pam.d/nodm | 6 + pi4/files/etc/sysctl.d/20-quiet-printk.conf | 1 + pi4/files/etc/systemd/journald.conf | 47 ++++ .../etc/systemd/resolved.conf.d/dnssec.conf | 2 + pi4/files/usr/lib/systemd/system/ntpd.service | 14 + pi4/files/usr/local/bin/configure-stormux | 32 +++ pi4/files/var/lib/alsa/asound.state | 79 ++++++ 28 files changed, 514 insertions(+) create mode 100755 pi3/build/build-stormux.sh rename {files => pi3/files}/boot/config.txt (100%) rename {files => pi3/files}/etc/X11/xorg.conf.d/10-headless.conf (100%) rename {files => pi3/files}/etc/hostname (100%) rename {files => pi3/files}/etc/hosts (100%) rename {files => pi3/files}/etc/log2ram.conf (100%) rename {files => pi3/files}/etc/motd (100%) rename {files => pi3/files}/etc/pam.d/nodm (100%) rename {files => pi3/files}/etc/sysctl.d/20-quiet-printk.conf (100%) rename {files => pi3/files}/etc/systemd/journald.conf (100%) rename {files => pi3/files}/etc/systemd/resolved.conf.d/dnssec.conf (100%) rename {files => pi3/files}/usr/lib/systemd/system/ntpd.service (100%) rename {files => pi3/files}/usr/local/bin/configure-stormux (100%) rename {files => pi3/files}/var/lib/alsa/asound.state (100%) rename {build => pi4/build}/build-stormux.sh (100%) create mode 100755 pi4/files/boot/config.txt create mode 100644 pi4/files/etc/X11/xorg.conf.d/10-headless.conf create mode 100644 pi4/files/etc/hostname create mode 100644 pi4/files/etc/hosts create mode 100644 pi4/files/etc/log2ram.conf create mode 100644 pi4/files/etc/motd create mode 100644 pi4/files/etc/pam.d/nodm create mode 100644 pi4/files/etc/sysctl.d/20-quiet-printk.conf create mode 100644 pi4/files/etc/systemd/journald.conf create mode 100644 pi4/files/etc/systemd/resolved.conf.d/dnssec.conf create mode 100644 pi4/files/usr/lib/systemd/system/ntpd.service create mode 100755 pi4/files/usr/local/bin/configure-stormux create mode 100644 pi4/files/var/lib/alsa/asound.state diff --git a/pi3/build/build-stormux.sh b/pi3/build/build-stormux.sh new file mode 100755 index 0000000..10c46a4 --- /dev/null +++ b/pi3/build/build-stormux.sh @@ -0,0 +1,252 @@ +#! /bin/bash +# +# Copyright 2020, Stormux, +# +# This is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free +# Software Foundation; either version 3, or (at your option) any later +# version. +# +# This software is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this package; see the file COPYING. If not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. +# + +# keep track of mounted status for exit function +mounted=1 + +set -e # Don't want to destroy stuff if this goes majorly wrong. +trap cleanup EXIT # make sure the script cleans up after itself before closing. + + +cleanup() { + if [[ $mounted -eq 0 ]]; then + umount -R /mnt + partx -d "${loopdev}" + losetup --detach "${loopdev}" + fi + if [[ -n "${imageFileName}" ]]; then + rm "${imageFileName}" + fi + exit 0 +} + +help() { + echo -e "Usage:\n" + echo "With no arguments, build with default parameters." + for i in "${!command[@]}" ; do + echo "-${i/:/ }: ${command[${i}]}" + done | sort + exit 0 +} + +# Array of command line arguments +declare -A command=( + [h]="This help screen." + [l:]="Language default is en_US." + [n:]="Image name, default is stormux-pi3--.img" + [s:]="image size in GB, default is 4." + [v:]="Version of the Raspberry Pi for which you are building. (32|64) default is 64." +) + +# Convert the keys of the associative array to a format usable by getopts +args="${!command[*]}" +args="${args//[[:space:]]/}" +while getopts "${args}" i ; do + case "$i" in + h) help ;; + l) + imageLanguage="${OPTARG}.UTF-8" + ;; + n) + imageName="${OPTARG}" + ;; + s) + if [[ "${OPTARG}" =~ ^[[:digit:]]+$ ]]; then + imageSize="${OPTARG}G" + else + echo "Image size must be numeric." + exit 1 + fi + ;; + v) + if [[ "${OPTARG}" =~ ^32|64$ ]]; then + imageVersion="${OPTARG}" + else + echo "Image version must be 32 for 32 bit (armv7h), or 64 for 64 bit (aarch64 default)." + exit 1 + fi + ;; + *) + exit 1 + ;; + esac +done + +# make sure variables are set, or use defaults. +export imageVersion="${imageVersion:-64}" +export imageSize="${imageSize:-4G}" +imageName="${imageName:-stormux-pi3-${imageVersion}-$(date '+%Y-%m-%d').img}" +imageName="${imageName/-64-/-aarch64-}" +imageName="${imageName/-32-/-armv7h-}" +export imageName +export imageLanguage="${imageLanguage:-en_US.UTF-8}" + +# Make sure the image file doesn't exist. +if [[ -e "$imageName" ]]; then + echo "${imageName} exists, please remove or move it for this script to continue." + exit 1 +fi + +# Make sure this script is ran as root. +if [ "$(whoami)" != "root" ] ; then + echo "Error: This script must be run as root." + exit 1 +fi + +# make sure the needed tools are installed +if [[ "$(uname -m)" == "x86_64" ]]; then + if ! pacman -Q qemu-user-static &> /dev/null ; then + echo "Please install qemu-user-static and binfmt-qemu-static before continuing." + exit 1 + fi + if ! pacman -Q binfmt-qemu-static &> /dev/null ; then + echo "Please install qemu-user-static and binfmt-qemu-static before continuing." + exit 1 + fi +fi +for i in dosfstools parted wget ; do + if ! pacman -Q $i &> /dev/null ; then + echo "Please install $i before continuing." + exit 1 + fi +done + + +# Url for the image to be downloaded. +url[32]="http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-armv7-latest.tar.gz" +url[64]="http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-aarch64-latest.tar.gz" + +fallocate -l "$imageSize" "$imageName" +loopdev="$(losetup --find --show "${imageName}")" +parted --script "${loopdev}" mklabel msdos mkpart primary fat32 0% 200M mkpart primary ext4 200M 100% +mkfs.vfat -F32 "${loopdev}p1" +mkfs.ext4 -F "${loopdev}p2" +mount "${loopdev}p2" /mnt +mkdir /mnt/boot +mount "${loopdev}p1" /mnt/boot +# Things are mounted now, so set mounted to 0 (bash true) +mounted=0 +imageFileName=$(mktemp) +wget "${url[$imageVersion]}" -O "${imageFileName}" +bsdtar -xpf "${imageFileName}" -C /mnt +arch-chroot /mnt << EOF +# set up pacman +pacman-key --init +pacman-key --populate archlinuxarm +pacman -Syy +# Change kernels for aarch64 +if [[ "$imageVersion" == "64" ]]; then +pacman -R --noconfirm linux-aarch64 uboot-raspberrypi +pacman -S --noconfirm linux-rpi +fi + +# Install packages +pacman -Su --needed --noconfirm \ + alsa-firmware \ + alsa-utils \ + base \ + base-devel \ + bash-completion \ + bluez \ + bluez-utils \ + brltty \ + cronie \ + dbus-broker \ + espeak-ng \ + git \ + magic-wormhole \ + man \ + man-pages \ + networkmanager \ + ntp \ + pipewire \ + pipewire-alsa \ + pipewire-jack \ + pipewire-pulse \ + rhvoice-voice-bdl \ + rng-tools \ + rsync \ + sox \ + w3m \ + wget \ + wireless-regdb \ + wireplumber \ + xdg-user-dirs \ + xdg-utils + +# set the language +sed -i "s/#$imageLanguage/$imageLanguage/" /etc/locale.gen +echo "LANG=$imageLanguage" > /etc/locale.conf +locale-gen +# Configure and enable Hardware Random Number Generator +echo 'RNGD_OPTS="-o /dev/random -r /dev/hwrng"' > /etc/conf.d/rngd +systemctl enable rngd.service +# Set the distribution name. +echo 'Stormux \r (\l)' > /etc/issue +echo >> /etc/issue +# Change the alarm user to be stormux +usermod -a -g users -G wheel,audio,video,network,brlapi -m -d /home/stormux -l stormux alarm +# Grant sudo privileges to the stormux user for package installation. +echo 'stormux ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers.d/wheel +# Set the password for the root user +echo -e "root\nroot" | passwd "root" +# Set the password for the stormux user +echo -e "stormux\nstormux" | passwd "stormux" +# Change to the stormux user and install some packages +sudo -iu stormux +# Create desktop, downloads, music, and other directories. +xdg-user-dirs-update +# Install the yay package manager +git clone https://aur.archlinux.org/yay.git +cd yay +makepkg -si --noconfirm +cd ~ +rm -rf yay +yay -S --removemake --noconfirm fenrir-git growpartfs log2ram +rm -rf .cache/yay +/usr/share/fenrirscreenreader/tools/configure_pipewire.sh +exit +# Enable linger so that hopefully sound will start at login. +mkdir -p /var/lib/systemd/linger +touch /var/lib/systemd/linger/stormux +systemctl --global enable dbus-broker.service pipewire.service pipewire-pulse.service wireplumber.service +/usr/share/fenrirscreenreader/tools/configure_pipewire.sh +# Configure sudo for group wheel, remove nopasswd for the stormux user +echo '%wheel ALL=(ALL) ALL' > /etc/sudoers.d/wheel +# Set the hostname +echo stormux > /etc/hostname +# Configure services +systemctl enable brltty.path cronie.service dbus-broker.service fenrirscreenreader.service log2ram.service NetworkManager.service ntpd.service +systemctl disable dbus.service +# Cleanup packages +pacman -Sc --noconfirm + +# Update fstab for Raspberry Pi 4. Not needed until linux-aarch64 works. +# [[ $imageVersion -eq 4 ]] && sed -i 's/mmcblk0/mmcblk1/g' /etc/fstab +EOF + +# Copy override files into place. +cp -rv ../files/boot/* /mnt/boot +cp -rv ../files/etc/* /mnt/etc +cp -rv ../files/var/* /mnt/var +cp -rv ../files/usr/* /mnt/usr + +# Exiting calls the cleanup function to unmount. +exit 0 diff --git a/files/boot/config.txt b/pi3/files/boot/config.txt similarity index 100% rename from files/boot/config.txt rename to pi3/files/boot/config.txt diff --git a/files/etc/X11/xorg.conf.d/10-headless.conf b/pi3/files/etc/X11/xorg.conf.d/10-headless.conf similarity index 100% rename from files/etc/X11/xorg.conf.d/10-headless.conf rename to pi3/files/etc/X11/xorg.conf.d/10-headless.conf diff --git a/files/etc/hostname b/pi3/files/etc/hostname similarity index 100% rename from files/etc/hostname rename to pi3/files/etc/hostname diff --git a/files/etc/hosts b/pi3/files/etc/hosts similarity index 100% rename from files/etc/hosts rename to pi3/files/etc/hosts diff --git a/files/etc/log2ram.conf b/pi3/files/etc/log2ram.conf similarity index 100% rename from files/etc/log2ram.conf rename to pi3/files/etc/log2ram.conf diff --git a/files/etc/motd b/pi3/files/etc/motd similarity index 100% rename from files/etc/motd rename to pi3/files/etc/motd diff --git a/files/etc/pam.d/nodm b/pi3/files/etc/pam.d/nodm similarity index 100% rename from files/etc/pam.d/nodm rename to pi3/files/etc/pam.d/nodm diff --git a/files/etc/sysctl.d/20-quiet-printk.conf b/pi3/files/etc/sysctl.d/20-quiet-printk.conf similarity index 100% rename from files/etc/sysctl.d/20-quiet-printk.conf rename to pi3/files/etc/sysctl.d/20-quiet-printk.conf diff --git a/files/etc/systemd/journald.conf b/pi3/files/etc/systemd/journald.conf similarity index 100% rename from files/etc/systemd/journald.conf rename to pi3/files/etc/systemd/journald.conf diff --git a/files/etc/systemd/resolved.conf.d/dnssec.conf b/pi3/files/etc/systemd/resolved.conf.d/dnssec.conf similarity index 100% rename from files/etc/systemd/resolved.conf.d/dnssec.conf rename to pi3/files/etc/systemd/resolved.conf.d/dnssec.conf diff --git a/files/usr/lib/systemd/system/ntpd.service b/pi3/files/usr/lib/systemd/system/ntpd.service similarity index 100% rename from files/usr/lib/systemd/system/ntpd.service rename to pi3/files/usr/lib/systemd/system/ntpd.service diff --git a/files/usr/local/bin/configure-stormux b/pi3/files/usr/local/bin/configure-stormux similarity index 100% rename from files/usr/local/bin/configure-stormux rename to pi3/files/usr/local/bin/configure-stormux diff --git a/files/var/lib/alsa/asound.state b/pi3/files/var/lib/alsa/asound.state similarity index 100% rename from files/var/lib/alsa/asound.state rename to pi3/files/var/lib/alsa/asound.state diff --git a/build/build-stormux.sh b/pi4/build/build-stormux.sh similarity index 100% rename from build/build-stormux.sh rename to pi4/build/build-stormux.sh diff --git a/pi4/files/boot/config.txt b/pi4/files/boot/config.txt new file mode 100755 index 0000000..17dc963 --- /dev/null +++ b/pi4/files/boot/config.txt @@ -0,0 +1,10 @@ +# See /boot/overlays/README for all available options + +dtoverlay=vc4-kms-v3d +initramfs initramfs-linux.img followkernel +dtparam=audio=on,krnbt=on +hdmi_drive=2 + +[pi4] +# Run as fast as firmware / board allows +arm_boost=1 diff --git a/pi4/files/etc/X11/xorg.conf.d/10-headless.conf b/pi4/files/etc/X11/xorg.conf.d/10-headless.conf new file mode 100644 index 0000000..e79d435 --- /dev/null +++ b/pi4/files/etc/X11/xorg.conf.d/10-headless.conf @@ -0,0 +1,20 @@ +Section "Monitor" + Identifier "dummy_monitor" + HorizSync 28.0-80.0 + VertRefresh 48.0-75.0 + Modeline "1920x1080" 172.80 1920 2040 2248 2576 1080 1081 1084 1118 +EndSection + +Section "Device" + Identifier "dummy_card" + VideoRam 256000 + Driver "dummy" +EndSection + +Section "Screen" + Identifier "dummy_screen" + Device "dummy_card" + Monitor "dummy_monitor" + SubSection "Display" + EndSubSection +EndSection diff --git a/pi4/files/etc/hostname b/pi4/files/etc/hostname new file mode 100644 index 0000000..5c8e341 --- /dev/null +++ b/pi4/files/etc/hostname @@ -0,0 +1 @@ +stormux diff --git a/pi4/files/etc/hosts b/pi4/files/etc/hosts new file mode 100644 index 0000000..d6f492f --- /dev/null +++ b/pi4/files/etc/hosts @@ -0,0 +1,5 @@ +# Static table lookup for hostnames. +# See hosts(5) for details. +127.0.0.1 localhost +::1 localhost +127.0.1.1 stormux.localdomain stormux diff --git a/pi4/files/etc/log2ram.conf b/pi4/files/etc/log2ram.conf new file mode 100644 index 0000000..10f1240 --- /dev/null +++ b/pi4/files/etc/log2ram.conf @@ -0,0 +1,37 @@ +# Configuration file for Log2Ram (https://github.com/azlux/log2ram) under MIT license. +# This configuration file is read by the log2ram service + +# Size for the ram folder, it defines the size the log folder will reserve into the RAM. +# If it's not enough, log2ram will not be able to use ram. Check you /var/log size folder. +# The default is 40M and is basically enough for a lot of applications. +# You will need to increase it if you have a server and a lot of log for example. +SIZE=128M + +# This variable can be set to true if you prefer "rsync" rather than "cp". +# I use the command cp -u and rsync -X, so I don't copy the all folder every time for optimization. +# You can choose which one you want. Be sure rsync is installed if you use it. +USE_RSYNC=true + +# If there are some errors with available RAM space, a system mail will be send +# Change it to false and you will have only a log if there is no place on RAM anymore. +MAIL=false + +# Variable for folders to put in RAM. You need to specify the real folder `/path/folder` , the `/path/hdd.folder` will be automatically created. Multiple path can be separeted by `;`. Do not add the final `/` ! +# example : PATH_DISK="/var/log;/home/test/FolderInRam" +PATH_DISK="/var/log" + +# **************** Zram backing conf ************************************************* + +# ZL2R Zram Log 2 Ram enables a zram drive when ZL2R=true ZL2R=false is mem only tmpfs +ZL2R=false +# COMP_ALG this is any compression algorithm listed in /proc/crypto +# lz4 is fastest with lightest load but deflate (zlib) and Zstandard (zstd) give far better compression ratios +# lzo is very close to lz4 and may with some binaries have better optimisation +# COMP_ALG=lz4 for speed or Zstd for compression, lzo or zlib if optimisation or availabilty is a problem +COMP_ALG=lz4 +# LOG_DISK_SIZE is the uncompressed disk size. Note zram uses about 0.1% of the size of the disk when not in use +# LOG_DISK_SIZE is expected compression ratio of alg chosen multiplied by log SIZE +# lzo/lz4=2.1:1 compression ratio zlib=2.7:1 zstandard=2.9:1 +# Really a guestimate of a bit bigger than compression ratio whilst minimising 0.1% mem usage of disk size +LOG_DISK_SIZE=100M + diff --git a/pi4/files/etc/motd b/pi4/files/etc/motd new file mode 100644 index 0000000..fa11694 --- /dev/null +++ b/pi4/files/etc/motd @@ -0,0 +1,8 @@ +Welcome to Stormux, powered by Arch Linux ARM + + Stormux Website: https://stormux.org + Arch Linux ARM Forum: https://archlinuxarm.org/forum + + Stormux IRC: #stormux on irc.libera.chat + Arch Linux ARM IRC: #archlinuxarm on irc.libera.chat + diff --git a/pi4/files/etc/pam.d/nodm b/pi4/files/etc/pam.d/nodm new file mode 100644 index 0000000..ad6d193 --- /dev/null +++ b/pi4/files/etc/pam.d/nodm @@ -0,0 +1,6 @@ +#%PAM-1.0 + +auth include system-local-login +account include system-local-login +password include system-local-login +session include system-local-login diff --git a/pi4/files/etc/sysctl.d/20-quiet-printk.conf b/pi4/files/etc/sysctl.d/20-quiet-printk.conf new file mode 100644 index 0000000..47146d2 --- /dev/null +++ b/pi4/files/etc/sysctl.d/20-quiet-printk.conf @@ -0,0 +1 @@ +kernel.printk = 3 3 3 3 diff --git a/pi4/files/etc/systemd/journald.conf b/pi4/files/etc/systemd/journald.conf new file mode 100644 index 0000000..bd0871e --- /dev/null +++ b/pi4/files/etc/systemd/journald.conf @@ -0,0 +1,47 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Entries in this file show the compile time defaults. Local configuration +# should be created by either modifying this file, or by creating "drop-ins" in +# the journald.conf.d/ subdirectory. The latter is generally recommended. +# Defaults can be restored by simply deleting this file and all drop-ins. +# +# Use 'systemd-analyze cat-config systemd/journald.conf' to display the full config. +# +# See journald.conf(5) for details. + +[Journal] +#Storage=auto +#Compress=yes +#Seal=yes +#SplitMode=uid +#SyncIntervalSec=5m +#RateLimitIntervalSec=30s +#RateLimitBurst=10000 +SystemMaxUse=20M +#SystemKeepFree= +#SystemMaxFileSize= +#SystemMaxFiles=100 +#RuntimeMaxUse= +#RuntimeKeepFree= +#RuntimeMaxFileSize= +#RuntimeMaxFiles=100 +#MaxRetentionSec= +#MaxFileSec=1month +#ForwardToSyslog=no +#ForwardToKMsg=no +#ForwardToConsole=no +#ForwardToWall=yes +#TTYPath=/dev/console +#MaxLevelStore=debug +#MaxLevelSyslog=debug +#MaxLevelKMsg=notice +#MaxLevelConsole=info +#MaxLevelWall=emerg +#LineMax=48K +#ReadKMsg=yes +#Audit=yes diff --git a/pi4/files/etc/systemd/resolved.conf.d/dnssec.conf b/pi4/files/etc/systemd/resolved.conf.d/dnssec.conf new file mode 100644 index 0000000..d43d54a --- /dev/null +++ b/pi4/files/etc/systemd/resolved.conf.d/dnssec.conf @@ -0,0 +1,2 @@ +[Resolve] +DNSSEC=no diff --git a/pi4/files/usr/lib/systemd/system/ntpd.service b/pi4/files/usr/lib/systemd/system/ntpd.service new file mode 100644 index 0000000..c7fbb34 --- /dev/null +++ b/pi4/files/usr/lib/systemd/system/ntpd.service @@ -0,0 +1,14 @@ +[Unit] +Description=Network Time Service +After=network.target nss-lookup.target +Conflicts=systemd-timesyncd.service + +[Service] +Type=forking +PrivateTmp=true +ExecStartPre=/usr/bin/ntpd -Ggq +ExecStart=/usr/bin/ntpd -g -u ntp:ntp +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/pi4/files/usr/local/bin/configure-stormux b/pi4/files/usr/local/bin/configure-stormux new file mode 100755 index 0000000..67cccc9 --- /dev/null +++ b/pi4/files/usr/local/bin/configure-stormux @@ -0,0 +1,32 @@ +#!/bin/bash + +trap 'popd &> /dev/null' EXIT +if [[ ! -d /opt/configure-stormux ]]; then + # Offer to switch fenrir layout. + echo "Would you like to switch Fenrir to laptop layout? (y/n)" + read -r continue + continue="${continue::1}" + if [[ "${continue,}" == "y" ]];then + sudo sed -i 's/=desktop/=laptop/' /etc/fenrirscreenreader/settings/settings.conf + sudo systemctl restart fenrirscreenreader.service + fi + if ! ping -c1 stormux.org &> /dev/null ; then + echo "No internet connection detected. Press enter to open NetworkManager." + echo "Note, it is best to put Fenrir into highlight mode while using NetworkManager." + echo "In desktop layout this is done by pressing Fenrir+numpad asterisk." + echo "That is the key just above numpad 9." + echo "In laptop mode, press Fenrir+y." + echo "In desktop mode the Fenrir key is numpad insert." + echo "In laptop mode the Fenrir key is the Super key, sometimes called the Windows key." + echo "Press enter to continue." + read -r continue + nmtui-connect + fi + echo "Installing configure-stormux..." + sudo git -C /opt clone -q https://gitlab.com/stormux/configure-stormux.git || exit 1 +fi + +pushd /opt/configure-stormux +./configure-stormux.sh + +exit 0 diff --git a/pi4/files/var/lib/alsa/asound.state b/pi4/files/var/lib/alsa/asound.state new file mode 100644 index 0000000..d128b82 --- /dev/null +++ b/pi4/files/var/lib/alsa/asound.state @@ -0,0 +1,79 @@ +state.ALSA { + control.1 { + iface MIXER + name 'PCM Playback Volume' + value -197 + comment { + access 'read write' + type INTEGER + count 1 + range '-10239 - 400' + dbmin -9999999 + dbmax 400 + dbvalue.0 -197 + } + } + control.2 { + iface MIXER + name 'PCM Playback Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.3 { + iface MIXER + name 'PCM Playback Route' + value 1 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 2' + } + } + control.4 { + iface PCM + name 'IEC958 Playback Default' + value '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type IEC958 + count 1 + } + } + control.5 { + iface PCM + name 'IEC958 Playback Con Mask' + value '0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access read + type IEC958 + count 1 + } + } + control.6 { + iface PCM + name 'IEC958 Playback PCM Stream' + value '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write inactive' + type IEC958 + count 1 + } + } +} +state.vc4hdmi { + control.1 { + iface PCM + name ELD + value '100008006a10000100000000000000000469fd22415355532056533232380917070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read volatile' + type BYTES + count 128 + } + } +}