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
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
. Selityscp -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
- Turvallisuuden vuoksi:
- 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
- Poista
-
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.
/dev/sdb1
ei ole missä BIOS etsii MBR: ää, se ’ s/dev/sdb
eli levyn ensimmäisessä sektorissa.grub-install /dev/sdb --root-directory=/media/new_drive/
-sdb1: n sijasta