Ubuntu Server VM中的PXE引导服务器安装步骤


Answers:


31

PXE(预引导执行环境,发音为pixie)‬

参见维基百科:PXE

怎么运行的?

这是我的理解!

PXE_Diagram_en.png

  1. 客户端计算机已打开电源。BIOS扫描设备。然后,尝试从引导顺序/序列中列出的所需设备加载引导加载程序。它从网卡ROM加载PXE。
  2. PXE(客户端)广播了一个IP请求。DHCP服务器回复所需的信息:IP,下一服务器IP(TFTP服务器IP),pxelinux.0(PXE引导加载程序文件名),...等

    PXE_Boot_1.png

  3. PXE(客户端)pxelinux.0从TFTP服务器请求文件,将其加载到RAM,然后将控制权传递给pxelinux.0

    pxelinux.0从TFTP服务器获取启动配置文件,名称为:(
    如果不存在,则尝试下一个)

    • UUID
    • 苹果电脑
    • 大写十六进制中的IP
    • IP的一部分
    • 下降到default文件

    PXE_Boot_2.png

  4. 用户选择或默认菜单项。pxelinux.0向TFTP服务器请求相应的内核和RAMDisk并将其加载到RAM。

    然后将引导参数和控制传递给加载的内核。

    PXE_Linux.png

  5. 内核根据其功能/特性从TFTP服务器或任何其他协议服务器加载其余部分。

    Parted_Magic_1.png Parted_Magic_2.png

服务器设置

设置PXE服务器的方法有很多,这就是其中一种。

这些说明已在实际计算机上的Ubuntu 9.10Ubuntu 10.04上进行了测试。它们应该仍然有效,只有很少的更改。(已在VirtualBox上针对Ubuntu 14.04进行了更新和测试,请检查旧版本的编辑版本)

我的目标是PartedMagic 4.5,它应该类似于Ubuntu或任何Linux发行版。

  1. 安装DHCP和TFTP软件包

        sudo apt-get install isc-dhcp-server openbsd-inetd lftp tftpd-hpa syslinux
    
  2. DHCP设置

    • 编辑/etc/default/isc-dhcp-server,DHCP服务的以太网接口

      INTERFACES="eth0"
      
    • 编辑/etc/dhcp/dhcpd.conf‬/etc/ltsp/dhcpd.conf确实存在,DHCP服务配置

      PXE特定配置:filenamenext-server

      default-lease-time 600;
      max-lease-time 7200;
      subnet 192.168.10.0 netmask 255.255.255.0 {
          range 192.168.10.50 192.168.10.100;
          option subnet-mask 255.255.255.0;
          option routers 192.168.10.123;
          option broadcast-address 192.168.10.255;
          filename "pxelinux.0";
          next-server 192.168.10.123;
      }
      
    • 设置静态IP eth0192.168.10.123使用网络管理员的桌面版或我的情况下,/etc/network/interfaces为服务器版本。

      auto eth0
      iface eth0 inet static
      address 192.168.10.123
      netmask 255.255.255.0
      network 192.168.10.0
      broadcast 192.168.10.255
      

      重新初始化网络接口:

      sudo ifdown eth0
      sudo ifup eth0
      
    • 重新启动服务

      sudo service isc-dhcp-server restart
      

      检查状态

      netstat -lu
      

      输出量

      Proto Recv-Q Send-Q Local Address           Foreign Address         State      
      udp        0      0 *:bootpc                *:*                                
      
  3. TFTP设置

    • 编辑‪/etc/inetd.conf#<off>#tftp行首删除,或者在#:BOOT:注释下不添加则添加。(请在systemd,15.10及更高版本中跳过此步骤)

      tftp    dgram   udp wait    root    /usr/sbin/in.tftpd  /usr/sbin/in.tftpd -s /var/lib/tftpboot
      
    • 为启用启动服务 inetd

      sudo update-inetd --enable BOOT
      
    • 启动服务

      sudo service openbsd-inetd restart
      sudo service tftpd-hpa restart
      

      检查状态

      netstat -lu
      

      输出量

      Proto Recv-Q Send-Q Local Address           Foreign Address         State 
      udp        0      0 *:tftp                  *:*                          
      
  4. PXE启动文件设置

    • 解压缩pmagic-pxe-4.5.zip。如果pxelinux.0不存在,得到它sysliux-common安装在包装/usr/lib/syslinux/pxelinux.0SYSLINUX项目Ubuntu的网络启动图像

      将它们放在相似的结构中。

      /var/lib/tftpboot/
       |-- pxelinux.0
       |-- pxelinux.cfg/
       |   `-- default
       `-- pmagic/
           |-- bzimage
           `-- initramfs
      
    • 编辑/var/lib/tftpboot/pxelinux.cfg/default(如果需要)示例路径:pmagic/bzimagepmagic/initramfs

      DEFAULT partmagic 
      
      LABEL partmagic 
          MENU LABEL PartMagic 4.5 
          KERNEL pmagic/bzimage 
          APPEND initrd=pmagic/initramfs edd=off noapic load_ramdisk=1 prompt_ramdisk=0 rw vga=791 sleep=10 loglevel=0 keymap=us livemedia
      
    • 设置正确的权限

      sudo find /var/lib/tftpboot -type f -exec chmod 644 {} \;
      sudo find /var/lib/tftpboot -type d -exec chmod 755 {} \;
      

客户端设置

使用一次性更改BIOS引导顺序F9F12,从BIOS配置永久设置DELF2F12。(取决于机器品牌)

移至顶部:[PXE | NIC | LAN | Ethernet | Network]

笔记

  • inetutils-inetdxinetd可以用来代替openbsd-inetd,某些inetd步骤是不同的。

  • TFTP根目录可以从更改/etc/default/tftpd-hpa。记得也要更新‪/etc/inetd.conf

  • 许多发行版支持通过多种协议加载RAMDisk:SSH(SFTP),SMB,NFS ...示例Ubuntu支持NFS。

  • 某些旧的网卡不支持PXE,iPXE,可以在软盘,USB驱动器,硬盘(/boot分区)上使用例如gPXE或Etherboot),甚至可以将其闪存到ROM(仅支持少数NIC)。GRUB2具有支持使用PXE引导的模块。

    另请参阅Wikipedia:gPXE ROM-O-matic

  • 来自的Ubuntu Netboot映像 cdimage.ubuntu.com/netboot/ 提供了从网络安装Ubuntu系统会询问从官方镜像或本地一个下载所有需要的软件包,如果你有一个。

    大多数用户都希望通过PXE引导实时映像。这个问题仅是设置PXE服务器。参见Ubuntu Wiki:安装-LocalNet

    Ubuntu NetBoot-官方存档镜像 Ubuntu NetBoot-自定义/本地存档镜像

  • 可以自定义PXE菜单,最好的模板是Ubuntu NetBoot。请参阅Pxeboot多个映像

    PXE_Linux_Menu.png

  • memdisk 可用于通过PXE直接加载ISO或软盘映像。 syslinux-common包中有副本。客户端应该有足够的RAM来容纳映像,以及一部分用于运行已加载的OS。

    配置示例:

    /var/lib/tftpboot/
    |-- FDSTD.144
    |-- memdisk
    |-- pxelinux.0
    |-- slitaz-cooking.iso
    |-- pxelinux.cfg
    |   `-- default
    `-- pmagic/
        |-- bzimage
        `-- initramfs
    

    /pxelinux.cfg/default

    DEFAULT partmagic
    
    LABEL partmagic
        MENU LABEL PartMagic 4.5
        KERNEL pmagic/bzimage
        APPEND initrd=pmagic/initramfs edd=off noapic load_ramdisk=1 prompt_ramdisk=0 rw vga=791 sleep=10 loglevel=0 keymap=us livemedia
    
    LABEL slitaz
        MENU LABEL ^Slitaz.iso
        TEXT HELP
    Testing boot from iso.
        ENDTEXT 
        KERNEL memdisk
        APPEND initrd=slitaz-cooking.iso
    
    LABEL freedos_std
        MENU LABEL ^FreeDOS STD
        TEXT HELP
    Testing boot from Floppy IMG.
        ENDTEXT 
        KERNEL memdisk
        APPEND initrd=FDSTD.144
    
  • 在原始开发人员决定将PartedMagic软件包商业化后,该软件包已从官方网站上删除,可以通过torrent网络找到一些发行版本。我的回答是对我有用的第一个PXE设置的简历。Ubuntu Netboot映像应按照相同的说明工作。


朋友,实际上我在Pxeboot上工作。我将这些软件包安装在一个虚拟机(Oracle Virtualbox)中,apt-get install nfs-kernel-server apt-get install tftpd-hpa inetutils-inetd apt-get install syslinux apt-get install isc-dhcp-server我编辑dhcpd .conf文件并运行dhcp服务器
2014年

@Sneetsher:嗨,我使用的是tftpd-hda,配置了默认值。A netstat -lu | grep tftp以聆听模式显示它。/ tftpboot文件夹为777,但是如果我tftp> get pxelinux.0从客户端尝试访问它,则总是得到一个tftp:pxelinux.0:权限被拒绝错误。您有调试的想法吗?提前致谢。
Danduk82

@ Danduk82,/var/lib/tftpboot/带有755(默认值)应该可以。检查是否pxelinux.0具有644或运行sudo chmod -R +r /var/lib/tftpboot/以使其所有内容可读。
user.dz 2014年

1
嗨,实际上我已经解决了这个问题:实际上,我(非常)忘记了在添加filename "pxelinux.0";...后没有重新启动DHCP服务...无评论; P ...感谢您的答复以及这一出色的(完整的)答复。干杯
Danduk82 2014年

1
@Matthieu,您可能会发现通过Torrent网络发布的某些版本,在原始开发人员决定将其商业化之后,这些软件包已从官方网站删除。另外,如果您只是初次尝试测试或设置PXE,则可以使用cdimage.ubuntu.com/netboot
user.dz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.