如何在Ubuntu 16.04上安装PXE服务器
如果我们是一个系统管理员,我们碰巧通常在实验室或者工作场所安装许多操作系统。
有时,我们可能会每天都在多个系统上安装OS。
如果我们一次在多个系统上安装OS,则不会更好?
这是PXE服务器派上派上的地方。
PXE,Preboot执行环境的缩写,允许我们在网络中自动部署多个系统上的操作系统。
此外,PXE服务器还可以在远程系统中安装操作系统,该系统没有CD/DVD或者U盘的任何选项。
在本教程中,我们将看到如何在Ubuntu 16.04 LTS服务器上安装PXE服务器,以及如何将其配置为在PXE客户端系统中部署操作系统。
在Ubuntu 16.04 LTS服务器上安装PXE服务器
我在Ubuntu 16.04 LTS 64位服务器上测试了本教程。
但是,这些步骤可能会对Debian及其衍生品工作。
为了设置PXE服务器,我们需要拥有一个工作的DHCP和TFTP服务器。
DHCP Server用于分发网络系统的IP地址,以便客户端系统可以与PXE服务器通信。
而且,TFTP服务器用于从PXE服务器下载安装文件并将其发送到PXE客户端。
我们可以在同一系统上部署PXE和DHCP服务器,或者为每个服务器使用不同的系统。
由于缺乏资源,我已经在一个系统上进行了测试。
我们可以为所有服务器使用单独的系统或者单机。
选择是你的。
让我们开始吧。
首先,我们需要设置DHCP服务器。
安装DHCP服务器后,使用命令一起使用TFTP和其他依赖项一起安装PXE服务器:
sudo apt-get install apache2 tftpd-hpa inetutils-inetd
PXE服务器已安装。
让我们继续配置它。
配置PXE服务器
使用我们喜欢的编辑器编辑文件/etc/default/tftpd-hpa文件:
sudo nano /etc/default/tftpd-hpa
在文件末尾添加以下行以启用TFTP服务器。
[...] RUN_DAEMON="yes" OPTIONS="-l -s /var/lib/tftpboot"
编辑/etc/inetd.conf文件:
sudo nano /etc/inetd.conf
最后添加或者修改以下行:
tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot
请注意,如果使用IPv6,则需要将Word UDP更改为UDP4.
保存并关闭文件。
最后重新启动TFTP服务以生效所有更改。
sudo systemctl restart tftpd-hpa
检查TFTP服务是否正在运行或者未使用命令:
sudo systemctl status tftpd-hpa
示例输出:
● tftpd-hpa.service - LSB: HPA's tftp server Loaded: loaded (/etc/init.d/tftpd-hpa; bad; vendor preset: enabled) Active: active (running) since Mon 2015-08-08 14:49:30 IST; 1min 47s ago Docs: man:systemd-sysv-generator(8) Process: 3867 ExecStop=/etc/init.d/tftpd-hpa stop (code=exited, status=0/SUCCE Process: 3879 ExecStart=/etc/init.d/tftpd-hpa start (code=exited, status=0/SUC Tasks: 1 Memory: 152.0K CPU: 63ms CGroup: /system.slice/tftpd-hpa.service └─3890 /usr/sbin/in.tftpd --listen --user tftp --address [::]:69 --se Aug 08 14:49:30 ubuntuserver systemd[1]: Stopped LSB: HPA's tftp server. Aug 08 14:49:30 ubuntuserver systemd[1]: Starting LSB: HPA's tftp server... Aug 08 14:49:30 ubuntuserver tftpd-hpa[3879]: * Starting HPA's tftpd in.tftpd Aug 08 14:49:30 ubuntuserver tftpd-hpa[3879]: ...done. Aug 08 14:49:30 ubuntuserver systemd[1]: Started LSB: HPA's tftp server.
如上所述,TFTP服务正在运行。
将Ubuntu安装文件复制到PXE服务器
配置部分结束。
接下来,我们需要将安装文件复制到PXE服务器。
安装我们要在客户端系统上部署的Ubuntu安装ISO。
或者,如果我们有安装DVD,请将媒体的所有内容复制到PXE服务器。
出于本教程的目的,我们将在PXE客户端中部署Ubuntu 16.04 LTS 64位版本。
为此,请在我们选择的任何位置安装Ubuntu 16.04 ISO。
我将在/mnt /目录上安装它。
sudo mount -o loop ubuntu-16.04-server-amd64.iso /mnt/
现在,转到我们安装(/mnt /我们的案例)的位置并将可引导的安装文件复制到/var/lib/tftpboot /目录的PXE服务器。
cd /mnt/
sudo cp -fr install/netboot/* /var/lib/tftpboot/
我们已复制所有必要的可启动文件。
接下来在Apache根文档文件夹中创建一个名为Ubuntu的目录。
sudo mkdir /var/www/html/ubuntu
现在,使用命令从Ubuntu ISO复制所有文件:
sudo cp -fr /mnt/* /var/www/html/ubuntu/
下一步编辑/var/lib/tftpboot/pxelinux.cfg/default文件:
sudo nano /var/lib/tftpboot/pxelinux.cfg/default
根据我们使用的分发架构,最后添加以下内容。
[...] label linux kernel ubuntu-installer/amd64/linux append ks=http://192.168.1.105/ks.cfg vga=normal initrd=ubuntu-installer/amd64/initrd.gz ramdisk_size=16432 root=/dev/rd/0 rw -
192.168.1.105是我的PXE服务器的IP地址。
使用PXE服务器的地址替换此IP地址。
对于32位PXE客户端,我们需要添加以下行:
[...] label linux kernel ubuntu-installer/i386/linux append ks=http://192.168.1.105/ks.cfg vga=normal initrd=ubuntu-installer/i386/initrd.gz ramdisk_size=16432 root=/dev/rd/0 rw -
再次,用自己的方式替换IP地址。
保存并关闭文件。
配置DHCP服务器设置
转到DHCP服务器并执行以下更改。
请记住,我对PXE和DHCP服务器使用相同的服务器。
编辑/etc/dhcp/dhcpd.conf文件:
sudo nano /etc/dhcp/dhcpd.conf
结束添加以下行:
allow booting; allow bootp; option option-128 code 128 = string; option option-129 code 129 = text; next-server 192.168.1.105; filename "pxelinux.0";
用自己替换IP地址。
保存并关闭文件。
重新启动DHCP服务器以生效更改。
sudo systemctl restart isc-dhcp-server
如果你来这次来,祝贺!PXE服务器已准备好使用。
在PXE客户端上安装操作系统
是时候在PXE客户端部署操作系统了。
确保在客户端系统的BIOS设置中启用了PXE引导选项。
对于演示目的,将介绍如何在VirtualBox中的PXE客户端上部署操作系统。
我们可以使用物理系统或者虚拟机。
打开Oracle VirtualBox,然后单击"新建"以创建Guest计算机。
输入虚拟机名称并选择体系结构。
指定虚拟机的内存大小。
选择"创建虚拟硬盘驱动器"以为我们的虚拟机创建硬盘。
选择要用于新虚拟硬盘的文件类型。
选择新的虚拟硬盘驱动器文件是否应在使用时或者应将其创建为固定大小。
输入虚拟硬盘文件的名称,并指定虚拟硬盘的大小。
我们的虚拟客户端计算机已创建。
接下来,转到新创建的虚拟机的设置和CHNAGE引导顺序。
为此,请选择虚拟机,然后单击菜单列上的设置图标。
从"系统"选项卡中,选择"网络作为第一引导设备。
接下来,单击左侧的"网络"选项卡,然后从"添加到"下拉框中选择"桥接适配器"。
最后,单击"确定"并启动虚拟机。
就像在正常系统中一样开始在PXE客户端中安装Ubuntu。