Author Archives: spookyh

You need to load the kernel first (parte 2)

Dopo anni di modalità BIOS Legacy ho effettuato il passaggio a UEFI per sfruttarne alcune delle sue caratteristiche.
Andrà quindi reinstallato grub in modalità EFI, ma per mia paranoia maggiore sicurezza ho aggiunto anche altre due alternative “salva” boot:

  • refind: un Bootloader che può caricare kernel o EFI stub presenti nella partizione EFI di boot. Rinominandolo come /EFI/BOOT/bootx64.efi il sistema lo caricherà di default quando non trova altre immagini disponibili
  • EFI stub realizzata con Buildroot contenente kernel + ramdisk con varie utility di rescue. In meno di 30MB si riesce ad avere un sistema con driver ethernet, wifi, busybox completo, RAID, BTRFS…

    Occorre fare attenzione ad alcune cose: l’immagine Buildroot va creata in modo che l’initrd sia linkata nel kernel creando così un solo file all-inclusive.
    # make menuconfig
    Filesystem images —>
    seleziona initial RAM filesystem linked into the kernel (cpio)

    Nel kernel va abilitato il supporto all’EFI stub affinché l’immagine creata sia in formato .efi e dato che UEFI funziona via framebuffer anche questo va abilitato altrimenti lo schermo rimarrà fisso al logo del bootloader.
    # make linux-menuconfig
    Processor type and features —>
    EFI runtime service support —>
    EFI stub supportDevice Drivers —>
    Graphics support —>
    Frame buffer Devices —>
    Support for frame buffer devices —>
    EFI-based Framebuffer Support

You need to load the kernel first (parte 1)

Avete presente quella sensazione di sconforto che si prova quando, dopo un aggiornamento, il sistema si blocca su una misera shell di ripristino privandoci del nostro rassicurante login grafico? Incasinare l’avvio di Linux è un’eventualità piuttosto probabile: sovrascrittura del MBR, aggiornamenti di kernel e bootloader, apt-get dist-upgrade… In questi casi spesso non resta che dover recuperare un LiveCD, chrootarsi o addirittura reinstallare tutto.
Cosa si può fare per prevenirlo?

Svariati anni fa, ai tempi in cui “la mia vita fin lì, entrava tutta dentro uno Iomega ZIP”, nel tentativo compilare un nuovo kernel per una RedHat riuscii nell’impresa di cancellare tutti i file vmlinuz-* in /boot ad eccezione del mio. Risultato? Sistema bloccato perché mancavano i driver per montare il filesystem. Da allora tengo sempre almeno due kernel funzionanti e testati in /boot.

Per i successivi 22 anni ho dormito sogni tranquilli, tra snapshots di btrfs e kernel di scorta, finché dopo un aggiornamento di grub su Archlinux mi sono ritrovato con un sistema non avviabile. Tutto risolvibile con un LiveCD, arch-chroot e grub-install… ma è stato fastidioso e nel prossimo articolo vedremo qualche accorgimento per salvarci le chiappe il boot anche nei casi più disperati.

Sondaggio 3

Il posto più strano dove hai fatto... un backup?

i486

Scrivendo l’articolo NO GRAPHIC NO PARTY mi sono accorto che non esistono distribuzioni moderne capaci di girare su un 486.

La soluzione più semplice è quella di costruirsi il proprio sistema Linux personalizzato con Buildroot, come descritto nella guida Linux minimale per PC i386/i486.

Con questo tool non è stato difficile realizzare un sistema Linux che supportasse PCI, ISA, IDE legacy, IPV4/6, le principali schede di rete ethernet dell’epoca e degli attuali emulatori, l’hotplug; che comprendesse busybox completo, svariati tool come iptables, nano, openssl, dropbear, ncftp, lynx, mutt, mpg123 e si accontentasse di un 486 con 24MB RAM ed un hard disk da 40MB.

Realizzare un sistema Linux recente per i386 è invece fuori discussione, anche usando l’ultimo kernel disponibile per 386 (3.7.10) ed un buildroot di una decina di anni fa è si fa molta fatica a stare sotto alle 16MB RAM. In questo caso conviene accontentarsi di una vecchia distro floppy minimale.

NO GRAPHIC, NO PARTY?

Ha ancora senso fare a meno dell’interfaccia grafica?
Per la maggior parte degli utenti probabilmente no, ma se state leggendo questo articolo non siete l’utente medio.
Se siete stanchi di giocare a vecchi giochi DOS sul 486 della vostra infanzia, la mia proposta è di collegarlo ad Internet e configurarlo per navigare, chattare e leggere la posta. Vi occorrerà soltanto della colla vinilica e forbici con la punta arrotondata una scheda ethernet (preferibilmente PCI se non volete gestire manualmente IO e IRQ), un lettore CD e (facoltativo, ma raccomandato) un hard disk aggiuntivo dedicato a Linux.

NB: l’unica distribuzione moderna che supporta l’architettura 486 è TinyCore, ma è impossibile fargli fare il boot su sistemi con meno di 80MB RAM. Per aggirare questo il problema si può effettuare l’installazione su un PC più moderno e su questo ricompilare un nuovo kernel minimale. Per limitare al massimo il consumo di memoria si consiglia di eliminare tutti i moduli superflui e di compilare staticamente le componenti essenziali al boot così da poter fare a meno del ramdisk. A questo punto sarà possibile trapiantare l’hard disk sul 486 e, se abbiamo fatto tutto correttamente, arrivare al login.
Se siete pigri e non vi interessa avere un sistema aggiornato si può optare per una vecchia Debian 3 o Slackware 7.

Software consigliato per sopravvivere ai tempi moderni con un computer di 30 anni fa:

  • nano: editor di testo stile edit di MS DOS
  • vi, emacs: editor di testo UNIX che non hanno bisogno di presentazioni
  • Wordgrinder: word processor che supporta il formato odt
  • gpm (General purpose mouse): supporto al mouse da terminale
  • tmux (Multiplexer di terminale): divide lo schermo in pannelli, gestisce finestre multiple e mantiene le sessioni persistenti
  • eLinks: browser testuale con supporto per le TAB
  • links: browser testuale con possibilità di supporto grafico. Utilizzando il driver framebuffer (attivandolo dal boot loader col parametro vga=0x031B o video=vesafb), non necessita del server grafico
  • mpg123: decoder per eseguire mp3
  • sic (chat via IRC): chattare alla vecchia maniera lanciando un semplice “sic irc.libera.chat”
  • Mutt (o NeoMutt): client email

Mentre la configurazione della maggior parte dei programmi elencati è un esercizio relativamente semplice che lasceremo al lettore, quella del client di posta richiede alcune accortezze:

  1. se usate Gmail dovrete generare una nuova password per ogni applicazione esterna per accedere alla casella di posta (mutt/neomutt, offlineimap, getmail, msmtp, postifix, sendmail…)
  2. Mutt e NeoMutt avrebbero un client integrato per gestire l’autenticazione imap e smtp, ma se volete leggere ed inviare la posta anche quando siete offline occorrerà appoggiarsi a strumenti esterni
    File di configurazione di NeoMutt comprensivo di gestione della cifratura .neomuttrc
  3. Come client IMAP per sincronizzare il vostro account con la ~/Mail locale consiglio Offlineimap o getmail
    File di configurazione .offlineimaprc
  4. Stessa cosa per quanto riguarda la posta in uscita, in questo caso consiglio msmtp.
    File di configurazione .msmtprc