Table des matières
Manipulations des périphériques
Les périphériques sont essentiels dans un système linux, ils hébergent les systèmes de fichiers lus par le système d'exploitation.
Opérations classiques
Il est commun de monter et démonter des périphériques, lorsque vous branchez des disques externes par exemple.
mount [-t <type>] <perif> <dossier>
où:
<type>
est le type du système de fichiers, la liste est disponible dans la page de manuel filesystems(5). Ce paramètre est optionnel, le système de fichier pouvant souvent être détecté automatiquement<perif>
est le périphérique que l'on souhaite monter:/dev/sda2
par exemple pour la seconde partition du disque/dev/sda
.<dossier>
est le répertoire où monter le système de fichiers. un dossier vide fait l'affaire, le répertoire/mnt
a été créé dans ce but dans GNU/Linux.
pour le démonter, la commande est la suivante:
umount <dossier>
une autre opération courante est la copie de disque ou de partition.
dd if=<source> of=<destination>
La source et destination peuvent être ce que l'on souhaite: un fichier, un périphérique, etc.
par exemple la commande suivante fait une copie bloc à bloc du disque /dev/sda
dans le fichier du répertoire courant backup.img
.
Pour plus de détails, lire la section dédiée.
Copie avancé de disques et partitions
Rappels
Il est important de rappeler le fonctionnement du partitionnement d'un disque. Par exemple pour un disque avec trois partitions primaires (les partitions logiques ne sont pas décrites ici):
|------|---------------|-------------------|------------------------|-----------------| header partition 1 partition 2 partitions 3 (second header)
Nous appelons ici header tout ce qui est présent avant la première partition du disque contenant entre autres la table de partitions (MBR [en], GPT [en], etc.)
Le second header peut être présent dans le cas d'un partitionnement GPT.
disques et partitions
le répertoire /dev
est peuplé de fichiers
exemple avec une clef USB:
$ file /dev/sdb # périphérique bloc décrivant le disque /dev/sdb: block special $ file /dev/sdb1 # périphérique bloc décrivant la première partition /dev/sdb1: block special
/dev/sdb
est le périphérique bloc décrivant la clef complète. Les partitions sont accessibles dans /dev/sdb{i}
pour i
entier. il est possible de lister ces partitions grâce à la commande lsblk
$ lsblk /dev/sdb NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb 8:16 0 3.7G 0 disk ├─sdb1 8:17 0 56M 0 part └─sdb2 8:18 0 3G 0 part
copie bloc à bloc
La copie d'un disque complet dans un fichier peut se faire grâce à la commande dd
dd if=/dev/sdb of=mondisque.img
Il est également parfois possible de télécharger des images depuis internet.
périphériques boucle
Il est possible d'ajouter ce disque comme le système l'aurait fait avec un périphérique physique grâce aux périphériques boucle:
# losetup /dev/loop0 mondisque.img
Pour accéder aux différentes partitions, il est possible d'ajouter un offset. la taille d'un offset est le nombre de blocs multiplié par la taille d'un bloc. On peut récupérer la taille des blocs grâce à la commande blkid
:
# blkid -i /dev/loop0 MINIMUM_IO_SIZE=512 PHYSICAL_SECTOR_SIZE=512 LOGICAL_SECTOR_SIZE=512
On peut aussi trouver les secteurs où commencent les partitions grâce à la commande file
$ file mondisque.img mondisque.img: x86 boot sector; partition 1: ID=0x83, starthead 32, startsector 2048, 20480 sectors; partition 2: ID=0x83, starthead 102, startsector 22528, 965769 sectors, code offset 0x0
En multipliant le secteur initial (startsector
dans le résultat de la commande file
) par la taille d'un bloc, on peut ajouter les différentes partitions aux périphériques pour travailler dessus.
# losetup -o $[2048*512] /dev/loop1 mondisque.img # losetup -o $[22528*512] /dev/loop2 mondisque.img
ces périphériques boucle peuvent ensuite être montés ou, une fois le travail terminé, supprimés:
# losetup -d /dev/loop{0,1,2}
Dans le cas où on souhaite monter directement ces partitions, il est possible d'éviter d'utiliser la commande losetup en passant directement par mount, par exemple pour monter la seconde partition de notre image:
# mount -o loop,offset=$[22528*512] mondisque.img /mnt
Commandes utiles
lsblk
Afficher les périphériques bloc
page man: manned.org [fr], man7.org [en]
example (avec des disques chiffrés avec dm-crypt dans linux mint, pour plus d'infos sur ce sujet, voir le wiki d'Arch Linux):
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 117.4G 0 disk ├─sda1 8:1 0 243M 0 part /boot ├─sda2 8:2 0 1K 0 part └─sda5 8:5 0 117.1G 0 part └─sda5_crypt (dm-0) 252:0 0 117.1G 0 crypt ├─mint--vg-root (dm-1) 252:1 0 109.5G 0 lvm / └─mint--vg-swap_1 (dm-2) 252:2 0 7.6G 0 lvm [SWAP] sdb 8:16 0 3.7G 0 disk ├─sdb1 8:17 0 56M 0 part └─sdb2 8:18 0 3G 0 part sdc 8:32 1 29.8G 0 disk ├─sdc1 8:33 1 56M 0 part /media/k-yo/boot └─sdc2 8:34 1 29.8G 0 part /media/k-yo/fc254b57-8fff-4f96-9609-ea202d871acf1
blkid
Trouver ou afficher les attributs de périphérique bloc
page man: manned.org [fr], man7.org [en]
example:
# blkid -i /dev/sda MINIMUM_IO_SIZE=512 PHYSICAL_SECTOR_SIZE=512 LOGICAL_SECTOR_SIZE=512
fdisk
Manipuler la table de partitions d'un disque
page man: manned.org [fr], man7.org [en]
dd
Convertir et copier un fichier
page man: manned.org [fr], man7.org [en]
dump
ext2/3/4 filesystem backup
page man: manned.org [en], man7.org [en]
dmesg
Afficher et contrôler le tampon des messages du noyau
page man: manned.org [fr], man7.org [en]
losetup
Mettre en place et contrôler des périphériques boucle
page man: manned.org [fr], man7.org [en]
mount / umount
Monter/Démonter un système de fichiers
page man (mount): manned.org [fr], man7.org [en]
page man (umount): manned.org [fr], man7.org [en]
mkfs
Créer un système de fichiers Linux
page man: manned.org [fr], man7.org [en]
fsck
Vérifier et réparer un système de fichiers Linux
page man: manned.org [fr], man7.org [en]
tune2fs
Ajuster les paramètres des systèmes de fichiers ext2/ext3/ext4
page man: manned.org [fr], man7.org [en]