door Olivier Chapuis Over de auteur: 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. Inhoud: |
Kort:
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).
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.
- 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
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 |
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.
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!
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.
Het oorspronkelijke Franse artikel is vertaald naar het Engels door Paul Kienzle
De Engelse versie is vertaald door Egon Willighagen
|
Site onderhouden door het LinuxFocus editors team
© Olivier Chapuis LinuxFocus 2000 Click here to report a fault or send a comment to Linuxfocus |
2000-04-11, generated by lfparser version 1.4