penguins-eggs-ppa

After a bit of trial and error I finally managed to recreate the ppa penguins-eggs-ppa repository.

This repository currently includes only the amd64 version, I don’t know the method to include also the i386 and ARM versions.

I think it’s not so difficult to create this repository with all architectures but, unfortunately, I’m not an expert in this field. If someone can help is, of course, welcome.

Usage #

Copy and past the follow two lines:

1
2
curl -s --compressed "https://pieroproietti.github.io/penguins-eggs-ppa/KEY.gpg" | sudo apt-key add -
sudo curl -s --compressed -o /etc/apt/sources.list.d/penguins-eggs-ppa.list "https://pieroproietti.github.io/penguins-eggs-ppa/penguins-eggs-ppa.list"

Then

1
2
sudo apt update
sudo install eggs

After that you can continue following the eggs official book.

penguins-eggs-ppa

removed forum and others stuffs

Since October 20 I removed the penguins-eggs forum, unfortunately I didn’t have time to consult it and I prefer so there is only one place for assistance and support, in this case facebook group penguins-eggs where most users - technical or not - can easily sign up.

Similarly I removed the link to devpost, for the same reasons, I do not have time to update it. You can find videos on youtube.

I also have problems with the penguins-eggs-ppa repository. I created it following this guide but at the moment I have no way to update it, I should redo it from scratch. If someone is expert can contact me either on facebook group or email me.

the ppa repository is important because it would allow the upgrade in standard mode through apt of the remastering software. I plan on recreating it, but I wouldn’t mind some assistance and help.

I believe that this remastering tool can be of great use and necessary to facilitate the existence of small and large remasters of Debian, Ubuntu, etc. Unfortunately, keeping up with a myriad of cases is difficult and, lately, I don’t have too much time to devote to penguins-eggs.

Basically keeping general purpose remastering software up to date requires more of an organization than an individual, I’ve achieved a good level of quality in the product, but keeping it up to date continually requires new development, debugging and feedback.

At the moment eggs is probably the only software capable of remastering for both i386 and amd64 Debian, Devuan, Ubuntu and derivatives. Also, in perspective, it is compiled for arm64 and armel as well, but it is too big for one developer.

Thanks for your attention

Piero Proietti

return to the origins eggs 8.17.x

Some time ago, after an incautious update, I found myself in the unpleasant situation of removing node8 from the compatibility list with eggs. Node8 is, however, the only version of node compatible with i386 architecture and therefore, for a remastering program, important.

Since then, this happened roughly at the end of June 2021, I have also made subsequent changes alas lost or to be recovered in the maze of git.

I took the last working version of eggs the 8.0.30 and recompiled it as eggs-8.17.0 with the intention to update the upgradable, I’ve already seen that a simple npm update blows compatibility, and reintroduce the changes after the switch, especially the calamares configuration without the need for password entry.

Cubic

Cubic è un acronimo e sta per Custom Ubuntu ISO Creator. Questo software però funziona anche su Debian e riesce a rielaborare anche le ISO prodotte con eggs, per cui diventa interessante per consentire una post-produzione di una immagine creata con eggs.

Cubic ha una propria storia ed un diverso approccio alla riproduzione, non rende diciamo così l’intero sistema riproduttivo ma si limita a partire dalla iso preeesistente per andare spacchettarla e ricostituirla. Vengono qua creati due archivi il primo denominato root che in sostanza è l’equivalente di filesystem.squashfs di eggs (il sistema chrooted che andiamo a riconfigurare) e l’altro, denominato disk che non è altro che l’equivalente della cartella denominata ISO in /home/eggs che, una volta compressa sarà il nostro systema live.

/home/eggs/ovarium/filesystem.squashfs -> custom-root
/home/eggs/ovarium/iso -> custom-disk

Essendo l’autore di eggs, mi si permetta di fare rifermento ai nomi di eggs, per semplicità, anche se poi si tratta sostenazialmente della stessa architettura.

Installazione di eggs #

Installiamo eggs semplicemente aggiungendo la repository di eggs alle nostre repository apt. Basterà copiare ed incollare le due seguenti righe:

curl -SsL https://pieroproietti.github.io/penguins-eggs-ppa/debian/KEY.gpg | sudo apt-key add -
sudo curl -s --compressed -o /etc/apt/sources.list.d/penguins-eggs-ppa.list "https://pieroproietti.github.io/penguins-eggs-ppa/debian/penguins-eggs-ppa.list"

A questo punto possiamo aggiornare il sistema, ed andremo ad eseguire l’installazione.

sudo apt update

sudo apt install eggs

sudo eggs config

sudo eggs calamares --install

sudo eggs dad -d

eggs info

Creazione di un iso con eggs #

eggs produce --fast

Abbiamo creato una immagine ISO in /home/eggs che possiamo utilizzare per l’avvio di un nuovo sistema oppure per una ulteriore rielaborazione con cubic.

Installazione di cubic #

L’installazione di cubic è molto semplice, si riduce ad aggiungere la repo nelle nostre sorgenti apt. Per prima cosa installeremo il pacchetto software-properties-common per avere disponibile il comando: apt-add-repository

sudo apt-get install software-properties-common

A questo punto andiamo ad installare cubic-wizard
sudo apt-add-repository ppa:cubic-wizard/release

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6494C6D6997C215E

Per risolvere eventuali problemi con chiavi non trovate, ho semplicemente editato il file

/etc/apt/source.list.d/cubic-wizard-ubuntu-release-impish.list

aggiungo [trusted=yes] alla riga di apt

deb [trusted=yes] http://ppa.launchpad.net/cubic-wizard/release/ubuntu impish main

A questo punto, sudo apt update ed sudo apt install cubic e ci troviamo cubic installato.

Rielaborazione della immagine creata con eggs #

Andiamo a create una cartella denominata “custom”, ed esempio:

mkdir custom

Bene, adesso avviamo cubic, basterà digitare cubic al prompt del terminale.

cubic-custom

A qusto punto andiamo a selezionare la iso precedentemente creata con eggs /home/eggs/egg-of-debian-bullseye-xfce-amd64_2021-09-10_1214.iso

cubic-select-iso

In questa finestra potremo aggiungere o rimuovere o aggiornare i programmai.

cubic-customize

Terminata questa operazione, ci verrà proposto di selezionare quali programmi rimuovere per l’opzione minimun.

cubic-minimun

NixOS

La storia di NixOS è abbastanza lunga, pure se al momento per me completamente ignota. Come presentazione lascio dei link presi da widipedia.

Nel 2003, Eelco Dolstra ha iniziato NixOS come un progetto di ricerca. Nel 2015, è stata fondata Stichting NixOS con lo scopo di supportare progetti come NixOS che implementano il modello di distribuzione puramente funzionale.

Andremo a farci una semplice - per quanto possibile - passeggiata cercando di installare NixOS in una macchina virtuale e configurarla per i nostri scopi, nel nostro caso una macchina per sviluppare con nodejs.

Installatione #

Potete scaricare NixOS in più modalita dalla pagina NixOS Download page. Sceglieremo la ISO della versione minima - corrispondente alle nostre naked - per poter customizzare la stessa secondo le nostre esigenze.

Effettuare il boot dalla iso nixos-minimal, se si desidera la lingua italiana: sudo loadkeys it. Se i caratteri sono troppo piccoli, potete lanciare il comando: setfont ter-v32n, se desiderate è possibile connettervi alla VM con ssh. Creare una password per l’utente nixos che di default non è presente, rilevate l’indirizzo con ip a e quindi da terminale, sulla macchina ospite, connettevi digitando: ssh nixos@192.168.61.100

A questo punto siamo pronti all’installazione ed abbiamo disponibile la possibilità di effettuare dei cut and past dei vari comandi di seguito riportati.

Partizionamento dei dischi per BIOS standard #

La prima cosa da fare è partizionare il disco, nixos non prevede un installer grafico.

1
2
3
parted /dev/sda -- mklabel msdos
parted /dev/sda -- mkpart primary 1MiB -8GiB
parted /dev/sda -- mkpart primary linux-swap -8GiB 100%

Formattazione per BIOS standard #

1
2
mkfs.ext4 -L nixos /dev/sda1
mkswap -L swap /dev/sda2

Installazione #

1
2
mount /dev/disk/by-label/nixos /mnt
swapon /dev/sda2

Creazione configurazione #

1
nixos-generate-config --root /mnt

Adattamento e customizzazione #

A questo punto andiamo a modificare la configurazione per stabilire servizi, programmi etc di cui vogliamo disporre. I commenti nel codice ci indicano la strada, ma volendo potete anche abbreviarla copiando la configurazione posta a fine articolo e salvarla configuration.nix in /mnt.

nano /mnt/etc/nixos/configuration.nix

Dovete impostare l’opzione boot.loader.grub.device per specificare in quale disco risiede il grub boot loader altrimenti NixOS non può avviarsi. Esempio: boot.loader.grub.device=/dev/sda

Installazione #

1
nixos-install

Alla fine dell’installazione verrà immessa la password di root.

All’avvio non spaventatevi se il vostro utente non entra, bisognerà creare la password dello stesso. Basta aprire un terminale di root e digitare: sudo password artisan per creare la password.

Visual studio code #

Installiamo visual studio code, dobbiamo in primo luogo abilitare i programi non free.

1
2
export NIXPKGS_ALLOW_UNFREE=1
nix-env -iA nixos.vscode

Nodejs #

Installiamo nodejs.

1
nix-env -iA nixos.nodejs

Proviamo l’ebbrezza di smanettare su eggs #

A questo punto scarichiamo eggs dalla repository con git e quindi anchiamo a provare a compilarlo.

1
2
3
git clone https://github.com/pieroproietti/penguins-eggs
cd penguins-eggs
./init

NB eggs, prima di installare i pacchetto npm, necessita che siano installati pure perrisbrewery e oclif.dev che vendono prelevati sempre dalle mie repo con il comando custom ./init.

Va tutto bene, però l’installarione dei pacchetti npm viene interrotta e genera errore in quanto mancano i pacchetti per la compilazione, le cosidette - in termini Debian - build-essential.

Qua la faccenda è complessa, risolveremo in una prossima puntata, ma in ogni modo, brevemente ci siamo costruiti una nostra stazione di lavoro di cui, in buona sostanza, tutto quel che ci serve è raccolto nel file di descrizione.

Conclusioni #

NixOS è interessante, perchè in ultima analisi permette un approccio semplice alla costruzione di una macchina di lavoro, è come dire nato per essere customizzato ed molto affidabile.

Mi piacerebbe però - se fosse possibile - miscelare i due sistemi Debian e NixOS, per non dover disimpare ed apprendere di nuovo.

La cosa - per adesso - non sò se sia fattibile.

Da quello che mi risulta è possibile installare facilmente nix in un sistema Debian o altre distribuzioni e, per quello che ho capito, non è un problema la coesistenza dei due package manager apt e nix un po’ come succede con flatpack. Tuttavia ignoro sino a che punto si possa spingere nella coesistenza degli stessi. In soldoni se, partendo da una Debian minimale, sul quale si installata nix sia poi possibile aggiungere nixos e far convivere i due sistemi. Per essere ancora più chiari, se partendo da una ristretta repository Debian dal quale installare i pacchetti deb indispensabili, sia poi possibile attingere ed installare tutto il resto via nix-env -iA nixos.xfce4 etc.

Ai poster l'ardua sentenza, mi sento di poter dire che il sistema è figo, pure se richiede l’ennesimo cambiamento di paradigma, memorizzazione di nuovi termini, comendi e sintassi, etc. Nulla in contrario in linea di massima, ma è evidente che anche in questo caso le “limitate” umane capacità meritino di essere prese in considerazione. Questo tuttavia non è un problema per un giovane che sta iniziando ma può esserlo per uno sviluppatore di una certa età come il sottoscritto e, forse è anche all’origine della scarsa diffusione di NixOS stesso, che in effetti è veramente una perla in termini di possibilità di modificare, tornare indietro, consolidare il lavoro fatto, etc.

/images/nixos-xfce-code

Esempio di configurazione #

Questo è un esempio della configurazione utilizzata, potete fare un cut e copy e sostituirlo al file /mnt/etc/nixos/configuration.nix creato con il comando nixos-generate-config –root /mnt per il vostro esperimento.

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).

{ config, pkgs, ... }:

{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
];

# Use the GRUB 2 boot loader.
boot.loader.grub.enable = true;
boot.loader.grub.version = 2;
# boot.loader.grub.efiSupport = true;
# boot.loader.grub.efiInstallAsRemovable = true;
# boot.loader.efi.efiSysMountPoint = "/boot/efi";
# Define on which hard drive you want to install Grub.
boot.loader.grub.device = "/dev/sda"; # or "nodev" for efi only

networking.hostName = "nixos"; # Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.

# Set your time zone.
time.timeZone = "Europe/Rome";

# The global useDHCP flag is deprecated, therefore explicitly set to false here.
# Per-interface useDHCP will be mandatory in the future, so this generated config
# replicates the default behaviour.
networking.useDHCP = false;
networking.interfaces.ens18.useDHCP = true;

# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";

# Select internationalisation properties.
i18n.defaultLocale = "it_IT.UTF-8";
console = {
font = "Lat2-Terminus16";
keyMap = "it";
};

# Enable the X11 windowing system.
services.xserver = {
enable = true;
desktopManager = {
xterm.enable = false;
xfce.enable = true;
};
displayManager.defaultSession = "xfce";
};


# Configure keymap in X11
services.xserver.layout = "it";
services.xserver.xkbOptions = "eurosign:e";

# Enable CUPS to print documents.
# services.printing.enable = true;

# Enable sound.
# sound.enable = true;
# hardware.pulseaudio.enable = true;

# Enable touchpad support (enabled default in most desktopManager).
# services.xserver.libinput.enable = true;

# Define a user account. Don't forget to set a password with ‘passwd’.
users.users.artisan = {
isNormalUser = true;
extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
};

# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
nano # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
wget
firefox
git
];

# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };

# List services that you want to enable:

# spice-vdagent
services.spice-vdagentd.enable = true;

# Enable the OpenSSH daemon.
services.openssh.enable = true;

# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;

# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. It‘s perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "21.05"; # Did you read the comment?

}

eggs una utility per creare la propria distribuzione Linux

Se hai sempre desiderato di creare e mantenere una tua distribuzione Linux personalizzata, forse è il momento di provare a realizzarlo con questa simpatica utility.

Lo strumento permette in maniera immediata la creazione di una versione live del proprio sistema installabile con l’ottimo installer di sistema grafico calamares. Questo facilità anche il compito di installare la propria distro in dual boot,

E’ possibile con eggs creare la live a partire praticamente da tutto il panorama delle distribuzioni della famiglia Debian e quindi comprende pure Ubuntu, Devuan e tutte le derivate come Linux Mint, KDE neon, deepin linux, MX Linux etc.

Tutto quello che devi fare è installare la tua distribuzione preferita, che sarà la base del remaster e quindi installare Penguin’s eggs.

Esiste anche la possibilità di utilizzare delle installazioni senza interfaccia grafica, ma comunque già “riproduttive” ed installabili con l’ottimo installer interno denominato krill. Questo installer, pur essendo a linea di comando, presenta una interfaccia simile al più noto e raffinato calamares e si basa sulla sua stessa configurazione automaticamente generata da eggs.

Partire da una versione base come può essere ad esempio una net-install di Debian presenta il vantaggio che tutto il software che andremo ad installare è stato scelto da noi stessi ed eviteremo più facilmente le ridondanze che si possono verificarsi partendo da una installazione ad esempio xfce ed andando mano, mano a rimuovere i pacchetti che non ci interessano, per passare a gnome, cinnamon, KDE, LXQT o altro.

Su sourcefoge sono presenti delle ISO già preimpostate con eggs ed immediatamente installabili e riproduttive denominate naked. Naturalemte sono versioni molto leggere - meno di 500 MB - e velocemente rimasterizzabili, adatte - per così dire - alla “riproduzione”.

Potete partire da una di queste o da una installazione pulita o persino dal vostro stesso sistema. eggs creerà comunque una immagine ISO live pulita, con un nuovo utente denominato live e SENZA alcun account utente e dato dell’utente preesistente.

Naturalmente, poichè l’utente creato è nuovo, prenderà le sue impostazioni dal catalogo standard /etc/skel, per questo può essere utile il comando sudo eggs tools:skel che permette di prendere la configurazione di un utente e salvarla come default per i prossimi utenti creati.

E’ comunque possibile includere anche i precedenti account ed i propri dati nella ISO, questi non saranno però disponibili sulla ISO ma soltanto ua volta che il sistema viene installato.

Questa è stata una precisa scelta di progetto per evitare la pubblicazione di dati utente sensibili.

L’opzione –backup permette difatti di creare una ISO normale senza alcun account originario e dato sensibile, ma all’interno della immagine live, viene creato un volume luks2 criptato che contiene sia gli account salvati che i dati utente.

Utilizzando l’installer krlll, questo volume verrà automaticamente rilevato, verrà richiesta la passprhase di creazione ed i dati verrano importati all’interno del nuovo sistema installato.

Installazione di eggs #

L’installazione di eggs è analoga a quella di altri programmi, eggs dispone di una propria ppa che può essere aggiunta alle repository del sistema ed una volta aggiornate le stesse il pacchetto eggs è disponibile per l’installazione Debian standard.

Basta copiare le seguenti due righe ed incollarle in una finestra di terminale:

1
2
url -SsL https://pieroproietti.github.io/penguins-eggs-ppa/debian/KEY.gpg | sudo apt-key add -
sudo curl -s --compressed -o /etc/apt/sources.list.d/penguins-eggs-ppa.list "https://pieroproietti.github.io/penguins-eggs-ppa/debian/penguins-eggs-ppa.list"

A questo punto utilizzare i soliti comandi sudo apt update ed sudo apt install eggs o utilizzare un package manager grafico.

Creazione della prima ISO #

In effetti eggs andrebbe configurato ed adattato al proprio sistema, scegliendo con cura il nome utente da dare all’utante del livecd, la sua password, la password di root del livecd etc.

Essendo però l’operazione tediosa ho deciso per un approccio più semplice, ci facciamo auitare da papà - un tipo che bada al sodo - e va dritto allo scopo.

Daremo questi due comandi, che sono comunque illustrati in dettaglio sia nella Users’ guide che nella pagina man, ma andiamo con ordine:

1
sudo eggs config

Eventualmente accettiamo l’installazione di calamares che ci verrà richiesta solo nel caso siamo in un sistema capace di grafica, quindi:

1
sudo eggs dad -d

Che è un po’ come dire: papà carica tutti i default, intesta questo tuo figlio e fai partire la produzione dell’uovo.

dad, senza battere ciclio ci risponde se siamo sicuri ed avvia la produzione della ISO compressa in modalità veloce, per risparmiare tempo. Va sempre di fretta!

A fine operazione, ci verrà indicato il nome della ISO, la directory o nido nella quale è presente, l’utente e la password impostata.

Basterà un semplice scp per esportare la iso da qualche parte ed utilizzarla quindi per avviare una altra macchina virtuale o fisica.

E la mamma? #

Eggià - come in ogni buona metafora - papà non poteva certo essere lasciato solo. E’ stato comodo però e ci tornerà utile anche in seguito per creare delle immagini senza fronzoli, ma se da pargoli vogliamo veramente capire come va il mondo, allora oltre a papà ci converrà seguire la mamma che ci prenderà per mano per prendere confidenza con l’User’s guide, la pagina di man e tutti i comandi disponibili.

Con la mamma occorre essere gentili e quindi, MAI utilizzare sudo semplicemente si immusonisce e rifiuta di eseguire il compito.

1
eggs mom

mom

Come vedete, sono presenti i principali comandi di eggs, dal config iniziale agli altri in ordine alfabetico, quindi la documantation , i comandi export, i tools e l’opzione di uscita.

Andiamo per prima cosa a vedere la documentation, in fondo la configurazione e la produzione della ISO già l’ha fatta papà - pure se in via provvisoria e: “tua madre… s’adatta”!

Nella documentazione troviamo book e book translated che non fanno altro che avviare il browser di default sulla pagina internet che contiene l’user’s guide - il primo - e su Google translator che la traduce sull’altro.

Allo stesso modo è presente manual che ci porta alla pagina man di eggs, in formato html per maggiore comodità e che risiede sul sistema, non necessita quindi di connettività internet.

Questo può essere utile in alcuni casi.

Ma potremmo anche trovarci in un ambiente esclusivamente CLI e la mamma non abbandonerà mai il suo figliolo, almeno no fino a che non cresca, gli siano spuntate le alette e non se lo sia per così dire goduto. Ed ecco allora che ci viene proposto man, ovvera la visualizzazione in formato man della pagina di eggs.

Naturalmente, una volta imparato il metodo, non è indispensabile ricorrere alla mamma per digitare man eggs, ma all’inizio può aiutare.

Una volta ottenuta la nostra visualizzazione basterà chiudere la finestra del browser o uscire da man per tornare al menu principale di mom ed iniziare ad esplorare le altre possibilità.

Scegliamo a questo punto il menu info che equivale in analogia a digitare da terminale: eggs info.

Ci verrà presentata una schermata graphic-like che rappresenta la configurazione attuale di eggs.

info

Anche qua, basterà il tocco di un tasto per chiudere e continuare sul menu principale di mom.

Chiedere a mom di uccidere il figlio, opzione del menu kill potrebbe sembrare spaventoso, ma ormai siamo abituati a tutto e l’idea di uccidere un processo o cancellare un file e non ci fa più di tanto effetto. Ed in ogni caso c’è chi lo fa e pure di peggio purtroppo.

kill rimuoverà completamente il nido ed il suo contenuto. Ancora, possiamo chiamare kill in maniera diretta e lo faremo quando lo conosceremo meglio con sudo eggs kill.

Potremmo continuare, essere ligi all’ordine ed alla tradizione ed affrontare man mano le varie opzione che mom ci propone e ci sono tutte.

Vedremo come esempio il menu produce quello più importante, perchè in fondo questo è il nostro scopo: riprodurre il nostro sistema.

mom-produce

Vediamo che mom ci illustrerà le opzioni di produce, cercando di insegnarcele con il suo commento. Però il suo compito si sta esaurendo, dopo le prime prove saremo in grado, viaggiare più speditamente da soli utilizzando i vari comandi e la funziona di autocomplete degli stessi.

La funzione di autocomplete in eggs #

Così se andiamo a battere nel terminale direttamente: sudo eggs produce seguita da e, quindi, premendo due volte il tasto [TAB], ci vedremo comparire a video le opzioni disponibili e che possiamo impostare

1
2
3
4
artisan@fabrica:~/penguins-blog$ eggs produce --
--addons --fast --normal --script --yolk
--backup --help --prefix --theme
--basename --max --release --verbose

L’autocomplete è dinamico ed è presente per tutti i comandi ed i flag di eggs. Così se digitiamo eggs [TAB][TAB] ci appare la lista dei comandi

1
2
3
4
5
6
artisan@fabrica:~/penguins-blog$ eggs 
adapt export:deb install tools:clean update
autocomplete export:docs kill tools:locales
calamares export:iso mom tools:skel
config help produce tools:stat
dad info remove tools:yolk

e, per ogni comando, inserendo i due trattini, la lista dei flag. Ad esempio:

1
2
artisan@fabrica:~/penguins-blog$ eggs calamares --
--final --help --install --remove --theme --verbose

oppure:

1
2
artisan@fabrica:~/penguins-blog$ eggs install --
--cli --help --mx --verbose

e così via.

Potete sperimentare liberamente in maniera interattiva, naturalmente la lettura del manuale vi aiuterà non poco, ma tutta questa introduzione, spero, vi abbia messo sulla buona strada per l’apprendimento.

Riporto il link alla Penguin’s eggs user’s guide e vi auguro una buona lettura.

Personal Package Archives PPA

Today on the advice of the excellent Yannis I’ve created a PPA repository for eggs.

You just need to add it to your current sources to have eggs available simply through apt, gdebi, synaptic, etc.

Copy and past to add this penguins-eggs-ppa to your sources lists

1
2
curl -SsL https://pieroproietti.github.io/penguins-eggs-ppa/debian/KEY.gpg | sudo apt-key add -
sudo curl -s --compressed -o /etc/apt/sources.list.d/penguins-eggs-ppa.list "https://pieroproietti.github.io/penguins-eggs-ppa/debian/penguins-eggs-ppa.list"

then

1
2
sudo apt update
sudo apt install eggs

penguins-eggs-pps

link

MX21 adventures

Few days ago, MX-Linux annunced his new beta release MX21. based on Debian.

I decided to get a look to MX, a great platform and always intesting. They have his way to remaster and install the system included in the distro: mx-snapshot and mx-installer.

Both are really nice and is a joy to work with them.

The only problem was the fact that I am the parent of a relative of mx-snapshot, a cousin or maybe even a brother, since both eggs and mx-snapshot started from refracta-snapshot each one trying then his own way

The operations I tried #

I first tried to install mx21 with krill, and succeeded, then I remastered mx21 with eggs and installed it with calamares. Again with success.

Both went well, perhaps with minor issues that you can fix later, but the system was installed in both cases.

At this point I decided to try mx-installer and made some slight adjustments to eggs to accommodate it. To get it working I made same modification in install.ts too and add a flag –mx. Then the follow changement:

1
2
3
4
5
6
7
8
9
10
11
12
if (Pacman.packageIsInstalled('mx-installer') && Pacman.guiEnabled() && flags.mx) {
if (!fs.existsSync('/live/')) {
execSync('mkdir /live/ ')
}
if (!fs.existsSync('/live/aufs')) {
execSync('ln -s /lib/live/mount/rootfs/filesystem.squashfs/ /live/aufs')
}
if (!fs.existsSync('/live/linux')) {
execSync('ln -s /lib/live/mount/rootfs/filesystem.squashfs/ /live/linux')
}
execSync('minstall')
...

Well, again - with minor problems - it work from the MX21 remastered iso.

Here You can find the resulting iso: egg-of-mx-bullseye-xfce.

To use mx-installer just open terminal and type: sudo eggs install --mx. You can install it with krill and calamares too.

Moment, where can lead this tests? #

Of course all this operations are - at last - unusefull, mx can be remastered just fine with his tool: mx-snapshot and install perfectly with his mx-installer. So, where can lead this tests again?

Using mx-installer on a common Debian bullseye #

I choose a light iso Debian bullseye with xfce and no other to try to use mx-installer out from mx-linux.

Before I had install it, so I added mx.list from MX21-beta to my the current repos and change them to trust it

1
deb [trust=yes] http://it.mxrepo.com/mx/repo/ bullseye main non-free

After that I installed mx-installer and smartmontools.

1
sudo mx-installer smartmontools

PS: without smartmontools mx-installer seen to not work.

Results #

end

My debian was correctly installed, with the following errors:

  • get configuration errot (quite normal);
  • not ask for user and so not create it;
  • I have no way to remove link to installer when installation end.

Well, we must to study more!

Here You can fine this experiment egg-of-debian-bullseye-xfce-amd64.

_

Dimostrazione eggs

In questo breve video viene presentato eggs

  • installazione di una distro naked
  • installazione di xfce4 sul sistema installato
  • rimasterizzazione del nuovo sistema e sua re-installazione con krill
  • aggiunta dell’installar grafico calamares e rimasterizzione;
  • installazione della nuova iso con calamares
  • saluti finali

luks-krill

Cercando di capire come far funzinare krill con luks, vediamo come viene impostato luks per l’installazione fullencrypted su una VM con /dev/sda di 32 GB con Ubuntu.

BIOS STANDARD #

luks-standard
gpt

fstab #

1
2
3
4
5
6
7
8
9
10
11
12
13
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/mapper/vgkubuntu-root / ext4 errors=remount-ro 0 1
# /boot was on /dev/sda3 during installation
UUID=6ed10a98-b94a-4ad9-9a4a-59d17511170d /boot ext4 defaults 0 2
# /boot/efi was on /dev/sda2 during installation
UUID=CDA5-A018 /boot/efi vfat umask=0077 0 1
/dev/mapper/vgkubuntu-swap_1 none swap sw 0 0

Si usa LVM i dischi sono sia in /dev/vgname/root, /dev/vgname/swap_1 che su /dev/mapper/vgname-root, /dev/mapper/vgname-swap_1

1
2
3
4
5
6
7
8
9
10
artisan@kde:~$ sudo pvscan 
PV /dev/mapper/sda4_crypt VG vgkubuntu lvm2 [30,76 GiB / 32,00 MiB free]
Total: 1 [30,76 GiB] / in use: 1 [30,76 GiB] / in no VG: 0 [0 ]

artisan@kde:~$ sudo vgscan
Found volume group "vgkubuntu" using metadata type lvm2

artisan@kde:~$ sudo lvscan
ACTIVE '/dev/vgkubuntu/root' [<29,78 GiB] inherit
ACTIVE '/dev/vgkubuntu/swap_1' [976,00 MiB] inherit

Quello che non capisco è come vengono creati.

/dev/sda (omterp disco) #

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Disk /dev/sda: 32 GiB, 34359738368 bytes, 67108864 sectors
Disk model: QEMU HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: A7049CC0-4048-4722-96CE-79D917814679

Dispositivo Start Fine Settori Size Tipo
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 1054719 1050624 513M EFI System
/dev/sda3 1054720 2553855 1499136 732M Linux filesystem
/dev/sda4 2553856 67106815 64552960 30,8G Linux filesystem

dev/sda1 #

1
2
3
4
Disk /dev/sda1: 1 MiB, 1048576 bytes, 2048 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

dev/sda2 #

1
2
3
4
5
6
Disk /dev/sda2: 513 MiB, 537919488 bytes, 1050624 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

dev/sda3 #

1
2
3
4
Disk /dev/sda3: 732 MiB, 767557632 bytes, 1499136 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

dev/sda4 #

1
2
3
4
5
Disk /dev/sda4: 30,78 GiB, 33051115520 bytes, 64552960 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

mount bios-standard #

1
2
3
4
/dev/mapper/vgkubuntu-root on / type ext4 (rw,relatime,errors=remount-ro)
/dev/sda3 on /boot type ext4 (rw,relatime)
/dev/sda2 on /boot/efi type vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)

UEFI #

uefi

gpt

1
2
3
4
5
6
7
8
9
10
11
12
Disk /dev/sda: 32 GiB, 34359738368 bytes, 67108864 sectors
Disk model: QEMU HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 3CE9FDC3-8217-4A4B-A31F-8A8C39E37B80

Dispositivo Start Fine Settori Size Tipo
/dev/sda1 2048 1050623 1048576 512M EFI System
/dev/sda2 1050624 2549759 1499136 732M Linux filesystem
/dev/sda3 2549760 67106815 64557056 30,8G Linux filesystem

dev/sda1 #

1
2
3
4
5
6
7
Disk /dev/sda1: 512 MiB, 536870912 bytes, 1048576 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

dev/sda2 #

1
2
3
4
5
Disk /dev/sda2: 732 MiB, 767557632 bytes, 1499136 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

dev/sda3 #

1
2
3
4
5
Disk /dev/sda3: 30,78 GiB, 33053212672 bytes, 64557056 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

mount uefi #

1
2
3
/dev/mapper/vgkubuntu-root on / type ext4 (rw,relatime,errors=remount-ro)
/dev/sda2 on /boot type ext4 (rw,relatime)
/dev/sda1 on /boot/efi type vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)