一、实验环境
实验环境为debian10.2-64位
PXE的工作过程:
- PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP;
- DHCP 服务器返回分配给客户机的IP 以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上) ;
- PXE Client 向本网络中的TFTP服务器索取pxelinux.0 文件;
- PXE Client 取得pxelinux.0 文件后之执行该文件;
- 根据pxelinux.0 的执行结果,通过TFTP服务器加载内核和文件系统 :
- 进入安装画面, 此时可以通过选择HTTP、FTP、NFS 方式之一进行安装;
二、网络配置
虚拟机添加了两块网卡,一块默认nat模式,可以直接访问Internet;另一块设置成LAN区段t模式,模拟成内网环境,通过nat访问Internet,以保证PXE客户机可以正常从网络源下载软件包。
1、eth0设置为VMnet的nat模式(默认即可访问外网)
2、eth1设置为LAN区段模式(客户端网卡也设为LAN区段)
如果服务器是两块网卡,eth0接外网,eth1接内网的话,那么想通过内网来安装系统就需要做NAT,这样通过内网PXE上来的客户机才可以正常从网络源下载包,命令如下:
iptables -t nat -A POSTROUTING -o eth0 -s 内网地址段(例如:10.1.1.0/24) -j SNAT --to 外网网卡IP地址 --("-o eth0" 此处为外网网卡,如果只有两块网卡,该参数也可省略)
三、FAI Server的配置
1、配置network
vim /etc/network/interfaces
auto eth0 iface eth0 inet static address 192.168.206.134 netmask 255.255.255.0 gateway 192.168.206.2 //此为VMnet8 下的网关
auto eth1 iface eth1 inet static address 192.168.205.210 netmask 255.255.255.0
2、开启转发
echo "1" > /proc/sys/net/ipv4/ip_forward # sysctl -p
3、修改网络源
a.先修改系统使用的源,如果有本地ISO镜像源将其注释掉。
vim /etc/apt/sources.list
deb http://mirrors.163.com/debian buster main contrib non-free
b.更新网络源
apt-get update
4、安装fai-quickstart
apt-get install fai-quickstart -y
apt-get会将FAI Server所需的相关服务一并安装,比如DHCP、TFTP、NFS
apt-get install qemu-user-static -y
qeme-user-static如果未安装,需要安装上
5、配置DHCP
vim /etc/dhcp/dhcpd.conf
next-server 192.168.205.210; ddns-update-style none; default-lease-time 600; max-lease-time 7200; server-name "192.168.205.210"; filename "pxelinux.0"; #filename "/boot/pxeboot"; allow booting; allow bootp; include "/etc/dhcp/vlan100.conf";
vim /etc/dhcp/vlan100.conf
subnet 192.168.205.0 netmask 255.255.255.0 { option routers 192.168.205.210; range 192.168.205.10 192.168.205.250; option subnet-mask 255.255.255.0; allow booting; allow bootp; }
6、配置tftpd-hpa
vim /etc/default/tftpd-hpa
TFTP_USERNAME="tftp" TFTP_DIRECTORY="/srv/tftp/fai" TFTP_ADDRESS="192.168.205.210:69" --修改此行 TFTP_OPTIONS="--secure"
7、配置fai.conf
vim /etc/fai/fai.conf
LOGUSER=fai --开启此行 FAI_CONFIG_SRC=nfs://192.168.205.210/srv/fai/config --修改此行
8、配置nfsroot.conf
vim /etc/fai/nfsroot.conf
FAI_DEBOOTSTRAP="buster http://mirrors.163.com/debian" --修改此行 FAI_ROOTPW='$1$kBnWcO.E$djxB128U7dMkrltJHPf6d1'
NFSROOT=/srv/fai/nfsroot TFTPROOT=/srv/tftp/fai NFSROOT_HOOKS=/etc/fai/nfsroot-hooks/ FAI_DEBOOTSTRAP_OPTS="--include=aptitude --arch amd64 --exclude=dhcp-client,info" --修改此行(“--include=aptitude”需要保留,否则初始化会失败) NFSROOT_ETC_HOSTS="192.168.205.210" --添加此行
FAI_CONFIGDIR=/srv/fai/config
9、修改fai网络源
c.拷贝sources.list替换fai的sources.list
cp /etc/apt/sources.list /etc/fai/apt/sources.list
10、初始化FAI
fai-setup -v
初始化需要一些时间,出现下面的信息就表示初始化成功了。如果中途卡死,重新初始化的时候需要加上参数“f”即“fai-setup -vf”
11、生成default
a.此时/srv/fai/config下没有具体的配置文件,将模板复制过来
cp -a /usr/share/doc/fai-doc/examples/simple/* /srv/fai/config
b.生成default
fai-chboot -IBv -u nfs://192.168.205.210/srv/fai/config default --不要使用fai-chboot -IFv default来生成,可能会出现无法连接nfs的问题。
12、配置exports
vim /etc/exports
/srv/fai/config 192.168.205.210/24(async,ro,no_subtree_check) --初始化生成的exports会将eth0,也就是桥接到物理网卡的地址作为nfs服务器的地址,需要手动修改。 /srv/fai/nfsroot 192.168.205.210/24(async,ro,no_subtree_check,no_root_squash)
13、重启相关服务器
/etc/init.d/networking restart
/etc/init.d/isc-dhcp-server restart
/etc/init.d/tftpd-hpa restart
/etc/init.d/rpcbind restart
/etc/init.d/nfs-kernel-server restart
/etc/init.d/nfs-common restart