ハードドライブにインストールされているGRUB2からCentOS7 ISO(ハードドライブ上)を起動できません。
この記事 に基づいて次の手順を試しました
私の要件は、VMWare内の仮想ハードディスクドライブからCentOS ISOを起動することですVM(つまり、起動可能な.vmdk)。これらは要件であり、代替手段は私が探しているものではありません。瞬間。
仮想ハードディスクにgrub2をインストールし、このISOを起動するようにgrub構成を変更しようとしました
これらのアクティビティは両方とも、最新のCentOS Gnome LiveISOで起動したVM)で実行します(これが私が使用したプロセスです)
4 GBの仮想ハードディスク(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
iSOファイルを格納するために/mnt/boot/iso
を作成します
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を唯一のハードとして使用しますドライブ
ドラカットプロンプトで終わり、/dev/disk/by-label
が見つからないと表示されます
問題は、ほぼ間違いなく、わずかに正しくない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は少し異なる場合があります。それらは明らかに名前の「ライブ」部分を削除したか、実際に削除しました。
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エントリに対して再確認してください。
ドラカットプロンプトが表示されたら、ファイルsosreport.txtを単語「loop」にgrepします。これにより、isoによって表示される実際の名前が示されます。その後、修正を行うことができます。/devのデバイスも見てください。/dev/disk/... by-id .. by-label ..by-uuidなどのどこにでもiso'device 'を見つけることができます。これらの参照はどれでも機能します。それは完全に一致する必要があります。ここに 評価されているもの そしてあなたが受け取っているエラーはどこから来ているのかです。
私はあなたがしていることをほぼ正確に行いましたが、しばらく前にFedoraを使用しました(Fedora 19?)。それが機能するまでに少し調整が必要でした。
次のリンクは、これを手動で(ある程度)行うことを示しているので、面倒な再生成、再起動、繰り返しサイクルを実行するのではなく、ステップ実行できます。
なぜそんなに困っているのか理解できません。あなたは XY問題 の別の例のように見えます。より簡単な解決策は次のとおりです。
CentOS ISOを ここ からダウンロードします。
ほぼすべてのハイパーバイザーで、ISOからCentOSを新しいVMにインストールします。たとえば、VirtualBoxを使用しました(新しいVMを作成するときは、ディスクフォーマットにvdmk
を選択してください)。また、インストールプロセス全体を実行するために、VMを少なくとも2回再起動してください。CentOSVMの電源を切ります。
これで完了です。CentOSをインストールしたvmdk
ディスクは、すべてを正しく実行した場合、ブートフラグが設定されたパーティションをすでに含んでいます。これで、新しく作成されたvmdk
ディスクを、SATAコントローラーを備えたハードディスクとして2番目のVMにマウントでき、場合によっては別のハイパーバイザー(VMWare、Xen、名前を付けます)にマウントできます。 2番目のVMのCentOSディスクから起動する場合は、起動順序で新しいディスクからfirstを起動できることを確認してください。 ieCentOSで作成されたもの。
私は通常、qemu/virsh VM用に独自のXMLを記述しますが、その目的は、仮想BIOSにISOから起動するように指示することです。したがって、VMをセットアップするときは、ISOがCD-ROMであることを伝え、インストールするハードディスクのように機能するようにホスト上に空のファイルを与え、ハードディスクを試すように起動順序を設定します。 CD-ROM。次に、VMを起動し、画面の指示に従って通常のインストールを行います。
インストールにより、仮想ハードディスクにgrubが配置されます。
私見ですが、VMwareは物事を必要以上に神秘的にしています。