Disattiva temporaneamente il file system di espansione al primo avvio


13

Vorrei creare un'immagine Raspberry Pi interna basata su Raspbian Lite che è già configurata con le impostazioni locali, il fuso orario ecc. Corretti. Purtroppo per me, le versioni correnti delle immagini Raspbian ridimensionano automaticamente il file system, quindi riavviano.

Voglio evitare le seccature del ridimensionamento del filesystem impedendo che si verifichi mai il ridimensionamento. Come modificare l'immagine dopo la masterizzazione per disabilitare temporaneamente il ridimensionamento automatico del file system?

Modificato per chiarire gli effetti dovrebbe essere reversibile; cioè, voglio che la mia immagine personalizzata si espanda al primo avvio.


Questa potrebbe non essere la soluzione ideale, ma hai preso in considerazione l'utilizzo di una piccola scheda da 4 GB in cui ciò non presenterebbe un problema del genere.
Steve Robillard,

2
Idea interessante .. masterizzazione su una piccola carta, limitando efficacemente il ridimensionamento. Preferirei una soluzione diretta ma questa è un'alternativa decente. Grazie
patricktokeeffe,

2
È piuttosto fastidioso. Sono molto sicuro che ciò avvenga tramite alcuni semplici script di avvio self-effacing raspi-configal primo avvio, e sarebbe facile da disabilitare. Posso dare un'occhiata ma dovrò scaricare una nuova immagine, l'ultima che ho è di maggio. Torna tra qualche ora.
Riccioli d'oro

Risposte:


13

C'è un meccanismo in due parti che si assume la responsabilità su Raspbian; probabilmente l'idea migliore è prendersi cura di entrambe le parti se sono abilitate.

Il primo è che l'originale /boot/cmdline.txtinclude questo:

init=/usr/lib/raspi-config/init_resize.sh

Facendo riferimento a uno script con quel percorso sulla partizione radice, che verrà utilizzato come processo init all'avvio. Senza quel bit, sarebbe predefinito un valore incorporato nel kernel /sbin/init, che su Raspbian è un collegamento simbolico a /lib/systemd/systemd.

Rimuovendo quella parte di cmdline.txt, il sistema dovrebbe quindi avviarsi normalmente.

Quello che fa effettivamente quello script è ridimensionare la partizione sulla scheda SD. Questo è un processo distinto dal ridimensionamento del filesystem nella partizione, 1 che è quello che succede dopo.

Il modo in cui accade è che il sistema viene immediatamente riavviato normalmente (ovvero tramite systemd) e uno init.dscript è impostato per attivarsi in anticipo, che dovrebbe essere rimosso dalla seconda partizione:

/etc/init.d/resizefs_once

E il link simbolico ad esso, che dovrebbe anche essere rimosso:

/etc/rc3.d/S01resizefs_once

Se vuoi, puoi conservarne una copia per un uso successivo, ma raspi-configpuoi crearla di nuovo per te (è incorporata nello raspi-configscript della shell). Se effettivamente funziona, si elimina da solo, quindi non accadrà più.

Ciò che fa anche è ridimensionare il filesystem nella partizione appena ridimensionata.

Nessun danno dovrebbe essere fatto se si verifica solo l'una o l'altra parte; nel primo caso si finisce con un filesystem che non riempie la partizione ingrandita, nel secondo non succederà nulla, perché il filesystem riempie già la partizione.

Se in seguito si utilizza raspi-configper ingrandire il filesystem, la partizione viene ridimensionata immediatamente, quindi imposta lo script init (come già accennato).

La modifica cmdline.txtsulla prima partizione è semplice su qualsiasi computer poiché è una partizione VFAT. La rimozione del init.dfile richiede un sistema in grado di accedere e modificare i filesystem ext4.

Entrambe le attività possono invece essere eseguite sul file immagine stesso prima di masterizzare la scheda; per montare e modificare un'immagine Raspbian su un sistema GNU / Linux, vedere qui . C'è una domanda e risposta parallele per Windows .

Anche questo è reversibile, ma dovrai ripristinare entrambe le parti del meccanismo come appena descritto, poiché il primo non include la messa in scena automatica del secondo.


  1. Anche se un messaggio di errore di quello script confonde probabilmente quei termini sostenendo che non è riuscito a ridimensionare il filesystem di root , quando ciò che non è riuscito a fare è ridimensionare la partizione con il filesystem di root risiede. Fare uno non compie automaticamente l'altro.

1
I commenti non sono per una discussione estesa; questa conversazione è stata spostata in chat .
Ghanima

La disabilitazione di @ goldilock init=/usr/lib/raspi-config/init_resize.shda /boot/cmdline.txtfunziona anche su Ubuntu Mate e sembra abbastanza da sola. Ho un'immagine di ubuntu mate da 4 GB flashata su una sdcard da 32 GB e contiene le dimensioni della partizione alla dimensione originale dell'immagine. Inoltre /etc/init.d/resizefs_oncee /etc/rc3.d/S01resizefs_oncenon esistono dopo il primo avvio su Ubuntu Mate.
sith

Solo per confermare, sarà il ripristino sia il cmdline.txte init.de rc3.ddi file e di collegamento consentono il prossimo avvio di ridimensionare da sola o saranno ho da correre raspi-configed eseguirlo manualmente?
Oxwivi,

@Oxwivi Dovrebbe, sì. Ho chiarito l'intero post e fatto un commento esplicito al riguardo alla fine.
Riccioli d'oro

Si Grazie. Inoltre, IDK da quale versione, ma almeno l'ultima versione, non contiene i riferimenti agli script di ridimensionamento menzionati all'esterno cmdline.txt. Ho avviato l'immagine di Raspbian usando systemd-nspawne ho comunque ricevuto i log degli errori che tentavano di ridimensionare dopo aver rimosso la cmdline.txtcosa.
Oxwivi,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.