PXE是preboot execution environment的简写,它允许我们同时通过网络向多个计算机部署操作系统,也可以帮助我们在没有USB/CD/DVD的远程计算机上安装操作系统。
在实际工作中,我们经常会遇到这样的情况:想要安装操作系统,但是计算机不带光驱或USB接口,所以也无法通过本地安装操作系统;此外,在一些场合,如机房,IT实验室,工厂生产线,有大量的计算机需要同时安装操作系统,如果通过光驱的方式一个个安装,不仅效率低,也不利于维护。这时候你就需要PXE的强大功能了。
本文介绍怎么在Ubuntu上搭建PXE服务器。
架设PXE服务器还需要DHCP和TFTP服务器:DHCP负责给网络中的计算机分配IP,TFTP负责传输文件;我们可以把DHCP和PXE部署到同一个计算机或分别使用单独的计算机。下面我把DHCP和PXE安装到同一个机器上。
1.安装DHCP
参考:http://www.linuxdiyf.com/linux/10370.html
2.安装PEX和TFTP服务
$ sudo apt-get install apache2 tftpd-hpa inetutils-inetd
3.配置PXE
$ sudo vim /etc/default/tftpd-hpa
在文件尾写入如下两行开启TFTP:
RUN_DAEMON="yes"
OPTIONS="-l -s /var/lib/tftpboot"
$ sudo vim /etc/inetd.conf
在文件中添加:
tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot
如果你使用IPv6,需要把udp改为udp4。
重启tftp服务使生效:
$ sudo systemctl restart tftpd-hpa
配置要安装的系统ISO镜像;把要部署的ISO系统镜像(Ubuntu)挂载到 /mnt/:
$ sudo mount -o loop ubuntu-16.04-server-amd64.iso /mnt/
把启动安装文件拷贝到 /var/lib/tftpboot/:
$ sudo cp -fr /mnt/install/netboot/* /var/lib/tftpboot/
在Apache网站根文档目录创建ubuntu目录并拷贝文件:
$ sudo mkdir /var/www/html/ubuntu
$ sudo cp -fr /mnt/* /var/www/html/ubuntu/
编辑/var/lib/tftpboot/pxelinux.cfg/default文件:
$ sudo vim /var/lib/tftpboot/pxelinux.cfg/default
在文件尾添加:
label linux
kernel ubuntu-installer/amd64/linux
append ks=http://192.168.0.100/ks.cfg vga=normal initrd=ubuntu-installer/amd64/initrd.gz
ramdisk_size=16432 root=/dev/rd/0 rw --
需要填写要安装系统的架构,192.168.0.100是PXE服务器的ip地址。
4.配置DHCP
$ sudo vim /etc/dhcp/dhcpd.conf
在文件尾添加:
allow booting;
allow bootp;
option option-128 code 128 = string;
option option-129 code 129 = text;
next-server 192.168.0.100;
filename "pxelinux.0";
5.测试
在客户端计算机的BIOS中开启PXE:
进入到安装界面: