ipxe 介绍

ipxe 是 pxe 的扩展,提供了如下功能:

  • boot from a web server via HTTP
  • boot from an iSCSI SAN
  • boot from a Fibre Channel SAN via FCoE
  • boot from an AoE SAN
  • boot from a wireless network
  • boot from a wide-area network
  • boot from an Infiniband network
  • control the boot process with a script

ipxe 使用

使用 ipxe 有两种方式:

  • 使用 ipxe 固件替换网卡的 PXE ROM
  • 使用链式启动来加载 ipxe 固件

ipxe 可以从: http://boot.ipxe.org/ipxe.iso 下载, 但是要想使用 ipxe 的全部功能,建议通过源码自己编译。 编译方法如下:

git clone git://git.ipxe.org/ipxe.git
cd ipxe/src
make

编译

  1. 编译成 iso

    make bin/ipxe.iso
    
  2. 编译成 usb

    make bin/ipxe.usb
    dd if=bin/ipxe.usb of=/dev/sdX
    
  3. 编译成 pxe rom 的链式加载文件

    make bin/undionly.kpxe
    
  4. 替代现有 PXE ROM

    make bin/808610de.rom
    

ironic 使用 ipxe

  1. 创建 http 根目录

    mkdir -p /tftpboot
    mkdir -p /httpboot
    chown -R ironic /tftpboot
    chown -R ironic /httpboot
    
  2. 设置 tftp map file

    echo 'r ^([^/]) /tftpboot/\1' > /tftpboot/map-file
    echo 'r ^(/tftpboot/) /tftpboot/\2' >> /tftpboot/map-file
    
  3. 配置 tftp 和 http server

    [pxe]
    tftp_root=/tftpboot
    tftp_server=192.168.0.2
    ipxe_enabled=True
    
    [deploy]
    http_root=/httpboot
    http_url=http://192.168.0.2:8080
    
  4. 配置 http 服务器

    这里以 apacha 为例,如果使用 nginx 请参考 nginx 的配置方法。

    • 安装 httpd
    $ sudo yum install httpd
    
    • 配置 httpd

    修改 /etc/httpd/conf/httpd.conf

    <Directory />
        Options Indexes FollowSymLinks
        AllowOverride none
    </Directory>
    
    DocumentRoot "/httpboot"
    
    • 重启服务
    $ sudo systemctl restart httpd
    
  5. 设置 ipxe 模板

    [pxe]
    pxe_bootfile_name=undionly.kpxe
    pxe_config_template = $pybasedir/drivers/modules/ipxe_config.template
    
  6. 安装 iPXE 相关包

    yum install ipxe-bootimgs
    cp /usr/share/ipxe/{undionly.kpxe,ipxe.efi} /tftpboot
    
  7. 重启 conductor 服务

    sudo systemctl restart openstack-ironic-conductor