verbose工具:vmware
Linux版本:release V10 (SP1) /(Tercel)-x86_64-Build20/20210518
一、PXE介绍PXE 即预启动执行环境。其提供了一种使用网络接口启动计算机的机制。这种机制让计算机的启动可以不依赖本地数据存储设备或本地已安装的操作系统。
二、PXE网络引导安装Linux操作系统对于PXE服务器来说,其必须具有dhcp服务器、tftp服务器、http服务器。
DHCP服务器的作用是为PXE client指定其所在的子网,为其指定网关等信息,并分配给client一个ip地址。同时,告诉客户端tftp服务器的地址以及指定tftp下的pxelinux.0文件。
TFTP服务器的作用是回应客户端的下载请求,将一些必要的文件发送给客户端。
HTTP服务器的主要作用则是配置软件源,供客户端下载安装。
| dhcp服务器地址 | tftp、http服务器地址 |
|---|---|
| 192.168.30.137 | 192.168.30.138 |
基础准备:
①、关闭防火墙
systemctl stop firewalld #临时关闭 systemctl disable firewalld #设置开机不自启 systemctl status firewalld #查看防火墙状态
②、永久关闭selinux
vim /etc/sysconfig/selinux #修改selinux配置文件 SELINUX=disabled #修改SELINUX,修改完后请重启以生效 getenforce #查看selinux状态3.1、安装配置DHCP
安装dhcp服务
yum install dhcp-server -y
修改配置文件
vim /etc/dhcp/dhcpd.conf
内容如下
option domain-name-servers 222.88.88.88,222.85.85.85; #设置默认DNS服务器
ddns-update-style interim;
ignore client-updates;
filename "pxelinux.0"; #指定
next-server 192.168.30.138; #指定tftp服务器地址
#定义子网
subnet 192.168.30.0 netmask 255.255.255.0 {
option routers 192.168.30.2; #默认网关
option subnet-mask 255.255.255.0; #默认子网掩码
range dynamic-bootp 192.168.30.10 192.168.30.200; #dhcp服务器给client自动分配ip的范围
default-lease-time 21600;
max-lease-time 43200;
}
保存,然后启动dhcp服务
systemctl start dhcpd.service #启动dhcp服务 systemctl enable dhcpd.service #设置开机启动 systemctl status dhcpd.service #查看dhcp服务状态3.2、安装配置tftp
参考文档:
链接:
步骤如下:
sudo dnf makecache -y sudo dnf install tftp-server -y sudo cp -v /usr/lib/systemd/system/tftp.service /etc/systemd/system/tftp-server.service sudo cp -v /usr/lib/systemd/system/tftp.socket /etc/systemd/system/tftp-server.socket sudo vi /etc/systemd/system/tftp-server.service # Change Requires=tftp.socket to Requires=tftp-server.socket, # change ExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot to ExecStart=/usr/sbin/in.tftpd -c -p -s /var/lib/tftpboot # change Also=tftp.socket to Also=tftp-server.socket. # You also have to add a new line WantedBy=multi-user.target after the [Install] line.
如下
[Unit] Description=Tftp Server Requires=tftp-server.socket documentation=man:in.tftpd [Service] ExecStart=/usr/sbin/in.tftpd -c -p -s /var/lib/tftpboot StandardInput=socket [Install] WantedBy=multi-user.target Also=tftp-server.socket
sudo vi /etc/systemd/system/tftp-server.socket #You have to add a new line BindIPv6only=both after the ListenDatagram=69 line.
如下
[Unit] Description=Tftp Server Activation Socket [Socket] ListenDatagram=69 BindIPv6only=both [Install] WantedBy=sockets.target
sudo systemctl status tftp-server.service sudo systemctl start tftp-server.service sudo systemctl enable tftp-server.service sudo systemctl status tftp-server.service sudo setsebool -P tftp_anon_write 1 sudo yum install -y python-policycoreutils sudo chmod 777 /var/lib/tftpboot # sudo systemctl start firewalld 这个此处开通后面需要关掉,不然页面http访问不了 sudo firewall-cmd --add-service=tftp --permanent sudo firewall-cmd --reload nmcli sudo systemctl stop firewalld #显示当前ip sudo dnf install -y tftp #测试 cd /etc tftp 当前ip tftp> status tftp> verbose tftp> put fstab sudo tftp 当前ip tftp> get hosts3.3、安装syslinux与拷贝操作
tftp服务器
yum install syslinux -y
拷贝引导加载程序pxelinux.0到/var/lib/tftpboot
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
挂载Kylin的iso
mount /dev/sr0 /media/ #你也可以将iso保存到虚拟机,然后再挂载。
在var/lib/tftpboot下创建一个名为pxelinux.cfg的目录
mkdir /var/lib/tftpboot/pxelinux.cfg
复制镜像文件中的安装菜单文件到上一步创建的目录下,并重命名为default
cp /media/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
配置default
vim /var/lib/tftpboot/pxelinux.cfg/default
内容如下
default vesamenu.c32 prompt 1 timeout 60 display boot.msg label linux menu label ^Install Kylin-0158 in Graphical Mode menu default kernel vmlinuz append initrd=initrd.img ip=dhcp inst.repo=http://192.168.30.138/kylin ks=http://192.168.30.138/ks.cfg label vesa menu label Install Kylin-0158 with ^basic video driver kernel vmlinuz append initrd=initrd.img ip=dhcp inst.xdriver=vesa nomodeset inst.repo=http://192.168.30.138/kylin ks=http://192.168.30.138/ks.cfg label rescue menu label ^Rescue installed system kernel vmlinuz append initrd=initrd.img rescue label local menu label Boot from ^local drive localboot 0xffff
复制镜像文件中的图形化安装菜单到TFTP目录下
cp /media/isolinux/vesamenu.c32 /var/lib/tftpboot
复制镜像文件中的Linux引导加载模块到TFTP根目录下
cp /media/images/pxeboot/initrd.img /var/lib/tftpboot/
复制镜像文件中的压缩内核到TFTP根目录下
cp /media/images/pxeboot/vmlinuz /var/lib/tftpboot/
复制boot.msg到TFTP根目录
cp /media/isolinux/boot.msg /var/lib/tftpboot/
复制ldlinux.c32到TFTP根目录
cp /media/isolinux/ldlinux.c32 /var/lib/tftpboot/
复制libcom32.c32到TFTP根目录
cp /media/isolinux/libcom32.c32 /var/lib/tftpboot/ cp /media/isolinux/libutil.c32 /var/lib/tftpboot/3.4、安装http
yum install httpd.x86_64 -y
启动http服务
systemctl start httpd.service systemctl enable httpd.service systemctl status httpd.service3.5、配置kylin安装源与ks.cfg文件
创建目录/var/www/html/kylin
mkdir -p /var/www/html/kylin
将kylin镜像内的所有文件拷贝到/var/www/html/kylin
cp -r /media/* /var/www/html/kylin/
打开浏览器访问192.168.30.138/kylin,能正常访问。
复制一份ks.cfg模板
cp /root/anaconda-ks.cfg /var/www/html/ks.cfg
设置权限,以便client可以读
chmod o+r /var/www/html/ks.cfg
编辑ks.cfg文件
vim /var/www/html/ks.cfg
在cdrom下增加url
# Use CDROM installation media cdrom url --url=http://192.168.30.138/kylin四、开始新机器安装
- 不选择ISO,完成后直接开启虚拟机不可以使用1核1G,启动不起来
#!/bin/bash
TFTP_SERVER_IP=192.168.30.138
SUBNET=192.168.30.0
NETMASK=255.255.255.0
ROUTER=192.168.30.2
DHCP_RANGE_LOW=192.168.30.10
DHCP_RANGE_HIGH=192.168.30.200
yum install dhcp-server -y
cat > /etc/dhcp/dhcpd.conf <<-EOF
option domain-name-servers 222.88.88.88,222.85.85.85; #设置默认DNS服务器
ddns-update-style interim;
ignore client-updates;
filename "pxelinux.0"; #指定
next-server $TFTP_SERVER_IP; #指定tftp服务器地址
#定义子网
subnet $SUBNET netmask $NETMASK {
option routers $ROUTER; #默认网关
option subnet-mask $NETMASK; #默认子网掩码
range dynamic-bootp $DHCP_RANGE_LOW $DHCP_RANGE_HIGH; #dhcp服务器给client自动分配ip的范围
default-lease-time 21600;
max-lease-time 43200;
}
EOF
systemctl start dhcpd.service #启动dhcp服务
systemctl enable dhcpd.service #设置开机启动
TFTP服务器
#!/bin/bash TFTP_SERVER_IP=192.168.30.138 SUBNET=192.168.30.0 NETMASK=255.255.255.0 ROUTER=192.168.30.2 DHCP_RANGE_LOW=192.168.30.10 DHCP_RANGE_HIGH=192.168.30.200 sudo dnf makecache -y sudo dnf install tftp-server -y sudo cp -v /usr/lib/systemd/system/tftp.service /etc/systemd/system/tftp-server.service sudo cp -v /usr/lib/systemd/system/tftp.socket /etc/systemd/system/tftp-server.socket cat > /etc/systemd/system/tftp-server.service <<-EOF [Unit] Description=Tftp Server Requires=tftp-server.socket documentation=man:in.tftpd [Service] ExecStart=/usr/sbin/in.tftpd -c -p -s /var/lib/tftpboot StandardInput=socket [Install] WantedBy=multi-user.target Also=tftp-server.socket EOF cat > /etc/systemd/system/tftp-server.socket <<-EOF [Unit] Description=Tftp Server Activation Socket [Socket] ListenDatagram=69 BindIPv6Only=both [Install] WantedBy=sockets.target EOF sudo systemctl start tftp-server.service sudo systemctl enable tftp-server.service sudo setsebool -P tftp_anon_write 1 sudo yum install -y python-policycoreutils sudo chmod 777 /var/lib/tftpboot # sudo systemctl start firewalld 这个此处开通后面需要关掉,不然页面http访问不了 sudo firewall-cmd --add-service=tftp --permanent sudo firewall-cmd --reload sudo systemctl stop firewalld #显示当前ip sudo dnf install -y tftp yum install syslinux -y cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ mount /dev/sr0 /media/ mkdir /var/lib/tftpboot/pxelinux.cfg cp /media/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default cat > /var/lib/tftpboot/pxelinux.cfg/default <<-EOF default vesamenu.c32 prompt 1 timeout 60 display boot.msg label linux menu label ^Install Kylin-0158 in Graphical Mode menu default kernel vmlinuz append initrd=initrd.img ip=dhcp inst.repo=http://$TFTP_SERVER_IP/kylin ks=http://$TFTP_SERVER_IP/ks.cfg label vesa menu label Install Kylin-0158 with ^basic video driver kernel vmlinuz append initrd=initrd.img ip=dhcp inst.xdriver=vesa nomodeset inst.repo=http://$TFTP_SERVER_IP/kylin ks=http://$TFTP_SERVER_IP/ks.cfg label rescue menu label ^Rescue installed system kernel vmlinuz append initrd=initrd.img rescue label local menu label Boot from ^local drive localboot 0xffff EOF cp /media/isolinux/vesamenu.c32 /var/lib/tftpboot cp /media/images/pxeboot/initrd.img /var/lib/tftpboot/ cp /media/images/pxeboot/vmlinuz /var/lib/tftpboot/ cp /media/isolinux/boot.msg /var/lib/tftpboot/ cp /media/isolinux/ldlinux.c32 /var/lib/tftpboot/ cp /media/isolinux/libcom32.c32 /var/lib/tftpboot/ cp /media/isolinux/libutil.c32 /var/lib/tftpboot/ yum install httpd.x86_64 -y systemctl start httpd.service systemctl enable httpd.service mkdir -p /var/www/html/kylin echo "开始复制media,请等待..." cp -r /media/* /var/www/html/kylin/ cp /root/anaconda-ks.cfg /var/www/html/ks.cfg chmod o+r /var/www/html/ks.cfg sed -i "10iurl --url=http://$TFTP_SERVER_IP/kylin/" /var/www/html/ks.cfg
edia/isolinux/ldlinux.c32 /var/lib/tftpboot/
cp /media/isolinux/libcom32.c32 /var/lib/tftpboot/
cp /media/isolinux/libutil.c32 /var/lib/tftpboot/
yum install httpd.x86_64 -y
systemctl start httpd.service
systemctl enable httpd.service
mkdir -p /var/www/html/kylin
echo “开始复制media,请等待…”
cp -r /media/* /var/www/html/kylin/
cp /root/anaconda-ks.cfg /var/www/html/ks.cfg
chmod o+r /var/www/html/ks.cfg
sed -i “10iurl --url=http://$TFTP_SERVER_IP/kylin/” /var/www/html/ks.cfg



