Créer une partition /home a posteriori - L©S ßlog - CyberSDF

L©S ßlog - CyberSDF



Créer une partition /home a posteriori

Le samedi 10 juin 2006 à 17:08:: Laurent - CyberSDF:: Ubuntu

EDIT : Réécriture de la procédure pour une plus propre et plus sûre et en prenant en compte les commentaires postés


Vous l'avez certainement remarqué, Ubuntu, quelle que soit sa version, ne crée pas de partition /home par défaut lors de l'installation. Et pourtant, on peut avoir envie de s'en créer une après quelque temps d'utilisation pour séparer ses données, ou tout simplement parce qu'on a ajouté un nouveau disque dur et qu'on souhaite mettre toutes ses données dedans.

Je vais vous décrire ci-dessous une méthode que j'ai utilisé et qui a parfaitement fonctionnée.

Nota :

  • Je pars du postulat que vous avez déjà votre partition vide de créée et n'est pas encore déclarée dans /etc/fstab
  • J'utiliserais en convention de nommage /dev/hda3 pour cette nouvelle partition et je pars du postulat qu'elle est formatée en ext3
  • L'utilisateur principal est cybersdf

1- Redémarrage en "runlevel 1"

1.1 Pourquoi ce mode de démarrage ?

Comme vous le savez, Ubuntu ne dispose pas de compte root, du moins lors d'un démarrage normal. Seulement, avec le mode "runlevel 1", on se retrouve avec un compte root et pratiquement rien de chargé (voir les scripts commencant par un S dans le répertoire /etc/rc1.d/ comparés à ceux de /etc/rc5.d pour s'en rendre compte) et SURTOUT, ce qui nous intéresse le plus, aucun autre utilisateur que root ne peut utiliser la machine, donc pas d'éventuel conflit de "fichiers occupés".

1.2 Comment démarrer en "runlevel 1" ?

Lorsque vous vous retrouvez devant le menu de grub, appuyez ESC pour stopper le décompte, puis selectionnez votre noyau habituel et appuyez sur e pour passer en mode édition, puis ajoutez simplement le chiffre 1 à votre noyau :

kernel          /boot/vmlinuz-2.6.XX-XX-XXX root=/dev/hda1 ro quiet splash 1

Ensuite, appuyez sur b pour booter.
Si jamais vous ne voulez pas redémarrer votre machine, fermez votre session, passez en mode console via Ctrl+Alt+F1 puis appelez le mode init 1 via :

$ sudo telinit 1

2- Monter sa nouvelle partition et copie des données

On crée le point de montage puis on monte la partition :

# mkdir /home.new
# mount /dev/hda3 -t ext3 /home.new

Maintenant que la partiton est montée, il faut y copier toutes nos données.
Seulement nous n'allons pas copier les données n'importe comment, il faut faire attention à ce que les droits, propriétaires, groupes, dates, etc. soient identiques. Pour cela, nous allons utiliser l'option -a de cp

# cp -a /home/* /home.new

Une petite vérification que tout s'est bien passé :

# diff /home/cybersdf /home.new/cybersdf

S'il nous dit que tout est identique (comprendre tous les fichiers avec les permissions propriétaires, groupes, dates, tailles, etc.), on peut continuer.

2.1 Activation de la nouvelle partition /home

Première étape, échanger les répertoires /home et /home.new :

# mv /home /home.old
# mv /home.new /home

Puis on va donner à notre partition son nouveau petit nom :

# e2label /dev/hda3 /home

3- Déclaration dans /etc/fstab puis passage en runlevel 5

On édite donc le fichier /etc/fstab :

# vim /etc/fstab

On y ajoute notre partition nouvelle home :

/dev/hda3          /home          ext3          defaults          0          2

Y'a plus qu'à la tester et vérifier :

# mount /home
# ls -lart /home/cybersdf

Si tout est ok, on passe en mode normal :

# telinit 5

ET VOILA !

Blogmark it ! :: trackback fermés :: fil rss des commentaires

Aucun trackback.

Commentaire(s)

1. Le samedi 10 juin 2006 à 19:46 :: anocka

Juste un petit truc : dans un tuto, je mettrais
# nano /etc/fstab
à la place de
# vim /etc/fstab
Imaginons qu'une personne n'ayant jamais entendu parler de vi lance l'édition et se retrouve en mode normal ! Plutôt dangereux...
Sinon ce tutorial est clair et bien fait, et je cherchais justement quelque chose sur ce sujet... Merci.

2. Le samedi 10 juin 2006 à 20:42 :: Thesa

Intéressant tout ça, ne serai-ce que pour changer ses fichiers de partition, comme tu le dis.

Je trouve par contre vraiment dommage qu'Ubuntu ne crée pas par défaut une partition /home (contrairement à d'autres distributions comme Mandriva). Cela a plusieurs fois sauvé mes données, et je considère ça comme un apport majeur de Linux par rapport à d'autre OS.

3. Le samedi 10 juin 2006 à 20:49 :: jdloic

Juste au passage le niveau par défaut sur une ubuntu (et debian aussi) c'est 2 et pas 5:

% grep default /etc/inittab
# The default runlevel.
id:2:initdefault:

De plus, pour passer en init 1, il suffit de faire:
% sudo init 1

4. Le dimanche 11 juin 2006 à 00:52 :: LordFarquaad

Juste une petite note ou deux:
- tout d'abord, je trouve que c'est une mauvaise idée de copier le répertoire /home alors qu'un utilisateur (ayant sont répertoire personnel dans /home) est loggé: s'il a des fichiers verrous (par exemples utilisés par firefox etc.), ceux-ci ne seront pas supprimés dans la copie, et donc à sa prochaine ouverture de session, il risque d'avoir quelques problèmes qu'il ne comprendra pas (du genre "vous ne pouvez lancer ce programme deux fois" ou encore des choses mal sauvés), donc il vaut mieux le faire juste après avoir redémarré en init 1
- pour la vérification que tout s'est bien passé, il vaudrait mieux utiliser diff non ?
- pour redémarrer en init 1, il suffit pas d'utiliser le mode "rescue" que ubuntu crée par défaut ?
PS.: de plus il me semble que tu réinventes la roue:
doc.ubuntu-fr.org/install...

Sinon moi j'ai une autre technique pour faire la même chose, mais à chaud (avec gnome démarré et tout le bazar !):
1 - créer un compte temporaire du genre tempadmin avec un répertoire personnel ailleurs que dans /home (par exemple dans /tmp) et les droits d'admin
2 - se délogger et se relogger sous tempadmin (et s'assurer qu'aucun autre utilisateur n'est loggé)
3 - vérifier qu'aucun fichier n'est utilisé dans /home (lsof /home normalement) - en principe c'est le cas si personne n'est loggé, sauf peut-être si vous avez des partages nfs/samba auquel cas il suffit d'arrêter ces services normalement
4 - faire la copie/le remplacement de /home
5 - se délogger/se relogger avec son compte normal pour s'assurer que tout marche bien
6 - supprimer tempadmin :-)

@jdloic: sudo init 1 ok mais il vaut mieux fermer sa session d'abord quand même, c'est plutôt violant sinon il me semble, non ?

5. Le dimanche 11 juin 2006 à 14:37 :: giz404

Plutot sympa quand on commence a avoir un disque dur plein :)

Euh sinon est-ce que la même procédure marcherait avec /boot ?

6. Le dimanche 2 juillet 2006 à 13:10 :: lellex

merci pour ce tuto !! je débute avec linux et ca fonctionne sans problème :-)

7. Le jeudi 17 mai 2007 à 13:06 :: Jucgshu

Il y a un point où je ne suis pas sûr : à l'édition de vim /etc/fstab, on ne doit pas sauvegarder? Et si oui, comment?

8. Le mercredi 28 novembre 2007 à 19:49 :: giz404

Après exécution de cette manipulation, je me suis rendu compte d'un problème : quand je veux faire mv /home.new /home, il me sort "ressource busy..." Du coup j'ai rebooté, j'ai renommé le dossier home.new en home et j'ai ensuite fait le montage. Et là ça fonctionne.

Les commentaires sont fermés.

Toutes les fautes d'orthographes présentes sur ce site sont protégées par la licence Logo Creative common Creative common

 |  Valid XHTML  |  Valid CSS  |  Dotclear  |  Design décliné de [ON]Simple par [ NikO ]
Hébergé par Typhon.Network