KICKSTART无人值守安装系统(上)

PXE
Pre-boot Execution Environment,预启动执行环境;通过网络接口启动计算机,不依赖本地存储设备(如硬盘)或本地已安装的操作系统;
Client/Server的工作模式;
PXE客户端会调用网际协议(IP)、用户数据报协议(UDP)、动态主机设定协议(DHCP)、小型文件传输协议(TFTP)等网络协议;
PXE客户端(client)这个术语是指机器在PXE启动过程中的角色。一个PXE客户端可以是一台服务器、笔记本电脑或者其他装有PXE启动代码的机器(我们电脑的网卡)。
PXE的工作过程:
PXE Client向DHCP发送请求 PXE Client从自己的PXE网卡启动,通过PXE BootROM(自启动芯片)会以UDP(简单用户数据报协议)发送一个广播请求,向本网络中的DHCP服务器索取IP。
DHCP服务器提供信息 DHCP服务器收到客户端的请求,验证是否来至合法的PXE Client的请求,验证通过它将给客户端一个“提供”响应,这个“提供”响应中包含了为客户端分配的IP地址、pxelinux启动程序(TFTP)位置,以及配置文件所在位置。
PXE客户端请求下载启动文件 客户端收到服务器的“回应”后,会回应一个帧,以请求传送启动所需文件。这些启动文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。
Boot Server响应客户端请求并传送文件 当服务器收到客户端的请求后,他们之间之后将有更多的信息在客户端与服务器之间作应答, 用以决定启动参数。BootROM由TFTP通讯协议从Boot Server下载启动安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default)。default文件下载完成后,会根据该文件中定义的引导顺序,启动Linux安装程序的引导内核。
请求下载自动应答文件 客户端通过pxelinux.cfg/default文件成功的引导Linux安装内核后,安装程序首先必须确定你通过什么安装介质来安装linux,如果是通过网络安装(NFS, FTP, HTTP),则会在这个时候初始化网络,并定位安装源位置。接着会读取default文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。
这里有个问题,在第2步和第5步初始化2次网络了,这是由于PXE获取的是安装用的内核以及安装程序等,而安装程序要获取的是安装系统所需的二进制包以及配置文件。因此PXE模块和安装程序是相对独立的,PXE的网络配置并不能传递给安装程序,从而进行两次获取IP地址过程,但IP地址在DHCP的租期内是一样的。
客户端安装操作系统 将ks.cfg文件下载回来后,通过该文件找到OS Server,并按照该文件的配置请求下载安装过程需要的软件包。 OS Server和客户端建立连接后,将开始传输软件包,客户端将开始安装操作系统。安装完成后,将提示重新引导计算机。
ftp和tftp区别
TFTP(Trivial File Protocol , 简单文件传输协议),是一个基于UDP协议实现的客户机和服务器之间进行简单的文件传输协议,适合开销不大、复杂的场合。
在嵌入式开发中,因为Uboot支持tftp服务,可以从服务器上加载内核并运行。
tftp服务依赖xinetd服务,需要安装xinetd,安装tftp-server和安装tftp客户端,
FTP 是完整、 面向会话、 常规用途文件传输协议。 TFTP 用作 bones bare - 特殊目的文件传输协议。
交互使用 FTP。 TFTP 允许仅单向传输的文件。
FTP 依赖于 TCP, 是面向, 连接并提供可靠的控件。 TFTP 依赖 UDP, 需要减少开销, 并提供几乎没有控件。
FTP 提供身份验证。 TFTP 不提供。
FTP 使用已知 TCP 端口号: 20 的数据和 21 用于连接对话框。 TFTP 用于 UDP 端口号 69 其文件传输活动。
理解syslinux
Syslinux是一个Project,包含以下bootloader:
SYSLINUX, for MS-DOS FAT filesystems
PXELINUX, for network booting
ISOLINUX, for bootable “El Torito” CD-ROMs
EXTLINUX, for Linux ext2/ext3/ext4 or btrfs filesystems
MEMDISK, for legacy operating systems (such as DOS) from nontraditional media
网络启动使用的自然是PXELINUX了,而我们下载的release安装包是整个Syslinux Project,所以网络装机需要用到的pxelinux.0是yum install syslinux获得的。
还有个很眼熟的ISOLINUX,这个在系统安装光盘里可以找到,而网络装机所需要的pxelinux.cfg/default就是拷贝isolinux.cfg直接生成的。之所以可以这么任性地改个名字就用,是因为对于所有的Syslinux bootloader,其基本配置是相同的(这个可以在Syslinux wiki里看到介绍,配置可以参考“SYSLINUX中文介绍”)。
批量装机软件介绍
Redhat系主要有两种Kickstart和Cobbler。
Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在自动安装过程中出现要填写参数的情况,安装程序首先会去查找ks.cfg文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便会弹出对话框让安装者手工填写。所以,如果ks.cfg文件涵盖了安装过程中所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处下载ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启/关闭系统,并结束安装。
Cobbler集中和简化了通过网络安装操作系统需要使用到的DHCP、TFTP和DNS服务的配置。Cobbler不仅有一个命令行界面,还提供了一个Web界面,大大降低了使用者的入门水平。Cobbler内置了一个轻量级配置管理系统,但它也支持和其它配置管理系统集成,如Puppet,暂时不支持SaltStack。
简单的说,Cobbler是对kickstart的封装,简化安装步骤、使用流程,降低使用者的门槛。
系统环境准备
虚拟机网卡采用NAT模式,不要使用桥接模式,因为稍后我们会搭建DHCP服务器,在同一局域网多个DHCP服务会有冲突。 VMware的NAT模式的dhcp服务也关闭,避免干扰。
LAN区段相当于说模拟出一个交换机或者集线器出来,把不同虚拟机连接起来,与物理机不进行数据交流,与外网也不进行数据交流,构建一个独立的网络。没有DHCP功能,需要手工配置IP或者单独配置DHCP服务器。 用户设定一个网络区段,虚拟服务器只能在该网络区段中进行数据通信。
NAT模式主要通过VMware net8进行数据转发和多个虚拟主机之间的通信。此时的VMWare net8 相当于一个虚拟的路由器,该路由器的数据包通过主机的物理网卡向外转发,且该虚拟路由器内含DHCP服务器,虚拟服务器可以通过DHCP方式自动获取IP地址。虚拟服务器和主机不在同一个网段。
NAT模式的虚拟机是不能被LAN内其他PC访问的,是拒绝其他的计算机访问的,只能虚拟机访问LAN内的其他计算机。
(配置vlan 与本文无关
https://wiki.archlinux.org/index.php/VLAN_(简体中文)
ip link set dev ens33 up
ip link add link ens37 name vlan type vlan id 100
ip addr add 10.100.10.1/24 brd 10.100.10.255 dev vlan
ip link set dev vlan up
systemctl restart network)

ip link set dev ens37 up
ip addr add 10.100.10.1/24 dev ens37
systemctl restart network
安装DHCP
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、网关地址、DNS服务器地址等信息,并能够提升地址的使用率。
DHCP服务安装配置:
yum -y install dhcp
rpm -ql dhcp |grep “dhcpd.conf”

vim /etc/dhcp/dhcpd.conf
subnet 10.100.10.0 netmask 255.255.255.0 {
range 10.100.10.10 10.100.10.254; # 可分配的起始IP-结束IP
option subnet-mask 255.255.255.0; # 设定netmask
default-lease-time 21600; # 设置默认的IP租用期限
max-lease-time 43200; # 设置最大的IP租用期限
next-server 10.100.10.1; # 告知客户端TFTP服务器的ip
filename “/pxelinux.0”; # 告知客户端从TFTP根目录下载pxelinux.0文件
#option domain-name-servers www.baidu.com;
#option domain-name “10.100.10.1”;
#option routers 10.100.10.1;
#option broadcast-address 10.100.10.255;
}
grep -vE “$|#” /etc/dhcp/dhcpd.conf

systemctl restart dhcpd
ss -aunlp |grep 67
UNCONN 0 0 *:67 : users:((“dhcpd”,pid=6106,fd=7))

本来软件装完后都要加入开机自启动,但这个Kickstart系统就不能开机自启动,而且用完后服务都要关闭,防止未来重启服务器自动重装系统了。
如果机器数量过多的话,注意dhcp服务器的地址池,不要因为耗尽IP而导致dhcpd服务器没有IP地址release的情况。

DHCP指定监听网卡,多网卡默认监听eth0,指定DHCP监听eth1网卡

cp /usr/lib/systemd/system/dhcpd.service /etc/systemd/system/
vi /etc/systemd/system/dhcpd.service
ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid ens37
systemctl --system daemon-reload
systemctl restart dhcpd.service
安装TFTP服务
yum -y install xinetd tftp-server
安装tftp-server需要依赖于xinetd,tftp服务依赖于网络守护进程服务程序xinetd
vim /etc/xinetd.d/tftp
disable = no #由原来的yes改为no
systemctl restart xinetd
systemctl restart tftp.socket
systemctl restart tftp.service

ss -atunlp |grep 69
udp UNCONN 0 0 :69 : users:((“in.tftpd”,pid=1942,fd=0),(“xinetd”,pid=1811,fd=5))
udp UNCONN 0 0 :::69 :::
users:((“in.tftpd”,pid=1825,fd=0),(“systemd”,pid=1,fd=68))
tftp的默认根目录为/var/lib/tftpboot,安装时会自动创建。
Windows客户端获取文件格式:TFTP [-i] host [GET | PUT] source [destination]
tftp ip地址
tftp>get 文件名
tftp>put 文件名 
tftp>quit
配置HTTP服务
yum -y install httpd
cd /etc/httpd/conf.d/
mv welcome.conf welcome.confbak
mkdir /var/www/html/centos-7
mount /dev/cdrom /var/www/html/centos-7/
(只要把安装光盘内容能通过web发布即可。文件挂载:
mount -t iso9660 -o loop CentOS-7-x86_64-Minimal-1804.iso /var/www/html/centos-7/)
浏览器访问http://10.100.10.1/centos-7/检验配置是否正确。
配置支持PXE的启动程序
syslinux是一个功能强大的引导加载程序,而且兼容各种介质。SYSLINUX是一个小型的Linux操作系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。如果没有找到pxelinux.0这个文件,可以安装一下。
yum -y install syslinux
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ # 复制启动菜单程序文件
cp -a /var/www/html/centos-7/isolinux/* /var/lib/tftpboot/
ls /var/lib/tftpboot/
mkdir -p /var/lib/tftpboot/pxelinux.cfg #新建一个pxelinux.cfg目录,存放客户端的配置文件。
cp /var/www/html/centos-7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

配合虚拟机演示讲解default文件:
在安装系统之前,计算机的硬件上可能是没有操作系统的,因此为了能够运行安装程序,需要一个临时的操作系统,引导开机,启动安装程序,在使用光盘安装操作 Linux 系统(这里特指 RHEL 系列的系统)时,一共有两个阶段,分别为引导和安装。
使用光盘引导时,系统启动过程为 POST(加电自检) —> BIOS 进行硬件检测并载入光盘的 MBR —> 光盘的引导程序为 isolinux.bin,它根据 isolinux.cfg 生成一个菜单。当用户选择安装操作系统后,引导程序加载内核(vmlinuz)和 initrd.img 文件,initrd.img 会在内存中生成一个临时的操作系统,为安装过程提供一个安装环境。当系统切换至 initrd 文件系统后,initrd.img 中的 init 进程调用 /sbin/loader 程序,loader 探测安装介质,加载光盘 /images/stage2.img (在 RHEL6 中叫 install.img ),切换到 stage2,stage2.img 的文件系统类型是 suqashfs,安装系统的程序 anaconda 就包含其中。
stage2.img 是 SquashFS 类型文件系统,其中包含了安装程序 anaconda 和它的配置文件。anaconda 提供了安装过程的配置界面,它可以提供文本、图形等安装管理方式,并支持 kickstart 等脚本提供自动安装的功能。在安装系统之后会自动生成 /root/anaconda-ks.cfg 的配置信息,其中记录了安装系统所选取选项自动生成的,方便以后自动安装。
输入ESC可以进入命令行界面。

猜你喜欢

转载自blog.csdn.net/qq_41906344/article/details/82939511