Désactiver temporairement le système de fichiers étendu lors du premier démarrage

13

J'aimerais construire une image Raspberry Pi en interne basée sur Raspbian Lite qui est déjà configurée avec les paramètres régionaux, le fuseau horaire, etc. Malheureusement pour moi, les versions actuelles des images Raspbian redimensionnent automatiquement le système de fichiers, puis redémarrent.

Je veux éviter les tracas de la réduction de taille du système de fichiers en empêchant le redimensionnement de se produire. Comment modifier l'image après la gravure de manière à désactiver temporairement le redimensionnement automatique du système de fichiers?

Modifié pour clarifier les effets devrait être réversible; c'est-à-dire que je veux que mon image personnalisée se développe au premier démarrage.

patricktokeeffe
la source
Ce n'est peut-être pas la solution idéale, mais avez-vous envisagé d'utiliser une petite carte 4 Go où cela ne présenterait pas un tel problème.
Steve Robillard
2
Idée intéressante .. gravure sur une petite carte, limitant efficacement le redimensionnement. Je préférerais une solution directe mais c'est une alternative décente. Merci
patricktokeeffe
2
C'est assez ennuyeux. Je suis très sûr que cela se fait via un simple script de démarrage auto-effacé comme le chemin raspi-configest exécuté au premier démarrage, et serait facile à désactiver. Je peux y jeter un œil mais je vais devoir télécharger une nouvelle image, la dernière que j'ai est de mai. Revenez dans quelques heures.
goldilocks

Réponses:

13

Il existe un mécanisme en deux parties qui en assume la responsabilité sur Raspbian; la meilleure idée est probablement de prendre soin des deux parties si elles sont activées.

La première est que l'original /boot/cmdline.txtcomprend ceci:

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

En se référant à un script de ce chemin sur la partition principale, qui sera utilisé comme initialisation processus au démarrage. Sans ce bit, il prendrait par défaut une valeur intégrée au noyau /sbin/init, qui sur Raspbian est un lien symbolique vers /lib/systemd/systemd.

En supprimant cette partie de cmdline.txt, le système devrait alors démarrer normalement.

Ce que fait réellement ce script est de redimensionner la partition sur la carte SD. Il s'agit d'un processus distinct du redimensionnement du système de fichiers dans la partition 1, ce qui se produit ensuite.

La façon dont cela se produit est que le système est immédiatement redémarré normalement (c'est-à-dire via systemd) et qu'un init.dscript est configuré pour se déclencher tôt, qui devrait être supprimé de la deuxième partition:

/etc/init.d/resizefs_once

Et le lien symbolique vers celui-ci, qui devrait également être supprimé:

/etc/rc3.d/S01resizefs_once

Vous pouvez conserver une copie pour une utilisation ultérieure si vous le souhaitez, mais vous raspi-configpouvez la recréer pour vous (elle est intégrée dans le raspi-configscript shell). S'il s'exécute réellement, il se supprime, donc cela ne se reproduira plus.

Il redimensionne également le système de fichiers dans la partition nouvellement redimensionnée.

Aucun mal ne doit être fait si une seule ou l'autre partie se produit; dans le premier cas vous vous retrouvez avec un système de fichiers qui ne remplit pas la partition agrandie, dans le second rien ne se passera, car le système de fichiers remplit déjà la partition.

Si vous utilisez plus tard raspi-configpour agrandir le système de fichiers, il redimensionne immédiatement la partition, puis configure le script init (comme déjà mentionné).

L'édition cmdline.txtsur la première partition est simple sur n'importe quel ordinateur car il s'agit d'une partition VFAT. La suppression du init.dfichier nécessite un système qui peut accéder et modifier les systèmes de fichiers ext4.

Les deux tâches peuvent à la place être effectuées sur le fichier image lui-même avant de graver la carte; pour monter et modifier une image Raspbian sur un système GNU / Linux, voir ici . Il existe un Q & A parallèle pour Windows .

Ceci est également réversible, mais vous devrez remettre les deux parties du mécanisme comme décrit ci-dessus, car la première n'inclut pas automatiquement la mise en scène du second.


  1. Bien qu'un message d'erreur de ce script confond sans doute ces termes en affirmant qu'il n'a pas réussi à redimensionner le système de fichiers racine , alors ce qu'il n'a vraiment pas fait, c'est redimensionner la partition avec le système de fichiers racine. Faire l'un n'accomplit pas automatiquement l'autre.
Boucles d'or
la source
1
Les commentaires ne sont pas pour une discussion approfondie; cette conversation a été déplacée vers le chat .
Ghanima
@ linosyris de désactivation des init=/usr/lib/raspi-config/init_resize.shd' /boot/cmdline.txtœuvres sur ubuntu accouple aussi , et semble assez par lui - même. J'ai une image ubuntu mate de 4 Go flashée sur une carte SD 32 Go et son maintien des tailles de partition à la taille d'image d'origine. Aussi /etc/init.d/resizefs_onceet /etc/rc3.d/S01resizefs_oncen'existent pas après le premier démarrage sur ubuntu mate.
sith
Juste pour confirmer, la restauration des fichiers cmdline.txtet init.det rc3.det le lien permettront-ils au prochain démarrage de se redimensionner tout seul ou dois-je l'exécuter raspi-configet l'exécuter manuellement?
Oxwivi
@Oxwivi Cela devrait, oui. J'ai clarifié tout ce post et fait un commentaire explicite à ce sujet à la fin.
goldilocks
Oui merci. A noter également, IDK depuis quelle version mais au moins la dernière version ne porte pas les références de script de redimensionnement que vous avez mentionnées à l'extérieur cmdline.txt. J'ai cependant démarré l'image Raspbian en utilisant systemd-nspawnet j'ai toujours des journaux d'erreurs essayant de redimensionner après avoir supprimé cmdline.txtquelque chose.
Oxwivi