GRUB2から起動するためにCentOS 7 iso(ハードドライブ上)を取得できません。

GRUB2から起動するためにCentOS 7 iso(ハードドライブ上)を取得できません。

ハードドライブにインストールされているGRUB2からCentOS 7 ISO(ハードドライブ上)を起動できません。

私は次のステップを試しましたこの記事

私の要件は、VMWare VM内の仮想ハードドライブからCentOS ISO(つまり起動可能な.vmdk)を起動することです。これは要件であり、代替案は現在私が探しているものではありません。

仮想ハードディスクにgrub2をインストールし、このISOを起動するようにgrub設定を変更しようとしました。

最新のCentOS Gnome Live ISOで起動したVMで両方のアクティビティを実行します(これが私が使用しているプロセスです)。

4GBの仮想ハードディスク(vmdk)を使用して新しいVM(VMDK_Stagerと呼ばれる)を作成します。

インストールと実行CentOS-Live-GNOME.iso

端末を開き、コマンドを実行してください

ルートディレクトリのインポート

su

次のコマンドを実行してドライブを準備し、grubをインストールし、パーティションを作成します。

fdisk /dev/sda
n (for new partition, then select all defaults for blocks/sizing/etc.)
a (to activate)
w (to write changes and quit fdisk)

パーティションフォーマット

mkfs.ext4  /dev/sda1

マウントパーティション

mount /dev/sda1

関連インストールパッケージの更新

yum install livecd-tools
yum upgrade grub2
yum upgrade dracut

ディスク/パーティションにGrubをインストールします。 (こうすれば/mnt/boot/grub2

   grub2-install /dev/sda --boot-directory=/mnt/boot

/mnt/boot/isoISOファイルを保存するために作成された

mkdir /mnt/boot/iso
cd /mnt/boot/iso

コピーCentOS-7-x86_64-GNOME-1603-02.iso(CentOSイメージからダウンロード)を/mnt/boot/iso (「既知の良い」ISOをテストするためにこれを行いました)

カスタム作成grub.cfg

#Begin /boot/grub2/grub.cfg
set default=0
set timeout=10
set root=(hd0,1)

menuentry 'CentOS-Live-GNOME' {
    set isolabel=CentOS-7-x86_64-GNOME-1603-02
    set isofile='/boot/iso/CentOS-7-x86_64-GNOME-1603-02.iso'
    loopback loop $isofile
    linux (loop)/isolinux/vmlinuz0 iso-scan/filename=$isofile root=live:CDLABEL=$isolabel ro rd.live.image quiet rhgb
    initrd (loop)/isolinux/initrd0.img
}

この準備されたvmdkを別のVMで使用できるように、ホストの別のディレクトリにコピーします(VMDK_ISO_Booterと呼ばれます)。 VMを作成し、このvmdkを唯一のハードドライブとして使用します。

dracutプロンプトで終わり、/dev/disk/by-label見つからないというメッセージが表示されます。

答え1

問題は、ほとんど間違いなくわずかに誤ったCDLABELを使用し、grubがisoをマウントできない、カーネルパラメータが画像で使用されているものと一致しない、またはISOのいくつかの不規則性が組み合わされていることです。私はミラーでそれを見ませんでした。特定の。

isoのisolinux.cfgファイルから正確なタグを取得する必要があります。

CentOS-7-x86_64-LiveGNOME-1603-02.isoがある場合、ファイルの行は次のようになります。

 append initrd=initrd0.img root=live:CDLABEL=CentOS-7-x86_64-GNOME-1603-02 rootfstype=auto ro rd.live.image quiet  rhgb rd.luks=0 rd.md=0 rd.dm=0 

以下は、試してみた修正されたgrub.cfgです(私が持っているISOに基づいています。あなたのISOは少し異なる場合があります。明らかに名前の「Live」部分を削除したか、削除しました。

menuentry "CentOS-Live-GNOME" {
    set isolabel="CentOS-7-x86_64-GNOME-1603-02"
    set isofile="/boot/iso/CentOS-7-x86_64-LiveGNOME-1603-02.iso"
    insmod iso9660
    loopback loop ${isofile}
    linux (loop)/isolinux/vmlinuz0 root=live:CDLABEL=CentOS-7-x86_64-GNOME-1603-02 rootfstype=auto ro rd.live.image quiet rhgb rd.luks=0 rd.md=0 rd.dm=0 iso-scan/filename=${isofile} 
    initrd (loop)/isolinux/initrd0.img
}

これは現状のまま動作しますが、isolinux.cfgエントリのラベルと残りのカーネルパラメータを再確認してください。

dracutプロンプトが表示されたら、sosreport.txtファイルで「loop」という単語を見つけます。その後、isoに示されている実際の名前を指定する必要があります。また、/ devのデバイスを見てください。 /dev/disk/... by-id .. by-label .. by-uuidなどでiso "デバイス"を見つけることはできますか?これらの参照はすべて機能します。完全に一致する必要があります。何が評価されているのかそして、あなたが経験しているエラーはどこから来ますか?

私はあなたがしたのとほぼ同じですが、しばらく前にFedoraを使用していました(fedora 19?)、操作する前にいくつかの調整が必要でした。

次のリンクは、これを手動で(ある種の)実行する方法を示しているため、再構築、再起動、繰り返しの痛みを伴うサイクルを経ることなく段階的に実行できます。

https://help.ubuntu.com/community/Grub2/ISOBoot

答え2

なぜこれがあなたにそんなに多くの問題を引き起こすのか理解できません。あなたの例は別の例のようですXYの問題。より簡単な解決策は次のとおりです。

  1. CentOS isoを以下からダウンロードしてください。ここ;

  2. 新しい仮想マシンのisoからCentOSをインストールすると、ほぼすべてのハイパーバイザーにインストールできます。たとえば、VirtualBoxを使用しました(vdmk新しい仮想マシンを作成するときにディスクの種類を選択し、仮想マシンを再起動する必要があります)。完全なインストールプロセスを完了するには、少なくとも2回マシンを操作してください。 CentOS 仮想マシンをシャットダウンします。

完了しました。vmdkすべての操作が正しく行われた場合は、CentOSをインストールしたディスクにすでにブートフラグが設定されているパーティションが含まれています。これで、2台目のVMに新しく作成されたvmdkディスクをSATAコントローラを搭載したハードドライブとしてマウントできます。おそらく他のハイパーバイザー(VMWare、Xenなどの名前付け)にマウントすることもできます。 2番目の仮想マシンのCentOSディスクから起動するには、起動順序に従って起動が可能であることを確認してください。最初新しいディスクでは、つまりCentOSで作成されました。

答え3

私は通常qemu / virsh VM用に独自のXMLを作成しますが、仮想BIOSにISOから起動するように指示するのがアイデアです。そうですか?したがって、仮想マシンを設定するときにISOがCD-ROMと呼ばれ、マウントするハードドライブとして機能するホストマシンに空のファイルを提供し、ハードドライブを試すことができるように起動順序を設定してからCD。その後、仮想マシンを起動し、画面の指示に従って通常のインストールに進みます。

インストーラは仮想ハードディスクに grub を配置します。

IMHO、VMwareは必要以上に物事をより神秘的にしています。

関連情報