Outils pour utilisateurs

Outils du site


informatique_newbie_disks

Introduc

monter une partition d'une image disk

kpartx

Soit un disk:

# fdisk -l /dev/vgraid1/win2k_test

Disk /dev/vgraid1/win2k_test: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x6a4a6e04
                  Device Boot      Start         End      Blocks   Id  System
/dev/vgraid1/win2k_test1   *           1        1304    10474348+   7  HPFS/NTFS

On aimerait bien mounter “win2k_test1” …

Lister les partitions existentes:

# kpartx -l /dev/vgraid1/win2k_test
vgraid1-win2k_test1 : 0 20948697 /dev/vgraid1/win2k_test 63

Ajouter les partitions a son systeme:

# kpartx -a /dev/vgraid1/win2k_test

Et voila les partitions dans /dev/mapper/… :

brw-rw----  1 root disk 253, 27 mai 17 20:44 vgraid1-win2k_test
brw-rw----  1 root disk 253, 28 mai 18 11:51 vgraid1-win2k_test1

Maintenant, on peut mounter comme d'hab:

# mount -o loop /dev/mapper/vgraid1-win2k_test1 /mnt/win

aprés utilisation, a la fin, on démounter:

# umount /mnt/win

Et puis:

# kpartx -d /dev/vgraid1/win2k_test

a la main

A la main, on aurait fait comme cela:

# fdisk -ul eeePC_backup_2009-09-20.dd
You must set cylinders.
You can do this from the extra functions menu.

Disk eeePC_backup_2009-09-20.dd: 0 MB, 0 bytes
255 heads, 63 sectors/track, 0 cylinders, total 0 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x3c173c16

                     Device Boot      Start         End      Blocks   Id  System
eeePC_backup_2009-09-20.dd1   *          63      192779       96358+  83  Linux
eeePC_backup_2009-09-20.dd2          192780     7807589     3807405   83  Linux

Récupérer l'information de la partition visé dans la colonne “Start” (“Debut”):

192780

Notons bien que “Units = sectors of 1 * 512 = 512 bytes”.

Ainsi, nous avons une position relativement au debut:

512*192780

… qu'on utilise pour monter cette partition:

# mount -o loop,offset=$((512*192780)) eeePC_backup_2009-09-20.dd /mnt/test

et voila, la partition est visible dans /mnt/test ;)

Undelete

GRUB

GRUB 2

RAID 1 et boot

Si on a un RAID 1 (avec mdadm), GRUB plante si on essaye de demarrer sur le 2ieme disk.

La solution: Forcer le mode “console” ajoutant (ou décommentant) la ligne:

GRUB_TERMINAL=console

Et voila.

default

Choisir l'entrée par defaut, en modifiant le fichier /etc/default/grub :

GRUB_DEFAULT=4

Et puis:

# update-grub2

lvm/xen

Virer les entrées “parasites” , comme des partitions “lvm/xen”.

Modifier le fichier /etc/default/grub et ajouter:

GRUB_DISABLE_OS_PROBER="true"

Et puis:

# update-grub2

vga

“vga=” est obsolete!

Il y a 2 mode graphique géré par grub:

#la resolution du menu grub
#la resolution de la console linux, aprés le passage par le menu grub

Pour connaitre les résolutions possibles:

#reboot sur le menu grub
#taper la touche "c" pour entrer dans le shell
#entrer "vbeinfo" et on voit la liste...

Exemple:

640x400x16
800x600x32
1024x768x32
1280x1024x32

Rien de plus que “1280x…” dommage :-(

Retour sous linux, il faut modifier le fichier /etc/default/grub et faire, par exemple:

# TJ -------------
GRUB_GFXMODE=800x600
GRUB_GFXPAYLOAD_LINUX=1280x1024x32
# ----------------
  • “gfxmode” est la resolution du menu grub.
  • “gfxpayload” est la resolution sous linux
# update-grub
# reboot

device.map

Lien: http://www.cepcasa.info/blog/?p=193

Il n'existe plus, en theorie.

En pratique, pour ajouter ou retirer un disk du “pool grub”, il faut faire:

# dpkg-reconfigure grub-pc

Et suivre et modifier des trucs…

Voila.

GRUB 1

Ecrasement MBR et SuperGrub

Aprés installation de XP, qui a joyeusement écrasé la MBR, je n'ai pas reussi a reinstaller GRUB par les methodes manuelles.

J'ai utilisé le CD bootable supergrub qui est ici:
http://supergrub.forjamari.linex.org

Grub et Splash

# apt-get install grub-splashimages

Ensuite, editer grub afin d'ajouter:

splashimage=/grub/splashimages/firework.xpm.gz

On peut aussi essayé le logiciel grime ou grubconf.

Deplacer une partition

Preambule: Le CD bootable GParted est trés bien pour cela aussi.

Aprés avoir agrandi mon disk, j'ai voulu deplacer la partition linux a la fin… Ca ressemblait à ça:

 # fdisk -u -l
 Disque /dev/hda: 80.0 Go, 80026361856 octets
 255 têtes, 63 secteurs/piste, 9729 cylindres, total 156301488 secteurs
 Unités = secteurs de 1 * 512 = 512 octets
 Périphérique Amorce    Début         Fin      Blocs    Id  Système
 /dev/hda1   *          63    16771859     8385898+   7  HPFS/NTFS
 /dev/hda2        16771860    37254734    10241437+   5  Extended
 /dev/hda3        37254735    78172289    20458777+  83  Linux
 /dev/hda4        78172290    80292869     1060290   82  Linux swap / Solaris
 /dev/hda5        16771923    37254734    10241406    7  HPFS/NTFS

En clair, au dela des 40 Go (37254734+1), j'ai que du vide.

On souhaite conserver l'ordre des partitions… c-a-d: le swap aprés la partition Linux. On va faire ça par étape:

Deplacer la partition Linux

En etat du disk:

Le dernier secteur du disk est le numéro: 156301487 (la numérotation commence a 0) Il y a donc 156301488 secteurs en tout, soit: 156301488*512 = 80026361856 ⇒ 80026361856/1024^3 , soit 74 Go…

La taille de la partition Linux est: (78172289-37254735)+1 = 40917555 , soit 19 Go La taille du swap est (etait): (80292869-78172290)+1 = 2120580 , soit 1 Go

Donc, la nouvelle partition aura pour 1er secteur: 156301488-2120580-40917555 = 113263353 Et pour le swap: 113263353+40917555 = 154180908

En clair:

Fin du disk 156301488
Swap dernier secteur 156301487
Swap premier secteur 154180908
Linux dernier secteur 154180907
Linux premier secteur 113263353
en dessous… 113263352
Debut du disk

Notez qu'il peut être encore temps de decider d'agrandir ou reduire la taille de la partition SWAP. Ici, on part du principe qu'on veut avoir la même taille qu'avant.

Copier la partition Linux

Il faut d'abord booter sur un live cd, genre Kubuntu. Il y a trop de partition pour cela (en tout cas, fdisk refuse d'en ajouter une) donc on va d'abord supprimer le swap.

 # fdisk -u /dev/hda
 (d) delete 
 (4) partition swap

Ensuite, on cree une nouvelle partition Linux de la même taille que celle qu'on va copier, mais a la fin du disk.

 (n)
 (p) primary partition
 la partition aura le numero 4
 First sector: 113263353
 Last sector: 154180907

Maintenant on ecrit sur disk:

 (w) ecriture

Et on sort:

 (q)

On verifie que le systeme voit bien ce qu'on a fait (problème de synchro disk):

 # fdisk -u -l

Ok… Maintenant on lance la copie et on va prendre un café:

 # dd if=/dev/hda3 of=/dev/hda4 

Quelques minutes plus tard, on 2 partitions identique :-) Effacer la partition /dev/hda3 ! on en a plus besoin !
Il y a aussi beaucoup plus rapide avec:

 # dd if=/dev/hda3 of=/dev/hda4 bs=4k

Effacer la partition Linux hda3

 # fdisk -u /dev/hda
 (d) delete
 (3) partition hda3

Maintenant, il faut recreer le swap…

Creer le swap

Ce n'est pas indispensable, vous pouvez sauter cette etape si vous voulez booter sans swap… (c'est curieux non?)

 # fdisk -u /dev/hda
 (n) new
 (p) primary partition
 First sector: 154180908
 Last sector: 156301487
 La partition /dev/hda3 est créé !

Oups, les partitions sont inversés… pas de problème

 (x) Menu expert
 (f) fix order je sais pas quoi
 (p) print

Et voila

 (r) retour au menu principal

Marquer correcter le type de partition en SWAP:

 (t) toggle
 (4) choisir /dev/hda4
 (82) pour swap

C'est presque fini.
Revenir sous shell et faire:

 # mkswap -c /dev/hda4

Un premier bilan

On a alors:

 # fdisk -u -l
 Périphérique Amorce    Début         Fin      Blocs    Id  Système
 /dev/hda1   *          63    16771859     8385898+   7  HPFS/NTFS
 /dev/hda2        16771860   113258249    48243195    5  Extended
 /dev/hda3       113263353   154180907    20458777+  83  Linux
 /dev/hda4       154180908   156301487     1060290   82  Linux swap / Solaris
 /dev/hda5        16771923    37254734    10241406    7  HPFS/NTFS

Maintenant, il faut un peu bidouiller les fichiers dans Linux.
Au final, ca m'a semblé inutile, mais il faut verifier cela.

Mounter la partition Linux

 # mkdir /mnt/a
 # mount /dev/hda3 /mnt/a

Le mystère UUID

Avant de continuer, il faut que vous sachiez qu'Ubuntu a pris la mauvaise habitude de remplacer les /dev/hdxxx par leur equivalent UUID… parait que c'est top mieux. On voit la relation /dev/hdxxx vers UUID (ou l'inverse) dans:

 /dev/disk/by-uuid

Avec ca, vous etes a la suite.

GRUB

Il faut que GRUB retrouve ses petits disk, donc on verifie que les UUID n'ont pas changé, dans le doute, on rajoute une entrée au menu (par exemple) en précisant que le disk root est /dev/hda3

fstab

Editer /mnt/a/etc/fstab Et verifier que les UUID des disks ne vont pas poser de problèmes, dans le doute, remplacer par: /dev/hda3 et /dev/hda4 là où c'est necessaire.

Reboot

On reboot… c'est beau… ca marche…. Enfin presque.

Le SWAP a peut être besoin d'être remonté (ca m'est arrivé):

D'abord est-ce qu'il existe:

  # free
  Swap est a 0 0 ???

Et aussi:

  # cat /proc/swaps
  ne renvoit rien...

Donc, pas de swap: pas grave:

 # mkswap -c /dev/hda4

(ce qu'on a deja fait, mais bon…)
Si necessaire, verifier que le /etc/fstab reference bien le swap

 # swapon -a

Ou bien:

 # swapon /dev/hda4

Si on est pas certain de fstab

Et voila ? Ca devrait fonctionner.

Redimensionner les partitions NTFS

Pour resumé, rien ne fonctionnait… ni Qparted sous Kubuntu, ni resizentfs…
Et puis j'ai booté sur une image iso GParted-Clonezilla:

  http://gparted.sourceforge.net/livecd.php

Et avec GParted , c'etait super facile.

Mounter un disk FreeBSD

(Enfin presque)

 # mount -r -t ufs -o ufstype=44bsd /dev/hda1 /mnt/a

Par exemple… Ou essayer /dev/hda5 /dev/hda8 etc…

Ou bien ca aussi:

 # mount -r -t ufs -o ufstype=ufs2 /dev/hda5 /mnt/a

Formater un disk

partitionner

Utiliser fdisk.

Par exemple:

 # fdisk /dev/hdb

Et puis, effacer les partitions:

 > d

Creer une nouvelle partition (linux):

 > n 

Et suivre les instructions…
On verifie l'etat des partitions (non encore sauvegardé):

 > p

Et on ecrit:

 > w

Et on sort:

 > q

Effacer tout un disk

C'est simple lorsqu'on le sait:

 # dd if=/dev/zero of=/dev/hdb

Le disque est alors rempli de zero… (et on est bon pour re-creer les partitions !)

Pour savoir ou en est dd dans son traitement:

 # kill -USR1 pid_du_dd

(sur l'ecran du dd (ou screen)):

 30536961+0 records in
 30536961+0 records out
 15634924032 bytes (16 GB) copied, 874.499 seconds, 17.9 MB/s

Effacer tout un disk, avec des données aleatoires !!!!

Trucs pour les espions:

 # dd if=/dev/urandom of=/dev/hdb

J'ai juste un doute sur la vitesse du traitement…

:!: le plus simple, c'est de remplir de zero , car il n'est pas prouvé qu'on puisse recupérer des données d'un disk aprés ça

informatique_newbie_disks.txt · Dernière modification : 2011/03/02 21:56 de thierry