Préparer un disque dur pour installer Linux

12.10.2006 | marcori
4443 visiteurs  -  14 visiteurs aujourd'hui  -  1 commentaire

Avant propos

Linux gère de nombreux systèmes de fichiers. Les plus connus et utilisés sont ext2 et ext3, mais j’utilise régulièrement d’autres système de fichiers comme reiserfs ou xfs.

Quand je prépare un disque dur pour une installation d’une Debian, j’ai en général un disque dur en réserve qui est déjà installé avec Debian Sarge. J’installe donc ce disque dur de réserve en tant que disque primaire et j’installe le disque que je dois préparer en disque secondaire.

Je démarre donc l’ordinateur sur mon disque primaire, et miracle, Debian Sarge est déjà prêt ;)

Information sur le disque

Pour information, le disque que je prépare est le suivant :


IBM Deskstar
Model: IC35L040AVER07-0
Capacity: 41.0 GB
RPM: 7200RPM
P/N: 07N6654
MLC: H32161
LBA: 80.418.240 Sectors
CHS: 16383/16/63

Mais en fait, hdparm me l’aurait très bien dit :


# hdparm -I /dev/hdb

/dev/hdb:

ATA device, with non-removable media
powers-up in standby; SET FEATURES subcmd spins-up.
       Model Number:       IC35L040AVER07-0
       Serial Number:      SXPTXTC0135
       Firmware Revision:  ER4OA44A
Standards:
       Used: ATA/ATAPI-5 T13 1321D revision 1
       Supported: 5 4 3 2 & some of 6
Configuration:
       Logical         max     current
       cylinders       16383   17475
       heads           16      15
       sectors/track   63      63
       --
       CHS current addressable sectors:   16513875
       LBA    user addressable sectors:   80418240
       device size with M = 1024*1024:       39266 MBytes
       device size with M = 1000*1000:       41174 MBytes (41 GB)
Capabilities:
       LBA, IORDY(can be disabled)
       bytes avail on r/w long: 40     Queue depth: 32
       Standby timer values: spec'd by Standard, no device specific minimum
       R/W multiple sector transfer: Max = 16  Current = 0
       Advanced power management level: unknown setting (0x0000)
       Recommended acoustic management value: 128, current value: 254
       DMA: mdma0 mdma1 mdma2 udma0 udma1 *udma2 udma3 udma4 udma5
            Cycle time: min=120ns recommended=120ns
       PIO: pio0 pio1 pio2 pio3 pio4
            Cycle time: no flow control=240ns  IORDY flow control=120ns
Commands/features:
       Enabled Supported:
          *    NOP cmd
          *    READ BUFFER cmd
          *    WRITE BUFFER cmd
          *    Host Protected Area feature set
               Release interrupt
          *    Look-ahead
          *    Write cache
          *    Power Management feature set
               Security Mode feature set
          *    SMART feature set
          *    Device Configuration Overlay feature set
               Automatic Acoustic Management feature set
               SET MAX security extension
               Address Offset Reserved Area Boot
               SET FEATURES subcommand required to spinup after power up
               Power-Up In Standby feature set
               Advanced Power Management feature set
          *    READ/WRITE DMA QUEUED
Security:
       Master password revision code = 65534
               supported
       not     enabled
       not     locked
       not     frozen
       not     expired: security count
       not     supported: enhanced erase
       30min for SECURITY ERASE UNIT.
HW reset results:
       CBLID- above Vih
       Device num = 1 determined by the jumper
Checksum: correct

Préparer les partitions

En règle général, j’installe toujours Linux sur plusieurs partitions. Voici ma règle de partition :


/dev/hdb1: Partition primaire de 100 MB correspondant à /boot
/dev/hdb2: Partition primaire de 500 MB correspondant à la racine /
/dev/hdb5: Partition étendue de 5000 MB correspondant à /usr
/dev/hdb6: Partition étendue de 5000 MB correspondant à /opt
/dev/hdb7: Partition étendue de 5000 MB correspondant à /var
/dev/hdb8: Partition étendue de 2000 MB correspondant au swap
/dev/hdb9: Partition étendue du reste du disque correspondant à /home

J’ai volontairement choisi des tailles assez grandes car le disque fait quand même 41 GB. Ces tailles peuvent être très différentes avec des disques de capacités inférieures. De même, j’inverse parfois hdb7 et hdb8 pour essayer de placer le swap vers la moitié du disque dur. Pour comparer, voici une règle appliquée à un disque de 4 GB (Pour ceux que cela interesse, il s’agit d’un IBM-DCAA-34330) :


    Name            Flags           Part Type     FS Type                [Label]             Size (MB)
-----------------------------------------------------------------------------------------------------------
    hda1                             Primary      Linux ext3             [/boot]                 98,71
    hda2                             Primary      Linux ext3             [/]                    501,75
    hda5                             Logical      Linux ReiserFS         [/usr]                1497,01
    hda6                             Logical      Linux ReiserFS         [/opt]                 197,41
    hda7                             Logical      Linux swap / Solaris                          501,75
    hda8                             Logical      Linux XFS              [/var]                1003,49
    hda9                             Logical      Linux XFS              [/home]                534,65

Comme vous pouvez le constater, il existe quand même deux constantes, la taille de /boot et la taille de la raçine / qui font respectivement 100 MB et 500 MB.

Préparez donc la taille de vos partitions, dans mon cas, après être passé par cfdisk, j’ai la structure suivante :


    Name            Flags           Part Type     FS Type                [Label]             Size (MB)
-----------------------------------------------------------------------------------------------------------
    hdb1            Boot             Primary      Linux                                         100,13
    hdb2                             Primary      Linux                                         500,10
    hdb5                             Logical      Linux                                        5004,07
    hdb6                             Logical      Linux                                        5004,07
    hdb7                             Logical      Linux                                        5004,07
    hdb8                             Logical      Linux swap / Solaris                         2047,87
    hdb9                             Logical      Linux                                       23513,85

Vérifier les blocks défecteux

Dans notre cas, il n’existe pas encore de système de fichier sur les partitions crées. Je n’ai donc aucun risque à employer badblocks en lecture/écriture sur les partitions. Par ailleurs, j’ai pour principe d’enregistrer dans un fichier la liste des blocs défecteux. La commande pour vérifier les blocs défecteux est donc :


# badblocks -w -o /tmp/badblocks-hdb1 -b 1024 /dev/hdb1

ATTENTION, si vous voulez utiliser badblocks sur des partitions déjà crées, Il ne faut pas utiliser le test en écriture et il faut indiquer la bonne taille de bloc, relative au système de fichier utilisé. Pour reprendre l’exemple précedent, et si la partition /dev/hdb1 est une partition de type ext3, j’utiliserais la commande suivante :


# badblocks -n -o /tmp/badblocks-hdb1 -b 1024 /dev/hdb1

Trouver la taille d’un bloc en fonction du file system

-  Pour les formats ext2/ext3, c’est la commande dumpe2fs qui nous la donne :


# dumpe2fs /dev/hdb1 | grep -i 'block size'

-  Pour les formats reiserfs, c’est la commande debugreiserfs qui nous la donne :

# debugreiserfs /dev/hdb5 | grep -i 'Blocksize'

-  Pour les formats XFS, c’est la commande xfs_info qui nous la donne, après que le filesystem ait été monté :

# xfs_info /dev/hdb7
meta-data=/mnt                   isize=256    agcount=8, agsize=305422 blks
        =                       sectsz=512
data     =                       bsize=2048   blocks=2443376, imaxpct=25
        =                       sunit=0      swidth=0 blks, unwritten=1
naming   =version 2              bsize=4096
log      =internal               bsize=2048   blocks=5120, version=1
        =                       sectsz=512   sunit=0 blks
realtime =none                   extsz=65536  blocks=0, rtextents=0

Vider les partitions

J’aime bien mettre tout à zero quand j’initialise une partition, cela permet de re-tester la fiabilité de l’écriture, et d’éffacer tout ce qu’il pouvait s’y trouver auparavant :


# dd if=/dev/zero of=/dev/hdb1 bs=1024k

Formater les partitions

Pour les petites partitions, surtout en ext2 ou ext3, j’aime bien utiliser une taille de bloc de 1024 octets, par contre, pour les systèmes ReiserFS ou XFS, toujours sur de petites partitions, j’aime bien utiliser une taille de bloc de 2048 octets plutôt qu’une taille de 4096 octets (par défaut). En fait, tout cela dépend de ce que l’on va mettre sur ce type de partition. Si c’est pleins de petits fichiers, il vaut mieux ne pas avoir une taille de bloc trop importante. Par contre, si une partition est vouée à reçevoir de gros fichiers, je laisse plutôt 4096 comme taille de bloc, voir même 8k ou plus.

Nous allons maintenant créer les systèmes de fichiers pour chacune des partitions crées :


# mkfs.ext3 -c -j -b 1024 -l /tmp/badblocks-hdb1 /dev/hdb1
mke2fs 1.37 (21-Mar-2005)
étiquette de système de fichiers=
Type de système d'exploitation: Linux
Taille de bloc=1024 (log=0)
Taille de fragment=1024 (log=0)
24480 inodes, 97744 blocs
4887 blocs (5.00%) réservé pour le super usager
Premier bloc de données=1
12 bloc de groupes
8192 blocs par groupe, 8192 fragments par groupe
2040 inodes par groupe
Archive du superbloc stockée sur les blocs:
       8193, 24577, 40961, 57345, 73729

Vérification de blocs corrompus (test en mode lecture seulement): complété                    744
écriture des tables d'inodes: complété
Création du journal (4096 blocs): complet
écriture des superblocs et de l'information de comptabilité du système de fichiers: complet

Le système de fichiers sera automatiquement vérifié tous les 35 montages ou après
180 jours, selon la première éventualité.  Utiliser tune2fs -c ou -i pour écraser la valeur.

# mkfs.ext3 -c -j -b 1024 -l /tmp/badblocks-hdb2 /dev/hdb2
mke2fs 1.37 (21-Mar-2005)
étiquette de système de fichiers=
Type de système d'exploitation: Linux
Taille de bloc=1024 (log=0)
Taille de fragment=1024 (log=0)
122400 inodes, 488376 blocs
24418 blocs (5.00%) réservé pour le super usager
Premier bloc de données=1
60 bloc de groupes
8192 blocs par groupe, 8192 fragments par groupe
2040 inodes par groupe
Archive du superbloc stockée sur les blocs:
       8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409

Vérification de blocs corrompus (test en mode lecture seulement): complété                    376
écriture des tables d'inodes: complété
Création du journal (8192 blocs): complet
écriture des superblocs et de l'information de comptabilité du système de fichiers: complet

Le système de fichiers sera automatiquement vérifié tous les 24 montages ou après
180 jours, selon la première éventualité.  Utiliser tune2fs -c ou -i pour écraser la valeur.

# mkfs.reiserfs -b 2048 -B /tmp/badblocks-hdb5 /dev/hdb5
mkfs.reiserfs 3.6.19 (2003 www.namesys.com)

A pair of credits:
Vladimir Demidov wrote the parser for sys_reiser4(), the V3 alpha port, part of
the V3  journal  relocation code,  and helped  Hans keep  the business  side of
things running.

The  Defense  Advanced  Research  Projects Agency (DARPA, www.darpa.mil) is the
primary sponsor of Reiser4.  DARPA  does  not  endorse  this project; it merely
sponsors it.


Guessing about desired format.. Kernel 2.6.8-3-686 is running.
Format 3.6 with standard journal
Count of blocks on the device: 2443360
Number of blocks consumed by mkreiserfs formatting process: 8377
Blocksize: 2048
Hash function used to sort names: "r5"
Journal Size 8193 blocks (first block 34)
Journal Max transaction length 512
inode generation number: 0
UUID: e3b50343-03e6-4769-8083-142f26fc2a27
ATTENTION: YOU SHOULD REBOOT AFTER FDISK!
       ALL DATA WILL BE LOST ON '/dev/hdb5'!
Continue (y/n):y
Initializing journal - 0%....20%....40%....60%....80%....100%
Syncing..ok

Tell your friends to use a kernel based on 2.4.18 or later, and especially not a
kernel based on 2.4.9, when you use reiserFS. Have fun.

ReiserFS is successfully created on /dev/hdb5.

# mkfs.reiserfs -b 2048 -B /tmp/badblocks-hdb6 /dev/hdb6
mkfs.reiserfs 3.6.19 (2003 www.namesys.com)

A pair of credits:
Continuing core development of ReiserFS is  mostly paid for by Hans Reiser from
money made selling licenses  in addition to the GPL to companies who don't want
it known that they use ReiserFS  as a foundation for their proprietary product.
And my lawyer asked 'People pay you money for this?'. Yup. Life is good. If you
buy ReiserFS, you can focus on your value add rather than reinventing an entire
FS.

The  Defense  Advanced  Research  Projects Agency (DARPA, www.darpa.mil) is the
primary sponsor of Reiser4.  DARPA  does  not  endorse  this project; it merely
sponsors it.


Guessing about desired format.. Kernel 2.6.8-3-686 is running.
Format 3.6 with standard journal
Count of blocks on the device: 2443360
Number of blocks consumed by mkreiserfs formatting process: 8377
Blocksize: 2048
Hash function used to sort names: "r5"
Journal Size 8193 blocks (first block 34)
Journal Max transaction length 512
inode generation number: 0
UUID: bc735769-eb31-4b0b-9554-1ddf93ee28bd
ATTENTION: YOU SHOULD REBOOT AFTER FDISK!
       ALL DATA WILL BE LOST ON '/dev/hdb6'!
Continue (y/n):y
Initializing journal - 0%....20%....40%....60%....80%....100%
Syncing..ok

Tell your friends to use a kernel based on 2.4.18 or later, and especially not a
kernel based on 2.4.9, when you use reiserFS. Have fun.

ReiserFS is successfully created on /dev/hdb6.

# mkfs.xfs -b size=2048 /dev/hdb7
meta-data=/dev/hdb7              isize=256    agcount=8, agsize=305422 blks
        =                       sectsz=512
data     =                       bsize=2048   blocks=2443376, imaxpct=25
        =                       sunit=0      swidth=0 blks, unwritten=1
naming   =version 2              bsize=4096
log      =internal log           bsize=2048   blocks=5120, version=1
        =                       sectsz=512   sunit=0 blks
realtime =none                   extsz=65536  blocks=0, rtextents=0

# mkswap -c /dev/hdb8
Setting up swapspace version 1, size = 2047832 kB
no label, UUID=6c41bda8-9040-4552-86ed-b04d1618b4f6

# mkfs.xfs -b size=2048 /dev/hdb9
meta-data=/dev/hdb9              isize=256    agcount=16, agsize=717584 blks
        =                       sectsz=512
data     =                       bsize=2048   blocks=11481344, imaxpct=25
        =                       sunit=0      swidth=0 blks, unwritten=1
naming   =version 2              bsize=4096
log      =internal log           bsize=2048   blocks=5606, version=1
        =                       sectsz=512   sunit=0 blks
realtime =none                   extsz=65536  blocks=0, rtextents=0
Note : Comme vous pouvez le constater, il n’est pas possible d’indiquer la liste des blocs défecteux lors du formattage en XFS. Donc, si vous avez des blocs défecteux sur la partition XFS, mieux vaut la passer en ReiserFS, ou essayer JFS.

Conclusion

Vous voilà avec un disque prêt à reçevoir Linux, sans passer par des utilitaires tels que partman ou le CD d’installation. Maintenant, dans l’article suivant, nous allons pouvoir copier le contenu du disque de boot sur le disque secondaire que nous venons de préparer.

1 commentaire

Préparer un disque dur pour installer Linux 30 avril 2007

Salut,

Super article. Eventuellement, je te suggère de le revoir afin d’introduire LVM, qui permet de restructurer aisément les partition. C’est bien pratique quand le disque est trop petit (et qu’on lui ajoute un grand frère) ou qu’on a une partition qui grossit plus vite que prévue.

 

Poster un nouveau commentaire


Modération de ce forum :

Ce forum est modéré à priori : votre contribution n'apparaîtra qu'après avoir été validée par un administrateur du site.


Emoticones :

(Pour insérer un émoticone, cliquez simplement sur l'image.)

:Thumbs::aime::bof::clindoeil::diable::en_colere::etoile::exclamation::fleur::interrogation::langue::lol::lunettes::mouai::pas_content::pleure_de_rire::rigolo::sourire::surprit::triste::xtra:

Titre :

Texte de votre message :

(Pour créer des paragraphes, laissez simplement des lignes vides.)


Lien hypertexte (optionnel)

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d'informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)


Qui êtes-vous ? (optionnel)


Articles les plus consultés

Téléchargez Firefox !

Libricks.org est motorisé par le logiciel libre Spip 1.8.3 associé au squelette graphique BliP 0.91

16 rubriques ... 30 articles ... 18 commentaires ... 28 sites référencés ... 50 visiteurs par jour (99041 au total)

Haut de page | XHTML 1.0 | CSS 2