ISO FUSS 13

Con FUSS 13, il tool adottato per personalizzare una immagine ISO rimane remaster-iso (https://github.com/unixabg/remaster-iso).

Creare la ISO live di FUSS

Fino a con Debian 10 era necessario clonare il progetto remaster-iso da GitHub e spostarsi nella cartella creata. A partire da Debian 11 «bullseye» remaster-iso è disponibile come pacchetto . dopo l’installazione viene creata la cartella /usr/share/remaster-iso che contiene il file remaster-iso.conf

Di seguito viene mostrato come personalizzare l’immagine di Debian Live amd64 Xfce

Creare una cartella di produzione della ISO e copiarvi la ISO con

wget https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/debian-live-12.8.0-amd64-xfce.iso

Nota

È importante creare la ISO fuss entro poco tempo dal rilascio della ISO debian Live per evitare problemi di installazione di versioni di grub-pc o grub-efi-amd64 non disponibili installando in assenza di connessioni di rete.

ed il file di configurazione remaster-iso.conf , da modificare analogamente all’esempio che segue

######################
## remaster settings
######################
_BASEDIR=$(pwd)
_ISOExtractPath="${_BASEDIR}/iso-extract"
_ISOLivePath="live"
_ISOMountPoint="${_BASEDIR}/iso-mount"
_ISOName=""
_ISOTargetName="fuss-13-amd64-live-lite"
_ISOTargetTitle="FUSS 13 amd64 live lite"

_VER="0.9.4"

Nota

I comandi remaster possono essere lanciati come file di sistema con

- remaster-extract
- remaster-squashfs-editor
- remaster-compose

ma di seguito vengono lanciati come se fossero scaricati da GitHub

Estrarre il file .iso

./remaster-extract -i debian-live-13.1.0-amd64-xfce.iso

Lanciare poi il comando remaster-squashfs-editor e selezionare «C» premendo INVIO:

./remaster-squashfs-editor
#################################
    remaster-squashfs-editor
    remaster-iso version 0.9.4
#################################
  (C)hroot - Chroot in to the filesystem.squashfs + psu-*.squashfs stack.
  (J)oin   - Join the partial squashfs update files to new single psu-DATE.squashfs
  (N)ew    - New master filesystem.squashfs file which joins all *.squashfs file to new single filesystem.squashfs
  E(x)it   - Exit the program with no action
Enter choice [C , J , N , X] C

Modificare il file dei repository se necessario

nano /etc/apt/sources.list.d/debian.sources
Types: deb deb-src
URIs: http://deb.debian.org/debian/
Suites: trixie
Components: main non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Types: deb deb-src
URIs: http://deb.debian.org/debian/
Suites: trixie-updates
Components: main non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Types: deb deb-src
URIs: http://security.debian.org/debian-security/
Suites: trixie-security
Components: main non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
nano /etc/apt/sources.list.d/debian-backports.sources
Types: deb deb-src
URIs: http://deb.debian.org/debian/
Suites: trixie-backports
Components: main non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
nano /etc/apt/sources.list.d/fuss.sources
Types: deb deb-src
URIs: http://archive.fuss.bz.it/
Suites: trixie
Components: main
Signed-By: /usr/share/keyrings/fuss-keyring.gpg

Se servono anche pacchetti contrib e non-free, il file devono essere modificati come segue:

nano /etc/apt/sources.list.d/debian.sources
Types: deb deb-src
URIs: http://deb.debian.org/debian/
Suites: trixie
Components: main non-free-firmware contrib non-free
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Types: deb deb-src
URIs: http://deb.debian.org/debian/
Suites: trixie-updates
Components: main non-free-firmware contrib non-free
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Types: deb deb-src
URIs: http://security.debian.org/debian-security/
Suites: trixie-security
Components: main non-free-firmware contrib non-free
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
nano /etc/apt/sources.list.d/debian-backports.sources
Types: deb deb-src
URIs: http://deb.debian.org/debian/
Suites: trixie-backports
Components: main non-free-firmware contrib non-free
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
nano /etc/apt/sources.list.d/fuss.sources
Types: deb deb-src
URIs: http://archive.fuss.bz.it/
Suites: trixie
Components: main contrib non-free
Signed-By: /usr/share/keyrings/fuss-keyring.gpg

Per evitare duplicazioni dei repository, elimina eventualmente il file obsoleto /etc/apt/sources.list

Installare la chiave di firma per il repository apt e aggiornare i pacchetti

apt install curl wget apt-transport-https dirmngr
wget https://archive.fuss.bz.it/pool/main/f/fuss-archive-keyring/fuss-archive-keyring_0.20250620_all.deb
apt install ./fuss-archive-keyring_0.20250620_all.deb
apt update
apt full-upgrade

Installare fuss-client

apt install fuss-client

Lanciare il comando per la configurazione di FUSS standalone (desktop)

fuss-client --standalone --light [--unofficial] [--locale=LOCALE] --domain fuss.bz.it

dove

  • --light mantiene l’immagine leggera senza installare i metapacchetti didattici;

  • --unofficial permette di installare i firmware non-free di debian;

  • --locale=LOCALE permette di scegliere la lingua di default, dove LOCALE è, a titolo d’esempio, nella forma de_DE.UTF-8.

Nello specifico:

  • per la ISO FUSS ufficiale lite:

    fuss-client --standalone --light --domain fuss.bz.it
    
  • per la ISO FUSS ufficiale full:

    fuss-client --standalone --domain fuss.bz.it
    
  • per la ISO FUSS «unofficial» light:

    fuss-client --standalone --light --unofficial --domain fuss.bz.it
    
  • per la ISO «unofficial» full:

    fuss-client --standalone --unofficial --domain fuss.bz.it
    

Se non fatto precedentemente, scaricare la chiave del repository archive.fuss.bz.it che verrà utilizzata da Calamares (https://calamares.io/) durante l’installazione:

wget https://archive.fuss.bz.it/pool/main/f/fuss-archive-keyring/fuss-archive-keyring_0.20250620_all.deb
apt install ./fuss-archive-keyring_0.20250620_all.deb

Nota

Se il fuss-client –standalone … dovesse fallire con l’errore:

ERROR: Ansible could not initialize the preferred locale: unsupported locale setting

riconfigurare i locales scegliendo una lingua lanciando il comando:

dpkg-reconfigure locales

Modificare, per evitare duplicazioni, entrambi gli script /usr/sbin/sources-final e /usr/share/calamares/helpers/calamares-sources-final che scriveranno i repository durante l’installazione:

#!/bin/sh
#
# Writes the final sources.list files
#

CHROOT=$(mount | grep proc | grep calamares | awk '{print $3}' | sed -e "s#/proc##g")
RELEASE="trixie"
FUSS_KEY="/usr/share/keyrings/fuss-keyring.gpg"

cat << EOF > $CHROOT/etc/apt/sources.list.d/debian.sources
Types: deb deb-src
URIs: http://deb.debian.org/debian/
Suites: $RELEASE
Components: main non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Types: deb deb-src
URIs: http://deb.debian.org/debian/
Suites: $RELEASE-updates
Components: main non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Types: deb deb-src
URIs: http://security.debian.org/debian-security/
Suites: $RELEASE-security
Components: main non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
EOF

cat << EOF > $CHROOT/etc/apt/sources.list.d/debian-backports.sources
Types: deb deb-src
URIs: http://deb.debian.org/debian/
Suites: $RELEASE-backports
Components: main non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
EOF

cat << EOF > $CHROOT/etc/apt/sources.list.d/fuss.sources
Types: deb deb-src
URIs: http://archive.fuss.bz.it/
Suites: trixie
Components: main
Signed-By: /usr/share/keyrings/fuss-keyring.gpg
EOF

if [ -f $FUSS_KEY ] ; then
    cp $FUSS_KEY $CHROOT/usr/share/keyrings/fuss-keyring.gpg
fi

exit 0

Per le immagini unofficial il file dev’essere

#!/bin/sh
#
# Writes the final sources.list files
#

CHROOT=$(mount | grep proc | grep calamares | awk '{print $3}' | sed -e "s#/proc##g")
RELEASE="trixie"
FUSS_KEY="/usr/share/keyrings/fuss-keyring.gpg"

cat << EOF > $CHROOT/etc/apt/sources.list.d/debian.sources
Types: deb deb-src
URIs: http://deb.debian.org/debian/
Suites: $RELEASE
Components: main contrib non-free-firmware non-free
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Types: deb deb-src
URIs: http://deb.debian.org/debian/
Suites: $RELEASE-updates
Components: main contrib non-free-firmware non-free
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Types: deb deb-src
URIs: http://security.debian.org/debian-security/
Suites: $RELEASE-security
Components: main contrib non-free-firmware non-free
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
EOF

cat << EOF > $CHROOT/etc/apt/sources.list.d/debian-backports.sources
Types: deb deb-src
URIs: http://deb.debian.org/debian/
Suites: $RELEASE-backports
Components: main contrib non-free-firmware non-free
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
EOF

cat << EOF > $CHROOT/etc/apt/sources.list.d/fuss.sources
Types: deb deb-src
URIs: http://archive.fuss.bz.it/
Suites: trixie
Components: main contrib non-free
Signed-By: /usr/share/keyrings/fuss-keyring.gpg
EOF

if [ -f $FUSS_KEY ] ; then
    cp $FUSS_KEY $CHROOT/usr/share/keyrings/fuss-keyring.gpg
fi

exit 0

Sostituire il file main.py nella cartella /usr/lib/x86_64-linux-gnu/calamares/modules/displaymanager con la versione modificata disponibile al link https://www.fuss.bz.it/utility/calamares/main.py

wget -O /usr/lib/x86_64-linux-gnu/calamares/modules/displaymanager/main.py https://www.fuss.bz.it/utility/calamares/main.py

Nota

Verificare periodicamente che il modulo main.py sia ancora compatibile con l’ultima versione di calamares. Eventualmente modificarlo.

Rimuovere i pacchetti uim, ibus e, se necessario, riconfigurare libdvd-pkg

apt remove uim ibus fcitx fcitx5
apt install libdvd-pkg
dpkg-reconfigure libdvd-pkg

Rimuovere i pacchetti inutilizzati e ripulire la cache pacchetti

apt-get autoremove
apt-get clean

Configurare la live

nano /etc/live/config.conf.d/fuss.conf
LIVE_HOSTNAME="fuss"
LIVE_USERNAME="user"
LIVE_USER_FULLNAME="FUSS Live user"
LIVE_LOCALES="en_US.UTF-8,it_IT.UTF-8,de_AT.UTF-8"
LIVE_TIMEZONE="Europe/Rome"
LIVE_KEYBOARD_LAYOUTS="it,de"

Cambiare l’encoding della console

nano /etc/default/console-setup

impostando

CHARMAP="UTF-8"

Cambiare l’hostname di default

nano /etc/hostname
fuss

Per prendere le impostazioni del pannello come previsto da FUSS, modificare una riga dello script /lib/live/config/1170-xfce4-panel:

nano /lib/live/config/1170-xfce4-panel
sudo -u "${LIVE_USERNAME}" cp /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml /home/"${LIVE_USERNAME}"/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml

Qualora servisse, nella cartella /lib/live/config ci sono tutti gli script richiamati dalla live per le diverse configurazioni. Come documentazione c’è la man page di live-config dov’è tutto abbastanza ben documentato.

Per evitare che all’avvio della ISO live appaia lo sfondo artwork presente al momento della compilazione della stessa, si consiglia di modificare lo script /usr/share/fuss-artwork/rotate-background.sh, aggiungendo:

if grep -w "overlay" /etc/fstab; then
    EXPECTED_LINK="/usr/share/fuss-artwork/wallpapers/fuss-13-wallpaper.svg"
fi

subito prima della riga:

test "$CURRENT_LINK" = "$EXPECTED_LINK" && exit 0

In questo modo, in modalità Live apparirà lo sfondo predefinito per la versione installata.

Terminate le modifiche fatte in chroot, uscire dall’Editor di squashfs e salvare digitando Y ed invio

root@jarvis:~# exit
Exited the chroot so time to clean up.
Restore original overlay/etc/hosts.
Restore overlay/etc/resolv.conf.
Remove overlay/root/.bash_history.
#############################################################
 (Y)es save my chroot modifications.
 (N)o do not save my chroot modifications.
Select to save your chroot modifications (default is N):

Y
Now making the updated squashfs 20230614-013407.
Parallel mksquashfs: Using 8 processors
Creating 4.0 filesystem on psu-20230614-013407.squashfs, block size 131072.

Lanciare nuovamente ./remaster-squashfs-editor e scegliere l’opzione N confermando poi con Y la creazione di filesystem.squashfs:

./remaster-squashfs-editor
#################################
    remaster-squashfs-editor
    remaster-iso version 0.9.4
#################################
  (C)hroot - Chroot in to the filesystem.squashfs + psu-*.squashfs stack.
  (J)oin   - Join the partial squashfs update files to new single psu-DATE.squashfs
  (N)ew    - New master filesystem.squashfs file which joins all *.squashfs file to new single filesystem.squashfs
  E(x)it   - Exit the program with no action
Enter choice [C , J , N , X] N
I: New option selected!
I: change directory to target live folder
I: strting mount list and points operations
I: found ./psu-20230614-020636.squashfs ... setting up mount point of psu-20230614-020636_squashfs
I: mounting ./psu-20230614-020636.squashfs on psu-20230614-020636_squashfs
./psu-20230614-020636_squashfs:./filesystem_squashfs
./psu-20230614-020636_squashfs ./filesystem_squashfs ./psu_overlay
./psu-20230614-020636_squashfs:./filesystem_squashfs
#############################################################
 (Y)es, create a new single filesystem.squashfs.
 (N)o, do not create a new single filesystem.squashfs.
Select to create a new single filesystem.squashfs (default is N):

Y

Rimuovere la cartella ./iso-extract/live/psu-OOS*

rm -fr ./iso-extract/live/psu-OOS*

Copiare i file kernel-related presenti nello squashfs nella cartella ./iso-extract/live

config-6.1.0-21-amd64
initrd.img-6.1.0-21-amd64
System.map-6.1.0-21-amd64
vmlinuz-6.1.0-21-amd64

Per fare questo lanciare nuovamente ./remaster-squashfs-editor scegliendo l’opzione (C)hroot Aprire un altro terminale e spostarsi in iso-extract/live. Copiarvi i file da iso-extract/live/psu_overlay/boot/, dove è stata montata la cartella, eliminando eventualmente quelli con la versioni non desiderate

cp /root/iso/fuss-13-amd64-<base|education>/iso-extract/live/psu_overlay/boot/* .

Si esca dall’ambiente chroot senza apportare modifiche.

Si modifichi all’occorrenza l’immagine iso-extract/isolinux/splash.png, iso-extract/boot/grub/splash.png ed eventualmente anche iso-extract/isolinux/splash800x600.png.

Modificare i file per personalizzare il menu di boot a piacimento. Si può decidere ad esempio di mantenere solo l’opzione live (che include l’installer Calamares) e di rimuovere le opzioni Graphical DebianInstaller, Debian Installer e Debian Installer with Speech Synthesis:

iso-extract/isolinux/menu.cfg
iso-extract/boot/grub/grub.cfg

Nota

È importante ricordarsi di modificare i due file precedenti nel caso di aggiornamenti del kernel, in modo che le versioni corrispondano. Nel caso nel menu di boot manchino alcune opzioni, come il supporto di localizzazione per avviare la live nella lingua desiderata, si possono copiare parti di codice dai file di distribuzioni precedenti che avevano tale supporto.

È arrivato il momento di generare la nuova ISO lanciando il comando

./remaster-compose

Al termine dello script si troverà nell’attuale cartella di lavoro la nuova immagine .iso.

Nota

Per successivi aggiornamenti e personalizzazioni, sarà sufficiente partire dall’immagine ISO creata precedentemente facendo solo le modifiche necessarie ed utilizzando i tre script di remaster-iso ed eventualmente aggiornando i file menu.cfg e grub.cfg come indicato sopra.

L’immagine .iso generata andrà copiata sul server iso.fuss.bz.it nella cartella di pubblicazione [..]/fuss13/client/, raggiungibile via web al link https://iso.fuss.bz.it/fuss13/client/ .

Nella stessa cartella dev’essere aggiornato il file changelog-live-iso.txt con le modifiche presenti nella nuova versione pubblicata.

Infine vanno rigenerati i checksum sha256sum firmando a seguire il file sha256sums.txt con i seguenti comandi o con lo script iso-sha256sums.sh di cui root dispone

rm -f sha256sums.txt sha256sums.txt.asc
sha256sum fuss-13* > sha256sums.txt && gpg --armour --detach-sign sha256sums.txt