解决大量设备安装系统问题,可以实现无人值守安装
PXE运行原理:
简写运行步骤:
1、客户端启动,选择从网卡启动
2、从DHCP服务器获取IP地址等信息
3、还从DHCP中获取到tftp server地址及网络引导程序pxelinux.0位置信息
4、通过网卡访问到tftp server的根目录(/var/lib/tftpboot)下的pxelinux.0,读到本地内存中
5、在内存中执行引导程序
6、读取引导程序的配置文件(/var/lib/tftpboot/pxelinux.cfg/default)
7、读取default中的内容
最重要的 vmlinuz 内核 initrd.img 驱动引导程序 各版本一定要区分、配对
本次演示以Centos7为例:
前期准备:
配置静态ip
关闭防火墙和selinux
更换国内yum源(可以不做)
安装图形化桌面
初学者为了简便,后面要用到一个图形化工具生成自动化配置文件
yum groupinstall "GNOME Desktop" "Graphical Administration Tools"
安装 dhcp和tftp
yum install dhcp tftp-server -y
cd /etc/dhcp/
cat dhcpd.conf #默认配置文件什么都没有
cp /usr/share/doc/dhcp*/dhcpd.conf.example dhcpd.conf #可以复制预留的模板修改
[root@ ~]# cat /etc/dhcp/dhcpd.conf # 最终效果
next-server 192.168.8.220; # 指定tftp-server地址
filename "pxelinux.0"; #tftp根目录下的文件
subnet 192.168.8.0 netmask 255.255.255.0 { # 这里没什么好说的,就是dhcp基本配置
range 192.168.8.40 192.168.8.140;
option domain-name-servers 192.168.8.1,114.114.114.114;
option domain-name "lance.com";
option routers 192.168.8.1;
option broadcast-address 192.168.8.255;
default-lease-time 600;
max-lease-time 7200;
}
# 启动 && 查看状态
systemctl start dhcpd
systemctl status dhcpd.service
systemctl enable dhcpd # 注意,dhcp会和路由器的dhcp冲突,不懂网络谨慎开启
配置tftp-server
vi /etc/xinetd.d/tftp
disable = no # 把yes改成no,这里的意思是默认不启动,no的话就是启动咯
systemctl start tftp
systemctl enable tftp
复制pxelinux.0
pxelinux.0是syslinux自带的文件
yum provides "*/pxelinux.0" # 查找哪个软件包自带的,如果找不到记得更新以下yum缓存信息
yum install syslinux -y # 安装
rpm -ql syslinux # 查看安装包安装的所有目录,找到pxelinux.0
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ # 拷贝到tftp根目录下
mkdir /var/lib/tftpboot/pxelinux.cfg # 创建存放配置文件的目录
挂载iso镜像
本次使用的是centos7-mini版,其他发行版也一样
镜像挂载到http目录下,安装http
yum install httpd
systemctl enable httpd && systemctl start httpd
# 挂载到httpd的根目录下,就可以通过网页访问了
cd /var/www/html/
mkdir -p centos/7
mount -o loop /data/ios_image/CentOS-7-x86_64-Minimal-2009.iso /var/www/html/centos/7
# 可以测试以下 网页输入http://本机ip/centos/7
新建一个本地yum文件
vi /etc/yum.repos.d/dvd.repo
[development] # 这里要写的一样,后面有位置需要
name=centos7
baseurl=http://192.168.8.220/centos/7
enabled=1
gpgcheck=0
yum clean all
yum makecache
# pxelinux.0的配置文件,先复制后面再修改
cp /var/www/html/centos/7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
# 内核和驱动程序
mkdir /var/lib/tftpboot/centos7
cp /var/www/html/centos/7/isolinux/* /var/lib/tftpboot/
cp var/lib/tftpboot/{vmlinuz,initrd.img} /var/lib/tftpboot/centos7/
安装自动化安装配置文件工具
yum install system-config-kickstart
system-config-kickstart # 图形化界面执行命令
这里对应了dvd.repo里面的[development],这样的格式才会出现选择软件包
这个非常有用,上面内容是我写着玩的,可以写改yum源呀,或者安装什么样的环境,包括有的系统需要创建一个普通用户才能安装系统,都可以用脚本写在这里
完成后,选择文件 --> 保存 到服务器目录里面
这个工具还可以打开已经创建好的文件
我的目录
[root@ tftpboot]# ls /var/www/html/ks/centos7_mini.cfg
修改pxelinux.0配置文件,只显示需要修改的位置
[root@ tftpboot]# cat pxelinux.cfg/default
default vesamenu.c32
timeout 60 # 选择安装系统界面的等待时间,单位1/10秒
label linux # 固定格式,可以在安装界面使用到
menu label ^Install CentOS 7 # 安装界面选择时显示的标题
menu default # 多个标题,光标默认选择的位置
kernel /centos7/vmlinuz # tftp根目录下,内核的位置
append initrd=/centos7/initrd.img ks=http://192.168.8.220/ks/centos7_mini.cfg
# tftp根目录下驱动的位置,刚刚ks配置文件的位置
测试:
等待时间,标题,默认光标的位置