ローリングコンバットピッチなう!

AIとか仮想化とかペーパークラフトとか

CentOS7.5をXenのPV(準仮想化)モードで起動する

4月にCentOS7.5がリリースされました。
弊ブログの以下の記事に書きましたが、Redhat7.4及びCentOS7.4のカーネルXenの準仮想化に対応しておらず、準仮想化モードでは起動することができませんでした。
「CentOS7.4がXenのPVモードで起動失敗する問題への対処」
rc30-popo.hatenablog.com



CentOS7.4の場合はそれでもCentOS plusのリポジトリで公開されている修正カーネルを適用することで準仮想化で起動可能でしたが、カーネルが更新出来ない等、制約がありました。

CentOS7.5でこれがどうなったか、新規に準仮想化モードのDomUとしてインストールしてみました。
結論から言うと、特に問題無くインストール・起動できました。

  1. 下記のMinimal ISOイメージを入手

    http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1804.iso
  2. ISOイメージをマウントしてインストーラ起動用のvmlinuzとinitrd.imgを取り出す

    /home/foo/xen-workの下で作業するとします。

    # mkdir centos75
    # sudo mount -o loop -t iso9660 CentOS-7-x86_64-Minimal-1804.iso /mnt
    # cp /mnt/isolinux/vmlinuz centos75/
    # cp /mnt/isolinux/initrd.img centos75/
    # sudo umount /tmp

  3. インストール用のxl.cfgを作成

    ファイル名をcentos75-inst.cfgで作成します。内容を以下の通り。(各ファイルのパス名は適当に調整してください)

    name = "centos7.5"
    kernel = "/home/foo/xen-work/centos75/vmlinuz"
    ramdisk = "/home/foo/xen-work/centos75/initrd.img"
    memory = 512
    vcpu = 1
    disk = [ 'file:/home/foo/xen-work/centos75.img,xvda,w','file:/home/foo/xen-work/CentOS-7-x86_64-Minimal-1804.iso,xvdb:cdrom,r' ]
    
    vif = [ 'mac=00:16:3e:00:00:05,bridge=xenbr0']
    extra="inst.repo=cdrom:xvdb"

  4. インストール用のRAWイメージファイルを作成

    # truncate -s 10G /home/foo/xen-work/centos75.img

  5. インストーラXenのPVモードで起動

    # sudo xl create -c centos75-inst.cfg

    これでインストーラが起動するので、後はインストーラの指示に従って作業すればインストールは完了します。インストール完了したら、rebootしますがこのままではまたインストーラが起動するので

    # sudo xl destroy centos75

    で起動中のDomUを停止・削除します。

  6. OS起動用のxl.cfgを作成

    ファイル名をcentos75.cfgとすると、以下の様な内容で作成します。
    ディスクの節約のため、イメージファイルをqcow2フォーマットに変換する前提で記載しています。

    name = "centos75"
    # PvGrub2をBootloaderとして使用
    kernel = "/home/foo/xen-work/grub-x86_64-xen-centos7.bin"
    memory = 512
    vcpu = 1
    disk = ['tap:qcow2:/home/foo/xen-work/centos75.qcow2,xvda,w']
    
    # MACは適当に同じセグメント内の他のDomUやマシンとぶつからないように
    vif = [ 'mac=00:16:3e:00:00:05,bridge=xenbr0']

  7. イメージファイルをqcow2フォーマットに変換

    # qemu-img convert -f raw -O qcow2 centos75.img centos75.qcow2

  8. PvGrubイメージを作成

    centos75.cfg内に記載した'grub-x86_64-xen-centos7.bin'はGNU grub2をXenのPV(準仮想化)対応にしたものです。Xenで標準でインストールされるpygrubではgrub2用のメニューファイルを扱えないため、これを自力でビルドでする必要があります。
    基本的な説明は
    https://wiki.xenproject.org/wiki/PvGrub2
    に記載されていますが、これにパッチをあてる作業が更に必要になります。
    弊ブログの記事
    rc30-popo.hatenablog.com

    にパッチあてについて情報を載せているので参照してください。
    (あまり懇切丁寧には書いていません、ご容赦を)

  9. CentOS7.5起動

    下記でCentOS7.5をPV(準仮想化)モードで起動します。

    # sudo xl create -c centos75.cfg

追記:
Centos plusリポジトリカーネルでPVモード運用していたCentOS7.4環境ですが、/etc/yum.confのexclude=kernel*を削除し、yum updateを実施することでCentOS7.5のカーネルに更新され、7.5にアップデートされました。このカーネルで問題なくPVモード運用できています。