Je suis Charlie

Autres trucs

Accueil

Seulement les RFC

Seulement les fiches de lecture

Ève

NetBSD formate un disque pour Linux

Première rédaction de cet article le 3 juin 2009


Quand on installe NetBSD, le programme d'installation s'occupe en général des détails comme le partitionnement et le formatage du disque et on a juste à suivre les indications d'un menu. Mais si on veut ajouter un disque ensuite ? C'est bien documenté. Et si ce disque est pour un autre système, par exemple Linux, parce qu'on veut héberger des machines virtuelles Xen ou bien simplement partager un disque entre deux systèmes d'exploitation qui alternent ? Alors, on trouve moins de documentation et voici donc quelques notes qui peuvent aider.

Sur un PC, le partitionnement est fait avec fdisk. Mais fdisk ne gère que les partitions dites « MBR », celles du monde PC. NetBSD (qui ne tourne pas que sur PC, bien au contraire), se fie, lui, aux disklabels, les tables qu'il a mises sur le disque. Une partition « PC » peut contenir une ou plusieurs partitions NetBSD. Avec fdisk, on découpe donc le disque du PC, c'est un découpage standard que n'importe quel système d'exploitation de PC va reconnaître. Puis, on utilise disklabel pour créer d'autres partitions dans ces partitions, ou bien simplement pour faire enregistrer les partitions de manière à ce que NetBSD les voit. Donc, pour résumer, fdisk s'occupe des partitions PC et disklabel des partitions NetBSD.

Pour fdisk, la méthode que je trouve le plus simple est la méthode interactive avec l'option -u. On donne le nom de partition qu'on veut éditer (de 1 à 4 pour les quatre partitions primaires et en partant de E0 pour les partitions étendues) et sa taille.

Ensuite, on utilise disklabel. La méthode que je préfère est l'édition avec l'option -e qui lance un éditeur. On indique les partitions NetBSD identifiées par une lettre (ici, de i à l pour mes partitions étendues), le type (disklabel -l pour afficher les types possibles) et les points de départ et taille des partitions (si on fait une partition NetBSD de chaque partition MBR, il suffit de recopier les valeurs qu'affiche fdisk).

Après le partitionnement, le disque vu avec fdisk wd0 :


Partition table:
0: NetBSD (sysid 169)
    start 63, size 24386607 (11908 MB, Cyls 0-1517), Active
1: Ext. partition - LBA (sysid 15)
    start 24386670, size 15745833 (7688 MB, Cyls 1518-2498/33/54)
2: <UNUSED>
3: <UNUSED>
Extended partition table:
E0: Linux native (sysid 131)
    start 24386733, size 7164927 (3498 MB, Cyls 1518-1963)
        PBR is not bootable: All bytes are identical (0x00)
E1: Linux swap or Prime or Solaris (sysid 130)
    start 31551723, size 530082 (259 MB, Cyls 1964-1996)
        PBR is not bootable: Bad magic number (0x666f)
E2: Linux native (sysid 131)
    start 32081868, size 7164927 (3498 MB, Cyls 1997-2442)
        PBR is not bootable: All bytes are identical (0x00)
E3: Linux swap or Prime or Solaris (sysid 130)
    start 39246858, size 885645 (432 MB, Cyls 2443-2498/33/54)
        PBR is not bootable: All bytes are identical (0x00)

Et le même, vu avec disklabel wd0 après l'édition du disklabel (disklabel -e lance un éditeur avec un contenu qui est très proche de celui-ci) :

16 partitions:
#        size    offset     fstype [fsize bsize cpg/sgs]
 a:   1043280        63     4.2BSD   1024  8192     0  # (Cyl.      0*-   1035*)
 b:    639072   1043343       swap                     # (Cyl.   1035*-   1669*)
 c:  24386607        63     unused      0     0        # (Cyl.      0*-  24193*)
 d:  40132503         0     unused      0     0        # (Cyl.      0 -  39813*)
 e:   6144768   1682415     4.2BSD   2048 16384     0  # (Cyl.   1669*-   7765*)
 f:   2458512   7827183     4.2BSD   2048 16384     0  # (Cyl.   7765*-  10204*)
 g:  13893138  10285695     4.2BSD   2048 16384     0  # (Cyl.  10204*-  23986*)
 i:   7164927  24386733 Linux Ext2      0     0        # (Cyl.  24193*-  31301*)
 j:    530082  31551723       swap                     # (Cyl.  31301*-  31827*)
 k:   7164927  32081868 Linux Ext2      0     0        # (Cyl.  31827*-  38935*)
 l:    885645  39246858       swap                     # (Cyl.  38935*-  39813*)

Et je peux formater ces partitions Linux avec mke2fs (attention, pour que NetBSD puisse les monter, il faut apparemment augmenter la taille des inodes, par exemple avec mke2fs -I 128 /dev/wd0i), les monter avec mount, etc.

Voici à quoi ressemble le partitionnement avec fdisk -u. Ici, on va créer la quatrième partition, E3, en indiquant son type (130 = Linux, fdisk -l pour avoir la liste), le bloc où elle démarre, et sa taille (ici, on prend les valeurs par défaut) :


1: Ext. partition - LBA (sysid 15)
    start 24386670, size 15745833 (7688 MB, Cyls 1518-2498/33/54)
2: <UNUSED>
3: <UNUSED>
Extended partition table:
E0: Linux native (sysid 131)
    start 24386733, size 7164927 (3498 MB, Cyls 1518-1963)
        PBR is not bootable: All bytes are identical (0x00)
E1: Linux swap or Prime or Solaris (sysid 130)
    start 31551723, size 530082 (259 MB, Cyls 1964-1996)
        PBR is not bootable: Bad magic number (0x666f)
E2: Linux native (sysid 131)
    start 32081868, size 7164927 (3498 MB, Cyls 1997-2442)
        PBR is not bootable: Bad magic number (0x8fe6)
First active partition: 0
Drive serial number: 1054424792 (0x3ed93ed8)
Which partition do you want to change?: [none] E3
sysid: [0..255 default: 169] 130
start: [1518..2498cyl default: 39246858, 2443cyl, 19164MB] 
size: [0..55cyl default: 885645, 55cyl, 432MB] 
bootmenu: [] 

Question documentation, on peut noter que la documentation de NetBSD sur Cobalt, quoique touchant à un système différent est, en pratique, très bien faite.

Tous mes remerciements à Thierry Laronde pour m'avoir guidé dans cette tâche.

Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)

Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)