Am o casetă virtuală care rulează cu CentOS.

Am atașat un nou disc virtual la CentOS VM existent și „m” acum încerc să instalez GRUB pe acest nou disc atașat.

Mai târziu, voi afișa o a doua VM cu un hard disk de pornire nou pregătit cu un sistem de fișiere rădăcină personalizat și kernel.

I Am încercat următorii pași:

  • Ați atașat un nou disc virtual la mașina CentOS de lucru existentă.
  • A creat o nouă partiție cu fdisk /dev/sdb. În timpul partiționării, am ales opțiunile partiție primară, partiția numărul 1 și alte opțiuni implicite.
  • A formatat discul cu mkfs.ext3 /dev/sdb1.
  • A montat discul pe /media/new_drive.
  • GRUB instalat grub-install /dev/sdb1 --root-directory=/media/new_drive/.

După aceasta, a doua VM cu hard diskul nou pregătit nu a pornit; Am primit eroarea: could not read from the boot medium. Se pare că MBR nu este actualizat după grub-install, dar pot vedea GRUB instalat sub /boot/grub pe noua unitate.

Dar cel mai rău lucru este că mi-a corupt CentOS GRUB-ul existent: CentOS VM se blochează afișând un ecran negru, singurul text fiind GRUB.

grub-install /dev/sdb1 nu modifică MBR-ul sdb1? Nu este acesta modul corect de a instala GRUB pe unitatea nouă?

Comentarii

  • /dev/sdb1 nu este în cazul în care BIOS-ul caută MBR, ‘ este în /dev/sdb adică chiar primul sector al discului.
  • vrei să spui că trebuie să folosesc grub-install /dev/sdb --root-directory=/media/new_drive/ în loc sdb1
  • da, exact asta înseamnă @wurtel
  • Da. Presupunând că ‘ ați pus un sistem de fișiere rădăcină adecvat în acea locație (nu ‘ nu văd acel pas menționat între montajul și rularea -install).
  • Voi încerca cu / dev / sdb, da ‘ nu am ajuns până la punerea sistemului de fișiere rădăcină, am crezut că voi încerca mai întâi să arăt sus ecran grub.

Răspuns

Nu sunt un expert grub2 (îmi pare rău), dar încercați să adăugați --skip-fs-probe la linia dvs. de instalare grub, am constatat că acest lucru împiedică crearea de /boot/grub/device.map care poate provoca bootarea la un prompt grub. Cred că fără acest lucru parametrul grub-install, în loc să facă ceea ce îi spui, consideră că este mai inteligent decât tine și poate face ceva diferit.

Un alt lucru este să fii sigur că folosești grub-install potrivit (adică pentru grub2 și nu pentru grub original). Aceasta nu este o problemă dacă vă aflați în Centos, dar cu SystemRecoveryCD ambele versiuni sunt disponibile și deci trebuie să utilizați grub2-install. Am învățat din greu …

Și așa cum a subliniat @wurtel (felicitări), ar trebui să specificați o unitate, nu o partiție. Grub2 se instalează în sectorul 0 al întregii unități de disc, iar acest „stub” este cel care rulează la momentul pornirii, dar trebuie să știe unde se află pe disc ar trebui să instaleze fișierele pentru următoarea etapă de pornire – aceasta este ceea ce --root-directory este pentru. (Cred.)

Citirea man grub-install și googling văd că --root-directory nu este menit să fie folosit pentru versiunile grub2 1.99 ++, deși funcționează din experiența mea. Sunteți menit să utilizați --boot-directory și să vă referiți la directorul de încărcare propriu-zis, deci acest lucru vă va oferi:

grub-install /dev/sdb --skip-fs-probe --boot-directory=/media/new_drive/boot 

Comentarii

  • Prima mea încercare a fost fără partiționare și formare grub-install /dev/sdb, dar a dat erori. Mai târziu am încercat cu disc partiționat și formatat, cu disc formatat pe care îl foloseam întotdeauna / dev / sdb1, voi încerca de-a lungul –skip-fs-probe
  • @Renjith oh și directorul rădăcină ar trebui să se refere la punctul de montare montat când rulați grub-install, deci trebuie să montați partiția pe noua unitate, de ex. la /mnt/sys2 și apoi în linia dvs. de instalare grub specificați --root-directory=/mnt/sys2. Este ‘ contra-intuitiv (așa cum cred o mulțime de lucruri grub), dar ‘ este modul în care funcționează.
  • mi-am editat răspunsul oarecum …
  • Grub chiar acum folosesc 0.97, care nu ‘ nu acceptă –skip-fs-probe . dar fără asta a funcționat. sdb1 a fost greșeala.
  • ok mă bucur că l-ați rezolvat, adică vechiul grub nu cel mai recent ‘ strălucitor ‘ grub2. Nu ‘ nu mi-am dat seama că RedHat a fost atât de lent să treacă la grub2. CentOS 7 folosește grub2, dar CentOS 6 (și versiunile anterioare) folosește grub.

Răspuns

Așa am mutat o instalare Debian constând dintr-o partiție de boot /boot și o partiție rădăcină / pe o unitate nouă și a făcut-o bootabilă utilizând GNU GRUB :

Partiții de clonare

  • Folosind CD live GParted , creați partiția de pornire și rădăcină pe noul unitate.
  • Folosind o consolă rădăcină în GParted, montați vechea partiție de boot (să spunem „s /dev/sda1) și noua partiție (/dev/sdb1): mount /dev/sda1 /mnt/oldBoot && mount /dev/sdb1 /mnt/newBoot
  • Copiați datele de pe vechea partiție de boot la cea nouă: cp -afv /mnt/oldBoot /mnt/newBoot. Explicația cp -afv:
    • a înseamnă ” arhivă ” ceea ce înseamnă:
      • nu faceți legături de dereferință
      • copiați recursiv (cum ar fi -R)
      • păstrează toate atributele (timestamp, proprietar, permisiune)
    • f: forță, dacă există un fișier de destinație existent nu poate fi deschis, eliminați-l și încercați din nou
    • v: detaliat, explicați ce se face
  • Acest lucru va genera o ieșire pe consola dvs. care vă arată ce fișier este copiat în prezent și dacă cp face progrese
  • Montați și copiați fișierele din vechea partiție rădăcină în noua:
    • Pentru siguranță: umount /mnt/oldBoot && umount /mnt/newBoot
    • Montați partiția rădăcină veche și nouă (presupunând că este „s /dev/sda2 și /dev/sdb2): mount /dev/sda2 /mnt/oldRoot && mount /dev/sdb2 /mnt/newRoot
    • Copiați datele a vechii partiții rădăcină la noua partiție rădăcină: cp -afv /mnt/oldRoot /mnt/newRoot
  • Editați tabel cu sistem de fișiere care definește ce partiții sunt montate la boot (voi folosi Vim pentru asta):
    • vi /etc/fstab

    • Veți observa că vechile partiții sunt menționate aici. Folosiți în schimb UUID-urile noilor partiții

    • Puteți introduce temporar toate UUID-urile în fstab pentru o copiere și lipire mai ușoară cu :r !blkid

    • Utilizați UUID-urile noilor partiții pentru a modifica intrările din fstab. Ar trebui să arate cam așa:

       `# <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` 
      • Eliminați rezultatul blkid din fstab pe care l-ați inserat mai devreme cu :r !blkid

Instalați GRUB

  • Montați sistemele de fișiere virtuale ale CD-ului live GParted:

    mount --bind /dev /mnt/newRoot/dev mount --bind /proc /mnt/newRoot/proc mount --bind /sys /mnt/newRoot/sys

  • utilitățile GRUB ale CD-ului live GParted disponibile pentru partiția rădăcină: mount --bind /usr/ /mnt/newRoot/usr

  • Montați partiția de boot pe partiția rădăcină de la GRUB își va stoca configurația în /boot: mount /dev/sdb1 /mnt/newRoot/boot

  • Utilizați chroot /mnt/newRoot pentru a transforma temporar noua partiție rădăcină în rădăcina sistemului de fișiere

  • Creați un fișier de configurare GRUB la /boot/grub/grub.cfg folosind update-grub2

  • Instalați GRUB pe noua unitate: grub-install /dev/sdb. Nu trebuie să specificați aici un număr de partiție

  • Reveniți la sistemul de fișiere al CD-ului live GParted: exit

  • Demontați partițiile: umount /mnt/newRoot/*

  • Mașina de închidere

  • Dacă aveți mai multe unități atașate, asigurați-vă că unitatea mai nouă este pe primul loc în ordinea de încărcare

  • Porniți mașina

Aceste instrucțiuni sunt inspirate de cele de la oaktreepeak.com .

Alternativ, puteți oferi Clonezilla încearcă să realizezi același lucru.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *