web-dev-qa-db-ja.com

CentOS 7 ISO(ハードドライブ上)をGRUB2から起動できません

ハードドライブにインストールされている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が見つからないと表示されます

3
user1431174

問題は、ほぼ間違いなく、わずかに正しくない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?)。それが機能するまでに少し調整が必要でした。

次のリンクは、これを手動で(ある程度)行うことを示しているので、面倒な再生成、再起動、繰り返しサイクルを実行するのではなく、ステップ実行できます。

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

2
Argonauts

なぜそんなに困っているのか理解できません。あなたは XY問題 の別の例のように見えます。より簡単な解決策は次のとおりです。

  1. CentOS ISOを ここ からダウンロードします。

  2. ほぼすべてのハイパーバイザーで、ISOからCentOSを新しいVMにインストールします。たとえば、VirtualBoxを使用しました(新しいVMを作成するときは、ディスクフォーマットにvdmkを選択してください)。また、インストールプロセス全体を実行するために、VMを少なくとも2回再起動してください。CentOSVMの電源を切ります。

これで完了です。CentOSをインストールしたvmdkディスクは、すべてを正しく実行した場合、ブートフラグが設定されたパーティションをすでに含んでいます。これで、新しく作成されたvmdkディスクを、SATAコントローラーを備えたハードディスクとして2番目のVMにマウントでき、場合によっては別のハイパーバイザー(VMWare、Xen、名前を付けます)にマウントできます。 2番目のVMのCentOSディスクから起動する場合は、起動順序で新しいディスクからfirstを起動できることを確認してください。 ieCentOSで作成されたもの。

0
MariusMatutiae

私は通常、qemu/virsh VM用に独自のXMLを記述しますが、その目的は、仮想BIOSにISOから起動するように指示することです。したがって、VMをセットアップするときは、ISOがCD-ROMであることを伝え、インストールするハードディスクのように機能するようにホスト上に空のファイルを与え、ハードディスクを試すように起動順序を設定します。 CD-ROM。次に、VMを起動し、画面の指示に従って通常のインストールを行います。

インストールにより、仮想ハードディスクにgrubが配置されます。

私見ですが、VMwareは物事を必要以上に神秘的にしています。

0
stolenmoment