Warbler: plasma/wayland/waydroid

This is the second version of this experiment, the first - a year ago - was just named waydroid. It’s a temptative to create a slim ISO to be used for develpment.

Why you don’t install a Desktop manager? #

There is a motivation on the lacks of sddm in this system, unfortunately
sddm bring dependencies from X11 almost in this version I’m using
from Debian/bookworm.

That you get #

  • waydroid
  • lineage-18.1-20230121-VANILLA-waydroid_x86_64 system.img (766 MB)
  • lineage-18.1-20230121-MAINLINE-waydroid_x86_64 vendor.img (165 MB)
  • vscode, node, git and necessary to develop
  • firmwares wifi cards (you can ask for more additions)

how to install #

WARNING: the installer will completely erase your hard drive

The live is autologin, just look the instructions in console.

sudo eggs install --unattended

how to use #

startplasma-wayland to get the GUI, click on waydroid to run it.

how to remaster #

This system can be easily remastered with eggs:

sudo eggs produce --fast

You will get an iso of your system, without you user data.

sudo eggs produce --fast --clone

You will get an iso of your system, with you user data.

enjoy!

piero.proietti@gmail.com

download #

eggs-of-debian-bookworm-warbler

dressing a warbler #

This is how warbler is made, and how you can change it’s definition on YAML.

dressing a colibri #

I’m using eggs with wardrobe to take tracks of my way and consolidate it. This is my workstation: colibri, we can do that also for warbler.

warbler
Photo by Biillyboy

xfce4 wayland on Debian

Download the last “naked” version of bookworm from sf

Start it, you will autologin in CLI.

sudo eggs install --unattended

Attention: will use all your hard disk /dev/sda

After a while, your system is installed: artisan/evolution root/evolution

1
2
sudo apt install openssh-server
ip a

from browser #

Open the following pages:

from terminal #

Connect to the VM, to have cut and copy:

1
ssh artisan@192.168.1.x

clone the repo #

1
2
3
git clone https://github.com/adlocode/xfwm4
cd xfwm4
git checkout wayland

install development tools #

1
sudo install cmake meson pkg-config

Install prerequisites #

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# NO sudo apt install libwlroots10

sudo apt install weston

sudo apt install libcairo*
sudo apt install libwnck-3*
sudo apt install libbsd*

sudo apt install \
libgtk-3-dev \
libwlroots-dev \
libwnck-3-0 \
libxfce4ui-2-0 \
libxfce4ui-2-dev \
libxfce4util-dev
libxfce4util-1.0 \
gir1.2-libxfce4util-1.0

apt install xwayland

compile and install #

1
2
3
$ meson setup build
$ ninja -C build
$ sudo ninja -C build install

start #

I tryed

1
weston

open a terminal and:

1
xfwm-wayland

with not so much success!!!

xfwm-wayland

Download image (about 800K) #

I did an iso image of that experiment: egg-of-debian-bookworm-xfwm4

You can download it from sf

Note #

You can now install this iso, the bug was correct.

oem-installation

Sto valutando la possibilità di inserire una installazione OEM all’interno di krill per semplificare il processo di distribuzione di versioni verticali di Linux.

krill, semplice installer CLI si presta bene allo scopo ed ho già provveduto nella ultima versione e rimuovere e ripulire il codice per espitare la nuova caratteristica.

Al momento, una rimasterizzazione fatta con eggs, avviata da ISO presenta la seguente schermata di boot.

boot

Se andiamo a scegliere il menu CLI (Commond Line Interface), ci troviamo dentro al sistema come utente live ed abbiamo un breve motd che ci illustra le opzioni possibili:

motd

Quello che ho già fatto è permettere una configurazione custom configurabile attraverso un semplice file YAML.

La configurazione va - per adesso - posta nel repository penguins-wardrobe sotto la directory config. Questo in futuro potrà cambiare, ma al momento è necessario:

  • eseguire il fork della repositori penguins-wardrobe per il proprio utente, ad esempio: charlie;
  • clonare la repository: git clone https://github.com/charlie/penguins-wardrobe;
  • creare la propria configurazione in /config semplicemente copiando e modificando una configurazione esistente. Ad esempio: charlie.yaml;
  • creare una PR ed avvisarmi perchè sia accettata.

A questo punto, dando il comando:

1
sudo eggs install --custom charlie

La configurazione di charlie verrà automaticamente impostata su ogni macchina in installazione.

Il prossimo step #

Per procedere ad una installazione OEM il passo dovrebbe essere relativamente breve, occorre però creare un programma che configuri la macchine al primo avvio e predisporre krill per l’installazione di quest’ultimo.

Abbiamo due scelte possibili: utilizzare calamares - ovviamente con una configurazione differente - oppure realizzare un software ad hoc.

Al momento propendo per la seconda ipotesi, anche se a prima vista potrebbe apparire ridondante, infatti sono spaventato dal dover gestire due set di configurazioni di calamares ognuna per ogni versione.

L’idea è quella di aggiungere un ulteriore animale marino alle specie presenti, quindi diciamo che andando verso seppia che verrebbe realizzato in base alla mia esperienza come una applicazione electron e - quindi - sempre nodejs, typescript e varie, con l’aggiunta però di una interfaccia grafica.

Scrivere seppia in questo modo dovrebbe permettere anche una semplice customizzazione a chi volesse realizzare delle versioni proprie.

Collaborazioni #

Naturalmente chi può e vuole può offrire la propria collaborazione: serviranno grafici - io non sono per nulla esperto - ma anche persone che abbiano già esperienza con electron, incoraggiamenti, consigli e magari donazioni - la mia stazione di lavoro è ormai vecchiotta - naturalmente tutto sarà ben accetto.

Bene, adesso a caccia di seppie!

seppia

eggs and cuckoos

eggs-and-cuckoos

Nella foto di David Viani, vediamo un codirosso (a destra) che nutre un “piccolo” cuculo (a sinistra), decisamente più grande del genitore adottivo.

Premessa #

Uno dei motivi per crearsi una propria versione di Linux può essere quello di utilizzarlo su numerose postazioni, all’interno di un Ente, di una azienda o di una scuola.

Sicuramente il metodo migliore per effettuare un gran numero di installazioni è quello di utilizzare un server PXE che avvii le macchine della rete e consenta una installazione più veloce del DVD o della chiavetta.

D’altra parte, La configurazione di un server PXE richiede tempo ed esperienza e non è sempre disponibile, l’immagine iso del sistema da installare si.

Ecco, in eggs abbiamo aggiunto un server PXE autoconfigurante che vi permette tranquillamente di installare contemporaneamente più macchine semplicemebte avviandole dalla rete.

Avvio del server PXE #

Tutto quello che c’è da fare è avviare una live della distribuzione rimasterizzata con eggs, aprire una finestra di terminale ed avviare il comando: sudo eggs cuckoo. A questo punto la macchina si comporterà da server di boot per la nostra rete locale e noi potremo avviare altri computer utilizzando la rete locale stessa.

eggs-and-cuckoos

Avvio delle macchine da installare #

Bisognerà entrare necessariamente nella configurazione BIOS del sistema ed abilitare il boot dalla scheda di rete, nomarlmente dovrete abilitare PXE sulla scheda di rete e controllare le priorità di avvio.

A questo punto, avviate la vostra macchina selezionando il boot da rete:

eggs-and-cuckoos

Selezionando la prima opzione, verrà caricato il sistema operativo contenuto nella immagine, nel nostro caso una versione di MX Linux21.x rimasterizzata con eggs.

eggs-and-cuckoos

Non resta altro che effettuare l’installazione potremo scegliere sia calamares

eggs-and-cuckoos

che l’installazione con krill: sudo eggs install --unattended

eggs-and-cuckoos

Per l’installazione unattended sono disponibili alcuni flag:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
ommand-line system installer - the egg became a penguin!

USAGE
$ eggs install [-u] [-i] [-r] [-d <value>] [-S] [-s] [-n] [-k] [-p]
[-h] [-v]

FLAGS
-S, --suspend Swap suspend: RAM x 2
-d, --domain=<value> Domain name, defult: .local
-h, --help Show CLI help.
-i, --ip hostname as ip, eg: ip-192-168-1-33
-k, --crypted Crypted CLI installation
-n, --none Swap none: 256M
-p, --pve Proxmox VE install
-r, --random Add random to hostname, eg: colibri-ay412dt
-s, --small Swap small: RAM
-u, --unattended Unattended installation
-v, --verbose Verbose

DESCRIPTION
command-line system installer - the egg became a penguin!

EXAMPLES
$ eggs install
Install the system using krill installer

che consentono facilmente installazioni multiple.

Commenti: Facebook group. Telegram, Github issue

eggs 9.3.x manual

The move to eggs 9.3.x was mainly characterized by the introduction and improvement of the cuckoo command to get a PXE server directly from our live. While previously I used dnsmasq to get services proxy-dhcpd and dhcpd, actually thanks to FOGProject/node-dhcproxy we use just node and only a proxy-dhcpd service.

Having found that due to a grub problem, the field next from the dhcp offer of the proxy-dhcpd server was not read, we switched to using the more versatile ipxe as a network bootloader.

So it is no longer necessary to have an option for a real dhcpd service in the cuckoo command and we do not risk overlapping the network dhcpd.

Another novelty is the introduction of the command: eggs tools ppa which adds or removes the penguins-eggs-ppa repository to our apt sources list. Example:

1
sudo eggs tools ppa --add

Original edition of the eggs manual is released in Italian, of course other languages can be accessed using machine translation.

eggs-linuxfs-installed-via-pxe

Community choice badge

With some surprise eggs received the badge for 10,000 downloads!

Hi Piero Proietti,

Congratulations! Penguin’s eggs has just been recognized with a Community Choice award by SourceForge. This honor is awarded only to select projects that have reached significant milestones in terms of downloads and user engagement from the SourceForge community.

This is a big achievement, as your project has qualified for this award out of over 500,000 open source projects on SourceForge. SourceForge sees nearly 30 million users per month looking for, and developing, open source software. This award badge will now appear on your project page, and the award assets can be found in your project admin section.

To recognize Penguin’s eggs’s achievement, we’ve awarded you with the Community Choice award, which you can see below:

Le specie presenti

Continuando la nostra metafora abbiamo ormai quattro specie presenti:

  • duck
  • colibri
  • owl
  • eagle

Tutte le specie sono ottenibili da differenti distribuzioni Linux: Debian, Devuan ed Ubuntu. Inoltre, ad esempio per Debian è possibile ottenere un colibri sia da una versione bullseye che dalla versione bookworm, in Ubuntu sia da focal che da jammy e così via.

Si fa presto, quindi ad avere una grande quantità di specie.

L’importanza del wardrobe e della scelta dei costumi #

Avere le nostre specie sia in formato iso live installabili con calamares che in formato script ci permette di poterle diversificare ulteriormene o prenderne spunto per aggiungere altre configurazioni.

Ad esempio, con queste specie ho esplorato abbastanza il mondo cinnamon ed xfce4, trascurando però gli altri: KDE, gnome3, mate, LXQT, etc.

D’altra parte, mentre tutto sommato mi è stato possibile scrivere un software per la rimasterizzazione comune a più versioni o, almeno ho acquisito le necessarie esperienze, lo stesso non può dirsi per tutte le differenti customizzazioni possibili: kde, gnome, cinnamon, xfce, per il desktop manager, X11 e wayland per il compositore, grafica, office, giochi, lato serve e quant’altro.

Diciamo quindi che ho esplorato le possibilità nei rami che conosco e sono abbastanza sicuro che colibri - che ha lo scopo di sviluppare eggs - sia perfettamente funzionale, mentre per duck ed owl rispettivamente per un uso generico e per la grafica, pur avendo adottanto delle selezioni di software ragionevoli, beh dovrei essere un utilizzatore generico o un grafico per poter rispondere in maniera affermativa.

D’altra parte, poter accedere e modificare deile customizzazioni esistenti in luogo di dover completamente reinventare la ruota ha comunque i suoi vantaggi: in primo luogo abbamo già qualcosa funzionante e degli esempi che possiamo seguire e/o modificare, inoltre abbiamo un percorso che ci permette di “cucire” costumi diversi utilizzando quelli che più si adattano alle nostre necessità, che possono essere le più svariate.

Sarebbe carino realizzare una specie “giocosa”, altri gradirebbero una interfaccia KDE magari configurata con un aspetto simile a mac e via dicendo.

Quello che posso ed ho potuto fare è fornire uno strumento per facilitare questo, una sorta di “remastering on rail”, per il resto mi manca sia il tempo che la pazienza che creare ulteriori specie.

Questo può essere quindi il vostro compito, oltre che riportare le eventiali difficoltà d’uso, i bug e via dicendo.

Eggs è rimasto uno strumento a riga di comando per uno scopo preciso, permettere la creazione o la ‘ri-creazione’ di sistemi CLI ovvero senza interfaccia grafica.

Sinora ho trascurato molto la sezione server, anche perchè non essendo più al lavoro non ne ho una vera necessità. Vero poi che attuamelmente esistono tante customizzazioni installabili semplicemente con docker, ma d’altra parte anche configurarsi in toto il proprio server, non necessariamente virtuale potrebbe avere i suoi vantaggi.

Anche qua però vale lo stesso discorso: è possibile fare di tutto dalla macchina per sviluppare sulla blockchain, al semplice server samba, ad una installazione XAMPP, etc ma - il motore di questo - è la necessità.

Quindi e vorrei concludere, eggs rende possibile la rimasterizzazione di ben tre diverse tipologie di distribuzione Linux e comprende uno scripting per creare, conservare e consolidare le proprie customizzazioni.

Come dimostrato per manjaro eggs può essere esteso anche su altre distribuzioni non necessariamente di derivazione Debian e difatti, tempo fa con la collaborazione di Stefano Capitali, lo abbiamo portato eggs su manjaro.

In aggiunta, resta tutta da esplorare la possibilità di utilizzare eggs su architettura ARM: sia armel che arm64, mentre - mio malgrado - non possiamo sperare in future versioni per i386 visto che node dalla versione 10 in poi non supporta più tale architettura.

Che dire?

Esplorate nelle aree di vostra pertinenza, quelle che conoscete meglio ad esempio molti customizzatori amano Mate, altri sono appassionati di ingegneria, che di grafica, di fotografia, etc.

Teniamoci in contatto.

Mi farebbe molto piacere assistere alla nascita di ulteriori costumizzazioni, sia lato server che lato desktop e d’altra parte avere una ragionevole comunità di utenti sarebbe sia un grosso stimolo che un importante canale di suggerimenti e feedback, non trascurando naturalmente l’amicizia.

Buon viaggio dal parco degli uccelli!

presentazione wardrobe

Dicono che a volte un video è meglio di mille parole.

Pur ritenendomi migliore nelle parole che nei video, nondimeno provo ad illustrarvi come creare una vostra live originale con eggs e come vestire una versione naked.

Non sono un esperto del multimedia, ho una voce bassa - ma proprio bassa - però forse seguire il video può darvi una idea sia della versatibilità di eggs sia della potenza del wardrobe e dei costumi per creare delle versioni custom di Linux.

01 presentazione wardrobe #

Mentre eggs produce ci permette di rimasterizzare il nostro sistema, wardrobe ci permette di definire la nostra customizzazione.

Customizzare un sistema può essere da banale ad estremante complesso, in ogni caso è qualcosa che viene effettuato spesso per tentativi ed errori e ripercorrendo le esperienze precedenti.

Wardrobe, permette di riutilizzare le nostre configurazioni e riutilizzarle per definire nuovi costumi, in qualche modo ci permette di consolidare la nostra esperienza, consolidarla e condividerla.

Il concetto di costume è quello di una customizzazione, si parte da un sistema senza alcuna interfaccia e - senza alcuno scopo - se non la capacità di autoriprodursi e lo si veste per le proprie esigenze: un desktop da lavoro, un server per il multimedia e via dicendo.

Non solo, mentre intendiamo per costume la vestizione finale risultante, ad esempio colibri potrebbe essere definito un sistema di sviluppo, owl un sistema specializzato per la grafica e via dicendo, all’interno del costume potremmo utilizzare sei sotto-costumi denominati accessories per le più svariate necessità. Ad esempio l’accessorio eggs-dev che installa visual studio code, nodejs viene utilizzato da più costumi, lo stesso può dirsi per i firmwares etc.

Il risultato della definizione di un costume è una cartella in costumes denominata nel nostro esempio colibri, all’interno della quale è presente un file index.yml che definisce il costume stesso e richiama gli eventuali accessori.

Nel video vedrete il risultato finale della nostra configurazione, la possibilità di passare da un sistema naked ad uno configurato secondo le nostre esigenze

02 Installazione di calamares, configurazione e creazione dell’immagine live #

Una volta che il nostro sistema è installato, dovremo installare calamares che verrà configurato per l’installazione della nostra immagine live che andremo a costruire con eggs produce.

L’immagine una volta creata dovrà essere esportata e messa su una chiavetta USB per essere utilizzata per avviare un altro sistema con la nostra live.

03 Installazione della nostra live su un nuovo sistema #

A questo punto non ci resta che vedere il risultato finale della nostra configurazione, ovvero un sistema creato da noi stessi, per le nostre necessità creato con cura professionale.