Remplissage des disques Debian par Arch Linux

Bonjour,

Ma question n’est pas vraiment un problème mais plutôt une bizarrerie à laquelle l’un ou l’une d’entre vous a peut-être une explication.
En ce moment, donc, sur l’ordi dont je me sers au quotidien, sont installées une Debian et une Arch Linux qui cohabitent tout à fait pacifiquement (j’ai juste dû mettre le grub d’Arch par défaut car, allez savoir pourquoi, le lancement d’Arch à partir du grub Debian provoque un joli kernel panic tout à fait inexpliqué lui aussi mais, d’après ce que j’ai lu sur d’autres forums, assez courant).
Mais, allez savoir pourquoi, alors que, quand je suis sur Debian, ma partition racine est remplie à hauteur de 1,93 Go, quand je suis sur Arch, en revanche, la partition racine Debian (la même, donc), qui n’est pas montée, est remplie à hauteur de 3,12 Go. Pour preuve (disque sda2) :
Sur Debian :
dd_debian

Sur Arch :
dd_arch

En fait je remarque au passage qu’Arch remplit tous les disques durs non montés (mais pas dans des proportions aussi énormes pour les autres - quoique, le sda5…). À l’époque où je testais pas mal de distributions, je n’avais pas remarqué ce phénomène. Et j’ai regardé si ça faisait la même chose quand je lance un linux portable (j’ai StretchDog installé sur une clé), et la réponse est non, StretchDog ne touche pas aux disques durs. Ce qui pourrait vouloir dire que je devrais plutôt poser ma question sur des forums d’archiens (mais ils me font peur :flushed:)
Rien d’inquiétant, j’ai assez de place sur le disque et visiblement, ça ne bouge pas, mais tout de même, ça m’intrigue.

Peut-être que quelqu’un a une idée ?

Arch ne remplit rien du tout, et surtout pas les systèmes des fichiers non montés.
A mon avis, c’est Gparted qui affiche n’importe quoi au sujet des systèmes de fichiers non montés. Gparted est un partitionneur, sa fonction première n’est pas d’afficher l’espace libre et occupé des systèmes de fichiers et ce serait un abus de l’utiliser dans ce but.

Pour afficher l’espace libre et occupé des systèmes de fichiers montés, on peut utiliser la commande df. Attention : l’espace libre affiché tient compte de l’espace réservé (par défaut 5% pour root).

Afficher l’espace libre et occupé d’un système de fichiers non monté est plus délicat ; il faut utiliser une commande spécifique au type du système de fichiers et interpréter les résultats. Pour ext4, c’est tune2fs -l.

Note : /mnt n’est pas prévu pour les montages permanents.
Question : Pourquoi avoir créé une partition séparée pour /usr ?

1 J'aime

Merci pour ta réponse. Effectivement, quand je monte la partition sdan (avec n entre 2 et 5), il indique un espace libre conforme à ce que ma Debian annonce. Et, quand la partition n’est pas montée, tune2fs annonce 1 285 919 blocs libres, ce qui, à 4 096 octets le bloc, donne 5 267 124 224 octets libres (si j’ai bien compris). Là aussi, c’est conforme, et rassurant, et en plus j’ai appris quelque chose. Merci à toi.

Pour répondre à ta note par une question : y a-t-il un danger à faire un montage permanent sur /mnt ?
Et pour répondre à ta question, je n’ai réalisé que très tardivement que partitionner séparément /usr n’avait pas d’intérêt, bien après l’avoir fait. Est-ce qu’il y a un moyen de fusionner les deux partitions sans tout casser ? Et (quitte à déborder de la question initiale, autant le faire franchement) de séparer le /var de la racine ?

Non, mais ce n’est pas fait pour ça. Lors de mes bidouillages j’ai souvent besoin de monter temporairement un système de fichiers, et j’utilise naturellement /mnt comme point de montage. S’il est déjà occupé par un montage permanent, je serais obligé de créer un autre point de montage.

En fait il y a des intérêts dans certaines situations particulières, c’est pourquoi je posais la question.

  • L’espace disponible pour la racine n’est pas suffisant pour contenir /usr (non applicable, tu aurais pu créer une partition racine plus grande). Cet argument est devenu quasiment obsolète depuis que le démarrage utilise un initrd/initramfs qui sert de racine initiale et qui est stocké dans /boot qui peut être séparé.

  • On veut monter /usr en lecture seule, alors qu’on ne peut pas encore monter la racine en lecture seule parce que le système a besoin de pouvoir écrire dans /etc à tout moment.

En dehors de cela, il n’y a pas de raison de séparer /usr de la racine et avant Jessie il y avait un risque à le faire car /usr, comme les autres systèmes de fichiers, était monté assez tard lors par init du processus de démarrage et il était devenu impossible en pratique de garantir qu’aucun processus susceptible d’être lancé avant (notamment par udev) n’avait besoin d’une ressource située dans /usr. Depuis Jessie /usr est monté par l’initramfs juste après la racine avant de lancer init donc le problème ne se pose plus.

C’est possible, mais pas simple dans ton cas étant donné l’organisation actuelle du disque. Note : quand il commence à y avoir beaucoup de partitions, je priviégie LVM car la gestion des volumes est beaucoup plus facile qu’avec des partitions.

Deux méthodes envisageables.

Méthode 1 : agrandir la racine sda2 et supprimer sda4
On garde sda2 comme racine. Comme elle n’est pas assez grande pour contenir /usr, il faut l’agrandir. Comme la partition de swap sda3 est située derrière, il faut la supprimer temporairement. Puis agrandir sda2 jusqu’au début de sda4, ce qui risque de ne pas suffire. Un nettoyage des fichiers inutiles (logs, cache APT…) a des chances de libérer assez d’espace. On peut ensuite copier le contenu de sda4 dans sda2 et modifier fstab pour ne plus monter sda4 sur /usr. Supprimer sda4, recréer la partition de swap avec le même UUID récupéré dans fstab, créer une nouvelle partition pour /var. Déplacer le contenu de /var dans la partition et modifier fstab pour la monter sur /var.

Méthode 2 : transformer sda4 en racine et sda2 en /var
Créer un répertoire /usr dans sda4 et y déplacer les autres répertoires.
Déplacer le contenu de sda2 dans sda4.
Déplacer le contenu de /var dans sda2.
Modifier fstab pour prendre en compte les changements.
Comme la racine a changé de partition et d’UUID, le point délicat est l’amorçage. Pour que le GRUB de Debian fonctionne à nouveau il faudra le réinstaller avec grub-install et mettre à jour le grub.cfg de Debian (manuellement ou en chroot avec update-grub) puis d’Arch avec update-grub. Si tu n’utilises que le GRUB d’Arch, tu peux te contenter de mettre à jour les grub.cfg.

A mon avis, ça ne vaut pas le coup de s’embêter à remettre /usr sur la racine.
Si tu veux juste séparer /var, il suffit de réduire une partition afin de créer de la place pour la partition /var, y déplacer le contenu de /var et mettre à jour fstab.

Note qui n’a rien à voir : d’après la capture d’écran de Gparted avec Debian, il semble que Debian utilise la partition de swap d’Arch en plus de la sienne propre (mais ce n’est pas réciproque). Est-ce voulu ?

Bon, le post qui portait initialement sur un mauvais calibrage de Gparted est devenu un sujet sur le redispatchage des partitions… je vais quand même signaler le problème de départ comme résolu :slight_smile:

En fait je ne savais pas qu’il suffisait de déplacer le contenu d’une partition vers une autre pour bouger tel ou tel répertoire, je craignais que ça ne casse des fichiers de configuration… du coup, après quelques clonages pour être sûr de ne pas tout perdre en cas de fausse manip, j’ai réussi à agrandir ma racine, à y mettre le /usr et à séparer le /var sur une partition dédiée, en une après-midi en parallèle du ménage et des courses :slight_smile: j’ai même changé le /mnt en /mnt/data sur tes conseils implicites pour faciliter les futures bidouilles éventuelles.

Bon sinon, Debian utilise bien la partition de swap d’Arch, bien que son montage ne soit pas spécifié dans fstab, je ne sais pas pourquoi… je ne me suis jamais penché de près sur la question parce que ce n’est pas vraiment gênant, mais c’est vrai que ça aussi, c’est bizarre.

Un des buts des montages de systèmes de fichiers est précisément de fournir une abstraction entre l’arborescence et le découpage physique. Pour la plupart des programmes, peu importe donc qu’un fichier soit dans le système de fichiers racine ou dans un autre système de fichiers monté sur un répertoire.

Ce n’est pas mieux. Le FHS ne prévoit pas la possibilité de créer des sous-répertoires dans /mnt. La page de manuel hier(7) mentionne que certaines distributions le font néanmoins (pas Debian) mais toujours pour des montages temporaires.

Parce que le générateur d’unités systemd systemd-gpt-auto-generator active automatiquement les partitions de swap lorsque le disque contenant la racine est au format GPT. Pour l’éviter, on peut :

  • soit désactiver ce générateur,

  • soit changer le type GUID de la partition de swap en autre chose que “swap” (ce qui n’empêche pas la partition d’être utilisée explicitement via /etc/fstab),

  • soit activer l’attribut “no-auto” (bit 63) de la partition de swap (avec fdisk ou gdisk). Attention : j’ai constaté que parted (et probablement Gparted) remet à zéro l’attribut “no-auto” lorsqu’il modifie la table de partition.

Comme Arch n’active pas la partition de swap de Debian, je suppose que dans cette distribution systemd-gpt-auto-generator est absent ou désactivé.

L’inconvénient de laisser un système A utiliser le swap d’un autre système B, comme dans le cas d’un swap partagé, est que cela casse la mise en hibernation de B suivie d’un redémarrage de A. En effet l’activation du swap par A efface l’image d’hibernation de B qu’il contient, donc le retour de B à l’état avant hibernation est impossible. Ceci dit, en ce qui te concerne, ce cas d’utilisation était déjà exclu puisque les deux systèmes montent les mêmes partitions sda6 et sda7.

Je ne savais pas ça. J’apprends linux via les tutos, les forums et les wikis et j’étais tombé sur un site qui m’avait paru sérieux et qui donnait cette suggestion de partitionnement (Lea Linux je crois). Tu suggères plutôt de dédier un répertoire dans le /home du coup ?

Mais alors par contre, j’ai bien compris ce qui se passait pour l’activation automatique du swap et pour ses inconvénients, mais j’ai passé une demi-journée à chercher comment empêcher que ça n’arrive par l’une ou l’autre des méthodes que tu m’as indiqué, sans succès. Je n’ai pas trouvé comment désactiver le générateur (rien dans la page manuel - ou alors j’ai mal lu -, rien trouvé non plus du côté de systemctl, et journalctl n’y fait pas référence, mais dit juste Activating swap Swap Partition...), ni comment changer le type GUID de la partition swap (nouvelle table de partitions ? autre système de fichiers ? dans tous les cas, Arch n’en veut pas), et encore moins comment changer l’attribut “no-auto” de la partition swap - pour le coup, j’ai vraiment peur de faire une connerie irréversible en cherchant la bonne commande fdisk.

Bref, ça m’embête de demander ça, mais comment je dois m’y prendre, plus précisément ?

Par exemple. Ou dans /. Dans n’importe quel emplacement où ça peut avoir un sens logique, donc pas /usr (pour le système), pas /mnt (pour les montages temporaires), pas /media (pour le montage des supports amovibles)…

Moi non plus, rien d’explicite. Peut-être avec la technique générique à systemd qui consiste à créer un lien symbolique /etc/systemd/system-generators/systemd-gpt-auto-generator qui pointe vers /dev/null pour prendre le pas sur /lib/systemd/system-generators/systemd-gpt-auto-generator. Ça marche pour les unités (services…) mais je ne sais pas si ça marche aussi pour les générateurs. Sinon, supprimer le fichier ou lui retirer les permissions d’exécution, mais il sera réinstallé à la prochaine mise à jour de systemd.

Avec n’importe quel éditeur de partition, il suffit de changer le type “swap” de la partition en autre chose, par exemple “Linux filesystem”. Avec parted/Gparted, ça se fait en enlevant le drapeau “swap”.

il faut utiliser les commandes du menu expert de fdisk ou gdisk. L’une d’elles sert à modifier les attributs.

Edit : je répète que dans ton cas il n’y a pas d’inconvénient à ce que Debian utilise la partition de swap d’Arch puisque tu ne peux pas hiberner Arch et redémarrer Debian de toute façon.

Bon, petit retour tardif (la question n’était pas urgente puisqu’effectivement ça ne pose pas réellement de problème me concernant mais je suis toujours curieux d’apprendre et de tester) :

  • Je n’ai pas trouvé comment changer le type GUID de la partition swap sur Gparted mais fdisk le fait très bien (en modifiant le type de partition) et ça fonctionne.
  • Créer un lien symbolique /etc/systemd/system-generators/systemd-gpt-auto-generator pointant vers /dev/null fonctionne également.
  • Dans le mode expert de fdisk, c’est “modifier les bits spécifiques au GUID” qui change l’attribut, et ensuite on modifie le 63. Ça marche aussi.

Bref, merci pour ces précisions !

Merci à toi pour ce retour.

Gparted, comme parted, gère les types (identifiant DOS ou GUID GPT) des partitions sous forme de “drapeaux” (flags) qu’on peut activer ou désactiver au même titre que le drapeau “boot” (indicateur d’amorçage). Ainsi une partition de type “Linux swap” a le drapeau “swap” activé, une partition de type “LVM” a le drapeau “lvm” activé et une partition de type “Linux filesystem”, le type par défaut, n’a aucun drapeau activé. J’ai toujours trouvé cette approche surprenante et discutable dans la mesure où plusieurs drapeaux sont censés pouvoir être combinés, alors qu’une partition ne peut évidemment avoir qu’un seul type.

Je n’avais jamais pris le temps de tester le lien symbolique vers /dev/null, merci de l’avoir fait. Je pense que c’est la solution que je vais adopter car j’en ai un peu assez de devoir réactiver l’attribut no-auto que parted efface à chaque fois que je l’utilise pour modifier la table de partition, et le changement de type GUID ne me plaît pas car il ne serait plus représentatif du contenu de la partition.

Tu me demanderas pourquoi je n’arrête pas d’utiliser parted plutôt ? Parce qu’il présente certains avantages non négligeables :

  • j’y suis habitué et je le trouve pratique
  • il permet de manipuler les partitions de façon non interactive simplement
  • contrairement à fdisk ou gdisk il fait prendre les changements en compte par le noyau même si le disque est en cours d’utilisation sans avoir besoin d’exécuter partprobe ensuite
  • il est le seul à permettre certaines choses comme agrandir une partition en cours d’utilisation et le faire prendre en compte par le noyau, ce que partprobe ne permet pas.