Minulla on virtuaaliruutu, joka toimii CentOS: n kanssa.

Olen liittänyt uuden virtuaalilevyn olemassa olevaan CentOS VM: ään ja I ”m yritän nyt asentaa GRUBia tälle äskettäin liitetylle levylle.

Myöhemmin tuon toisen virtuaalikoneen valmiiksi käynnistettävän kiintolevyn mukautetulla juuritiedostojärjestelmällä ja ytimellä.

I olet kokeillut seuraavia vaiheita:

  • Liitetty uusi virtuaalilevy nykyiseen toimivaan CentOS-koneeseen.
  • Luonut uuden osion fdisk /dev/sdb. Osoittamisen aikana valitsin vaihtoehdot ensisijainen osio, osion numero 1 ja muut oletusasetukset.
  • Alustettiin levy levyllä mkfs.ext3 /dev/sdb1.
  • Asennettu levy /media/new_drive -kansioon.
  • GRUB grub-install /dev/sdb1 --root-directory=/media/new_drive/.

Tämän jälkeen toinen virtuaalikone äskettäin valmistellulla kiintolevyllä ei käynnistynyt; Sain virheen: could not read from the boot medium. Vaikuttaa siltä, että MBR: ää ei päivitetä grub-install jälkeen, mutta näen GRUBin olevan asennettuna /boot/grub uuteen asemaan.

Mutta pahinta on, että se on vioittunut nykyisen CentOS GRUB -nippini: CentOS VM roikkuu näyttämällä mustan ruudun, jonka ainoa teksti on GRUB.

Miksi eikö grub-install /dev/sdb1 muuta sdb1: n MBR-tiedostoa? Eikö tämä ole oikea tapa asentaa GRUB uudelle asemalle?

Kommentit

  • /dev/sdb1 ei ole missä BIOS etsii MBR: ää, se ’ s /dev/sdb eli levyn ensimmäisessä sektorissa.
  • tarkoitatko, että minun on käytettävä grub-install /dev/sdb --root-directory=/media/new_drive/ -sdb1: n sijasta
  • kyllä, juuri sitä @wurtel tarkoittaa
  • Kyllä. Olettaen, että ’ olet asettanut sopivan juuritiedostojärjestelmän kyseiseen sijaintiin (en näe ’ sitä, että askel mainitaan asennettavan ja käynnissä olevan grubin välillä
  • Yritän / dev / sdb: llä, joo ’ ei saavuttanut juuritiedostojärjestelmän asettamista, ajattelin ensin yrittää näyttää grub-näyttö ylös.

Vastaa

En ole grub2-asiantuntija (anteeksi), mutta yritä lisätä --skip-fs-probe grub-install-rivillesi, olen huomannut, että tämä estää /boot/grub/device.map -palvelun luomisen, mikä voi aiheuttaa käynnistämisen grub-kehotteelle. Luulen, että ilman tätä parametri grub-install sen sijaan, että tekisit sanomasi, ajattelee sen olevan älykkäämpi kuin sinä ja saattaa tehdä jotain erilaista.

Toinen asia on olla varma, että käytät oikeaa grub-installia (esim. grub2 eikä alkuperäinen grub). Tämä ei ole ongelma, jos olet Centosissa, mutta SystemRecoveryCD: n kanssa molemmat versiot ovat saatavilla ja joten sinun on käytettävä grub2-install. Olen oppinut kovalla tavalla …

Ja kuten @wurtel huomautti (kiitos), sinun tulee määrittää asema, ei osio. Grub2 asentaa koko levyaseman sektoriin 0, ja tämä ”tynkä” toimii käynnistyshetkellä, mutta sen on tiedettävä levyn sijainti, sen on asennettava tiedostot seuraavaa käynnistystä varten – tämä on mitä --root-directory -parametri on. (Luulen.)

Lukemalla man grub-install ja guooglista näen, että --root-directory ei todellakaan ole tarkoitettu käytettäväksi grub2-versiot 1.99 ++, vaikka se toimii kokemukseni mukaan. Sinun on tarkoitus käyttää --boot-directory ja viitata todelliseen käynnistyshakemistoon, joten tämä antaisi sinulle:

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

Kommentit

  • Ensimmäinen yritys oli ilman osiointia ja muotoilua grub-install /dev/sdb, mutta se antoi virheen. Myöhemmin yritin osioidulla ja alustetulla levyllä, alustetulla levyllä käytin aina / dev / sdb1: tä, yritän – skip-fs-probe
  • @Renjith oh ja juurihakemiston tulisi viitata asennettu -kiinnityspiste kun suoritat grub-install -ohjelmaa, joten sinun on asennettava osio uuteen asemaan esim. kohdassa /mnt/sys2 ja määritä sitten grub-install-rivilläsi --root-directory=/mnt/sys2. Se ’ on vasta-intuitiivinen (kuten luulen paljon grub-juttuja), mutta se ’ miten se toimii.
  • olen muokannut vastaustani jonkin verran …
  • Grub käyttää tällä hetkellä 0.97, joka ei tue ’ t –skip-fs-probe . mutta ilman sitä se toimi. sdb1 oli virhe.
  • ok, onnellinen, että sait sen ratkaistua, se on vanha grub, ei uudempi ’ kiiltävä ’ grub2. En tiennyt ’, että RedHat siirtyi niin hitaasti grub2: een. CentOS 7 käyttää grub2: ta, mutta CentOS 6 (ja aiemmat) käyttää grubia.

vastaus

Näin siirrin Debian-asennuksen, joka koostui käynnistysosioista /boot ja juuriosio / uudelle asemalle ja tekivät sen käynnistettäväksi käyttämällä GNU GRUB :

Klooniosiot

  • Luo uudelleenkäynnistys- ja juuriosio GParted-live-CD: n avulla asema.
  • Käytä GParted-sovelluksessa juurikonsolia ja asenna vanha käynnistysosio (sanotaan ”s /dev/sda1) ja uusi osio (/dev/sdb1): mount /dev/sda1 /mnt/oldBoot && mount /dev/sdb1 /mnt/newBoot
  • Kopioi tiedot vanhasta käynnistysosiosta uuteen: cp -afv /mnt/oldBoot /mnt/newBoot. Selitys cp -afv:
    • a tarkoittaa ” arkistoa ” mikä tarkoittaa:
      • älä poista linkkejä
      • kopioi rekursiivisesti (kuten -R)
      • säilytä kaikki määritteet (aikaleima, omistaja, lupa)
    • f: pakota, jos olemassa oleva kohdetiedosto ei voi avata, poista se ja yritä uudelleen
    • v: sanallinen, selitä mitä tehdään
  • Tämä luo konsolille jonkin ulostulon, joka näyttää, mikä tiedosto on kopioitu ja onko cp edistynyt
  • Yhdistä ja kopioi vanhan juuriosion tiedostot uusi:
    • Turvallisuuden vuoksi: umount /mnt/oldBoot && umount /mnt/newBoot
    • Asenna vanha ja uusi juuriosio (olettaen, että se on ”s /dev/sda2 ja /dev/sdb2): mount /dev/sda2 /mnt/oldRoot && mount /dev/sdb2 /mnt/newRoot
    • Kopioi dat vanhan juuriosion a uuteen juuriosioon: cp -afv /mnt/oldRoot /mnt/newRoot
  • Muokkaa tiedostojärjestelmätaulukko , joka määrittelee, mitkä osiot asennetaan käynnistykseen (käytän siihen Vimiä):
    • vi /etc/fstab

    • Huomaat, että tässä viitataan vanhoihin osioihisi. Käytä sen sijaan uusien osioiden UUID-tunnuksia

    • Voit lisätä kaikki UUID: t väliaikaisesti fstab-tiedostoon kopioinnin ja liittämisen helpottamiseksi :r !blkid

    • Käytä uusien osioiden UUID-tunnuksia muuttaaksesi fstab-merkintöjä. Niiden tulisi näyttää tältä:

       `# <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` 
      • Poista blkid -lähde lisäämäsi fstabista aikaisemmin :r !blkid

GRUB-asennuksen avulla

  • Asenna GParted-live-CD: n virtuaaliset tiedostojärjestelmät:

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

  • Tee juuriosion käytettävissä olevat GParted-live-CD: n GRUB-apuohjelmat: mount --bind /usr/ /mnt/newRoot/usr

  • Asenna käynnistysosio juuriosioon GRUB: n jälkeen tallentaa kokoonpanonsa /boot: mount /dev/sdb1 /mnt/newRoot/boot

  • Käytä chroot /mnt/newRoot uudesta juuriosastosta väliaikaisesti tiedostojärjestelmän juuri

  • Luo GRUB-määritystiedosto osoitteessa /boot/grub/grub.cfg käyttämällä update-grub2

  • Asenna GRUB uuteen asemaan: grub-install /dev/sdb. Älä määritä osion numeroa tässä.

  • Palaa GParted-live-CD: n tiedostojärjestelmään: exit

  • Irrota osiot: umount /mnt/newRoot/*

  • Sammuta kone

  • Jos sinulla on useita asemia, varmista, että uudempi asema on ensimmäinen käynnistysjärjestyksessä.

  • Käynnistä kone

Nämä ohjeet ovat saaneet inspiraation oaktreepeak.comin ohjeista .

Vaihtoehtoisesti voit antaa Clonezilla yritä saavuttaa sama.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *