tech_memo / linux / cobbler / UEFI


tech_memo/linux/cobbler

概要

設定

TFTP周り

  • TFTPディレクトリ(testserver18では/tftpboot)に、UEFI用に必要なファイル群を配備する
    [root@testserver18 uefi]# pwd
    /tftpboot/uefi   # mkdirで作成
    
    [root@testserver18 uefi]# tree
    .
    |-- grub.cfg     # viで作成、中身は後述
    |-- grubx64.efi  # DVDに梱包されている、grub2-efi-2.02-0.29.el7.x86_64.rpmから取得
    |-- initrd.img   # testserver18:/var/www/cobbler/ks_mirror/RHEL7.2/images/pxeboot/から取得
    |-- shim.efi     # DVDに梱包されている、shim-0.9-2.el7.x86_64.rpmから取得
    `-- vmlinuz      # testserver18:/var/www/cobbler/ks_mirror/RHEL7.2/images/pxeboot/から取得
    • grub.cfgの中身
      set timeout=1
        menuentry 'RHEL' {
        linuxefi uefi/vmlinuz ip=dhcp text ks=http://cobblerserver/cblr/abcdefg/op/ks/system/testserver19_rhel72
        initrdefi uefi/initrd.img
      }

Kickstartファイル(パーティションコンフィグ)

  • UEFIだと、/boot/efiというマウントポイントとパーティションが必要。ないと、Install時に以下のエラーがでる
    storage configuration failed: failed to find a suitable stage1 device
  • 以下のようにパーティションコンフィグを設定した
    # partition_config
    # testserver19 servers
    part /boot/efi --fstype xfs --size=200 --ondisk=/dev/sda
    part /boot --fstype xfs --size=300 --ondisk=/dev/sda
    # 350GB partition
    part pv.2 --size=358400 --ondisk=/dev/sda
    volgroup VG_rhel72 --pesize=32768 pv.2
    logvol / --fstype xfs --name=LV_root --vgname=VG_rhel72 --size=1024 --grow
    logvol swap --fstype swap --name=LV_swap --vgname=VG_rhel72 --size=16384 --grow --maxsize=16384

DHCP

  • /etc/dhcpd.confには、ブートローダファイルが記述されているが、これをUEFI用のファイルに書き換えておく。
  • 下記はtestserver18(cobblerサーバ)のdhcpd.confのUEFIサーバの設定。if文条件でブートローダファイルを切り替えれるみたいだが、下記はうまくいかない(必ずelseブロックに入る)
       host generic138 {
           hardware ethernet D8:CB:8A:A4:ED:7D;
           fixed-address uefiserver;
           option host-name "testserver19";
           option routers cobblerserver;
           if substring(vendorclass, 0, 9)="PXEClient" {
             if pxetype=00:06 or pxetype=00:07 {
                 filename "/uefi/grubx64.efi"; # ★ if文ブロックが期待動作しないので、とりあえずどちらも同じブートローダファイルを記述。パスは/tftpboot以下の相対パス
             } else {
                 filename "/uefi/grubx64.efi";
             }
           }
           next-server cobblerserver;
       }
  • 上記のif文は初めてUEFIサーバのcobblerインストールを試みた時(2016/2/26)に追加したもの。うまくいってないのでそのうち直したい。
    • testserver19へのESXiのインストールで、以下のif文で動作したので、下記の条件式に書き換えればうまくいきそう。(試してはない) 2016/10/18
      } else if option pxe-system-type = 00:07 or option pxe-system-type = 00:09 {
  • 以下注意点
    • config変更後は、dhcpdのリスタートが必要
    • cobbler syncを実行すると、上記変更前に戻る(cobblerが自動でdhcpd.confを作成しなおすため)ので、UEFIサーバへのインストール時にテンポラリに編集する必要がある

課題

  • 本ページの方法では、PXEブートするマシン(MACアドレス)ごとのkickstartファイルの設定ができない。。。
    • /etc/cobbler/dhcp.template(/etc/dhcpd.conf)のfilenameオプションで指定したNBPファイル(grubx64.efi)と同じ階層のgrub.cfgを読み込むので、filenameオプションのディレクトリパスをサーバごとにわければ解決しそう。(試してはない) 2016/10/18
  • dhcpd.confのブートローダファイルの識別設定(BIOS or UEFI)
    • 先述の「設定/DHCP」の赤字の方法で解決すると思われる