Hat jemand einen Vorschlag, wie man die Root-Partition auf ein neues Laufwerk verschiebt und grub2 so einrichtet, dass es auf diesem Laufwerk startet? Ich habe anscheinend kein Glück, grub-mkconfig anzuweisen, was ich tun möchte (z. B. chroot'int in meinem neuen Stammverzeichnis verwirrt nur alle Skripte).
Hintergrund Ich verwende Debian Squeeze auf einem kopflosen NAS mit geringem Stromverbrauch. Mein aktuelles Setup ist /
ein sda0
und /boot
ein sde0
(eine CF-Karte): Ich brauchte das separate, /boot
weil sd[a-d]
ich ein verzögertes Hochfahren machen musste. Jetzt habe ich eine alte 2,5" IDE - Festplatte zu verwenden , wie gefunden /
einschließlich /boot
mir zu erlauben , alle der großen Scheiben nach unten zu drehen.
Was ich versucht habe Grundsätzlich ging ich
mount -o rw /dev/sdf5 /mnt/newroot
cp -ax / /mnt/newroot
cp -ax /boot /mnt/newroot/boot
Dann habe ich es versucht
chroot /mnt/newroot
update-grub
Aber das schlug fehl, als Grub fragte, ob Root gemountet sei. Dann machte ich einen halbherzigen Versuch /mnt/newroot/grub/grub.cfg
, das Kernel-Image zu finden sdf5
, gefolgt von einem grub-install --root-directory=/mnt/newroot /dev/sdf
. Aber dies brachte mich gerade zu einer Rettungsaktion, als ich versuchte, von dort zu booten sdf
.
Mein Backup-Plan ist, einfach neu zu installieren, also eine Bonusfrage (kein Häkchen für diese): Was muss ich tun, um meine lvm2- und mdadm-Konfiguration zu übertragen? Ist alles in den Dateisystemen gespeichert (und wird es automatisch erkannt), oder muss ich es selbst entfernen?
Lösung (danke an Maciej Piechotka): Wie Maciej betont, muss ich eine richtige Chroot haben, damit alle Madenwerkzeuge funktionieren. Als Referenz, so habe ich es gemacht:
janus@nasguld:/mnt/newroot$ sudo cp -ax / /mnt/newroot
janus@nasguld:/mnt/newroot$ sudo cp -ax /boot /mnt/newroot
Alle Dateien werden jetzt kopiert (siehe hier für eine Erläuterung der Kopierstrategien). Korrigieren Sie das Neue etc/fstab
, um auf die neue Wurzel zu verweisen:
janus@nasguld:/mnt/newroot$ diff -u etc/fstab.old etc/fstab
-UUID=399b6a6d-c067-4caf-bb3e-85317d66cf46 / ext3 errors=remount-ro 0 1
-UUID=b394b614-a977-4860-bbd5-7862d2b7e02a /boot ext3 defaults 0 2
+UUID=b9d62595-e95c-45b1-8a46-2c0b37fcf153 / ext3 noatime,errors=remount-ro 0 1
Schließlich montiert dev
, sys
und proc
auf die neue Wurzel und chroot:
janus@nasguld:/mnt/newroot$ sudo mount -o bind /dev /mnt/newroot/dev
janus@nasguld:/mnt/newroot$ sudo mount -t proc none /mnt/newroot/proc
janus@nasguld:/mnt/newroot$ sudo mount -t sysfs none /mnt/newroot/sys
janus@nasguld:/mnt/newroot$ sudo parted /dev/sdb set 5 boot on
janus@nasguld:/mnt/newroot$ sudo chroot .
Wir sind jetzt genau so an die zukünftige Wurzel gewöhnt, wie sie aussehen wird. Laut Maciej sollte es in Ordnung sein, nur anzurufen grub-install
, aber ich habe update-grub
erstmal einen Blick auf die /boot/grub/grub.cfg
vor der Installation des Bootloaders erzeugten Dateien geworfen. Ich bin nicht sicher, ob es automatisch aktualisiert wird.
root@nasguld:/# update-grub
root@nasguld:/# grub-install /dev/sdb
/etc/default/grub
und das genaue Protokoll vonupdate-grub
./etc/fstab
hattechroot
(dies würde im Einklang mit derupdate-grub
Beschwerde stehen, dass "\ ist nicht gemountet"). Wenn ich das noch einmal machen würde, würde ich zuerst versuchen, ohne die Mühe zu machen, die speziellen Dateisysteme in der Chroot zu mounten.Antworten:
Mounten Sie grundlegende Dateisysteme und kopieren / ändern Sie Dateien, während Sie chrooten:
mount -o bind /dev/ /path/to/chroot/dev
)mount -t proc none /path/to/chroot/proc
)mount -t sysfs none /path/to/chroot/sys
)IIRC, das bei der Installation von Grub 2 in Arch und mehrmals unter Gentoo funktioniert hat. Dann nach chroot zu
/path/to/chroot
befehlen war einfach:Ab lvm2 (und ich glaube Madm, aber ich habe es nicht verwendet) ist die Konfiguration auf der Festplatte gespeichert. Es gibt Konfiguration, was gelesen werden sollte, um Geräte zu erkennen. Angenommen, Ihre Geräte befinden sich an Standardstandorten (
/dev/sd*
oder/dev/hd*
), sollte dies kein Problem darstellen.PS. Ich würde einfachem cp des lebenden Systems nicht vertrauen, da es einige Plätze gibt, in denen es falsch gehen kann:
/etc/fstab
und andere nützliche Dateien/tmp
etc.)quelle
cp -ax
sollte in Ordnung sein (möglicherweise nach dem Löschen auf Einzelbenutzer-Runlevel) gemäß diesem alten Howto: tldp.org/HOWTO/Hard-Disk-Upgrade/copy.htmlupdate-grub
vorher tuninstall-grub
.Sie können grub von der Live-Distribution installieren, ohne chrooten zu müssen:
quelle
grub-install
nur die Grub-Image-Dateien aktualisiert und der MBR geschrieben: Insbesonderegrub.cfg
wird nicht aktualisiert. Wie ich oben schon sagte, ist das Mounten der speziellen Verzeichnisse vielleicht zu viel des Guten, aber ich denke immer noch, dass die Chroot der Weg ist, umgrub.cfg
auf einfache Weise zu aktualisieren ?update-grub
an die Arbeit machen und das hat man nicht--root-directory
oder so, nein?Übrigens, wenn Sie eine Partition hinzufügen (wie z. B. ein Fenster), in die Grub im Boot-Sektor keine schreiben soll, aber wenn Grub darüber informiert werden soll, wenn Ihr Computer bootet, können Sie die Partitionen erneut scannen und generieren Erstellen Sie eine neue Datei grub.cfg mit dem Befehl grub_mkconfig wie folgt in einer Terminalsitzung
Wenn Sie nun von Ihrer aktuellen Linux-Partition booten (die zuvor gebootet wurde), werden Sie über die andere Partition informiert.
quelle