récupération d'une partition ufs (dd)

Bonsoir,

J’ai acquis un disc dur neuf (80go) pour mon portable sur lequel je me suis empressé d’installé une debian lenny cependant j’aimerais récupérer ma freebsd (la fameuse slice/“partition” ufs) qui été installée et configurée sur l’ancien disque dur et l’ajouter sur le nouveau disc dur (j’avais garder de l’espace disque en prévision) pour être en dualboot debian lenny/freebsd, cependant je ne suis pas sur de la démarche pour aboutir à un tel résultat.

Pour le moment j’ai branché l’ancien disc dur (contenant freebsd) en usb sur mon portable, et j’ai montée la slice freebsd pour au moins faire une copie de quelques fichiers de configuration au cas où…

#Voici la commande pour monter une slice freebsd (ici sda2)je la met en pensant qu’elle pourra peut-être resservir à d’autres personnes)

#mount -r -t ufs -o ufstype=ufs2 /dev/sda2 /mnt/freebsd

Maintenant ce que je pensais faire c’est utilisé la commande dd pour déplacer le système d’un disc à l’autre mais le problème c’est que je ne sais pas ce que je dois faire pour la destination (of=/dev/?)sachant qu’on ne peut pas installer freebsd dans une partition étendue linux, dois-je simplement créer une partition primaire en ufs ou sans la formater dans l’espace disque qu’il me reste (ce sera la première et bonne occasion d’utiliser la commande dd)?

Ensuite, dans l’hypothèse (je le sent mal la partition de destination)que j’ai pu copier à l’identique le système (la slice freebsd) de l’ancien disc dur sur le nouveau, je me demande comment ça va se passer au niveau du bootloader, je suppose que le bootloader de freebsd (Booteasy) ne se réinstallera pas dans le mbr avec la commande dd et que je devrais simplement configurer mon grub actuel.

Sinon est-il possible de se servir d’une image d’un système (créer avec dd par exemple) comme machine virtuelle (avec virtualbox par exemple)?

Merci de m’éclaircir, j’ai scruté le net toute la soirée j’ai rien trouvé d’utile pour mon cas, je bloque surtout sur l’histoire de la partition de destination et des options éventuellement nécessaire de dd

J’ai un peu avancé je crois j’ai crée une partition primaire (hda4) sur le nouveau disc dur (hda) de taille légérement supérieure à la taille de la slice freebsd de l’ancien disc dur et j’ai mis le même type (Hexcode) de partition que la slice sur l’ancien disc dur à savoir “a5”

un fdisk -l me donne ça à présent

[code]Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000cda49

Device Boot Start End Blocks Id System
/dev/hda1 1 122 979933+ 82 Linux swap / Solaris
/dev/hda2 * 123 487 2931862+ 83 Linux
/dev/hda3 488 4864 35158252+ 5 Extended
/dev/hda4 4865 6202 10747485 a5 FreeBSD
/dev/hda5 488 4134 29294464+ 83 Linux
/dev/hda6 4135 4499 2931831 83 Linux
/dev/hda7 4500 4864 2931831 83 Linux

Disk /dev/sda: 20.0 GB, 20003880960 bytes
16 heads, 63 sectors/track, 38760 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Disk identifier: 0x8f800100

Device Boot Start End Blocks Id System
/dev/sda1 1 18435 9291208+ 7 HPFS/NTFS
/dev/sda2 * 18436 38760 10243800 a5 FreeBSD[/code]

Maintenant je suis pas convaincu que cela suffit pour pouvoir déplacer (avec dd) /dev/sda2 (slice freebsd originale) sur /dev/hda4 (destination) sachant que cette dernière n’est pas formatée (et qu’il n’y a apriori pas moyen de formater en ufs nativement* sous linux), ne connaissant pas bien le fonctionnement de dd

*il semblerait qu’il existe des outils pour formater en ufs/ufs2 sous linux tels que ufs-tools, mkfs.ufs, mkufs, ufsutils seulement pas moyen d’en trouver dans mes dépôts personnellement et les sources que je trouve sur le net dates d’hérode donc je préfére pas les compiler

va copier le contenu de sda2 dans hda4 bloc par bloc, formatage y compris.
L'option bs qui spécifie la taille de bloc sert juste à accélérer la copie, j'ai observé sans pouvoir l'expliquer qu'avec la taille par défaut de 512 octets, la vitesse de transfert était plus lente qu'elle ne devrait.

Ensuite, tu peux essayer de monter hda4 en lecture seule pour voir si tu accèdes bien aux fichiers. Concernant le chargeur (bootloader) de FreeBSD que je ne connais pas du tout, si c'est comme les chargeurs de Linux il ne sera peut-être pas suffisant d'inclure hda4 dans le menu de démarrage de grub. Si un bout du chargeur BSD était dans le MBR de l'ancien disque, ça ne marchera pas car dd n'aura pas copié ce bout. Si comme lilo le chargeur faisait référence à des coordonnées (CHS, LBA) relatives à l'ancien disque ou à ses partitions, ces coordonnées ne seront plus valides sur le nouveau disque.

va copier le contenu de sda2 dans hda4 bloc par bloc, formatage y compris.
L’option bs qui spécifie la taille de bloc sert juste à accélérer la copie, j’ai observé sans pouvoir l’expliquer qu’avec la taille par défaut de 512 octets, la vitesse de transfert était plus lente qu’elle ne devrait.

Ensuite, tu peux essayer de monter hda4 en lecture seule pour voir si tu accèdes bien aux fichiers. Concernant le chargeur (bootloader) de FreeBSD que je ne connais pas du tout, si c’est comme les chargeurs de Linux il ne sera peut-être pas suffisant d’inclure hda4 dans le menu de démarrage de grub. Si un bout du chargeur BSD était dans le MBR de l’ancien disque, ça ne marchera pas car dd n’aura pas copié ce bout. Si comme lilo le chargeur faisait référence à des coordonnées (CHS, LBA) relatives à l’ancien disque ou à ses partitions, ces coordonnées ne seront plus valides sur le nouveau disque.

merci pour tes lumières et donc quand dd va formater, le fait que le système de fichier soit ufs ne va pas poser problème?

demain matin j’essaierais la commande et je la monterais en lecture et je te dirais ce que j’obtiens.

pour le bootloader je l’avais installé dans le mbr mais justement je ne veux pas le récupérer donc ça c’est bon, mais je me demandais si le fait que la partition source ait le flag * (boot/active) n’allait pas poser de problème (genre me retrouver avec 2 partitions marquées actives sur hda…ce qui est théoriquement impossible)

  1. dd ne va rien formater du tout, il va simplement copier en conservant le format.

  2. Je comprends que tu ne veuilles pas du bout de chargeur de BSD dans le MBR de hda, mais si ce bout de chargeur est nécessaire au démarrage de BSD (comme le bout de lilo ou grub qui est dans le MBR est nécessaire au démarrage de Linux), il va bien falloir l’installer quelque part sur hda.

  3. On peut très bien avoir plusieurs partitions marquées actives. Simplement dans ce cas le code amorce standard (MS-DOS) du MBR refusera de booter. En revanche lilo et grub s’en fichent, ils n’utilisent pas ce flag mais leur propre configuration pour booter. Donc dans un cas comme dans l’autre, ça ne sert à rien.

c’est mal parti j’ai l’impression : j’ai lancé la commande dd et par curiosité j’ai fais un ps aux | grep ‘dd if’ | grep -v grep dans un autre terminal et j’ai vu que le processus était dans l’état D+/uninterruptible sleep…

Je reviens sur ce que j’ai écris au dessus :
La mauvaise impression était peut-être précipitée cet état n’est pas nécessairement mauvais (même si on ne peut pas tuer le processus) et il vaut peut-être mieux qu’il soit ininterruptible vu ce qu’il fait.

Si tu l’arrêtes avec ctrl+c, qu’affiche-t-il ?

en recherchant un peu plus d’information sur l’état D je me dis que c’est peut-être normal que dd s’y mette étant donné que c’est quand même une tâche critique (agit sur le système de fichier) et qu’il ne vaut mieux pas qu’elle soit interrompue

et comme tu dis même si les processus dans l’état D ne peuvent pas être tuer même avec kill -9, comme là je l’ai pas mis en arrière plan je pense que ctrl+c le stopperais en cas de problème

Non, cette commande n’agit pas sur le système de fichiers. Elle copie une partition dans une autre comme elle copierait un fichier dans un autre.

ok :blush:, je vais me documenter de ce pas sur cette commande pour mieux la comprendre :smt002

dommage que dd ne dispose pas de mode verbose un peu à la manière de rsync pour voir l’avancement, parceque ne voyant pas le bout de la commande je l’ai interrompu et apparemment elle fonctionnait elle avait copier 7,9go.

j’ai trouvé une alternative :

ça affiche des petits points mais pas l’avancement en pourcentage comme je l’aurais souhaité (c’est surtout que mon port usb est en 1.1 donc c’est vraiment long et pas moyen de savoir où ça en est)

Peut-être qu’avec un pipeline de dd avec une autre commande permettrait de s’approcher de cette fonctionnalité mais je séche

Tu peux reprendre la copie à peu près où tu l’as interrompue en ajoutant à la commande les options ‘seek= skip=’ où est le nombre de blocs (de la taille spécifiée par bs) déjà copiés, qu’à dû afficher dd lorsqu’il s’est arrêté. 7,9 Go / 4096 octets/bloc, ça doit faire dans les 1904296 blocs.

merci je crois que ça me sera utile bientot :wink:

10525.670 secondes après avoir lancé la commande celle-ci rend la main à son terminal parent sans retour d’erreur.

je monte la partition

puis ls dans /mnt/freebsd => rien, vide

une vérification avec gparted me donne la même chose qu’avant la commande à savoir, pour hda4:

système de fichier : inconnu
taille : 10,25go
utilisé : —
inutilisé :—

quand je tape

que je tape l’option b pour entrer en BSD mode
j’obtiens ceci : "/dev/hda4p4 has invalid starting sector 0.
mais il me semble que j’obtenais déjà ça aussi avant