Hoe wis ik Windows op mijn computer?

ArticleCategory: [Artikel Kategorie]

System Administration

AuthorImage:[Bild des Autors]

[Foto van de Auteur]

AuthorName:[Name des Autors]

Olivier Chapuis

AboutTheAuthor:[Über den Autor]

In het echte leven is de auteur een wiskundige. Zijn specialismen hierin zijn logica, algebra en theorie van berekeningen. Pas kort geleden ontdekte hij Linux en dat was voor hem een echte openbaring. Hij houdt van Muriel en zijn huidige hobby is scuba duiken. Verder is hij gek op Engeland, de zee, s kiën en lekker eten.

Abstract:[Zusammenfassung]

In dit artikel leg ik uit hoe Windows van een computer verwijderd kan worden, en bovendien, hoe deze schijfruimte gebruikt kan worden voor Linux. Dit artikel is bedoeld voor gevorderde beginners (zoals ik er zelf een ben).

ArticleIllustration:[Titelbild des Artikels]

[Ilustration]

ArticleBody:[Der eigentliche Artikel]

Inleiding

Ongeveer twee maanden nadat in Linux geïnstalleerd had, overviel me het idee dat ik Windows van mijn computer wilde verwijderen. Gewoon omdat ik het toch niet meer gebruikte! Ik kan me voorstellen dat er meer nieuwe linuxgebruikers zijn die dit willen. Daarom schreef ik dit artikel om uit te leggen hoe ik dit gedaan heb (Guru's kunnen dit ook lezen en verbeteringen aandragen). Wilt u ook Windows van uw computer halen, dan zijn er in principe twee mogelijkheden.

De eerste mogelijkheid is Linux opnieuw te installeren. Het voordeel van deze techniek is dat er weinig ervaring voor nodig is, zodat betere keuzes gemaakt kunnen worden. Vooral dan keuzes die te maken hebben met de indeling van de harde schijf in partities. Het grote nadeel is dat alle gegevens op de harde schijf gewist worden. Dit is te voorkomen door alles dat niet op de installatie cdrom staat te backuppen. Maar het terugzetten van de backup kost veel bloed, zweet en tranen.

De tweede mogelijkheid is Windows verwijderen en de vrijgekomen schijfruimte te gebruiken voor Linux. Over beter, <<herpartitioneren>>, een techniek die lastig kan zijn en slecht gedocumenteerd is. Het voordeel hiervan is dat het Linux systeem na de operatie ongewijzigd is, op de vrije ruimte na... Mocht het onverhoopt misgaan, dan kunt u altijd nog verder met de eerste mogelijkheid.

In dit artikel zal ik laten zien hoe ik de tweede mogelijkheid heb uitgevoerd. De precieze uitvoering van de methode hangt af van het systeem dat u heeft. Als u bijvoorbeeld een grote lege harde schijf tot u beschikking heeft, kunt u eenvoudig daarop een backup maken en daarna alles opnieuw installeren. Ik kan me voorstellen dat dit sneller en veiliger werkt. Op mijn systeem heb ik alles op 1.44 Mb diskette gebackupt. In elk geval denk ik dat de hier beschreven techniek nieuwe gebruikers een belangrijke hulp kan zijn.

Tenslotte wil ik Olivier Tharan bedanken voor zijn uitgebreide antwoord op een vraag in de fr.col.moderated nieuwsgroep. Op basis van zijn email is dit artikel geschreven. Ook wil ik Finn Bo Jorgensen en Chmouel Boudjnah bedanken voor hun antwoorden.

Het plan

- Voorbereiding: backup, bestuderen van enkele belangrijke bestanden en het noteren van de belangrijke gegevens hieruit. Lees de gebruiksaanwijzingen van commando's die u gaat gebruiken.

- Verwijderen van Windows: het makkelijke deel

- Herpartitioneren: het lastige deel

Voorbereiding en mogelijke gevaren

Belangrijk: als u essentiële bestanden gaat wijzigen dat u EERST een backup maakt. Deze waarschuwing zal ik niet hieronder niet meer herhalen.

Een belangrijke stap is het leren begrijpen van wat u aan het doen bent. In de komende paragrafen zijn enkele aspecten van commando's uitgelegd, maar dit is erg oppervlakkig. Lees de man-pagina's (op te roepen met 'man commando'! Voor dit artikel zijn de man-pagina's van de commando's fdisk, mk2ext, cp, lilo en van de configuratiebestanden lilo.conf en fstab erg belangrijk.

Uitgebreidere handleidingen zijn vaak te vinden in de directory /usr/doc. Zo is van lilo een handleiding te vinden in bijvoorbeeld /usr/doc/lilo-0.20/doc/ of /usr/doc/lilo/. Voor fdisk is een handleiding te vinden in /usr/doc/util-linux-2.7/ of iets soortgelijks. Tijdens het schrijven van dit artikel kwam ik erachter er een erg handige mini-Howto is: Hard Disk Upgrade Mini How-To.

We gaan van start. Dit is mijn partitie-indeling:


   [olivier@snoopy  olivier]# /sbin/fdisk -l         (als 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

We zien in deze tabel dat Windows geïnstalleerd is op hda1. Het is niet ongebruikelijk dat een oudere versie van fdisk het FAT32 bestandssysteem niet kent. Mijn huidige kernel is 2.0.34 en kent het FAT32 systeem wel, maar mijn versie van fdisk niet. Dat ik de partitie wel kan lezen, zie ik aan de uitvoer van het commando df (als de FAT32 partitie gemount is).


    [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

Om Windows te verwijderen, moet u twee configuratiebestanden kunnen veranderen. Dit zijn /etc/fstab en /etc/lilo.conf die er ongeveer zo uit zien:


    [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

Herpartitioneren van de Windowspartitie

Vanaf dit moment moeten alle commando's uitgevoerd worden vanuit de rootlogin. Voor educatieve redenen, raad ik u aan in te loggen als root en niet het su-commando te gebruiken vanaf uw eigen login. Als u vi als editor gaat gebruiken, kan het zo zijn dat u het commando w! moet gebruiken in plaats van het normale w. Controleer altijd of de veranderingen echt zijn opgeslagen. Verlaat hiertoe de editor en gebruik het commando less.

Om de partitie om te zetten gaat u de commando's fdisk en mke2fs gebruiken. Deze commando's werken met de partities op de harde schijf en andere opslagmedia. Deze opdrachten kunnen gebruikt worden als de partitie niet gemount is. Dit alles gebeurt in drie stappen.

- Als de partitie gemount is, unmount u deze met: umount /mnt/dos.

- Start fdisk. Verander het partitietype van hda1: we gaan het besturingssysteem vertellen dat de partitie van het type ext2 zal zijn. Dit kan met het fdisk-commando t (t, 1, 83). Het resultaat kan bekeken worden met p. Het enige dat verandert is, is dat de Unkown verandert is in linux native en dat de c nu 83 is. Sla de veranderingen op met w. Bekijk het resultaat nog eens met fdisk -l. Toen ik fdisk afsloot kreeg ik de volgende foutmelding:


   The partition table has been altered!
       Calling ioctl() to re-read partition table.
       Syncing disks.
       Re-read table failed with error 16: Device or resource busy.
       Reboot your system to ensure the partition table is updated.

Zover ik weet is dit een normale en ongevaarlijke foutmelding. Het komt doordat ik nog niet opnieuw opgestart (=reboot) heb. Maar het maken van een nieuwe partitie is niet voldoende. Er moet ook een bestandssysteem (=filesystem) aangemaakt worden. Dit kan door de partitie te formateren:

- formateren: mke2fs /dev/hda1. Pas op dat u de goede partitie neemt! Er verschijnen hierna veel getallen op het scherm terwijl het systeem bezig is de partitie te formateren. Et viola! Het Windows-systeem is verdwenen. Als u het echt goed wilt doen, gebruikt u ook de -c optie die de partitie scant op slechte sectoren.

En dan is het zover. Windows is weg. Niet dat ik echt enthousiast was, want ik heb niets tegen Windows 98. Maar wel was ik zeer blij dat mijn Linux systeem nu meer schijfruimte ter beschikking had.

De nieuwe partitie gebruiken

OK. Nu heb ik een nieuwe 1,5 Gb partitie erbij. Ik had al een 600 Mb partitie voor /home, een 800 Mb voor / en een swap partitie van 100 Mb. Ook had ik een 100 Mb partitie voor /home/myaccount die ik toevoeg aan /dev/hda2. Mijn linux systeem ga ik nu anders inrichten: De / verplaats ik naar hda1 en ik plaats /usr/local op hda2. De nieuwe situatie moet uiteindelijk worden:


   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

Met deze indeling kan ik weer jaren voort... of niet?

Om deze veranderingen te maken, moet ik eerst /dev/hda1 mounten. Dit gebeurt meestal in /mnt.

- Maak daarvoor eerst een directory in /mnt, bijvoorbeeld /mnt/tmp om een mountpunt (=mountpoint) te maken (mount doet dit niet automatisch): mkdir /mnt/tmp

- Mount hda1 op /mnt/hda1tmp : mount -t ext2 /dev/hda1 /mnt/tmp (het is duidelijk dat -t ext2 het bestandssysteemtype aangeeft).

- Kopieer / naar /mnt/tmp/ terwijl de bestandsstructuur bewaard moet blijven: cp -ax / /mnt/tmp/. De man-pagina van cp beschrijft de functie van de -a optie: het bewaart zoveel mogelijk de originele instellingen zoals attributen van de te kopiëren bestanden. Het is gelijk aan de -dpR opties. Uitgebreide informatie over de drie opties -d, -p en -R kunnen ook gevonden worden in de man-pagina van cp. Bekijk deze maar. De -x optie zorgt ervoor dat cp subdirectories die op andere partities staan dan / zelf niet gekopieerd worden. Dit voorkomt dat de /home boomstructuur ook gekopieerd wordt naar /dev/hda1. Het kopiëren duurt een tijdje. Bij mij vijftien minuten op mijn AMD K6 (266 MHz) systeem. En voor het gebruik: neem een lekkere bak koffie of een glas whisky terwijl u wacht.

- We missen nog twee directories: /home en /proc. Omdat deze boomstructuren op een andere partitie stonden en we de -x optie gebruikt hebben, zijn deze directories niet aangemaakt. Dus: mkdir /mnt/tmp/home en mkdir /mnt/tmp/proc. Deze directories zijn de mountpunten die ervoor zorgen dat /home die op /dev/hda3 staat en /proc gemount kunnen worden.

Nu wordt het allemaal wat moeilijker. We hebben / op hda2, maar ook als /mnt/tmp op hda2. We moeten nu de computer opnieuw opstarten. Maar het moet wel voor het linuxsysteem duidelijk zijn vanaf welke partitie dit moet gebeuren: hda1 en niet meer vanaf hda2 zoals dat tot nu toe was. Daarom moeten we fstab en lilo.conf aanpassen. Maar dit moeten dan wel de files zijn op de nieuwe partitie, dus: /mnt/tmp/etc/fstab en /mnt/hda1tmp/etc/lilo.conf ! Maar we moeten ook lilo opnieuw runnen, en die zoekt naar /etc/lilo.conf. Dus nadat we /mnt/tmp/etc/lilo.conf veranderd hebben, kopiëren we deze file ook naar /etc/lilo.conf. Een tweede mogelijkheid is dat we gebruik maken van de -C optie van lilo, zodat we de locatie van de configuratiebestanden kunnen opgeven. Dan hoeven we niet de lilo.conf file te kopiëren naar /etc. Ik koos de laatste optie.

- /mnt/tmp/etc/fstab

Het fstab bestand geeft aan hoe en waar partities gemount worden als de computer opgestart wordt. Als we zometeen opnieuw opgestart hebben, moet hda1 gemount zijn op /. Maar ook hebben we de partitie /dev/hda2 nodig, dus die mounten we na de herstart op /mnt/tmp. De rest blijft hetzelfde. Het nieuwe fstab bestand ziet er dan als volgt uit:


    /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.

Het bestand lilo.conf is het configuratiebestand van lilo. Lilo is het kleine programma in de MBR (master boot record) dat het mogelijk maakt om meerdere besturingssystemen te kunnen starten. Details kunnen gevonden worden in de uitgebreide documentatie die met lilo meegeleverd is. In dit artikel ga ik hier niet verder op in. Als u lilo nog niet gebruikt, raad ik u sterk aan dit toch te doen. Loadlin is een absurditeit en opstarten vanaf diskette kan toch niet meer tegenwoordig?!

In dit configuratiebestand geven we de nieuwe locatie van de kernel op en verwijderen de de bootoptie van 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

- Start hierna lilo: /sbin/lilo -v -C /mnt/tmp/etc/lilo.conf. De -v optie zorgt ervoor dat lilo ons meer informatie geeft (verbose mode) over wat er gebeurt. Er mogen geen fouten gebeuren, omdat we anders de computer niet meer kunnen herstarten! De uitvoer (=output) van lilo zou zoiets moeten zijn:


    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.

- Herstart het systeem. Met twee kleine tests kunnen we zien of alles goed is veranderd (df en fdisk -l).

- Als alles goed gegaan is kan de /dev/hda2 (/mnt/tmp) partitie geleegd worden, want die staat nu immers al op /dev/hda1: rm -rf * in de directory /mnt/tmp. Hierna kopiëren we de directorystructuur /usr/local naar /mnt/tmp: cp -a /usr/local/* /mnt/tmp. Controleer of alles goed is gekopieerd en verwijder daarna /usr/local: rm -fr /usr/local/*. Merk op dat niet de /usr/local directory gewist moet worden, want dit wordt het nieuwe mountpunt van /dev/hda2.

- Verander in fstab, dat nu weer in /etc/fstab staat, alleen de tweede regel:


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

- Herstart de computer opnieuw en voer weer enkele tests uit om zeker te zijn dat alles goed is gegaan.

En hierna is de klus geklaard. Ik kan u verzekeren dat ik erg tevreden was met het resultaat. Zeker nadat ik veel programma's getest had en zag dat alles nog prima werkte!

Problemen

Ook bij mij is niet alles zonder problemen gegaan. Zoals ik het hierboven beschreef is het niet helemaal zoals het bij mij gegaan is, maar zoals het zou moeten gaan. Mijn beste advies is: zorg dat u goed weet welke en waarom u de handelingen uitvoert, zodat u weet waarom iets niet werkt als het niet werkt en zodat u in staat bent de problemen te omzeilen of herstellen. Olivier Tharan adviseerde mij om de computer in de single user mode op te starten. Ook is het erg verstandig om een opstartdiskette te hebben, zodat als u de computer niet vanaf de harde schijf kan starten, dit wel vanaf diskette kan.

Het probleem dit ik tegenkwam was het volgende. Tot de eerste herstart heb ik bijna precies gedaan zoals ik hierboven beschreven heb. Maar toen het systeem de partities probeerde te mounten vloog er in hoge snelheid een zwerm foutmeldingen over het scherm. En zag ik een flits nog net /proc ... error ... error ... /home ... error . Gelukkig kreeg ik wel de loginprompt te zien en logde direct in als root en deed direct:


    [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

De partitie /home was niet gemount. Toen ik het fstab bestand bekeek bleek alles in orde. Wat kon het probleem dan zijn? Toen kwam ik op het briljante idee (gevolg van het glas whisky?) om /home alsnog te mounten. En ik kreeg de foutmelding <<mount: mount point /home does not exist>>. Toen begreep ik dat ik niet wist wat een mountpunt was en dat ik vergeten was de -x optie bij cp te gebruiken. (En voelde me een beschaamd.) Daarna maakte ik alsnog de twee mountpunten aan en kon hierna /home en /proc mounten. Daarna kon ik alles afmaken zoals het hierboven beschreven is.


Bronnen

  • man-pagina;s: fdisk, mk2ext, cp, mv, rm, lilo, lilo.conf and fstab
  • /usr/doc/lilo-0.20/doc/User_Guide.ps
  • /usr/doc/util-linux-2.7/README.fdisk
  • Hard Disk Upgrade Mini How-To
  • Het oorspronkelijke Franse artikel is vertaald naar het Engels door Paul Kienzle
    De Engelse versie is vertaald door Egon Willighagen