HomeMapIndexSearchNewsArchivesLinksAbout LF
[Barre de Titre]
[Bottom Bar]
[Photo de l'auteur]
Olivier Chapuis 
À propos de l'auteur : 
Dans la vie l'auteur fait des mathématiques, en particulier de la logique, de l'algèbre et de l'informatique théorique. Il a découvert Linux que récemment et cela a été pour lui une vraie révélation. Il aime Muriel et son hobby préféré est actuellement la plongée sous-marine. Il aime aussi la Bretagne, la mer, le bateau, le ski et la bonne bouffe.

Écrire à l'auteur

Sommaire: 

1. Introduction

2. Principales étapes

3. Préparatifs et données du problème

4. Reconstruire la partition windows

5. Utiliser la <<nouvelle>> partition

6. Problèmes

References

LinuxFocus Mois 1999 :

Comment supprimer windows
[Ilustration]
RésuméOn explique dans cet article  comment supprimer windows sur une machine  qui contient Linux et windows et surtout comment utiliser la place disponible pour Linux. Cet article est déstiné aux débutants (j'en suis un moi même).

1. Introduction

Il m'est arrivé un jour, environ 2 mois après avoir installé Linux, de vouloir supprimer windows. La raison était simple je ne l'utilisais plus ! J'imagine qu'un certain nombre de débutants sous Linux seront dans mon cas et j'ai écrit ce document pour les aider (les gourous peuvent tout de même le lire pour me conseiller des améliorations). Si vous êtes dans  ce cas deux stratégies s'offre à vous.

La première est de réinstaller Linux. L'avantage de cette stratégie est qu'avec un peu d'expérience avec Linux vous ferez de meilleurs choix lors de l'installation, en particulier en ce qui concerne la taille de vos partitions. Son principal désavantage c'est que vous allez tout écraser. Vous pouvez remédier en partie à cela en sauvegardant tout ce qui n'est pas sur votre cédérom d'installation. Mais réinstaller cette sauvegarde peut vous faire perdre du temps et de la sueur.

La deuxième stratégie est tout d'abord de supprimer windows (ce qui est très facile) puis d'utiliser la place disponible pour linux, c.-à.-d. faire du <<repartitionnement>> chose assez délicate et peu documenté.  L'avantage de cette méthode c'est que si elle réussie votre système sera <<comme avant>> mais avec plus de place disque.  Son deuxième avantage c'est que si elle échoue vous pourrez toujours utiliser la première stratégie. Dans ce document j'explique comment j'ai fait. Bien sur la méthode peut dépendre de votre configuration.  En particulier si vous avez un énorme disque dur <<vierge>> j'imagine  que l'on peut imaginer une stratégie beaucoup plus sure et qui donne un meilleur résultat. Moi mon système de sauvegarde c'est des disquettes 1,44 Mo. Dans tous les cas j'espère que la stratégie exposée ci-dessous pourra aider un débutant.

Je tiens à remercier Olivier Tharan qui a bien voulu répondre avec quelques détails à un message posté dans fr.col.moderated et qui était une version -1 de ce document. Je remercie aussi Finn Bo Jorgensen et  Chmouel Boudjnah pour leur réponse.

2. Principales étapes

- Préparatifs : sauvegarder, consulter et prendre note de certains fichiers importants pour la suite. Lire la doc pour comprendre ce que l'on va faire. (section 3 ci-dessous).

- Supprimer windows (section 4 ci-dessous).

- Repartitionner, le plus délicat (section 5 ci-dessous).

3. Préparatifs et données du problème

Avant tout sauvegardez l'essentiel. En particulier, les fichiers de configurations et son travail. Je ne dirais rien de plus la dessus.

Une étape préliminaire est de comprendre ce que l'on va faire. Il y a parfois quelques explications sur les commandes et fichiers dans ce qui suit mais c'est très incomplet. Il faut lire les mans ! Ici il s'agit de fdisk, mk2ext, cp (commande pas si stupide), lilo, lilo.conf et fstab (il y a aussi des mans pour certains fichiers de configuration). On trouve des docs très détaillées sur lilo dans le répertoire /usr/doc/lilo-0.20/doc/ (si votre système est bien installé).  En particulier il existe un <<user guide>> de 46 pages ! Pour fdisk voir le fichier /usr/doc/util-linux-2.7/README.fdisk très complet aussi.  En écrivant ce document j'ai appris l'existence d'un mini-Howto très utile pour ce qui nous concerne : Hard Disk Upgrade Mini How-To (je ne sais pas s'il existe une traduction en français).

Tout d'abord voici ce qu'était ma table de partition :


   [olivier@snoopy  olivier]# /sbin/fdisk -l         (en su)

   Disk /dev/hda: 128 heads, 63 sectors, 788 cylinders
   Units = cylinders of 8064 * 512 bytes

      Device Boot  Begin   Start     End  Blocks  Id System
   /dev/hda1   *       1       1     397 1600672+  c Unknown
   /dev/hda2         398     398     601  822528  83 Linux native
   /dev/hda3         602     602     627  104832  82 Linux swap
   /dev/hda4         628     628     788  649152  83 Linux native

On voit que windows est sur hda1, il n'est pas anormale que fdisk dise  <<Unknown>> à propos de la partition FAT32. Mon noyau (à l'époque un 2.0.34) sait gérer ce type de système de fichiers  mais cela n'est pas le cas de  mon fdisk.  A titre indicatif voilà ce que donnait df (avec la partition dos montée).


    [olivier@snoopy olivier]# df

    Filesystem        1024-blocks    Used   Available  Capacity  Mounted on
    /dev/hda2            796065    506992      247947     67%    /
    /dev/hda4            628351    226366      369528     38%    /home
    /dev/hda1           1594456    850420      744036     53%    /mnt/dos

On va avoir à éditer deux fichiers de configurations /etc/fstab et /etc/lilo.conf. Voici à quoi ils ressemblaient.


    [olivier@snoopy olivier] less /etc/fstab

    /dev/hda2          /                 ext2         defaults        1 1
    /dev/hda4          /home             ext2         defaults        1 2
    /dev/hda3          swap              swap         defaults        0 0
    /dev/fd0           /mnt/floppy       ext2         user,noauto     0 0
    /dev/cdrom         /mnt/cdrom        iso9660      user,noauto,ro  0 0
    none               proc              proc         defaults        0 0
    /dev/hda1          /mnt/dos          msdos        user,noauto     0 0

    [olivier@snoopy olivier] less /etc/lilo.conf

    boot=/dev/hda
    map=/boot/map
    install=/boot/boot.b
    prompt
    timeout=500
    image=/boot/vmlinuz-2.0.34-1
            label=linux
            root=/dev/hda2
            read-only
    other=/dev/hda1
           label=dos
           table=/dev/hda

4. Reconstruire la partition windows

À partir de maintenant tout se passe en root. Pour des raisons psychologique je vous conseille de vous loger en root (pas en su dans votre compte).  Si vous utilisez vi pour éditer il se peut qu'il faille utiliser w! pour sauver. Dans tous les cas je vous conseille de vérifier que vos modifications ont bien été pris en compte (quitter votre éditeur et regarder le fichier avec less).

On va utiliser les commandes fdisk et mke2fs. Ces commandes agissent sur les partitions d'un disque dur ou de tout autre système de sauvegarde. Il vaut mieux agir avec ces commandes sur des partitions  qui ne sont pas montées. Le tout ce fait en trois étapes.

- Si votre partition dos est monté démonter la: umount  /mnt/dos.

- On lance fdisk. On change l'identité de hda1: on dit à linux que cette partition sera maintenant une partition Linux native. Cela se fait avec la  commande t (t, 1, 83).  On regarde : p , la seul chose qui change c'est  le Unkown qui devient linux native et le c qui devient 83. On quitte en sauvant: w.  On re regarde: fdisk -l. En quittant fdisk j'ai eu le droit  à un message d'erreur que voici:


   The partition table has been altered!
       Calling ioctl() to re-read partition table.
       Syncing disks.
       Re-read table failed with error 16: Périphérique ou ressource occupé..
       Reboot your system to ensure the partition table is updated.

Ce message est à mon avis normal et inoffensif: je n'ai pas  redémarré.

- Formater: mke2fs  /dev/hda1. Plein de chiffres apparaissent puis cela compte un peu et hop windows 98 il n'y plus ! Les gens prudents rajouterons un -c en option pour faire une vérification rapide des mauvais blocs.

Bon et bien voilà windows a disparu. Je n'était pas spécialement comptant à cause de cela (je n'ai personnellement rien contre win98,  par contre Microsoft ...). Mais j'étais content pour Linux ... <

5. Utiliser la <<nouvelle>> partition.

Bon maintenant on a une partition de 1,5 Go avec rien dessus, une partition de 600 Mo avec /home et une partition de 800 Mo avec / (et une partition de swap de 100 Mo). Il y a en gros 100 Mo qui est dans mon /home/moncompte qui devrait être dans /usr/local/ (je voulais laisser de la place sur /dev/hda2) et il y a 10Mo dans /usr/local. On va déplacer / sur hda1  et mettre /usr/local sur hda2. Ce qui devait donner en gros:


   Filesystem      1024-blocks  Used   Available Capacity Mounted on
   /dev/hda1        1600672    465000   1130672     29%    /
   /dev/hda2         796065    110000    696065     13%    /usr/local 
   /dev/hda4         628351     40739    587612      6%    /home

De l'espace pour une dizaine d'années ....

Bon il faut réaliser cela. Pour pouvoir agir sur hda1 il faut la monter quelque part. En général on utilise /mnt.

- On crée un nouveau répertoire sur /mnt, disons /mnt/tmp pour avoir quelque chose de propre pour monter hda1 (mount ne crée pas  de répertoires: mkdir /mnt/tmp.

- On monte hda1 sur /mnt/tmp : mount -t ext2 /dev/hda1 /mnt/tmp (là tout est clair -t ext2 indique le type du système de fichier).

- On copie / sur /mnt/tmp/ en préservant sa structure: cp -ax / /mnt/tmp/. Pour l'option -a citons le man : <<Préserver autant que possible la structure  et  les  attributs  du  fichier  original  lors de la copie. Cette  option est équivalente à -dpR>>. Voir le man de cp pour la signification  de d, p et R ce qui explique mieux le a. L'option -x  demande d'ignorer les sous-répertoires  qui  se  trouvent   sur  un système  de fichiers diffèrent de celui de départ de la copie.  Dans notre cas cela permet de ne pas copier /home sur /mnt/hda1). Cette opération de copie peut prendre du temps (15 min environ avec mon disque IDE et mon AMD K6 à 266), il est temps de sortir la phrase habituelle: allez prendre une grenadine, un café ou un double whisky en attendant.

-  Là on a pas tout à fait le hda1 qu'il faut. À cause de l'option -x il nous manque deux répertoires (vides) qui sont /home et  /proc. Donc mkdir /mnt/tmp/home et mkdir /mnt/tmp/proc. Ces répertoires sont des points de montages ils doivent être là pour que /home (qui est sur hda3) et /proc soient montés sur la racine.

Bon là, les choses se compliquent un peu. On a / (=/-/home) sur hda2 mais aussi sur /mnt/tmp/.  On va préparer le redémarrage. Il s'agit d'éditer fstab et lilo.conf. Il faut bien se rendre compte que l'on va redémarrer avec le / qui se trouve sur /mnt/tmp/.  Donc, en ce qui concerne fstab, le fichier que l'on va modifier est en fait /mnt/tmp/etc/fstab. Pour lilo.conf c'est différent il faut éditer /etc/lilo.conf lancer lilo et aussi copier le nouveau /etc/lilo.conf sur /mnt/tmp/etc/lilo.conf (pour avoir un système consistant). On peut aussi éditer seulement /mnt/tmp/etc/lilo.conf et relancer lilo en lui indiquant avec l'option -C qu'il doit choisir un autre fichier de configuration. J'ai choisi la deuxième méthode.

- /mnt/tmp/etc/fstab

Ce fichier indique comment et où doivent être monté ce qui est montable lors du démarrage. Lorsque l'on va redémarrer on veut que la racine / soit celle de hda1, d'où la première ligne du /etc/fstab ci-dessous. Bien sûr il ne faut pas monter deux racines ! Comme on va avoir  à travailler sur hda2 je la monte sur /mnt/tmp. Pour le reste il n'y a rien à changer.


    /dev/hda1        /                ext2     defaults         1 1  
    /dev/hda2        /mnt/tmp         ext2     defaults         1 2
    /dev/hda4        /home            ext2     defaults         1 3
    /dev/hda3        swap             swap     defaults         0 0
    /dev/fd0         /mnt/floppy      ext2     user,noauto      0 0
    /dev/cdrom       /mnt/cdrom       iso9660  user,noauto,ro   0 0
    none             /proc            proc     defaults         0 0

- /mnt/tmp/etc/lilo.conf.

lilo.conf est le fichier de configuration de lilo le petit programme qui se trouve sur le MBR. Je ne rentre pas dans les détails. S'il y a des gens qui n'utilisent pas lilo je leurs conseille très fortement (lodalin est une absurdité dans notre cas et pourquoi démarrer avec une disquette de nos jour ?). Ici on indique juste à lilo que maintenant le noyau se trouve sur hda1 (il était avant sur hda2) et bien sûr on supprime ce qui concerne  windows.


     boot=/dev/hda
     map=/boot/map
     install=/boot/boot.b
     prompt
      timeout=500
     image=/boot/vmlinuz-2.0.34-1
           label=linux
           root=/dev/hda1
           read-only

- On relance lilo: /sbin/lilo -v -C /mnt/tmp/etc/lilo.conf. Le v c'est pour que lilo nous raconte un peut plus sa vie. Ici il est interdit de voir apparaître un message d'erreur ! On a pas le droit de se tromper si on veut redémarrer. On doit voir quelque chose comme:


    LILO version 20, Copyright 1992-1997 Werner Almesberger
    Reading boot sector from /dev/hda
    Merging with /boot/boot.b
    Boot image: /boot/vmlinuz-2.0.34
    Added linux *
    /boot/boot.0300 exists - no backup copy made.
    Writing boot sector.

- On redémarre. Quelques petits tests (df , fdisk -l , on regarde si le système de fichiers est placé comme on l'a spécifié).

- On efface tout ce qu'il y a dans /mnt/tmp/, cela se fait comme cela: rm -rf  *   dans le répertoire /mnt/tmp.  Ensuite on copie le répertoire /usr/local qui reste: cp -a  *  /mnt/tmp  dans le cd /usr/local. On regarde si tout va bien puis on efface /usr/local: rm -fr *  dans le répertoire  /usr/local (attention il ne faut pas effacer le <<nom >> ou disons plutôt le point de montage local !).

- On édite une nouvelle fois /etc/fstab: on change juste la 2ème ligne:


     /dev/hda2    /usr/local          ext2    defaults       1 2

- On redémarre. On fait quelques tests.

Et voilà opération terminé...  J'avoue que j'étais assez content surtout qu'après j'ai testé pleins de programmes et tout marchait !

5. Problèmes.

Et  bien j'en ai eu un petit problème. Ce qui est ci-dessus n'est pas exactement ce qui c'est passé mais une idéalisation. Un  conseil que je peux vous donner c'est de comprendre un minimum ce que vous faites ce qui vous permettra de comprendre pourquoi cela ne marche pas et de rétablir la situation.  Un conseil que m'avait donné Olivier Tharan était de redémarrer en single user (je n'ai pas fait cela car la seul doc que j'ai trouvé sur le mode single user est: <<regarder  les fichiers du mode de démarrage single user>> et j'ai eu un peu la flemme). Avant le premier redémarrage il est peut-être prudent d'avoir une bonne disquette de redémarrage  (il faut peut-être qu'elle soit adaptée à la situation et j'avoue ne pas savoir exactement comment la réaliser....).

Voici le petit problème que j'ai eu. Avant le premier redémarrage j'avais fait presque ce qui est expliqué ci-dessus. Mais lors du démarrage au niveau du montage du système de fichiers une suite de messages d'erreurs c'est mis à défiler à toute vitesse. J'ai réussi à lire: /proc  ...  error ... error ... /home ... error (sans trace dans /var/log/messages). PPuis (ouf) l'invite de login est apparue. Je me loge en root et tout de suite


    [root@snoopy root]$ df
     Filesystem      1024-blocks    Used   Available  Capacity  Mounted on
     /dev/hda1          1548535   506977    961525     35%       /
     /dev/hda2           796065   506992    247947     67%       /mnt/tmp

La maison n'avait pas été monté. J'ai édité fstab, mais tout semblait normal. Ensuite j'ai eu la brillante idée (le double whisky ?) de vouloir monter /home et  j'ai eu le droit à un truc du genre <<pas de point de montage>>.  À ce point, j'ai compris que je n'avais pas compris ce qu'était un point de montage et que j'avais un peut oublié l'option x de cp (j'avoue avoir un peu honte). J'ai créé les bons points de montages: /home et /proc,  et j'ai monté ma /home et /proc pour voir si cela était OK.  Puis l'opération c'est terminé comme expliqué ci-dessus.


References

  • Pages de man: fdisk, mk2ext, cp, mv, rm, lilo, lilo.conf et fstab
  • /usr/doc/lilo-0.20/doc/User_Guide.ps
  • /usr/doc/util-linux-2.7/README.fdisk
  • Hard Disk Upgrade Mini How-To

  • Article original en Français
    © Olivier Chapuis 1999
    LinuxFocus1999
    Contacter le Webmestre