Mám virtuální schránku spuštěnou s CentOS.

Připojil jsem nový virtuální disk ke stávajícímu CentOS VM a já nyní se pokouším nainstalovat GRUB na tento nově připojený disk.

Později vygeneruji druhý virtuální počítač s nově připraveným zaváděcím pevným diskem s vlastním kořenovým souborovým systémem a jádrem.

I vyzkoušeli následující kroky:

  • Připojil nový virtuální disk k existujícímu pracovnímu počítači CentOS.
  • Vytvořil nový oddíl pomocí fdisk /dev/sdb. Při vytváření oddílů jsem vybral možnosti primární oddíl, oddíl číslo 1 a další výchozí možnosti.
  • Naformátoval disk pomocí mkfs.ext3 /dev/sdb1.
  • Připojil disk k /media/new_drive.
  • Nainstalován GRUB grub-install /dev/sdb1 --root-directory=/media/new_drive/.

Poté se druhý VM s nově připraveným pevným diskem nespustil; Zobrazila se chyba: could not read from the boot medium. Zdá se, že MBR není aktualizován po grub-install, ale vidím GRUB nainstalovaný pod /boot/grub na nové jednotce.

Ale nejhorší je, že to poškodilo můj stávající CentOS GRUB: CentOS VM visí a ukazuje černou obrazovku s jediným textem GRUB.

Proč nezmění grub-install /dev/sdb1 MBR sdb1? Není to správný způsob instalace GRUBu na nový disk?

Komentáře

  • /dev/sdb1 není kde systém BIOS hledá MBR, je ‚ s v /dev/sdb tj. úplně prvním sektoru disku.
  • Myslíš, že musím použít grub-install /dev/sdb --root-directory=/media/new_drive/ místo sdb1
  • ano, to je přesně to, co @wurtel znamená
  • Ano. Za předpokladu, že jste ‚ umístili na toto místo vhodný kořenový souborový systém (nevidím ‚ tento krok zmínit mezi připojením a spuštěním grubu -install).
  • Zkusím to s / dev / sdb, jo ‚ jsem se nedostal do uvedení kořenového souborového systému, myslel jsem, že se nejprve pokusím ukázat up grub screen.

Odpověď

Nejsem expert na grub2 (omlouvám se), ale zkuste přidat --skip-fs-probe na vaši linku grub-install, zjistil jsem, že to brání vytvoření /boot/grub/device.map, což může způsobit zavedení do výzvy grub. Myslím, že bez toho parametr grub-install si místo toho, co říkáte, myslí, že je chytřejší než vy, a může dělat něco jiného.

Další věcí je mít jistotu, že používáte správnou grub-install (tj. pro grub2 a ne pro původní grub). To není problém, pokud jste uvnitř Centos, ale s SystemRecoveryCD jsou k dispozici obě verze a takže musíte použít grub2-install. Dozvěděl jsem se to těžce …

A jak @wurtel zdůraznil (kudos), měli byste specifikovat disk, nikoli oddíl. Grub2 se instaluje do sektoru 0 celé diskové jednotky a tento „útržek“ se spouští při bootování, ale potřebuje vědět, kde na disku je, že by měl nainstalovat soubory pro další fázi bootování – to je to, co --root-directory parametr je pro. (Myslím.)

Čtení man grub-install a googlování vidím, že --root-directory ve skutečnosti není určen k použití grub2 verze 1.99 ++, i když to podle mých zkušeností funguje. Měli byste použít --boot-directory a odkazovat se na skutečný spouštěcí adresář, takže byste získali:

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

Komentáře

  • Můj první pokus byl bez rozdělení a formování grub-install /dev/sdb, ale došlo k chybě. Později jsem to zkusil s rozděleným a formátovaným diskem, s formátovaným diskem jsem vždy používal / dev / sdb1, pokusím se spolu –skip-fs-probe
  • @Renjith oh a kořenový adresář by měl odkazovat připojený přípojný bod při spuštění grub-install, takže musíte připojit oddíl na nový disk, např. na /mnt/sys2 a poté na řádku grub-install zadejte --root-directory=/mnt/sys2. Je to ‚ protiintuitivní (myslím, že je to spousta grubů), ale ‚ to funguje.
  • trochu jsem upravil svou odpověď …
  • Grub právě teď používám 0.97, což ‚ nepodporuje –skip-fs-probe . ale bez toho to fungovalo. Chyba byla sdb1.
  • ok, ráda, že jste to vyřešili, to je starý grub, ne novější ‚ lesklý ‚ grub2. Neuvědomil jsem si ‚, že RedHat je tak pomalý, že přejde na grub2. CentOS 7 používá grub2, ale CentOS 6 (a starší) používá grub.

Odpověď

Takto jsem přesunul instalaci Debianu skládající se ze zaváděcího oddílu /boot a kořenový oddíl / na nový disk a provedli jeho zavedení pomocí GNU GRUB :

Klonovat oddíly

  • Pomocí GParted live CD vytvořte zaváděcí a kořenový oddíl na novém disk.
  • Pomocí kořenové konzoly v GParted připojte starý spouštěcí oddíl (řekněme to s /dev/sda1) a nový oddíl (/dev/sdb1): mount /dev/sda1 /mnt/oldBoot && mount /dev/sdb1 /mnt/newBoot
  • Zkopírujte data ze starého spouštěcího oddílu do nového: cp -afv /mnt/oldBoot /mnt/newBoot. Vysvětlení cp -afv:
    • a znamená “ archiv “ což znamená:
      • nedereferenční odkazy
      • kopírujte rekurzivně (jako -R)
      • zachovat všechny atributy (časové razítko, vlastník, oprávnění)
    • f: vynutit, pokud existuje existující cílový soubor nelze otevřít, odstraňte ji a zkuste to znovu
    • v: podrobně, vysvětlete, co se děje
  • Tím se na konzole vygeneruje nějaký výstup, který vám ukáže, který soubor je aktuálně zkopírován a zda cp udělá pokrok
  • Připojte a zkopírujte soubory ze starého kořenového oddílu do nový:
    • Z bezpečnostních důvodů: umount /mnt/oldBoot && umount /mnt/newBoot
    • Připojte starý a nový kořenový oddíl (za předpokladu, že je to „s /dev/sda2 a /dev/sdb2): mount /dev/sda2 /mnt/oldRoot && mount /dev/sdb2 /mnt/newRoot
    • zkopírujte data starého kořenového oddílu do nového kořenového oddílu: cp -afv /mnt/oldRoot /mnt/newRoot
  • Upravit tabulka souborového systému , která definuje, které oddíly jsou připojeny při spuštění (k tomu použiji Vim):
    • vi /etc/fstab

    • Zjistíte, že zde jsou odkazy na vaše staré oddíly. Místo toho použijte UUID nových oddílů

    • Všechna UUID můžete dočasně vložit do fstab pro snazší kopírování a vkládání pomocí :r !blkid

    • Ke změně položek ve fstab použijte UUID vašich nových oddílů. Měly by vypadat asi takto:

       `# <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` 
      • Odeberte výstup blkid z fstab, který jste vložili dříve s :r !blkid

nainstalovat GRUB

  • Připojte virtuální souborové systémy živého disku GParted:

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

  • Vytvořit využití GRUBu živého CD GParted dostupné pro kořenový oddíl: mount --bind /usr/ /mnt/newRoot/usr

  • Od kořene GRUB připojte spouštěcí oddíl na kořenový oddíl. uloží svou konfiguraci do /boot: mount /dev/sdb1 /mnt/newRoot/boot

  • Použít chroot /mnt/newRoot dočasný přechod nového kořenového oddílu na kořenový adresář souborového systému

  • Vytvořte konfigurační soubor GRUB na adrese /boot/grub/grub.cfg pomocí update-grub2

  • Nainstalujte GRUB na nový disk: grub-install /dev/sdb. Zde nelze zadat číslo oddílu.

  • Vraťte se do souborového systému živého CD GParted: exit

  • Odpojit oddíly: umount /mnt/newRoot/*

  • Vypínací stroj

  • Pokud máte připojeno více disků, ujistěte se, že novější disk je na prvním místě v pořadí zavádění.

  • Spustit stroj

Tyto pokyny jsou inspirovány pokyny oaktreepeak.com .

Alternativně můžete zadat Clonezilla a pokusit se dosáhnout stejného.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *