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

  • /dev/sdb1 nem ahol a BIOS MBR-t keres, ‘ s a /dev/sdb -ban, azaz a lemez legelső szektorában található.
  • azt akarja mondani, hogy a grub-install /dev/sdb --root-directory=/media/new_drive/ -t kell használnom sdb1 helyett
  • igen, pontosan ezt jelenti a @wurtel
  • Igen. Feltéve, hogy ‘ megfelelő gyökér fájlrendszert helyezett el erre a helyre (nem látom, hogy a lépés megemlülne a grub telepítése és futtatása között -install).
  • Megpróbálom a / dev / sdb paranccsal, igen, nem értem el ‘ t a gyökér fájlrendszer elhelyezéséig. fel a grub képernyőn.

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. A cp -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
  • 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

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 a update-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.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük