一、PXE网络批量装机的介绍
1、常见的三种系统安装方式
2、回顾系统安装的过程,了解系统安装的必要条件
3、什么是pxe
4、搭建pxe的原理
5、Linux的光盘镜像中的isolinux中的相关文件学习
二、关于实现PXE无人值守装机的四大文件与五个软件的对应关系详解
5个程序的使用原因:
1、DHCP服务器:
2、TFTP服务器:
3、syslinux程序:
4、FTP服务器:
5、kickstart程序:
三、实操PXE批量安装详解
做任何动作之前先关闭selinux和防火墙,以及安装五个软件
第一步:dhcp服务器搭建
第二步:准备好vsftpd服务,挂载光盘镜像
第三步:开启tftp开机自启,配置好tftp传输的文件,内核和驱动
第四步:找到grub小程序——也就是syslinux提供的pxelinux.0程序
第五步:手写grub.cfg配置文件——default文件
第六步:生成ks.cfg配置文件
第七步:启动所有服务,见证奇迹
第八步:实现自动化装机过程
四、总结
第一种:u启动安装,在优盘中下载相关的安装系统和镜像文件,优盘插入即可安装,将想要的操作系统安装进自己的硬盘(需要将优盘设置u启动或者把镜像烧录进去)
第二种:光驱安装,将相关的安装系统镜像放入光盘,插入电脑服务器中,即可按照引导进行装机,将操作系统安装进自己的硬盘
第三种:网卡安装,需要通过网络下载,在网上的某个服务器上去下载相关镜像系统,来进行安装
这是硬盘启动的过程:开机自检(bios主板)——mbr引导(主要是去找grub菜单)——找到grub配置文件(找到内核的位置)——加载内核到内存——初始化启动
光驱安装系统的过程:bios引导选择光驱——boot.cat引导(通过isolinux.bin程序找到配置文件)——读取isolinux.cfg配置文件知道内核和光驱的位置——加载光驱里面的内核vmlinuz和驱动initrd.img到内存——再通过光驱里面找到各种初始化程序安装包,启动进程并开机
那么我们想要裸机通过网络来能够完成这样的过程,那么得有哪些必要条件呢?
①裸机主板需要支持网络引导(现在大多数的服务器主机都支持,需要在bios设置中可以允许network或者lan启动)
②需要有一个引导程序能找到grub配置文件(类似mbr引导)
③需要有一个类似grub配置文件指引找到内核(类似于grub.cfg)
④需要有vmlinuz内核程序和initrd.img驱动,加载到内存中(类似于vmlinuz-3.10.0-693.el7.x86_64和initramfs-3.10.0-693.el7.x86_64.img)
PXE 的全称是 preboot execute environment它其实是Intel在很久以前提出来的一项用于通过网络来引导系统的标准。允许客户机通过网络从远程服务器上下载引导镜像,并加载安装文件或者整个操作系统。
pxe是通过网卡引导启动需要的条件:
1.BIOS支持
2.网卡支持(现在基本都已支持)
3.需要在bios中开启开关,服务器一般没打开(bmc界面里打开)
4.网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置,网卡自带DHCP功能,dhcp 指明分配的ip地址
第一步 | 网卡需要查找相关的dhcp服务器,来获取ip地址和时间; |
第二步 | dhcp服务器,通过offer报文传给裸机客户端,不仅提供了ip地址,还提供了引导程序(boot loader,这里是pxelinux.0)的地址,以及tftp-server的地址(指向dhcp服务器自己); |
第三步 | 客户机通过tftp服务器获取引导程序pxelinux.0,将其加载到内存中; |
第四步 | 引导程序pxelinux.0通过tftp服务器获取pxelinux.cfg中的default配置文件; |
第五步 | 配置文件指明内核和驱动的位置,通过tftp服务器获取vmlinuz和initrd.img; |
最后 | 启动内核; |
boot.cat | 相当于grub的第一阶段 |
isolinux.bin | 光盘引导程序,在mkisofs的选项中需要明确给出文件路径,这个文件属于SYSLINUX项目 |
isolinux.cfg | 启动菜单的配置文件,当光盘启动后(即运行isolinux.bin),会自动去找isolinux.cfg文件(相当于boot里面的grub.cfg) |
vesamenu.c32 | 是光盘启动后的启动菜单图形界面,也属于SYSLINUX项目,menu.c32提供纯文本的菜单(指明背景图位置) |
memtest | 内存检测程序 |
splash.png | 光盘启动菜单界面的背景图(这是一张图片) |
vmlinuz | 是内核映像 |
initrd.img | ramfs文件(精简版的linux系统,文件系统驱动等) |
TFTP服务器的家目录/var/lib/tftpboot的四大文件一定是这样,标点符号都要一模一样:
在这里DHCP服务器是用来动态分配客户端ip地址以及指明TFTP服务器的ip地址和引导程序“pxelinux.0”的位置
DHCP服务端是udp的67端口,客户端是udp的68端口
这是网卡自带的功能,基于udp协议实现客户机和服务端之间进行简单的文件传输协议,适用于小型文件传输。TFTP服务默认由xinetd服务进行管理,使用UDP69端口。
这里的TFTP服务器是用来提供传输四大文件,一共52M
syslinux是一个功能强大的引导加载程序,而且兼容各种介质。它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。它的安装很简单,一旦安装syslinux好之后,sysLinux启动盘就可以引导各种基于DOS的工具,以及MS-DOS/Windows或者任何其它操作系统。
这里的syslinux提供pxelinux.0程序
TFTP用来传输小文件,这里的FTP用来传输大文件,提供镜像和安装包,以及存放传输ks.cfg文件,能够让系统自动化安装完以后重启并开机直接使用
通过图形化配置记录想要安装的方式,生成ks.cfg配置文件,放入在FTP服务器中(/var/ftp)
40 subnet 192.168.20.0 netmask 255.255.255.0 {
41 range 192.168.20.80 192.168.20.100;
42 option routers 192.168.20.2;
43 next-server 192.168.20.18;
44 filename "pxelinux.0";
45 }
[root@localhost isolinux]#cd /var/ftp/
[root@localhost ftp]#ls
ks.cfg pub
[root@localhost ftp]#mkdir centos7
[root@localhost ftp]#mount /dev/sr0 centos7/
[root@localhost boot]#rpm -qc tftp-server
/etc/xinetd.d/tftp
[root@localhost boot]#vim /etc/xinetd.d/tftp
14 disable = no ##改为no,改为不关闭
[root@localhost isolinux]#ll -h
总用量 53M
-r--r--r-- 1 root root 2.0K 9月 6 2017 boot.cat
-rw-r--r-- 1 root root 84 9月 5 2017 boot.msg
-rw-r--r-- 1 root root 281 9月 5 2017 grub.conf
-rw-r--r-- 1 root root 47M 9月 5 2017 initrd.img
-rw-r--r-- 1 root root 24K 9月 5 2017 isolinux.bin
-rw-r--r-- 1 root root 3.0K 9月 5 2017 isolinux.cfg
-rw-r--r-- 1 root root 187K 11月 6 2016 memtest
-rw-r--r-- 1 root root 186 10月 1 2015 splash.png
-r--r--r-- 1 root root 2.2K 9月 6 2017 TRANS.TBL
-rw-r--r-- 1 root root 150K 11月 6 2016 vesamenu.c32
-rwxr-xr-x 1 root root 5.7M 8月 23 2017 vmlinuz
[root@localhost isolinux]#cp initrd.img vmlinuz /var/lib/tftpboot/
[root@localhost centos7]#systemctl restart dhcpd
[root@localhost ftp]#systemctl restart tftp
[root@localhost ftp]#systemctl restart vsftpd
这一章有很多关于硬件的知识点,如果不理解就先放弃,明白pxe和kickstart的原理即可。
还有个优化方向:可以直接将DNS也一起放在DHCP的服务器上,让其自动获取