支持工作站通过网络从远端服务器下载镜像,并由此支持通过网络启动操作系统,在启动过程中,server分配IP地址,再使用TFTP协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成client 端自动化基础软件安装设置,从而引导预先安装在服务器中的终端操作系统
1. 客户端开机的时候从网络启动,通过PXE芯片从dhcp端获取到IP地址,获取到ip 后就可以跟PXE服务器通信
2. 然后,客户端从server端获取到next-server 的地址,也就是TFTP的地址,联系tftp服务器获取pxelinux.0文件,完成网卡激活和启动工作
3. 接下来,客户端再次联系TFTP服务器,获取操作系统的内核和初始化镜像文件
4. 最后,客户端重新从dhcp 服务器获取ip地址,这次获取的地址为自己装系统分配给eth0的ip, 通过文件共享服务器获取安装系统的软件。
syslinux
作用: 提供基于网络引导的适用于不同的操作系统的各种bootloader 文件, 支持DOSFATfilesystems、Linux ext2/ext3
filesystems(EXTLINUX)、 PXEnetwork boots(PXELINUX)、ISO 9660 CD-ROMs (ISOLINUX);文件名是 pxelinux.0
tftp-server服务
作用: XE 引导加载环境,用于提供引导加载文件pxelinux.0 的读取
安装软件
[[email protected] ~]# yum install -y dhcp tftp-server xinetd syslinux vsftpd
2. 配置vsftpd 服务
[[email protected] ~]# mkdir /var/ftp/centos7u4
[[email protected] ~]# mount -o loop -t iso9660 /iso_file/CentOS-7-x86_64-DVD-1804.iso /var/ftp/
[[email protected] ~]# systemctl start vsftpd
[[email protected] ~]# systemctl enable vsftpd
[[email protected] ~]# ss -anpt|grep :21
3、配置DHCP服务
[ [email protected] ~]# vim /etc/dhcp/dhcpd.conf
# DHCP Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd.conf.example # see dhcpd.conf(5) man page subnet 192.168.128.0 netmask 255.255.255.0{ range 192.168.128.121 192.168.128.130; #指定dhcp服务器地址池 next-server 192.168.128.100; #指向TFTP服务器地址 filename "pxelinux.0"; #指向PXE 的数据文件,文件存放到tftp跟目录下/var/lib/tftpboot }
systemctl start dhcpd
systemctl enable dhcpd
4. 配置tftp服务,提供引导菜单所需的文件
[[email protected] ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ [[email protected] ~]# cp /var/ftp/centos7u4/isolinux/* /var/lib/tftpboot/ [[email protected] ~]# ll !$ ll /var/lib/tftpboot/ total 58152 -r--r--r--. 1 root root 2048 Oct 13 17:11 boot.cat -rw-r--r--. 1 root root 84 Oct 13 17:11 boot.msg -rw-r--r--. 1 root root 281 Oct 13 17:11 grub.conf -rw-r--r--. 1 root root 52893200 Oct 13 17:11 initrd.img -rw-r--r--. 1 root root 24576 Oct 13 17:11 isolinux.bin -rw-r--r--. 1 root root 3032 Oct 13 17:11 isolinux.cfg -rw-r--r--. 1 root root 190896 Oct 13 17:11 memtest -rw-r--r--. 1 root root 26764 Oct 13 17:11 pxelinux.0 -rw-r--r--. 1 root root 186 Oct 13 17:11 splash.png -r--r--r--. 1 root root 2215 Oct 13 17:11 TRANS.TBL -rw-r--r--. 1 root root 152976 Oct 13 17:11 vesamenu.c32 -rwxr-xr-x. 1 root root 6224704 Oct 13 17:11 vmlinuz [[email protected] ~]# cd /var/lib/tftpboot/ [[email protected] tftpboot]# mkdir pxelinux.cfg [[email protected] tftpboot]# cp isolinux.cfg pxelinux.cfg/default #客户端加载pxelinux.0 文件之后,给客户端创建一个菜单文件 default(pxelinux.cfg), 安装时候显示安装菜单
[[email protected] ~]# vim /etc/xinetd.d/tftp #tftp 服务是基于xinetd实现的,需要开启xinetd服务
service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot disable = no #默认关闭,改成no开启 per_source = 11 cps = 100 2 flags = IPv4 }
[[email protected] tftpboot]# systemctl restart xinetd.service #重启 xinetd 服务
[[email protected] tftpboot]# systemctl restart xinetd.service
• Kickstart 安装选项:包含语言,防火墙,密码,网络,分区的设置等;
• %Pre 部分: 用的较少,安装前解析的脚本,通常用来生成特殊的ks配置,比如由一段程序决定磁盘分区等;
• %Package 部分: 安装包的选择,可以是 @base 这样的组的形式,也可以是这样 httpd 包的形式;
• %Post 部分: 安装后执行的脚本,通常用来做系统的初始化设置。如启动服务,配置yum源等。
1)因为本机系统为命令行模式,需要先安装CentOS 图像界面
yum groupinstall -y "X Window System"
yum groupinstall -y "GNOME Desktop"
安装完图形界面,需要重启系统,然后启动 startx ,进入图像界面
2) 安装 kickstart软件
[[email protected] ~]# yum install -y system-config-kickstart #安装kickstart软件
[[email protected] ~]# system-config-kickstart #启动 kicksart 图像界面,开始配置
3)配置kick-start
[[email protected] ~]#system-config-kickstart #进入Kickstart图形配置界面
(1)基本配置——语言用English,键盘用默认,时区用上海,根口令redhat,勾选安装后重新引导系统,其他不做改变
(2) 安装方法——执行新安装—选择FTP——输入FTP服务器:192.168.128.100和FTP目录:/centos7u4 (基于数据目录)
(3)引导装载程序选项——选择安装新引导装在程序
(4) 分区信息——清除主引导记录——删除所有现存分区——初始化磁盘标签——布局中添加,boot,交换,还有 / 分区
(5) 网络配置——添加网络设备——网络设备:eth0,网络类型:dhcp——确定
注意: centos6 里面网络设备为 eth0 ,centos7 网卡设备名会更加实际情况定,忽略不用管,同样配置为eth0
(6)认证,默认不用配置
(7)防火墙 && selinux 都关闭
(8) 显示配置——安装图形环境,指的是装系统的过程是以图形的方式显示,不是装桌面环境
注意:这里不是指安装图像模式安装
(9) 软件包管理——在centos7中有问题,显示不出来,需要后面自己配置响应的配置文件
(10) 预安装脚本——客户端在装系统之后的操作,现在不需要,根据实际情况需求来配置
(11) 安装后脚本——勾选使用解释器,输入/bin/bash——在下面键入自定义的%post脚本:可以使用下面的脚本
将ssh连接的时候默认的dns解析去掉,加快ssh 连接速度
sed -ri '/^GSSAPIAuth/s/yes/no/' /etc/ssh/sshd_config
sed -ri '/^#UseDNS/c \UseDNS no' /et/ssh/sshd_config
systemctl restart sshd
systemctl stop firewalld;systemctl disable firewalld
sed -ri '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config
setenforce 0
mkdir /etc/yum.repos.d/backup
mv /etc/yum.repos.d/* /etc/yum.repos.d/backup
cat <<EOF >/etc/yum.repos.d/Centos7u4.repo
[centos7u4]
name=centos7u4
baseurl=centos7u4
gpgcheck=0
EOF
:x
(12)保存配置
文件——保存——centos7.cfg——选择一个存放位置
(13) 修改centos7.cfg文件,添加软件包安装项,找一个合适的位置写就可以,可以写在分区之后
# SoftWare Installion
%packages #安装软件包
lftp
wget
net-tools
bash-completion
psmisc
elinks
lsof
netdate
vim*
tree
ntfs-3g
expect
@core #安装核心工具包组
@base
%end
完整的centos7u4.cfg 配置文件:
[[email protected] ~]# cat centos7u4.cfg
#platform=x86, AMD64, or Intel EM64T #version=DEVEL # Install OS instead of upgrade install # Keyboard layouts keyboard 'us' # Root password rootpw --iscrypted $1$ULhCbmAH$DjLBGEvxIUSq5mEBCxEyq1 # Use network installation url --url="ftp://192.168.128.100/centos7u4" # System language lang en_US # System authorization information auth --useshadow --passalgo=sha512 # Use graphical install graphical firstboot --disable # SELinux configuration selinux --disabled # Firewall configuration firewall --disabled # Network information network --bootproto=dhcp --device=eth0 # Reboot after installation reboot # System timezone timezone Asia/Shanghai # System bootloader configuration bootloader --location=mbr # Clear the Master Boot Record zerombr # Partition clearing information clearpart --all --initlabel # Disk partitioning information part /boot --asprimary --fstype="xfs" --size=500 part swap --fstype="swap" --size=2000 part / --asprimary --fstype="xfs" --grow --size=1 # SoftWare Installion %packages lftp wget net-tools bash-completion psmisc elinks netdate vim* tree expect @core %end %post --interpreter=/bin/bash sed -ri '/^GSSAPIAuth/s/yes/no/' /etc/ssh/sshd_config sed -ri '/^#UseDNS/c \UseDNS no' /et/ssh/sshd_config systemctl restart sshd systemctl stop firewalld;systemctl disable firewalld sed -ri '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config setenforce 0 mkdir /etc/yum.repos.d/backup mv /etc/yum.repos.d/* /etc/yum.repos.d/backup cat <<EOF >/etc/yum.repos.d/Centos7u4.repo [centos7u4] name=centos7u4 baseurl=ftp://192.168.128.100/centos7u4 gpgcheck=0 EOF %end
(14)检查是否有语法错误
[[email protected] ~]# yum install pykickstart
ksvalidator ~/anaconda-ks.cfg
(15) 修改文件权限,然后拷贝到 /var/ftp
[[email protected] ~]# cp centos7u4.cfg /var/ftp/
[[email protected] ~]# chmod 755 /var/ftp/centos7u4.cfg
(16) 修改启动菜单文件
[[email protected] ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
append initrd=initrd.img inst.stage2=ftp://192.168.128.100/centos7u4 inst.repo=ftp://192.168.128.100/centos7u4 inst.ks=ftp://192.168.128.100/centos7u4.cfg
(17) 重启服务
systemctl restart ftpd
客户端网络启动,进入安装界面,页面比较简陋,后期再继续优化~~~