tech_memo / linux / PXE_Boot


tech_memo/linux

参考サイト

仕組み(PXEブートからのシーケンス)

  1. PXEブートサーバが、起動後、DHCPでIP取得。NBP(Network Boot Program)ファイル名取得
    • DHCPサーバ:/etc/dhcp/dhcpd.conf にNBPファイル名は定義されている。
    • 下記filenameオプションで定義。パスは、TFTPホーム配下からの相対パス。(/var/lib/tftp/pxelinux.0なら、pxelinux.0と記述)
          class "pxeclients" {
               match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
               if option pxe-system-type = 00:02 {
                       filename "ia64/elilo.efi";
               } else if option pxe-system-type = 00:06 {
                       filename "grub/grub-x86.efi";
               #} else if option pxe-system-type = 00:07 {
               #        filename "grub/grub-x86_64.efi";
      
               # Added by me
               } else if option pxe-system-type = 00:07 or option pxe-system-type = 00:09 {
                       #PXE over EFI firmware. Under /var/lib/tftpboot/
                       filename "images/ESXi6.0-x86_64/mboot.efi";
               } else {
                       filename "pxelinux.0";
               }
          }
  2. PXEブートサーバが、NBPファイルの取得
  3. 上記NBPファイルの種類によってその後の挙動(ダウンロードするモジュールのパスなど)は異なるが、通常のLinuxディストリビューションであれば、NFSサーバに対して、マウントし、OSイメージファイルのダウンロードを行い、インストールが始まる

PXEブートでの最終起動方法

BIOSの場合

  • <TFTP_HOME>/pxelinux.cfg配下のコンフィグファイルで定義されている
    [root@testserver18 pxelinux.cfg]# ls
    01-00-0c-29-67-5e-6c  01-00-0c-29-ea-02-ac  01-00-50-56-81-07-31  01-40-61-86-d2-94-1c  01-6c-62-6d-0e-54-5c  default
    • 各サーバのコンフィグファイルは、01-<MACアドレス>となる。ない場合は、defaultファイルが適用される

UEFIの場合

  • NBPファイルと同じ階層にある
    • RHEL7 --> grub.cfg
      set timeout=1
        menuentry 'RHEL' {
        linuxefi uefi/vmlinuz ip=dhcp text ks=http://cobblerserver/cblr/svc/op/ks/system/testserver19_rhel72
        initrdefi uefi/initrd.img
      }
    • ESXi --> boot.cfg
      bootstate=0
      title=Loading ESXi installer
      prefix=/images/ESXi6.0-x86_64
      kernel=tboot.b00
      kernelopt=runweasel ks=http://cobblerserver:80/cblr/svc/op/ks/profile/ESXi6.0-x86_64
      modules=b.b00 --- jumpstrt.gz --- useropts.gz --- k.b00 --- chardevs.b00 --- a.b00 --- user.b00 --- uc_intel.b00 --- uc_amd.b00 --- sb.v00 --- s.v00 --- mtip32xx.v00 --- ata_pata.v00 --- ata_pata.v01 --- ata_pata.v02 --- ata_pata.v03 --- ata_pata.v04 --- ata_pata.v05 --- ata_pata.v06 --- ata_pata.v07 --- block_cc.v00 --- ehci_ehc.v00 --- elxnet.v00 --- emulex_e.v00 --- weaselin.t00 --- esx_dvfi.v00 --- esx_ui.v00 --- ima_qla4.v00 --- ipmi_ipm.v00 --- ipmi_ipm.v01 --- ipmi_ipm.v02 --- lpfc.v00 --- lsi_mr3.v00 --- lsi_msgp.v00 --- lsu_hp_h.v00 --- lsu_lsi_.v00 --- lsu_lsi_.v01 --- lsu_lsi_.v02 --- lsu_lsi_.v03 --- lsu_lsi_.v04 --- misc_cni.v00 --- misc_dri.v00 --- net_bnx2.v00 --- net_bnx2.v01 --- net_cnic.v00 --- net_e100.v00 --- net_e100.v01 --- net_enic.v00 --- net_forc.v00 --- net_igb.v00 --- net_ixgb.v00 --- net_mlx4.v00 --- net_mlx4.v01 --- net_nx_n.v00 --- net_tg3.v00 --- net_vmxn.v00 --- nmlx4_co.v00 --- nmlx4_en.v00 --- nmlx4_rd.v00 --- nvme.v00 --- ohci_usb.v00 --- qlnative.v00 --- rste.v00 --- sata_ahc.v00 --- sata_ata.v00 --- sata_sat.v00 --- sata_sat.v01 --- sata_sat.v02 --- sata_sat.v03 --- sata_sat.v04 --- scsi_aac.v00 --- scsi_adp.v00 --- scsi_aic.v00 --- scsi_bnx.v00 --- scsi_bnx.v01 --- scsi_fni.v00 --- scsi_hps.v00 --- scsi_ips.v00 --- scsi_meg.v00 --- scsi_meg.v01 --- scsi_meg.v02 --- scsi_mpt.v00 --- scsi_mpt.v01 --- scsi_mpt.v02 --- scsi_qla.v00 --- uhci_usb.v00 --- vsan.v00 --- vsanheal.v00 --- vsanmgmt.v00 --- xhci_xhc.v00 --- tools.t00 --- xorg.v00 --- imgdb.tgz --- imgpayld.tgz
      build=
      updated=0