私のプロジェクトをCentOS 6からCentOS 7に移行し、CentOS 7で導入されたブート要件の変更、特にgrubからgrub2へのアップグレードを処理する必要があります。質問の要旨はこんな感じです。
CentOS 6ベースのタスクでは、ハードドライブを別々のパーティションに分割し、それぞれがvirt-installを介してインストールされた仮想マシンをホストしました。 VMをホストするパーティションに直接抽出された事前生成されたCentOS 6イメージを使用して、virt-installの--importオプションを使用できました。各仮想マシンのパーティションは、ブートパーティション、スワップパーティション、およびルートファイルシステムパーティションにさらに分けられます。 device.map grub.confファイルを手動で作成し、必要なgrubインストールコマンドを実行してVMを起動可能にしました。
CentOS 7では状況が若干変わりました。 grub2がGPTドライブにインストールされると、追加の「bios_grub」パーティションが必要です。私のVMパーティションは、CentOS 6.6では3つではなく4つのパーティションに細分化されています。たとえば、/dev/sda4の下にVMをインストールすると、partedは次のように表示します。
# parted -s /dev/sda4 print
Model: Unknown (unknown)
Disk /dev/sda4: 75.2GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 2097kB 1049kB primary bios_grub
2 2097kB 136MB 134MB ext3 primary boot
3 136MB 153MB 16.8MB linux-swap(v1) primary
4 153MB 75.2GB 75.0GB ext4 primary
問題は、私が作成した仮想マシンを起動できないことです。さて、VMが起動しましたが、すぐに中断されました。エラーはなく、virshは実行中であることを示しますが、BIOSからgrubへの転送は発生しません。 grubをインストールするために実行したコマンドは次のとおりです(VMが/ dev / sda4にインストールされていると仮定)。
# chroot /mnt/rootfs/grub2-install --force /dev/sda4
Installing for i386-pc platform.
Installation finished. No error reported.
# chroot /mnt/rootfs grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-229.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-229.el7.x86_64.img
done
VM 生成コマンドは次のとおりです。
# virt-install --connect=qemu:///system --network bridge=br0,mac=RANDOM,model=virtio --name=vm1 --disk path=/dev/sda4,bus=virtio --force --vcpus=1 --ram=1024 --check-cpu --accelerate --hvm --nographics --noreboot --import
Starting install...
Creating domain...
Domain creation completed. You can restart your domain by running:
virsh --connect qemu:///system start vm1
残念ながら、私が言ったように、仮想マシンは起動しますが、すぐに中断されます。 BIOSはCentOSを起動するためにgrubに変換しません。 CentOS 6でも同じ基本的な方法が機能するため、ここではgrub2のインストール方法に関連するいくつかの重要な手順がありません。もしこのような経験があった方やアドバイスをいただける方、ありがとうございます。
ピーター