diff --git a/RELEASES.md b/RELEASES.md new file mode 100644 index 0000000..a68ca96 --- /dev/null +++ b/RELEASES.md @@ -0,0 +1,14 @@ +# EmComm Tools OS Community Release + +## 2024.03.16.R1 + +* Ported and adjusted initial scripts from commercial build +* Added `et-log` logger utility +* Enabled old-releases for apt source +* Installed base packages +* Installed initial build tools and image creation tools +* Replaced Firefox with Brave web browser +* Removed miscellaneous packages +* Installed EmComm Tools branding +* Applied initial GNOME settings +* Initial work to improve brightness issues on Panasonic hardware diff --git a/logos/emcomm-tools-logo-white.png b/logos/emcomm-tools-logo-white.png new file mode 100644 index 0000000..5eaadc5 Binary files /dev/null and b/logos/emcomm-tools-logo-white.png differ diff --git a/logos/emcomm-tools-wallpaper.png b/logos/emcomm-tools-wallpaper.png new file mode 100644 index 0000000..19a452c Binary files /dev/null and b/logos/emcomm-tools-wallpaper.png differ diff --git a/overlay/etc/apt/sources.list b/overlay/etc/apt/sources.list new file mode 100644 index 0000000..e7885d3 --- /dev/null +++ b/overlay/etc/apt/sources.list @@ -0,0 +1,14 @@ +deb http://old-releases.ubuntu.com/ubuntu/ kinetic main restricted +deb http://old-releases.ubuntu.com/ubuntu/ kinetic-updates main restricted + +deb http://old-releases.ubuntu.com/ubuntu/ kinetic universe +deb http://old-releases.ubuntu.com/ubuntu/ kinetic-updates universe + +deb http://old-releases.ubuntu.com/ubuntu/ kinetic multiverse +deb http://old-releases.ubuntu.com/ubuntu/ kinetic-updates multiverse + +deb http://old-releases.ubuntu.com/ubuntu/ kinetic-backports main restricted universe multiverse + +deb http://old-releases.ubuntu.com/ubuntu kinetic-security main restricted +deb http://old-releases.ubuntu.com/ubuntu kinetic-security universe +deb http://old-releases.ubuntu.com/ubuntu kinetic-security multiverse diff --git a/overlay/etc/skel/.config/JS8Call.ini b/overlay/etc/skel/.config/JS8Call.ini new file mode 100644 index 0000000..c0fc3a2 --- /dev/null +++ b/overlay/etc/skel/.config/JS8Call.ini @@ -0,0 +1,27 @@ +[Configuration] +AcceptTCPRequests=true +AutoGrid=true +AutoreplyConfirmation=false +AutoreplyOnAtStartup=true +CATNetworkPort=localhost:4532 +CheckForUpdates=false +HeartbeatAckSNR=true +HideControls=true +Miles=true +MyCall=N0CALL +MyGrid=DM33 +MyGroups=@@TTP +Polling=1 +PSKReporter=false +PTTMethod=@Variant(\0\0\0\x7f\0\0\0\x1eTransceiverFactory::PTTMethod\0\0\0\0\xfPTT_method_CAT\0) +PTTport=localhost:4532 +SubMode=0 +SubModeHB=true +SubModeHBAck=true +Rig=Hamlib NET rigctl +SpotToAPRS=false +TCPEnabled=true +TCPMaxConnections=3 +TCPServer=127.0.0.1 +TCPServerPort=2442 +TxIdleWatchdog=0 diff --git a/overlay/etc/skel/.config/gnome-initial-setup-done b/overlay/etc/skel/.config/gnome-initial-setup-done new file mode 100644 index 0000000..396a0ba --- /dev/null +++ b/overlay/etc/skel/.config/gnome-initial-setup-done @@ -0,0 +1 @@ +yes \ No newline at end of file diff --git a/overlay/lib/systemd/system/panasonic-brightness.service b/overlay/lib/systemd/system/panasonic-brightness.service new file mode 100644 index 0000000..e260c7c --- /dev/null +++ b/overlay/lib/systemd/system/panasonic-brightness.service @@ -0,0 +1,11 @@ +[Unit] +Description=Brightness fix for Panasonic hardware +ConditionPathExists=/sys/class/backlight/panasonic +After=multi-user.target + +[Service] +Type=simple +ExecStart=/opt/emcomm-tools/sbin/panasonic-set-brightness.sh + +[Install] +WantedBy=multi-user.target diff --git a/overlay/opt/emcomm-tools/bin/et-log b/overlay/opt/emcomm-tools/bin/et-log new file mode 100755 index 0000000..4cce155 --- /dev/null +++ b/overlay/opt/emcomm-tools/bin/et-log @@ -0,0 +1,27 @@ +#!/usr/bin/bash +# +# Author : Gaston Gonzalez +# Date : 16 March 2024 +# Purpose : Log message to standard out and log file + +if [ ! -e $ET_TEMP_DIR ]; then + mkdir $ET_TEMP_DIR + chmod 755 $ET_TEMP_DIR +fi + +if [ ! -e $ET_LOG_FILE ]; then + touch $ET_LOG_FILE + chmod 666 $ET_LOG_FILE +fi + +if [ $# -lt 1 ]; then + echo "Usage $(basename $0) " + echo "" + echo "All messages written to: ${ET_LOG_FILE}" + exit -1 +fi + +TIMESTAMP=`date "+%Y-%m-%d %H:%M:%S"` + +echo $@ +echo "$TIMESTAMP $@" >> ${ET_LOG_FILE} diff --git a/overlay/opt/emcomm-tools/sbin/panasonic-set-brightness.sh b/overlay/opt/emcomm-tools/sbin/panasonic-set-brightness.sh new file mode 100755 index 0000000..04fdd32 --- /dev/null +++ b/overlay/opt/emcomm-tools/sbin/panasonic-set-brightness.sh @@ -0,0 +1,45 @@ +#!/bin/bash +# +# Author : Gaston Gonzalez +# Date : 16 January 2023 +# Updated : 16 March 2024 +# Purpose : Fix screen brightness on Panasonic hardware +# +# Note: This fix is based on the following article: +# https://www.bobjohnson.com/bloghow-to-install-ubuntu-on-a-panasonic-toughbook-cf31/ + +PATH=/opt/emcomm-tools/bin:$PATH + +WatchDriver="/sys/class/backlight/panasonic" +PatchDriver="/sys/class/backlight/intel_backlight" + +if [ ! -d $WatchDriver ]; then + et-log "This is not a Pansonic system. Exiting." + exit 1 +fi + +if [ ! -d $PatchDriver ]; then + et-log "Patch driver directory does not exist: ${PatchDriver}" + exit 1 +fi + +# Get maximum brightness values +WatchMax=$(cat $WatchDriver/max_brightness) +PatchMax=$(cat $PatchDriver/max_brightness) + +SetBrightness () { + # Calculate watch current percentage + WatchAct=$(cat $WatchDriver/actual_brightness) + WatchPer=$(( WatchAct * 100 / WatchMax )) + # Reverse engineer patch brightness to set + PatchAct=$(( PatchMax * WatchPer / 100 )) + echo $PatchAct | sudo tee $PatchDriver/brightness +} + +# When machine boots, set brightness to last saved value +SetBrightness +# Wait forever for user to press Fn keys adjusting brightness up/down. +while (true); do + /usr/bin/inotifywait --event modify $WatchDriver/actual_brightness + SetBrightness +done diff --git a/overlay/usr/share/glib-2.0/schemas/90_ubuntu-settings.gschema.override b/overlay/usr/share/glib-2.0/schemas/90_ubuntu-settings.gschema.override new file mode 100644 index 0000000..47b9355 --- /dev/null +++ b/overlay/usr/share/glib-2.0/schemas/90_ubuntu-settings.gschema.override @@ -0,0 +1,36 @@ +[apps/update-manager] +first-run = false + +[com/ubuntu/update-notifier] +no-show-notifications = true + +[org.gnome.desktop.background] +picture-uri = 'file:///usr/share/backgrounds/emcomm-tools-wallpaper.png' +show-desktop-icons = false + +[org.gnome.desktop.screensaver] +picture-uri = 'file:///usr/share/backgrounds/emcomm-tools-wallpaper.png' + +[org.gnome.shell] +favorite-apps = ['emcomm-tools.desktop', 'js8call.desktop', 'org.gnome.Terminal.desktop', 'fldigi.desktop', 'flmsg.desktop', 'org.gnome.Nautilus.desktop'] + +[org.gnome.system.location] +enabled = false + +[org.gnome.desktop.session] +idle-delay = 0 + +[org.gnome.desktop.interface] +text-scaling-factor = 1.25 + +[org.gnome.desktop.interface] +enable-animations = false + +[org.gnome.desktop.a11y.applications] +screen-keyboard-enabled = true + +[org.gnome.desktop.interface] +toolkit-accessibility = true + +[org.gnome.desktop.peripherals.mouse] +natural-scroll = true diff --git a/overlay/usr/share/icons/emcomm-tools-icon-black-192.png b/overlay/usr/share/icons/emcomm-tools-icon-black-192.png new file mode 100644 index 0000000..e18247a Binary files /dev/null and b/overlay/usr/share/icons/emcomm-tools-icon-black-192.png differ diff --git a/overlay/usr/share/icons/emcomm-tools-icon-black-512.png b/overlay/usr/share/icons/emcomm-tools-icon-black-512.png new file mode 100644 index 0000000..166f2fe Binary files /dev/null and b/overlay/usr/share/icons/emcomm-tools-icon-black-512.png differ diff --git a/scripts/bootstrap.sh b/scripts/bootstrap.sh new file mode 100755 index 0000000..8015c85 --- /dev/null +++ b/scripts/bootstrap.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# +# Author : Gaston Gonzalez +# Date : 16 March 2024 +# Purpose : Minimal bootstrap script for the installer + +[ ! -d $ET_HOME/bin ] && mkdir -v -p $ET_HOME/bin + +cp -v ../overlay/$ET_HOME/bin/et-log $ET_HOME/bin/ +[ ! -e /usr/local/bin/et-log ] && ln -v -s $ET_HOME/bin/et-log /usr/local/bin/et-log + +et-log "Starting EmComm Tools OS Community installation" + diff --git a/scripts/configure-gnome.sh b/scripts/configure-gnome.sh new file mode 100755 index 0000000..8133129 --- /dev/null +++ b/scripts/configure-gnome.sh @@ -0,0 +1,16 @@ +#!/bin/bash +# +# Author : Gaston Gonzalez +# Date : 16 March 2024 +# Purpose : Configure GNOME + +et-log "Configuring GNOME" + +cp ../overlay/usr/share/glib-2.0/schemas/90_ubuntu-settings.gschema.override \ + /usr/share/glib-2.0/schemas/ + +cp ../overlay/usr/share/icons/emcomm-tools-icon-black-512.png \ + /usr/share/icons/ +chmod 644 /usr/share/icons/emcomm-tools-*.png + +glib-compile-schemas /usr/share/glib-2.0/schemas/ diff --git a/scripts/configure-user.sh b/scripts/configure-user.sh new file mode 100755 index 0000000..972948b --- /dev/null +++ b/scripts/configure-user.sh @@ -0,0 +1,11 @@ +#!/bin/bash +# +# Author : Gaston Gonzalez +# Date : 16 March 2024 +# Purpose : Configure users +set -e + +et-log "Configuring users" + +cp -r ../overlay/etc/skel /etc/ +[ ! -e /etc/skel/Desktop ] && mkdir /etc/skel/Desktop diff --git a/scripts/env.sh b/scripts/env.sh new file mode 100755 index 0000000..6de724f --- /dev/null +++ b/scripts/env.sh @@ -0,0 +1,11 @@ +#!/bin/bash +# +# Author : Gaston Gonzalez +# Date : 16 March 2024 +# Purpose : Global environment variables + +export ET_HOME=/opt/emcomm-tools +export ET_USER=games +export ET_GROUP=games +export ET_TEMP_DIR=/tmp/et +export ET_LOG_FILE=$ET_TEMP_DIR/et.log diff --git a/scripts/fix-panasonic-brightness.sh b/scripts/fix-panasonic-brightness.sh new file mode 100755 index 0000000..c4e93cc --- /dev/null +++ b/scripts/fix-panasonic-brightness.sh @@ -0,0 +1,25 @@ +#!/bin/bash +# +# Author : Gaston Gonzalez +# Date : 16 January 2023 +# Updated : 16 March 2024 +# Purpose : Fix screen brightness on Panasonic hardware + +et-log "Installing Panasonic brightness fix..." + +apt install inotify-tools -y + +if [ ! -e $ET_HOME/sbin ]; then + mkdir -v -p $ET_HOME/sbin + chown -v $ET_USER:$ET_GROUP $ET_HOME/sbin +fi + +cp -v ../overlay/$ET_HOME/sbin/panasonic-set-brightness.sh $ET_HOME/sbin/ +chmod -v 755 $ET_HOME/sbin/panasonic-set-brightness.sh +chown -v $ET_USER:$ET_GROUP $ET_HOME/sbin/* + +cp -v ../overlay/lib/systemd/system/panasonic-brightness.service /lib/systemd/system/ + +systemctl daemon-reload +systemctl enable panasonic-brightness +systemctl start panasonic-brightness diff --git a/scripts/functions.sh b/scripts/functions.sh new file mode 100755 index 0000000..0d567bb --- /dev/null +++ b/scripts/functions.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# +# Author : Gaston Gonzalez +# Date : 16 March 2024 +# Purpose : Global functions + +function exitIfNotRoot() { + if [ $EUID -ne 0 ]; then + echo "Exiting. You must be root." + echo "Try running: sudo ./$(basename $0)" + exit -1 + fi +} diff --git a/scripts/install-base.sh b/scripts/install-base.sh new file mode 100755 index 0000000..93bc96b --- /dev/null +++ b/scripts/install-base.sh @@ -0,0 +1,21 @@ +#!/bin/bash +# +# Author : Gaston Gonzalez +# Date : 16 March 2024 +# Purpose : Install base tools +set -e + +et-log "Installing base packages" +apt install \ + build-essential \ + cmake \ + curl \ + gpg \ + jq \ + net-tools \ + openjdk-11-jdk \ + openssh-server \ + screen \ + stow \ + tree \ + -y diff --git a/scripts/install-branding.sh b/scripts/install-branding.sh new file mode 100755 index 0000000..1e2ab1e --- /dev/null +++ b/scripts/install-branding.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# +# Author : Gaston Gonzalez +# Date : 16 March 2024 +# Purpose : Install boot screen branding + +et-log "Installing EmComm Tools branding" + +apt install plymouth-themes -y + +PLYMOUTH_DIR=/usr/share/plymouth +BOOT_LOGO=/usr/share/plymouth/ubuntu-logo.png +BOOT_LOGO_ORIG=$BOOT_LOGO.orig + +if [ ! -e $BOOT_LOGO_ORIG ]; then + cp $BOOT_LOGO $BOOT_LOGO_ORIG + et-log "Backing up boot screen logo: $BOOT_LOGO" +fi + +et-log "Installing boot screen logo" +cp ../logos/emcomm-tools-logo-white.png $BOOT_LOGO + +et-log "Installing desktop wallpaper" +cp ../logos/emcomm-tools-wallpaper.png /usr/share/backgrounds/ +cp ../logos/emcomm-tools-wallpaper.png /usr/share/backgrounds/warty-final-ubuntu.png + +gsettings set org.gnome.desktop.background picture-uri file:////usr/share/backgrounds/emcomm-tools-wallpaper.png diff --git a/scripts/install-browser.sh b/scripts/install-browser.sh new file mode 100755 index 0000000..6834b7d --- /dev/null +++ b/scripts/install-browser.sh @@ -0,0 +1,24 @@ +#!/bin/bash +# +# Author : Gaston Gonzalez +# Date : 16 March 2024 +# Purpose : Install light weight web browser + +et-log "Installing Brave web browser" + +INSTALL_PATH=$(which brave-browser) +if [ $? -ne 0 ]; then + apt install apt-transport-https -y + + # Add Brave repository. + curl -fsSLo /usr/share/keyrings/brave-browser-archive-keyring.gpg https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg + + echo "deb [signed-by=/usr/share/keyrings/brave-browser-archive-keyring.gpg arch=amd64] https://brave-browser-apt-release.s3.brave.com/ stable main"|sudo tee /etc/apt/sources.list.d/brave-browser-release.list + + apt update + + apt install brave-browser -y +else + et-log "Brave already installed: $INSTALL_PATH. Skipping." +fi + diff --git a/scripts/install-dev-tools.sh b/scripts/install-dev-tools.sh new file mode 100755 index 0000000..7ec258d --- /dev/null +++ b/scripts/install-dev-tools.sh @@ -0,0 +1,35 @@ +#!/bin/bash +# +# Author : Gaston Gonzalez +# Date : 29 December 2023 +# Purpose : Install development tools +set -e + +et-log "Installing dev tools for fldigi" +apt install \ + autoconf \ + gettext \ + libfltk1.3-dev \ + libportaudio2 \ + libsamplerate0-dev \ + libsndfile1-dev \ + libudev-dev \ + pkg-config \ + portaudio19-dev \ + -y + +et-log "Installing dev tools for building EmComm Tools packages" +apt install \ + git \ + libfuse2 \ + rpm \ + -y + +et-log "Installing tools for building custom ISO image" +if ! command -v cubic +then + sudo apt-add-repository universe -y + sudo apt-add-repository ppa:cubic-wizard/release -y + sudo apt update + sudo apt install --no-install-recommends cubic -y +fi diff --git a/scripts/install-ubuntu-image-tools-only.sh b/scripts/install-ubuntu-image-tools-only.sh new file mode 100755 index 0000000..c550105 --- /dev/null +++ b/scripts/install-ubuntu-image-tools-only.sh @@ -0,0 +1,23 @@ +#!/bin/bash +# +# Author : Gaston Gonzalez +# Date : 16 March 2024 +# Purpose : Minimal install of image build tools for Ubuntu +set -e + +. ./env.sh +. ./functions.sh + +exitIfNotRoot + +./bootstrap.sh +./update-apt.sh + +et-log "Installing tools for building custom ISO image" +if ! command -v cubic +then + sudo apt-add-repository universe -y + sudo apt-add-repository ppa:cubic-wizard/release -y + sudo apt update + sudo apt install --no-install-recommends cubic -y +fi diff --git a/scripts/install.sh b/scripts/install.sh new file mode 100755 index 0000000..21d98e4 --- /dev/null +++ b/scripts/install.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# +# Author : Gaston Gonzalez +# Date : 16 March 2024 +# Purpose : Main installer for EmComm Tools OS Community +set -e +trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG +trap 'et-log "\"${last_command}\" command failed with exit code $?."' ERR + +. ./env.sh +. ./functions.sh + +exitIfNotRoot + +./bootstrap.sh +./update-apt.sh + +./install-base.sh +./install-dev-tools.sh +./install-browser.sh +./remove-packages.sh +./install-branding.sh + +./configure-gnome.sh +./configure-user.sh + +#./cf20-fix-brightness.sh diff --git a/scripts/remove-packages.sh b/scripts/remove-packages.sh new file mode 100755 index 0000000..78a79fa --- /dev/null +++ b/scripts/remove-packages.sh @@ -0,0 +1,18 @@ +#!/bin/bash +# +# Author : Gaston Gonzalez +# Date : 21 November 2022 +# Purpose : Remove unwanted packages + +et-log "Removing unwanted packages" + +apt purge \ + libreoffice-\* \ + thunderbird \ + snapd \ + unattended-upgrades \ + update-manager \ + update-notifier \ + -y + +apt autoremove -y diff --git a/scripts/update-apt.sh b/scripts/update-apt.sh new file mode 100755 index 0000000..606178e --- /dev/null +++ b/scripts/update-apt.sh @@ -0,0 +1,10 @@ +#!/bin/bash +# +# Author : Gaston Gonzalez +# Date : 16 March 2024 +# Purpose : Updates the apt repository + +et-log "Updating apt to use the old repository" + +cp -v ../overlay/etc/apt/sources.list /etc/apt/sources.list +apt update