# Svincolarsi dal initramfs

## loxdegio

Salve a tutti, come da titolo vorrei far fuori (o almeno ridurre) l'initramfs visto che ha una dimensione di circa 4 volte superiore rispetto al mio kernel (con un rapporto di 16M:3,9M).

Sarei molto grato se qualcuno sapesse rispondere gentilmente ai miei quesiti riportati qui di seguito.

Ah l'initramfs è creato con genkernel, non so se è un informazione utile.

1) C'è un modo per analizzarne  il contenuto in modo da sapere cosa è utile e cosa no?

2) In caso ci fosse soluzione alla domanda 1 come fosso impostare genkernel in modo da ridurre i tools all'interno dell'initramfs?

    (O fare fuori direttamente l'initramfs è uguale e forse pure meglio)

Ringrazio in anticipo attendendo una risposta  :Smile: 

----------

## cloc3

svincolarsi dalla initramfs è sempre possibile.

tuttavia, una buona initramfs rende più ordianto ed efficiente la fase di boot.

il guaio è che le initramfs pronte prevdeno un insieme di situazioni che trascende le necessità più comuni dei semplici utenti.

soprattutto se contengono un insieme di drive tendente a infinito nella cartella /lib/modules.

a volte, prendere una initramfs pronta e togliere i drive superflui può tornare molto utile.

alcuni anni fa avevo messo sul forum un mezzo howto su come si apre e come si rigenera una initramfs. non credo che sia del tutto obsoleto. forse può interessarti.

----------

## loxdegio

Perfetto! Grazie mille  :Very Happy:  Appena ho un attimo di tempo me la leggo bene tutta con calma;)

----------

## pierino_89

 *cloc3 wrote:*   

> 
> 
> tuttavia, una buona initramfs rende più ordianto ed efficiente la fase di boot.
> 
> 

 

Scusa, puoi spiegare meglio questa affermazione? Io sapevo che il miglior modo per velocizzare il boot fosse avere builtin nel kernel il minimo indispensabile all'avvio, e modularizzare tutto il resto. E soprattutto, evitare l'initramfs.

----------

## cloc3

 *pierino_89 wrote:*   

> 
> 
> Scusa, puoi spiegare meglio questa affermazione?

 

orpo. non volevo offendere  :Smile: .

sono valutazioni senza impegno.

a mio parere, progettare un boot senza initramfs per certe situazioni (diskless, ad esempio) è una mezza forzatura.

per definizione, un diskless è senza disco, quindi è giusto creargli un ambiente iniziale, che prenda un po' di coraggio e si guardi intorno.

similmente se desidero partire da chiavetta, da dvd, magari su un computer che non conosco, con un lvm un po' anomalo che può nascondere qualche scherzaccio.

poi. la initramfs è utilissima in fase di sviluppo per fare un po' di debug in un ambiente semplificato.

alla fine quando si è trovata una quadra, non è detto che sia conveniente lambiccarsi il cervello per rigirare il tutto in modalità boot diretto.

in fondo, se per partire, in un certo contesto, servono degli script, servono e basta.

può sembrare ordinato, quindi, metterli nella initramfs, in modo che, dopo l'avvio, il sistema li possa dimenticare.

----------

## loxdegio

 *cloc3 wrote:*   

> orpo. non volevo offendere 

 

Su dai ragazzi non scannatevi XD Ho parzialmente risolto anche tenendo l'initramfs  :Wink: 

Certo non è che prima facesse schifo, ma avevo un avvio sui 40s fino all'apparizione della freccina del mouse

Ora sono arrivato a 26-30s (dipende un po' dalle condizioni) con questi accorgimenti:

# tune2fs -m 1.0 /dev/sdXY

mount options di root ed home defaults,noatime

prelink (non so se abilitare anche preload, ma direi che così già va bene)

ho spostato il runlevel di default da 3 a 5 ini /etc/inittab

abilitiati esplicitamente anche i servizi di dipendenza per altri (secondo la wiki di arch, o fedora non ricordo, questo anticiperebbe la ricerca e quindi l'avvio di tali servizi)

ultimo ma non ultimo ho attivato il readahead euristico di systemd che mi ridurrà di 1,5 secondi il boot ad ogni avvio fino a che non si sarà stabilizzato

Che dite? ho dimenticato qualcosa?

Ho provato anche e4rat, ma per le sue valutazioni mi rubava 10s all'inizio del boot tornandomi l'avvio a 40s buoni.

Ah dimenticavo il mio è un notebook del 2010 con HD magnetico a testine 5400rpm e un Core2 DUO quindi credo di aver già fatto tutto il possibile per questo quasi reperto storico  :Wink: 

----------

## pierino_89

 *cloc3 wrote:*   

> 
> 
> orpo. non volevo offendere .
> 
> sono valutazioni senza impegno.
> ...

 

Ma no tranquillo, era solo curiosità. Forse avrei dovuto mettere una faccina   :Very Happy: 

Quindi l'initramfs è (al netto di postazioni diskless, chiavette usb e in generale macchine che abbisognano di moduli specifici per il boot che non ha senso mettere builtin) "il luogo dove metti tutti i servizi oneshot che non verranno mai più richiamati durante la vita del sistema". Però comunque rimane una cosa in più da caricare prima del boot... Non sarebbe meglio toglierlo nel caso il sistema operativo sia già sufficientemente ottimizzato da non girare su nessun pc differente?

 *loxdegio wrote:*   

> 
> 
> [*]mount options di root ed home defaults,noatime
> 
> 

 

Hai già guardato cose tipo data=writeback, barrier, commit (per ext4) e x-systemd.automount (se usi systemd)? Fra l'altro, ci sarebbe anche "nodiratime".

 *Quote:*   

> 
> 
> [*]prelink (non so se abilitare anche preload, ma direi che così già va bene)
> 
> 

 

In teoria se usi delle LDFLAGS appropriate il guadagno dovrebbe essere molto piccolo. Ma l'ho letto molto tempo fa, dovrei ridocumentarmi   :Smile: 

 *Quote:*   

> 
> 
> [*]abilitiati esplicitamente anche i servizi di dipendenza per altri (secondo la wiki di arch, o fedora non ricordo, questo anticiperebbe la ricerca e quindi l'avvio di tali servizi)
> 
> [*]ultimo ma non ultimo ho attivato il readahead euristico di systemd che mi ridurrà di 1,5 secondi il boot ad ogni avvio fino a che non si sarà stabilizzato[/list]
> ...

 

Interessanti questi, dove li hai trovati?

 *Quote:*   

> Ho provato anche e4rat, ma per le sue valutazioni mi rubava 10s all'inizio del boot tornandomi l'avvio a 40s buoni.
> 
> 

 

Beh, il collect una volta usato la prima volta non devi più usarlo e usare solo quello che fa il preload   :Wink:  comunque a me da una certa release non ha mai più funzionato, quindi non mi ricordo bene la procedura. In teoria se usi già readahead non dovrebbe cambiarti molto   :Smile: 

----------

## loxdegio

 *pierino_89 wrote:*   

>  *loxdegio wrote:*   
> 
> [*]mount options di root ed home defaults,noatime
> 
>  
> ...

 

Sì, ma usando systemd mi davano problemi soprattutto 'barrier=0' dovrei provare singolarmente gli altri 2, mentre per nodiratime non è già incluso in noatime?

 *pierino_89 wrote:*   

>  *loxdegio wrote:*   
> 
> [*]prelink (non so se abilitare anche preload, ma direi che così già va bene)
> 
>  
> ...

 

Le mie LDFLAGS sono "-Wl,-O1 -Wl,--as-needed -Wl,--hash-style=gnu" come mi era già stato consigliato in un altro topic e pare non ci sia di meglio, ma sono aperto a consigli  :Wink: 

 *pierino_89 wrote:*   

>  *loxdegio wrote:*   
> 
> [*]abilitiati esplicitamente anche i servizi di dipendenza per altri (secondo la wiki di arch, o fedora non ricordo, questo anticiperebbe la ricerca e quindi l'avvio di tali servizi)
> 
> [*]ultimo ma non ultimo ho attivato il readahead euristico di systemd che mi ridurrà di 1,5 secondi il boot ad ogni avvio fino a che non si sarà stabilizzato[/list]
> ...

 

Qui per il readahead (trovi anche sulla wiki di arch, ma ho trovato info prima su fedora): http://fedoraproject.org/wiki/Systemd/it#Readahead

Qui per la questione delle dipendenze: (non mi ricordo dove l'ho trovato e la cronologia non aiuta, ma so di averlo letto da qualche parte  :Razz:  )

 *pierino_89 wrote:*   

>  *loxdegio wrote:*   Ho provato anche e4rat, ma per le sue valutazioni mi rubava 10s all'inizio del boot tornandomi l'avvio a 40s buoni.
> 
>  
> 
> Beh, il collect una volta usato la prima volta non devi più usarlo e usare solo quello che fa il preload   comunque a me da una certa release non ha mai più funzionato, quindi non mi ricordo bene la procedura. In teoria se usi già readahead non dovrebbe cambiarti molto  

 

In realtà era il preload che ci metteva una vita, non il collect che ha le sue regole, certo... Poi si avviava in tempo zero, ma il solo preload mangiava 10s di boot il che lo rende una cosa inutile ai fini di velocizzare il processo di avvio

----------

## pierino_89

 *loxdegio wrote:*   

> 
> 
> mentre per nodiratime non è già incluso in noatime?

 

Pare di sì, ma in tutte le guide li ho sempre visti ambedue, quindi nel dubbio lo lascio   :Razz: 

 *loxdegio wrote:*   

> 
> 
> Le mie LDFLAGS sono "-Wl,-O1 -Wl,--as-needed -Wl,--hash-style=gnu" come mi era già stato consigliato in un altro topic e pare non ci sia di meglio, ma sono aperto a consigli 

 

Io ho anche "--sort-common". Occhio che --as-needed è entrata in quelle di default, quindi se la specifichi nel make.conf appare due volte (può essere desiderabile o meno, dipende da te   :Wink:  ).

 *loxdegio wrote:*   

> 
> 
> Qui per il readahead (trovi anche sulla wiki di arch, ma ho trovato info prima su fedora): http://fedoraproject.org/wiki/Systemd/it#Readahead
> 
> 

 

Era già abilitato di default  :Sad: 

 *loxdegio wrote:*   

> 
> 
> In realtà era il preload che ci metteva una vita, non il collect che ha le sue regole, certo... Poi si avviava in tempo zero, ma il solo preload mangiava 10s di boot il che lo rende una cosa inutile ai fini di velocizzare il processo di avvio

 Allora probabilmente caricava troppa roba, dovevi fermarlo prima o cancellare a mano le voci inutili dalla lista   :Very Happy: 

----------

## djinnZ

Per l'iniramfs ti hanno già risposto, aggiungo solo che con genkernel2 si può fare qualcosa in più per ottenere una initramfs più malleabile.

Per l'ottimizzazione ti consoglio piuttosto di disabilitare del tutto il debugging con -g0.

----------

## loxdegio

 *djinnZ wrote:*   

> Per l'iniramfs ti hanno già risposto, aggiungo solo che con genkernel2 si può fare qualcosa in più per ottenere una initramfs più malleabile.
> 
> Per l'ottimizzazione ti consoglio piuttosto di disabilitare del tutto il debugging con -g0.

 

Grazie djinnZ, ti chiedo solo una cosa ma per genkernel2 intendi genkernel-next?  :Very Happy: 

@Tutti: Stavo pensando, ma c'è un modo per comprimere l'initramfs in LZ4 già che ci sono? Perché quanto a rapporto compression ratio/decompression speed pare essere l'algoritmo migliore e in più l'ho già attivato per il kernel

----------

## djinnZ

si. anche per genkernel originale.

Non ti posso essere di grande aiuto perchè sono all'estero e vado a memoria

----------

