Wie man Windows von seinem Rechner entfernt

ArticleCategory: [Artikel Kategorie]

System Administration

AuthorImage:[Bild des Autors]

[Photo of the Author]

TranslationInfo:[Author and translation history]

original in fr Olivier Chapuis

en to de Katja Korn

AboutTheAuthor:[Über den Autor]

Im wirklichen Leben beschäftigt sich der Autor mit Mathematik, besonders mit Logik und Algebra. Er hat kürzlich Linux für sich entdeckt und das war für ihn eine wahre Offenbarung. Er liebt Muriel und sein augenblickliches Hobby ist Tauchen. Außerdem mag er die Bretagne, die See, Bootfahren, Skilaufen und gutes Essen.

Abstract:[Zusammenfassung]

In diesem Artikel erkläre ich, wie man Windows von einem Rechner entfernt, auf dem sowohl Linux als auch Windows laufen und außerdem, wie man den dann neu verfügbaren Platz für Linux nutzen kann. Dieser Artikel richtet sich an noch unerfahrene Benutzer (Ich bin selber einer von ihnen).

ArticleIllustration:[Titelbild des Artikels]

[Ilustration]

ArticleBody:[Der eigentliche Artikel]

Einführung

Mir fiel eines Tages, als ich Linux ungefähr zwei Monate auf meinem Rechner installiert hatte, ein, daß ich Windows von meinem Rechner entfernt haben wollte. Der Grund dafür war einfach, daß ich es nicht mehr benutzte!Ich nehme an, daß eine Reihe von neuen Linuxbenutzern in derselben Situation sind wie ich und schrieb deshalb diesen Artikel, um ihnen zu helfen (die Gurus können ihn auch lesen und Verbesserungsvorschläge machen). Wenn man in dieser Situation ist, gibt es zwei mögliche Strategien.

Die erste ist, Linux neu zu installieren. Der Vorteil dieser Strategie ist, daß man mit etwas Linuxerfahrung bessere Einstellungen bei der Installation wählt, insbesondere dort, wo es um die Partitionsgröße geht. Der größte Nachteil ist, daß man alles verliert. Dies kann man teilweise dadurch verhindern, daß man von allem, was nicht auf der Installations-CD-ROM mit drauf ist, ein Back-up anfertigt. Aber dieses Back-up aufzuspielen wird dich einiges an Zeit und Schweiß kosten.

Die zweite Strategie ist, Windows zu entfernen (was einfach ist) und dann den verfügbaren Platz für Linux zu benutzen. Hierfür ist eine <<Repartitionierung>> notwendig, eine Operation, die ein bißchen trickreich und wenig dokumentiert ist. Der Vorteil dieser Methode ist, wenn du erfolgreich bist, daß dein System <<wie vorher>> ist, aber nun über mehr Speicherplatz verfügt. Der zweite Vorteil ist, daß du, wenn es schief gegangen ist, immer noch die erste Methode anwenden kannst. In diesem Artikel erkläre ich, wie ich es gemacht habe. Natürlich hängt die für dich beste Methode immer von deiner Konfiguration ab. Besonders, wenn du eine große zusätzliche Platte besitzt, könntest du deine Daten zuerst auf diese Platte kopieren und dann neu installieren. Ich hatte nicht diese Möglichkeit und mache deshalb normalerweise Backups auf 1.44 MB Floppies. Auf jeden Fall hoffe ich, daß die unten beschriebene Strategie neuen Benutzern helfen wird.

Ich möchte Olivier Tharan für seine ausführliche Antwort auf meine gepostete Nachricht in fr.col.moderated danken, die Version 1 dieses Artikels war, sowie Finn Bo Jorgensen und Chmouel Boudjnah für ihre Anregungen.

Prinzipielle Vorgehensweise

- Vorbereitung: Back-up, untersuche deine Dateien und mach dir von den wichtigen Notizen, bevor du weitermachst. Lies diesen Artikel, um zu verstehen, was du tust (Abschnitt 3 unten).

- Entferne Windows (Abschnitt 4 unten).

- Repartitionierung, der trickreiche Teil (Abschnitt 5 unten).

Vorbereitung und mögliche Fehlerquellen

Mach vor allem von allen wichtigen Dateien ein Back-up. Besonders von den Konfigurationsdateien und deiner Arbeit. Mehr werde ich dazu jetzt nicht mehr sagen.

Ein vorbereitender Schritt ist es, zu verstehen, was du tun wirst. Es folgen einige Erklärungen der Befehle und Dateien, aber das ganze ist unvollständig. Lies deshalb die Man Pages! In diesem Fall, fdisk, mk2ext, cp (ein nicht so dummer Befehl), lilo, lilo.conf und fstab (es gibt auch Man Pages für bestimmte Konfigurationsdateien). Eine sehr ausführliche Dokumentation über lilo findet sich im Verzeichnis /usr/doc/lilo-0.20/doc/ (wenn dein System richtig installiert ist). Vor allem gibt es da ein 46-seitiges <<Benutzerhandbuch>>! Für fdisk lies die Datei /usr/doc/util-linux-2.7/README.fdisk, die ebenfalls sehr vollständig ist. Beim Schreiben dieses Artikels habe ich außerdem ein sehr nützliches Mini How-To kennengelernt, das sehr wichtig ist: Hard Disk Upgrade Mini How-To.

Als erstes ist hier meine Partitionstabelle:


   [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

Wir sehen, daß Windows auf hda1 ist. Es ist nicht ungewöhnlich für fdisk, <<Unknown>> bei FAT32 Partitionen anzuzeigen. Mein Kernel (momentan 2.0.34) weiß, wie man diesen Typ von Dateisystem anspricht, aber dies gilt nicht für fdisk. Um dies zu zeigen, ist hier die Ausgabe von df (mit der gemounteten dos Partition


    [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

Du mußt zwei Konfigurationsdateien editieren, /etc/fstab und /etc/lilo.conf. Sie sehen ungefähr so aus:


    [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

Wiederherstellen der Windowspartition

Von jetzt an mußt du alles als root machen. Aus psychologischen Gründen rate ich dir, dich als root einzuloggen (und nicht über su von deinem Account aus). Wenn du vi zum Editieren benutzt, mußt du eventuell w! zum Speichern benutzen. In jedem Fall rate ich dir, zu überprüfen, daß deine Änderungen wirklich gespeichert sind (verlaß deinen Editor und schau dir die Dateien mit less an).

Du wirst jetzt als nächstes die Befehle fdisk und mke2fs benutzen. Diese Befehle benutzt man für Festplattenpartitionen sowie alle anderen Speichersysteme. Es ist besser, diese Befehle nur auf nicht gemounteten Partitionen anzuwenden. Das ganze geschieht in drei Schritten.

- Wenn deine Partition gemountet ist, unmounte sie: umount /mnt/dos.

- Starte fdisk. Ändere die Identität von hda1: wir erklären Linux, daß diese Partition jetzt eine Linux eigene Partition sein soll. Mach dies mit dem folgenden Befehl t (t, 1, 83). Schau dir das Ergebnis mit p an, das einzige, was sich ändert, ist Unknown, das nun linux eigen ist und das c, das nun 83 wird. Speicher und beende: w. Betrachte noch mal : fdisk -l. Beim Beenden von fdisk erhielt ich die folgende Fehlermeldung:


   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.

Soweit ich weiß, ist diese Nachricht normal und harmlos: Ich habe den Rechner jedenfalls nicht neu gestartet.

- Formatiere: mke2fs /dev/hda1. Es erscheinen dann viele Nummern, das System arbeitet ein bißchen und puh! Windows 98 existiert nicht mehr! Der Kluge wird noch die -c option hinzufügen, die einen schnellen Check nach defekten Blöcken durchführt.

Jetzt hast Du es geschafft. Windows existiert nicht länger. Ich war nicht besonders erregt darüber (ich habe persönlich nichts gegen win98, anders als bei Microsoft...). Aber ich war glücklich für Linux ...

Benutzen der <<neuen>> Partition.

Gut, jetzt habe ich eine leere 1.5 Gb Partition, eine 600 Mb für /home und eine 800 Mb für / (und eine swap Partition mit 100 Mb). Es sind 100 Mb in /home/myaccount, die in /usr/local/ sein sollten (Ich lasse sie auf /dev/hda2) und es sind 10 Mb in /usr/local. Ich verschiebe / nach hda1 und /usr/local nach hda2. Dies ergibt:


   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

Genügend Speicherplatz für ein Dutzend Jahre....

Nun, wie macht man das?. Um auf hda1 zugreifen zu können, mußt du es irgendwo mounten. Meistens benutzt man /mnt.

- Lege ein neues Verzeichnis in /mnt an, z.B. /mnt/tmp, um einen geeigneten Mountpunkt für hda1 zu schaffen (mount legt keine Verzeichnisse an): mkdir /mnt/tmp.

- Mounte hda1 in /mnt/tmp : mount -t ext2 /dev/hda1 /mnt/tmp (natürlich gibt -t ext2 den Dateisystemtyp an).

- Kopiere / unter Beibehaltung seiner Struktur nach /mnt/tmp/: cp -ax / /mnt/tmp/. Für die -a option sagt die Man Page: <<Erhalte so viel wie möglich von der Struktur und den Eigenschaften der Originaldatei in der Kopie. Dasselbe für -dpR>>. Lies die cp Man page für die Bedeutung von d, p und R, die das a besser erklären. Die -x option möchte die Unterverzeichnisse übergehen, die in anderen Dateisystemen sind, als dem, von dem die Kopie ausging. In meinem Fall vermeidet dies das Kopieren von /home nach /dev/hda1. Der Kopiervorgang dauert eine Weile (ungefähr 15 min mit meiner IDE Platte und meiner AMD K6 mit 266 MHz), nun also der übliche Satz: Geh solange einen Kaffee trinken oder nimm einen doppelten Whisky.

- Es fehlen immer noch einige Dinge von hda1. Wegen der -x option fehlen uns die beiden Verzeichnisse (leer) /home und /proc. Deshalb mkdir /mnt/tmp/home und mkdir /mnt/tmp/proc. Diese Verzeichnisse sind die Mountpunkte, die da sein müssen, damit /home (das auf hda3 liegt) und /proc auf root gemountet werden können.

Jetzt werden die Dinge ein bißchen komplizierter. Wir haben / (=/-/home) auf hda2, aber auch in /mnt/tmp/. Wir machen uns für einen Neustart bereit. Wir müssen fstab und lilo.conf. editieren. Linux muß erklärt werden, daß wir einen Neustart mit /, das in /mnt/tmp/ liegt, machen. Dadurch ist fstab, die Datei, die wir ändern müssen, in Wirklichkeit in /mnt/tmp/etc/fstab. Für lilo.conf ist das anders. Wir müssen /etc/lilo.conf editieren, lilo laufen lassen und auch die neue Datei /etc/lilo.conf nach /mnt/tmp/etc/lilo.conf kopieren (um ein konsistentes System zu haben). Oder wir könnten nur /mnt/tmp/etc/lilo.conf editieren und dann lilo mit der -C option laufen lassen, wobei wir lilo erzählen, daß es eine andere Konfigurationsdatei benutzen muß. Ich wählte die zweite Methode.

- /mnt/tmp/etc/fstab

Diese Datei zeigt, wie und wo alles, was in startup mountbar ist, zu mounten ist. Wenn wir erneut starten, wollen wir root / als hda1 haben, weshalb wir die erste Zeile von /etc/fstab wie unten brauchen. Natürlich können wir nicht zwei roots mounten. Da wir auf /dev/hda2 arbeiten müssen, mounte ich es in /mnt/tmp. Der Rest bleibt unverändert.


    /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 ist die Konfigurationsdatei für lilo, das kleine Programm auf dem MBR. Ich erkläre das nicht im Detail. Den Leuten, die lilo nicht benutzen, rate ich stark, dies zu ändern (lodelin ist eine Absurdität in unserem Fall und warum sollte man heutzutage noch von einer Diskette booten?). Hier erklären wir lilo nur, daß der Kernel sich jetzt auf hda1 befindet (er war vorher auf hda2) und natürlich entfernen wir alles bezüglich 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

- Laß lilo laufen: /sbin/lilo -v -C /mnt/tmp/etc/lilo.conf. Das v sorgt dafür, daß lilo uns ein bißchen mehr Informationen darüber gibt, was gerade vor sich geht. Hier darf es keine Fehlermeldungen geben. Wir dürfen keinen Fehler machen, wenn wir den Rechner neu starten wollen. Wir sollten eine ähnliche Ausgabe wie diese bekommen:


    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.

- Starte den Rechner neu. Ein paar kleine Tests (df, fdisk -l, damit wir sehen, ob das Dateisystem so ist, wie wir es spezifiziert haben).

- Entferne alles von /mnt/tmp/, was wir hierdurch erreichen: rm -rf * in das Verzeichnis /mnt/tmp. Als nächstes kopieren wir das Verzeichnis /usr/local, das: cp -a * /mnt/tmp bleibt, nach cd /usr/local. Checke, ob alles in Ordnung ist, dann lösche /usr/local: rm -fr * in dem Verzeichnis /usr/local (beachte, daß wir <<name>> nicht entfernen dürfen, das wir bald als Mountpunkt für local angeben werden!).

- Editiere wieder /etc/fstab und und ändere nur die zweite Zeile:


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

- Starte den Rechner neu. Mach einige Tests.

Und die Operation ist beendet. Ich versichere dir, daß ich zufrieden war, besonders nachdem ich viele Programme getestet hatte und alle liefen!

Probleme.

Um ehrlich zu sein, ich hatte ein kleines Problem. Das obige ist nicht genau so, wie ich es gemacht habe, sondern eine Idealisierung. Der Rat, den ich dir geben kann ist, ein bißchen von dem, was du tust, zu verstehen, weil dir das erlaubt zu verstehen, warum etwas nicht läuft und Olivier Tharan riet mir den Rechner im single user mode wiederhochzufahren (Ich machte es nicht, da die einzige Dokumentation, die ich über den single user mode habe, <<schau dir die Dateien im single user boot mode an>> lautete und ich ein bißchen faul war). Vor dem ersten Neustart ist es vielleicht klüger eine gute Bootdiskette anzulegen (die vielleicht an die spezifische Situation angepaßt werden muß, und ich gebe zu, daß ich nicht genau weiß, wie das geht...)

Hier ist das Problem, das ich hatte. Vor dem ersten Neustart machte ich fast alles so wie oben beschrieben. Aber nach dem Neustart, auf der Ebene des Mountens des Dateisystems, lief ein Bündel von Fehlermeldungen mit hoher Geschwingigkeit über meinen Bildschirm. Ich schaffte es, /proc ... error ... error ... /home ... error zu lesen (ohne eine Spur davon in /var/log/messages zu finden). Dann (puh) erschien das login prompt. Ich loggte mich als root ein und sofort erschien


    [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

Home war nicht gemountet. I editierte fstab, aber alles schien normal zu sein. Dann hatte ich die brilliante Idee (der doppelte Whisky?) /home zu mounten und wurde mit der Meldung <<mount: mount point /home does not exist>>. begrüßt. Da habe ich verstanden, daß ich nicht verstanden hatte, was ein Mountpunkt ist und daß ich vergessen hatte, die Option x auf cp zu stellen (Ich gebe zu, ich schäme mich ein bißchen). I definierte die Mountpunkte /home und /proc und mountete /home und /proc, um zu sehen, ob alles in Ordnung ist. Dann war die Operation wie oben beschrieben, beendet.


Referencen

  • man pages: 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
  • Vom Englischen ins Deutsche übersetzt von Katja Korn