Van egy virtuális dobozom, amely CentOS-szal fut.
Új virtuális lemezt csatoltam a meglévő CentOS virtuális géphez, és “m most megpróbálom telepíteni a GRUB-ot erre az újonnan csatolt lemezre.
Később felhozok egy második virtuális gépet egy újonnan előkészített indítható merevlemezzel, egyedi root fájlrendszerrel és kernellel.
I kipróbálták a következő lépéseket:
- új virtuális lemezt csatolt a meglévő működő CentOS géphez.
- Új partíciót hozott létre a
fdisk /dev/sdb
. A particionálás során az elsődleges partíció, az 1. számú partíció és az egyéb alapértelmezett opciókat választottam. - A lemezt a
mkfs.ext3 /dev/sdb1
formátummal formázta. - A lemezt a
/media/new_drive
helyre helyezte. - A GRUB telepítve
grub-install /dev/sdb1 --root-directory=/media/new_drive/
.
Ezek után a második virtuális gép az újonnan előkészített merevlemezzel nem indult el; Megkaptam a hibát: could not read from the boot medium
. Úgy tűnik, hogy az MBR nincs frissítve grub-install
után, de látom, hogy a GRUB telepítve van az /boot/grub
alatt az új meghajtón.
De a legrosszabb az, hogy megrongálta a meglévő CentOS GRUB-ot: A CentOS virtuális gépe fekete képernyőt mutat, az egyetlen szöveg GRUB
.
Miért grub-install /dev/sdb1
nem módosítja az sdb1 MBR-jét? Nem ez a helyes módszer a GRUB új meghajtóra történő telepítéséhez?
Megjegyzések
Válasz
Nem vagyok grub2 szakértő (sajnálom), de próbálkozzon a --skip-fs-probe
a grub-install sorához, azt tapasztaltam, hogy ez megakadályozza az /boot/grub/device.map
létrehozását, ami a grub parancssor indítását okozhatja. Úgy gondolom, hogy e nélkül A grub-install paraméter, ahelyett, hogy megcsinálná, amit mond, azt hiszi, hogy okosabb, mint te, és mást tehet.
A másik dolog az, hogy biztosan a megfelelő grub-install programot használod (pl. grub2 és nem az eredeti grub esetében). Ez nem probléma, ha a Centos belsejében tartózkodik, de a SystemRecoveryCD segítségével mindkét verzió elérhető és tehát a grub2-install
parancsot kell használnia. Megtanultam a nehéz utat …
És amire a @wurtel rámutatott (kudos), meg kell adnia egy meghajtót, nem pedig partíciót. A Grub2 telepíti az egész lemezmeghajtó 0. szektorát, és ez a “csonk” az, ami indításkor fut, de tudnia kell a lemez hollétét, és telepítenie kell a fájlokat a következő indítási szakaszhoz – ezt a --root-directory
paraméter a. (Azt hiszem.)
A man grub-install
olvasása és a guglizás azt látja, hogy a --root-directory
nem igazán való A grub2 1.99 ++ verziói, bár tapasztalataim szerint működik. Önnek a --boot-directory
parancsot kell használnia, és hivatkoznia kell a tényleges rendszerindítási könyvtárra, így ez megadhatja:
grub-install /dev/sdb --skip-fs-probe --boot-directory=/media/new_drive/boot
Megjegyzések
- Az első kísérletem partíció és
grub-install /dev/sdb
felosztás és formázás nélkül történt, de hibát adott. Később megpróbáltam particionált és formázott lemezzel, formázott lemezzel mindig a / dev / sdb1 fájlt használtam, megpróbálkozom a –skip-fs-probe mentén. - @Renjith oh, és a gyökérkönyvtárnak hivatkoznia kell a csatlakoztatott csatolási pontot a grub-install futtatásakor, ezért a partíciót fel kell csatolni az új meghajtóra, pl. a
/mnt/sys2
címen, majd a grub-install sorban adja meg a--root-directory=/mnt/sys2
parancsot. ‘ ellentmondó intuitív (mint sok sok grub dolog szerintem), de ‘ hogyan működik. - némileg szerkesztettem a válaszomat …
- A grub jelenleg 0,97-et használok, ami nem támogatja a ‘ t –skip-fs-probe . de enélkül működött. sdb1 volt a hiba.
- rendben, örülök, hogy megoldottad, vagyis a régi grub nem az újabb ‘ fényes ‘ grub2. Nem vettem észre ‘, hogy a RedHat olyan lassan lépett át a grub2-be. A CentOS 7 grub2-t használ, de a CentOS 6 (és korábbi) grub-ot használ.
Válasz
Így áthelyeztem egy Debian telepítést, amely egy rendszerindító partícióból állt /boot
és egy gyökérpartíciót /
egy új meghajtóra, és indíthatóvá tette GNU GRUB használatával:
Klónpartíciók
- A GParted live CD használatával hozza létre az indító és gyökérpartíciót az új meghajtó.
- A GParted gyökérkonzoljának használatával csatlakoztassa a régi rendszerindító partíciót (mondjuk “s” mondjuk s
/dev/sda1
) és az új partíciót (/dev/sdb1
):mount /dev/sda1 /mnt/oldBoot && mount /dev/sdb1 /mnt/newBoot
- Másolja az adatokat a régi rendszerindító partícióról az újra:
cp -afv /mnt/oldBoot /mnt/newBoot
. Acp -afv
magyarázat:-
a
az ” archívum “, ami azt jelenti:- ne tegyenek hivatkozásokat linkekre
- rekurzív módon másoljanak (például
-R
) - minden attribútum megőrzése (időbélyeg, tulajdonos, engedély)
-
f
: kényszer, ha létező célfájl nem nyitható meg, távolítsa el és próbálkozzon újra. -
v
: részletes, magyarázza el, mi történik
-
- Ez létrehoz egy kis kimenetet a konzolon, amely megmutatja, hogy melyik fájl van éppen másolva, és hogy a
cp
előrehalad-e - Csatlakoztassa és másolja a fájlokat a régi gyökérpartícióról az új:
- A biztonság kedvéért:
umount /mnt/oldBoot && umount /mnt/newBoot
- Csatlakoztassa a régi és az új gyökérpartíciót (feltételezve, hogy “s
/dev/sda2
és/dev/sdb2
):mount /dev/sda2 /mnt/oldRoot && mount /dev/sdb2 /mnt/newRoot
- másolja az adatot a régi gyökérpartíció egyike az új gyökérpartícióhoz:
cp -afv /mnt/oldRoot /mnt/newRoot
- A biztonság kedvéért:
- Szerkessze a fájlrendszer tábla , amely meghatározza, hogy mely partíciók vannak telepítve a rendszerindításhoz (ehhez a Vim-et használom):
-
vi /etc/fstab
-
Észre fogja venni, hogy a régi partíciókra itt hivatkozunk. Használja helyette az új partíciók UUID-jeit
-
Az összes UUID-t ideiglenesen beillesztheti az fstab-ba a könnyebb másolás és beillesztés érdekében a
:r !blkid
-
Az új partíciók UUID azonosítóival módosíthatja az fstab bejegyzéseit. Valahogy így kell kinézniük:
`# <file system> <mount point> <type> <options> <dump> <pass> # Root partition UUID=76fd1ffd-fb96-4ab4-be1a-42f8e9223983 / ext4 errors=remount-ro 0 1 # Boot partition UUID=e560e29e-8752-4b83-b1ee-4b86c0009f0b /boot ext2 defaults 0 2`
- Távolítsa el a
blkid
kimenetét a beillesztett fstab-ból korábban::r !blkid
- Távolítsa el a
-
A GRUB telepítése
-
Csatlakoztassa a GParted élő CD virtuális fájlrendszereit:
mount --bind /dev /mnt/newRoot/dev mount --bind /proc /mnt/newRoot/proc mount --bind /sys /mnt/newRoot/sys
-
a GParted élő CD GRUB-felhasználása, amely elérhető a gyökérpartíció számára:
mount --bind /usr/ /mnt/newRoot/usr
-
Csatlakoztassa a rendszerindító partíciót a root partícióhoz a GRUB óta el fogja tárolni a konfigurációját a
/boot
fájlban:mount /dev/sdb1 /mnt/newRoot/boot
-
Használja a
chroot /mnt/newRoot
, hogy az új gyökérpartíció ideiglenesen a fájlrendszer gyökere legyen -
Hozzon létre egy GRUB konfigurációs fájlt a következő helyen:
/boot/grub/grub.cfg
aupdate-grub2
használatával
-
A GRUB telepítése az új meghajtóra:
grub-install /dev/sdb
. Itt nem kell partíciószámot megadni -
Vissza a GParted élő CD fájlrendszeréhez:
exit
-
Partíciók leválasztása:
umount /mnt/newRoot/*
-
Gép leállítása
-
Ha több meghajtó van csatlakoztatva, győződjön meg arról, hogy az újabb meghajtó az első helyen áll a rendszerindítási sorrendben.
-
Gép indítása
Ezeket az utasításokat a oaktreepeak.com útmutatói ihlették.
Alternatív megoldásként megadhatja a következőt is: Clonezilla megpróbálja elérni ugyanezt.
/dev/sdb1
nem ahol a BIOS MBR-t keres, ‘ s a/dev/sdb
-ban, azaz a lemez legelső szektorában található.grub-install /dev/sdb --root-directory=/media/new_drive/
-t kell használnom sdb1 helyett