Cette page est en cours de rédaction.
Apportez votre aide…

Ceci est une ancienne révision du document !


Cette page est en cours de construction… Si vous êtes arrivé ici, c'est que le sujet vous intéresse. Si vous avez suffisamment de connaissances, vous pouvez continuer ce topic. (Pour ma part j'ai peu de temps a y consacré en ce moment malheureusement…)

Pour plus d'info sur le sujet vous pouvez allez voir sur le forum: Deplacer contenue de / vers partition plus grande

Voir aussi la page traitant du déplacement du /home.

Déplacer sa racine(ou root (/))

Cet article s'adresse à ceux qui ont besoin de déplacer leur partition / (ou partition root). Cette partition est la partition principale du système Linux.

La principale raison de déplacer sa partition / est de conserver son système actuel avec toutes ses configurations et applications lors d'une ré_organisation des partitions de son disque dur (déplacement, agrandisement, retrécissement de partitions, utilisation d'un autre disque dur, suppression de Windows du disque dur).

La procédure de déplacement de la partition / consiste en 4 étapes :

  1. Créer une partition vide avec suffisamment de place pour accueillir le futur système. Nous appellerons cette partition dans la suite "new" en opposition à la partition actuelle que nous souhaitons déplacer et que nous appellerons "old".
  2. Copier les fichiers de l'ancienne partition ("old") à la nouvelle partition ("new").
  3. Modifier les fichiers de gestion de partition (fstab) et modifier les fichiers de démarrage du système (grub).
  4. Effacer l'ancienne partition après avoir vérifié que la nouvelle configuration de partition fonctionne correctement.
  • Posséder un live CD afin de pouvoir manipuler vos partitions de l'extérieur.
  • Posséder une connexion internet pour pouvoir installer GParted si celui ci ne figure pas sur le live CD. GParted figure sur le CD Gutsy.

Créer une nouvelle partition

Vous devez utiliser une partition vide et formatée linux (ext3 ou ext2). Si vous n'avez pas déjà cette partition vous devez la créer. Pour modifier, créer ou supprimer vos partitions vous pouvez utiliser le logiciel GParted (ou d'autres comme QtParted).

Attention, un disque dur ne peut pas supporter plus de 4 partitions principales. Si vous avez besoin de plus de partitions, je vous conseille de créer une partition étendue, dans laquelle vous pourrez créer des partitions logiques.

A voir: Comment repartitionner

Copier sa partition /

Maintenant qu'une nouvelle partition a été créée, il faut copier les fichiers de l'ancienne vers la nouvelle. Pour cela, il faut booter à l'aide d'un live CD et lancer un terminal. Voici une série de commandes à exécuter pour copier les fichiers de la partition "old" hda4 vers la partition "new" hda1. Pour plus d'informations sur la gestion des partitions sous Linux, voir cet article

  • Créer 2 répertoires

Les deux commandes ci-dessous permettent de créer deux répertoires qui serviront à monter les 2 partitions. "old" représentera l'ancienne partition (où ubuntu est pour l'instant installé) et "new" représentera donc la nouvelle partition où ubuntu sera installé).

sudo mkdir /old
sudo mkdir /new
  • Monter les 2 partitions

Les deux commandes mount ci-dessous permettent de monter les partitions dans les répertoires précédemment créés.

Pensez à modifiez les partitions hda1 et hda4 en fonction de vos besoins !
sudo mount /dev/hda4 /old
sudo mount /dev/hda1 /new
  • Copie des fichiers

Cette commande va lancer la copie de tous les fichiers de l'ancienne partition vers la nouvelle. En fonction de la quantité de données, cela peut prendre plus ou moins de temps.

sudo cp -ax /old/. /new

A ce moment, vous avez deux systèmes ubuntu installés sur votre disque dur.

La copie ne fonctionnera que si votre système n'est que sur une seule partition. En cas de partition /home séparée, il faut utiliser ensuite cp -a /old/home/user1 /old/home/user2 /newhome (ou newhome est votre nouvelle partition home et user1, user2, etc vos utilisateurs. Vous pouvez aussi laisser votre partition home sur votre ancien disque s'il reste dans votre machine

Modifier les fichiers de gestion du disque

Il reste à modifier :

  • le fichier de gestion des partitions (fstab) pour indiquer au nouvel ubuntu la nouvelle organisation du disque dur.
  • la configuration de grub pour que le démarrage s'effectue bien sur la nouvelle partition.

Les deux étapes suivantes nécessitent de savoir utiliser un éditeur en mode texte comme nano ou vi.

Avant toute manipulation des fichiers fstab et menu.lst, pensez à en faire une sauvegarde dans un coin de votre ordinateur afin de pouvoir, le cas échéant, les restaurer

Le fichier fstab

Dans le plus simple des cas, c'est à dire si vous n'avez pas déplacé la partition de Swap, il n'y a qu'une ligne à changer. En effet le répertoire racine / devra désormais être monté sur la partition "new". Ouvrez le fichier /new/etc/fstab (fichier fstab situé sur la nouvelle partition). En suivant l'exemple précédent, il faut remplacer la ligne :

/dev/hda4     /              ext3        defaults,errors=remount-ro 0    1

par la ligne :

/dev/hda1     /              ext3        defaults,errors=remount-ro 0    1
Si vous avez dû utiliser les UUID pour désigner les partitions avec grub, il faudra les réutiliser dans fstab. Voilà ce que donne la ligne :
UUID=b6702dea-bd1e-4177-a4d1-a5560b48836c /               ext3    defaults,errors=remount-ro 0    1
Pour obtenir l'UUID d'une partition, tapez :
sudo blkid /dev/hda1

ou avant Karmic Koala (9.10) :

sudo vol_id /dev/hda1

Configuration de Grub

A partir Karmic Koala le grub change et passe en grub PC! La méthode suivante n'est plus valable! Voir le chapitre suivant "Unbuntu 9.10 et ultérieur"
Mise à jour du menu de démarrage de Grub
Ubuntu 9.04 et Antérieur

Pour modifier le menu de démarrage de grub, il suffit d'éditer le fichier /new/boot/grub/menu.lst.

Voici un extrait du fichier qui contient les lignes à modifier :

title           Ubuntu 7.10, kernel 2.6.22-14-generic
root            (hd0,3)
kernel          /boot/vmlinuz-2.6.22-14-generic  root=/dev/hda4 ro quiet splash
initrd          /boot/initrd.img-2.6.22-14-generic
quiet

title           Ubuntu 7.10, kernel 2.6.22-14-generic (recovery mode)
root            (hd0,3)
kernel          /boot/vmlinuz-2.6.22-14-generic   root=/dev/hda4 ro single
initrd          /boot/initrd.img-2.6.22-14-generic
Parfois, les partitions ne sont pas désignées par leur chemin (/dev/hda1) mais par leur UUID (numéro hexadécimal qui identifie une partition). Voilà ce que peut donner la ligne kernel dans ce cas :
kernel          /boot/vmlinuz-2.6.22-14-generic root=UUID=b6702dea-bd1e-4177-a4d1-a5560b48836c ro quiet splash

Il faut ensuite modifier les lignes root. En effet, grub démarrait sur la partition "old" hd0,3 (/dev/hda4) et doit maintenant démarrer sur la partition "new" hd0,0 (/dev/hda1).

De même, il faut modifier les lignes kernel en indiquant le nouveau chemin du répertoire racine / (anciennement /dev/hda4, nouvellement /dev/hda1)

Si votre fichier grub utilisait les UUID, vous devez retrouver le numéro de la nouvelle partition. Pour cela, vous pouvez utiliser la commande tune2fs. Par exemple, pour trouver l'UUID de la partition /dev/hda1 :
sudo tune2fs -l /dev/hda1 | grep UUID

Voici à quoi ressemble le fichier après modification :

title           Ubuntu 7.10, kernel 2.6.22-14-generic
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.22-14-generic  root=/dev/hda1 ro quiet splash
initrd          /boot/initrd.img-2.6.22-14-generic
quiet

title           Ubuntu 7.10, kernel 2.6.22-14-generic (recovery mode)
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.22-14-generic   root=/dev/hda1 ro single
initrd          /boot/initrd.img-2.6.22-14-generic
Pensez à modifier les lignes commentées en haut du fichier (Ne pas supprimer les #) :
## ## Start Default Options ##
## default kernel options
## default kernel options for automagic boot options
## If you want special options for specific kernels use kopt_x_y_z
## where x.y.z is kernel version. Minor versions can be omitted.
## e.g. kopt=root=/dev/hda1 ro
##      kopt_2_6_8=root=/dev/hdc1 ro
##      kopt_2_6_8_2_686=root=/dev/hdc2 ro
# kopt=root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ro
## default grub root device
## e.g. groot=(hd0,0)
# groot=(hd0,x)

Ceci permet de ne pas restaurer les anciens paramètres lors d'un "update-grub" ou d'une màj du noyau.

Mise à jour du MBR

Dans certains cas (une majorité ?), il est nécessaire de mettre à jour le MBR. De cette façon, grub utilisera bien le répertoire /boot du nouveau système. Les commandes qui suivent proviennent de la page Grub de la documentation.

Lancez le terminal et tapez la commande :

sudo grub

Tapez la commande suivante :

grub> find /boot/grub/stage1

Vous devriez obtenir une réponse du type :

(hd0,0)
(hd0,3)

Il s'agit normalement de l'ancien et du nouveau root. Il suffit maintenant de se positionner sur la partition du nouveau root et de réinstaller grub sur le MBR :

grub> root (hd0,0)

grub> setup (hd0)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Running "install /boot/grub/stage1 d (hd0) /boot/grub/stage2 p /boot/grub/menu.lst"... succeeded
Done.

grub> quit
Unbuntu 9.10 et Ultérieur

Démarrer le système depuis un live CD. Un fois démarré ouvrez une console, ensuite le but est de monter la nouvelle partition root et de se loguer en super utilisateur ( se "chrooter" sur la partition). Entrez les commandes suivantes (en raplaçant sdaX par votre nouvelle partition):

sudo mount /dev/sdaX /mnt
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt

Ensuite il vous reste à mettre à jour le grub :

grub-mkconfig -o /boot/grub/grub.cfg
grub-install /dev/sda

Si la commande "grub-install" échoue vous pouvez essayer

grub-install --recheck /dev/sda

Si la commande "grub-mkconfig" échoue, essayez:

Attention nécessite d'avoir un accès internet depuis le live CD = accès réseau, il y a de grandes chances que les cartes WiFi ne soient pas reconnues
apt-get remove --purge grub-pc
apt-get install grub-pc
Si la nouvelle partition (contenant le /new) était sur un disque différent, pensez à modifier l'ordre du boot dans le BIOS afin de démarrer sur ce nouveau disque
Ne pas oublier d'Éditez le fichier de configuration /etc/initramfs-tools/conf.d/resume et corrigez l'UUID en le remplaçant par celui de l'èventuelle nouvelle partition swap : RESUME=UUID=<uuid> en remplaçant <uuid> par la valeur adéquate…

Et voilà ! Il ne reste qu'à rebooter sans le live CD.

Voir aussi

  • deplacer_root.1292409424.txt.gz
  • Dernière modification: Le 18/04/2011, 14:53
  • (modification externe)