Skip to main content
Deutsch  •  English  •  Español  •  Français  •  Italiano  •  Polska  •  Portuguese  •  Български  •  Русский  •  Українська  •  やまと  •  中国  •  فارsi

💿 L'installatore unificato: sysinstall (un motore, due volti)

Il processo di installazione su disco (eggs sysinstall) è completamente agnostico rispetto all'interfaccia utente: una singola pipeline di preparazione (coa/pkg/sysinstall/setup) analizza il sistema live e genera la configurazione completa, dopodiché uno dei due "volti" la consuma:

  • GUI (Interfaccia Grafica): delegata a Calamares (sudo eggs sysinstall calamares).
  • TUI (Interfaccia Testuale): Krill (sudo eggs sysinstall krill), scritta nativamente in Go (Bubbletea) per server headless, installazioni da console/SSH e multi-boot Coexist.

1. L'unica fonte di verità (/etc/penguins-eggs.d/installer.d/)​

Il contratto tra il mondo grafico e quello testuale è la directory di configurazione finita generata a runtime da setup:

/etc/penguins-eggs.d/installer.d/
├── settings.conf # sequenza dei moduli (show / exec) e istanze
├── branding/eggs/ # branding.desc (renderizzato anche da branding.desc.tmpl)
└── modules/*.conf # partition, mount, users, unpackfs, removeuser, shellprocess@...

Una volta generata questa directory:

  • Calamares viene invocato con -c /etc/penguins-eggs.d/installer.d/ ed esegue i propri moduli C++/Python.
  • Krill legge gli stessi identici file .conf (pkg/sysinstall/krill/config.go) ed esegue la medesima sequenza logica tramite i propri moduli nativi in Go (pkg/sysinstall/krill/engine), registrando ogni comando in /var/log/krill.log.

2. Krill come esecutore nativo della configurazione​

Krill non duplica la logica per distribuzione, ma interpreta testualmente la configurazione generata:

  • Mappa ogni modulo logico (partition, mount, unpackfs, machineid, fstab, locale, keyboard, users, displaymanager, removeuser, umount) su una funzione Go nativa.
  • Esegue i moduli shellprocess@* alla lettera: gli stessi script di chroot e bootloader usati da Calamares vengono eseguiti da Krill su /tmp/calamares-root-krill.
  • Modulo esclusivo networkcfg: a differenza di Calamares, Krill include un passo dedicato per configurare la rete statica o DHCP sull'host installato (ifupdown, NetworkManager o systemd-networkd).
  • Supporto avanzato dischi e cloni: gestisce dischi interi, partizioni preesistenti (proteggendo automaticamente la partizione EFI di Windows in scenari multi-ESP e preservando eventuali partizioni /home separate senza riformattarle), slot Coexist e media generati con --clone/--crypted (preservando gli utenti clonati).

3. Strategia autonoma dei bootloader (oa-bootloader.sh)​

Lo script del bootloader generato dal template rileva l'ambiente al momento dell'installazione senza assunzioni rigide:

FirmwareBootloader RilevatoFamigliaAzione Eseguita
UEFI / BIOSlimineQualsiasiInstalla Limine (limine bios-install o binario UEFI) e scrive limine.conf.
UEFIbootctl (systemd-boot)Arch, ManjaroInstalla systemd-boot, copia kernel/initrd/ucode nella ESP e genera loader.conf.
UEFIgrub-installQualsiasiInstalla GRUB EFI (con supporto BLS e isolamento vendor su openSUSE) e aggiorna grub.cfg.
BIOSgrub-installQualsiasiInstalla GRUB i386-pc sull'MBR del disco target.

Safe Mode Multi-Boot: se nella partizione /boot/efi/EFI/ sono già presenti altri sistemi operativi, lo script utilizza --no-nvram / --no-variables (o registra voci isolate in modalità Coexist) per non dirottare l'ordine di avvio NVRAM esistente.