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

如何使用PXE启动服务器安装Ubuntu虚拟机?

我需要所有配置详细信息以及配置文件中要更改的内容。

PXE(Preboot eXecution Environment,发音为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(客户端)从TFTP服务器请求pxelinux.0文件,将其加载到RAM然后将控制权传递给pxelinux.0

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

    • UUID
    • 苹果电脑
    • Capital Hex中的IP
    • IP的一部分
    • 丢弃到default文件

    PXE_Boot_2.png

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

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

    PXE_Linux.png

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

    Parted_Magic_1.pngParted_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; } 
    • 在我的案例中使用适用于桌面版的网络管理器或服务器版的/etc/network/interfaceseth0设置静态IP。

       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 ,从tftp行的开头删除## ,如果不在#:BOOT: comment下则添加#: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 ,请从/usr/lib/syslinux/pxelinux.0 Project或Ubuntu Netboot Image中安装的sysliux-common软件包中获取。

      把它们放在类似的结构中。

       /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 {} \; 

客户端安装

使用F9F12将 BIOS启动顺序更改一次,以便从BIOS配置DELF2F12进行永久设置。 (取决于机器品牌)

移到顶部: [PXE | NIC | LAN | Ethernet | Network] [PXE | NIC | LAN | Ethernet | Network] [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 ( 例如gPXE或Etherboot ),无论是在软盘,USB驱动器,硬盘( /boot分区)上,还是将其闪存到ROM(仅支持少量NIC)。 GRUB2具有支持使用PXE启动的模块。

    另见维基百科:gPXE和ROM-O-matic 。

  • 来自cdimage.ubuntu.com/netboot/的 Ubuntu 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 Image应该使用相同的指令。