标签:tftp服务器 nsf ash ati info redhat 应该 解析 自动
------------恢复内容开始------------
通过网络安装系统 ----pxe
kickstart,cobbler
预启动执行环境
通过网络接口启动计算机,不依赖于本地存储设备,硬盘
c/s
ip,udp,dhcp,tftp
pxelinux.0文件
ks.cfg
reboot
cobbler-web
cobbler命令
准备好一台用于部署kickstart服务端的机器
注意:虚拟机网卡连接方式,采用NAT模式,不要用桥接,且关闭VM网卡中的DHCP服务
环境准备如下
1.配置yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache
2.安装基础软件,如果是最小化安装的话
yum install -y bash-completion vim lrzsz wget expect net-tools nc nmap tree dos2unix htop iftop iotop unzip telnet sl psmisc nethogs glances bc ntpdate
3.关闭防火墙
[root@kickstart ~]# iptables -F
[root@kickstart yum.repos.d]# systemctl stop firewalld
[root@kickstart yum.repos.d]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@client01 ~]# sed -i ‘s/enforcing/disabled/g‘ /etc/selinux/config
[root@kickstart ~]# getenforce
Disabled
4.关闭vmware的dhcp服务,设置linux静态ip
[root@kickstart ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="b4c06569-fc94-4e94-9c63-0391c7a35432"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=172.18.41.133
NETMASK=255.255.255.0
DNS1=1.2.4.8
GATEWAY=172.18.41.2
5.系统检查
[root@kickstart ~]# uname -a
Linux kickstart 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@kickstart ~]# uname -r
3.10.0-862.el7.x86_64
[root@kickstart ~]# ifconfig ens33 |awk ‘NR==2 {print $2}‘
172.18.41.133
[root@kickstart ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
6.时间同步更新
[root@kickstart ~]# ntpdate -u ntp.aliyun.com
修改时区
[root@kickstart ~]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[root@kickstart ~]# date
Tue Jul 21 19:05:06 CST 2020
1.手动输入静态ip(static address)
2.优选,dhcp方式,客户端向服务端租用ip为动态ip地址dynamic,ip,address
RARP逆向地址解析协议,提供Mac地址找到ip
租约的过程 tail /var/log/message 能够看到dhcp通信过程
? 1.客户端请求ip(客户端向服务端发送 DHCPISCOVER广播包)
? 2.DHCP服务端给与响应(服务器发送DHCPOFFER广播包)
? 3.客户端此时选择ip地址(客户端再次向服务端发送DHCPREQUEST广播包)
? 4.服务端确定租约(服务端再次发送DHCPACK/DHCPNAK广播包)
DHCP协议中的报文
DHCP报文共有一下几种:
DHCP DISCOVER :客户端开始DHCP过程发送的包,是DHCP协议的开始
DHCP OFFER :服务器接收到DHCP DISCOVER之后做出的响应,它包括了给予客户端的IP(yiaddr)、客户端的MAC地址、租约过期时间、服务器的识别符以及其他信息
DHCP REQUEST :客户端对于服务器发出的DHCP OFFER所做出的响应。在续约租期的时候同样会使用。
DHCP ACK :服务器在接收到客户端发来的DHCP REQUEST之后发出的成功确认的报文。在建立连接的时候,客户端在接收到这个报文之后才会确认分配给它的IP和其他信息可以被允许使用。
DHCP NAK :DHCP ACK的相反的报文,表示服务器拒绝了客户端的请求。
DHCP RELEASE :一般出现在客户端关机、下线等状况。这个报文将会使DHCP服务器释放发出此报文的客户端的IP地址
DHCP INFORM :客户端发出的向服务器请求一些信息的报文
DHCP DECLINE :当客户端发现服务器分配的IP地址无法使用(如IP地址冲突时),将发出此报文,通知服务器禁止使用该IP地址。
作用域是指DHCP服务器可分配租用给DHCP客户机的IP地址范围。DHCP服务器应该至少配置一个作用域,各作用域的IP地址范围(IP地址池)不能出现重叠。
保留IP用于有特定服务的客户机,需要将保留的IP与客户机的MAC地址绑定。
当客户机重新启动或租期达50%时,就需要重新更新租约,客户机直接向提供租约的服务器发送请求DHCPREQUEST消息,要求更新现有的地址租约。如果DHCP服务器接收到请求,它将发送DHCP确认信息给客户机,更新客户机租约。如果客户机无法与提供租约的服务器取得联系,则客户机一直等到租期到达87.5%时,进入到一种重新申请的状态,它向网络上所有的服务器广播DHCPDISCOVER请求更新现有的IP租约。
使用ipconfig/release使DHCP客户机向DHCP服务器发送DHCPRELEASE消息并释放其租约。
如果客户机在租约时间内保持关闭并且不更新租约,在租约到期后DHCP服务器可能将客户机的IP地址分配给其他的客户机。如果客户机不发送DHCPRELEASE消息,那么它在重启后,将试图尝试继续使用上一次使用过的IP地址。
# 机器1 dhcp服务端
[root@kickstart ~]# ifconfig ens33 |awk ‘NR==2 {print $2}‘
172.168.1.13
[root@kickstart ~]# hostname
kickstart
[root@kickstart ~]# yum install dhcp -y
# 查询软件包信息
[root@kickstart ~]# rpm -qa dhcp
dhcp-4.2.5-79.el7.centos.x86_64
设置dhcpd.conf配置文件
[root@kickstart ~]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
subnet 172.168.1.0 netmask 255.255.255.0 {
range 172.168.1.100 172.168.1.199; # range设置起始,结束ip范围
option subnet-mask 255.255.255.0; # 选项,设置掩码
option routers 172.168.1.2; # dhcp服务的网关设置,这里不写,客户端则无法上网
option domain-name-servers 223.5.5.5; # 保证dhcp客户端可以域名解析
default-lease-time 21600; # 默认的IP租用期限
max-lease-time 43200; # 最大的IP租用期限
next-server 172.168.1.13; # 告知客户端tftp服务器的ip
filename "/pxelinux.0"; # 指明引导文件,用于指定PXE的运行程序文件,放在TFTP服务器的目录下
}
配置文件解释
filename:指明引导文件名称,用于指定PXE的运行程序文件,一般是在TFTP服务器的工作目录下,这个是关于PXE启动的配置。流程如下:
客户机通过网络启动,一般采用的就是intel的PXE来启动;
PXE首先指定DHCP,获取自身IP地址、TFTP服务器或者NFS服务器的IP地址、PXE程序等内容;
执行获取的PXE程序,获得详细配置内容,再获取linux虚拟系统和intrid等内容;
最后加载整个linux系统到内核。
next-server server-name(一般是IP):客户端启动后,获得了IP地址,会加载引导文件,这里就定义提供引导文件的服务器IP地址
启动dhcp服务,检查日志,状态
[root@kickstart ~]# systemctl start dhcpd
[root@kickstart ~]# systemctl is-enabled dhcpd
disabled
[root@kickstart ~]# systemctl is-active dhcpd
active
# 部分日志如下
[root@kickstart ~]# tail -f /var/log/messages
Jul 21 06:23:06 kickstart systemd: Starting DHCPv4 Server Daemon...
Jul 21 06:23:06 kickstart dhcpd: Internet Systems Consortium DHCP Server 4.2.5
Jul 21 06:23:06 kickstart dhcpd: Copyright 2004-2013 Internet Systems Consortium.
Jul 21 06:23:06 kickstart dhcpd: All rights reserved.
Jul 21 06:23:06 kickstart dhcpd: For info, please visit https://www.isc.org/software/dhcp/
Jul 21 06:23:06 kickstart dhcpd: Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in the config file
Jul 21 06:23:06 kickstart dhcpd: Wrote 0 leases to leases file.
Jul 21 06:23:06 kickstart dhcpd: Listening on LPF/ens33/00:0c:29:e9:ed:77/172.18.41.0/24
Jul 21 06:23:06 kickstart dhcpd: Sending on LPF/ens33/00:0c:29:e9:ed:77/172.18.41.0/24
Jul 21 06:23:06 kickstart dhcpd: Sending on Socket/fallback/fallback-net
Jul 21 06:23:06 kickstart systemd: Started DHCPv4 Server Daemon.
检查服务状态
[root@kickstart ~]# systemctl status dhcpd
● dhcpd.service - DHCPv4 Server Daemon
Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2020-07-21 06:23:06 EDT; 5min ago
Docs: man:dhcpd(8)
man:dhcpd.conf(5)
Main PID: 10396 (dhcpd)
Status: "Dispatching packets..."
CGroup: /system.slice/dhcpd.service
└─10396 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid
Jul 21 06:23:06 kickstart dhcpd[10396]: Internet Systems Consortium DHCP Server 4.2.5
Jul 21 06:23:06 kickstart dhcpd[10396]: Copyright 2004-2013 Internet Systems Consortium.
Jul 21 06:23:06 kickstart dhcpd[10396]: All rights reserved.
Jul 21 06:23:06 kickstart dhcpd[10396]: For info, please visit https://www.isc.org/software/dhcp/
Jul 21 06:23:06 kickstart dhcpd[10396]: Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified ...ig file
Jul 21 06:23:06 kickstart dhcpd[10396]: Wrote 0 leases to leases file.
Jul 21 06:23:06 kickstart dhcpd[10396]: Listening on LPF/ens33/00:0c:29:e9:ed:77/172.18.41.0/24
Jul 21 06:23:06 kickstart dhcpd[10396]: Sending on LPF/ens33/00:0c:29:e9:ed:77/172.18.41.0/24
Jul 21 06:23:06 kickstart dhcpd[10396]: Sending on Socket/fallback/fallback-net
Jul 21 06:23:06 kickstart systemd[1]: Started DHCPv4 Server Daemon.
Hint: Some lines were ellipsized, use -l to show in full.
查看dhcp端口监听udp
[root@kickstart ~]# ss -unlp
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 127.0.0.1:323 *:* users:(("chronyd",pid=652,fd=1))
UNCONN 0 0 *:67 *:* users:(("dhcpd",pid=10396,fd=7))
UNCONN 0 0 ::1:323 :::* users:(("chronyd",pid=652,fd=2))
设置dhcp服务开机自启
[root@kickstart ~]# systemctl enable dhcpd
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.
[root@kickstart ~]# systemctl is-enabled dhcpd
disabled
[root@kickstart ~]# systemctl is-active dhcpd
active
这里注意,虚拟机的内存至少分配2G,PXE工作原理
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69。
inux服务器端tftp-server的配置
tftp服务器需要安装xinetd(守护tftp)、tftp和tftp-server 3个软件
[root@kickstart ~]# yum install tftp-server tftp xinetd -y
修改xinetd配置文件,管理tftp
[root@kickstart ~]# cat /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer # protocol. The tftp protocol is often used to boot diskless # workstations, download configuration files to network-aware printers, # and to start the installation process for some operating systems.
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
通过xinetd启动tftp服务即可
[root@kickstart ~]# systemctl start xinetd
[root@kickstart ~]# netstat -a | grep tftp
udp 0 0 0.0.0.0:tftp 0.0.0.0:*
[root@kickstart ~]# lsof -i:69
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
xinetd 15519 root 5u IPv4 67791 0t0 UDP *:tftp
连接tftp
[root@kickstart ~]# tftp 172.18.41.133
默认tftp工具的目录,可以创建测试文件
[root@kickstart ~]# cd /var/lib/tftpboot/
[root@kickstart tftpboot]# ls
[root@kickstart tftpboot]# touch test.cc
[root@kickstart tftpboot]# ls
test.cc
进入任意目录,测试下载tftp目录内容
[root@kickstart tftpboot]# cd /tmp/
[root@kickstart tmp]# tftp 172.168.1.13
tftp> ?
tftp-hpa 5.2
Commands may be abbreviated. Commands are:
connect connect to remote tftp
mode set file transfer mode
put send file
get receive file
quit exit tftp
verbose toggle verbose mode
trace toggle packet tracing
literal toggle literal mode, ignore ‘:‘ in file name
status show current status
binary set mode to octet
ascii set mode to netascii
rexmt set per-packet transmission timeout
timeout set total retransmission timeout
? print help information
help print help information
tftp> get test.cc
tftp> quit
[root@kickstart tmp]# ls
test.cc
清空测试数据
[root@kickstart tmp]# rm -rf /var/lib/tftpboot/test.cc
既然是自动化装机系统,我们要想办法吧IOS系统镜像光盘的内容,发布出去,提供下载等,生产环境需要进行镜像复制,学习阶段为了节省时间,用HTTPD展示就好,是发布镜像源的一个步骤。
# 安装
[root@kickstart syslinux]# yum install httpd -y
# 插入一行配置
[root@kickstart syslinux]# sed -i "277i ServerName 127.0.0.1:80" /etc/httpd/conf/httpd.conf
# 启动
[root@kickstart syslinux]# systemctl start httpd
# 建立站点目录
mkdir /var/www/html/CentOS-7/
# 通过vmware挂上centos7镜像文件,该步骤重要,如下的图片
# 挂载目录
[root@kickstart syslinux]# mount /dev/cdrom /var/www/html/CentOS-7/
mount: /dev/sr0 is write-protected, mounting read-only
# 查看挂载情况
[root@kickstart syslinux]# df -h |grep www
/dev/sr0 4.2G 4.2G 0 100% /var/www/html/CentOS-7
# 访问站点,访问IOS镜像的内容,注意大小写,内容如下图
http://172.168.1.13/CentOS-7/
syslinux是一个功能强大的引导加载程序,而且兼容各种介质。SYSLINUX是一个小型的Linux操作系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。
如果没有找到pxelinux.0这个文件,可以安装一下。
[root@kickstart syslinux]# yum install syslinux -y
拷贝pxelinux.0该文件,放入tfpt目录,便于提供给客户端下载
# 把pxelinux.0文件 发给tftp目录,用于发给客户端
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
# 拷贝启动菜单程序文件
[root@kickstart syslinux]# cp -a /var/www/html/CentOS-7/isolinux/* /var/lib/tftpboot/
# 拷贝自动重启文件
[root@kickstart ~]# cp /usr/share/syslinux/reboot.c32 /var/lib/tftpboot/
# 检查tftp目录下的启动菜单文件
[root@kickstart syslinux]# tree -F /var/lib/tftpboot/
/var/lib/tftpboot/
├── boot.cat
├── boot.msg
├── grub.conf
├── initrd.img # 驱动文件
├── isolinux.bin
├── isolinux.cfg
├── memtest
├── pxelinux.0 # 启动代码
├── pxelinux.cfg/
│ └── default # 配置文件
├── reboot.c32 # 重启系统
├── splash.png
├── TRANS.TBL
├── vesamenu.c32 # 界面框架
└── vmlinuz* # 内核文件
# 新建一个pxelinux.cfg目录,用于存放客户端的配置文件
[root@kickstart syslinux]# mkdir -p /var/lib/tftpboot/pxelinux.cfg
# 拷贝PXE配置文件,且改名
[root@kickstart syslinux]# cp /var/www/html/CentOS-7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
# 提升tftp目录权限
[root@kickstart tftpboot]# chmod 777 -R /var/lib/tftpboot/
配置文件了解
这些文件内的参数,就是你开机安装系统看见的画面
[root@kickstart tftpboot]# cat /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32 # 默认加载一个菜单
#prompt 1 # 开启会显示命令行‘boot: ‘提示符。prompt值为0时则不提示,将会直接启动‘default‘参数中指定的内容。
timeout 600 # timeout时间是引导时等待用户手动选择的时间,设为1可直接引导,单位为1/10秒。
display boot.msg
# 菜单背景图片、标题、颜色。
menu background splash.jpg
menu title Welcome to CentOS 6.7!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000
# label指定在boot:提示符下输入的关键字,比如boot:linux[ENTER],这个会启动label linux下标记的kernel和initrd.img文件。
label linux # 一个标签就是前面图片的一行选项。
menu label ^Install or upgrade an existing system
menu default
kernel vmlinuz # 指定要启动的内核。同样要注意路径,默认是/tftpboot目录。
append initrd=initrd.img # 指定追加给内核的参数,initrd.img是一个最小的linux系统
label vesa
menu label Install system with ^basic video driver
kernel vmlinuz
append initrd=initrd.img nomodeset
label rescue
menu label ^Rescue installed system
kernel vmlinuz
append initrd=initrd.img rescue
label local
menu label Boot from ^local drive
localboot 0xffff
label memtest86
menu label ^Memory test
kernel memtest
append -
修改cfg文件,修改如下配置
1.修改第一行,让centos直接默认安装linux,不去手动再选择
default linux
2.制定apache的系统iso下载地址
61 label linux
62 menu label ^Install CentOS 7
63 kernel vmlinuz
64 # append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet
65 append initrd=initrd.img inst.repo=http://172.168.1.13/CentOS-7/ net.ifnames=0 biosdevname=0
再准备好一个linux虚拟机客户端,客户端注意网络连接选择,选择适配器,不要开启dhcp功能
且不要选择默认的NAT网卡,因为已经关闭了DHCP服务,你也无法获取IP地址,选择我们自己创建的DHCP服务器
严格检查,你的配置,是否和我一样
创建lan区段和dhcp服务端同一个局域网
# 检查系统日志,有关信息
[root@kickstart ~]# tail -f /var/log/messages
Jul 27 12:28:17 kickstart dhcpd: DHCPDISCOVER from 00:0c:29:a5:a7:e7 via ens33
Jul 27 12:28:17 kickstart dhcpd: DHCPOFFER on 172.168.1.101 to 00:0c:29:a5:a7:e7 via ens33
Jul 27 12:28:17 kickstart dhcpd: DHCPREQUEST for 172.168.1.101 (172.168.1.13) from 00:0c:29:a5:a7:e7 via ens33
Jul 27 12:28:17 kickstart dhcpd: DHCPACK on 172.18.41.101 to 00:0c:29:a5:a7:e7 via ens33
Jul 27 12:34:33 kickstart dhcpd: DHCPDISCOVER from 00:0c:29:a5:a7:e7 via ens33
Jul 27 12:34:34 kickstart dhcpd: DHCPOFFER on 172.168.1.101 to 00:0c:29:a5:a7:e7 via ens33
Jul 27 12:34:35 kickstart dhcpd: DHCPREQUEST for 172.168.1.101 (172.168.1.13) from 00:0c:29:a5:a7:e7 via ens33
Jul 27 12:34:35 kickstart dhcpd: DHCPACK on 172.168.1.101 to 00:0c:29:a5:a7:e7 via ens33
Jul 27 12:34:35 kickstart in.tftpd[14636]: Error code 0: TFTP Aborted
Jul 27 12:34:35 kickstart in.tftpd[14637]: Client ::ffff:172.168.1.101 finished /pxelinux.0
Jul 27 12:34:35 kickstart in.tftpd[14648]: Client ::ffff:172.168.1.101 finished /pxelinux.cfg/default
Jul 27 12:34:35 kickstart in.tftpd[14649]: Client ::ffff:172.168.1.101 finished /boot.msg
Jul 27 12:34:37 kickstart in.tftpd[14651]: Client ::ffff:172.168.1.101 finished /vmlinuz
Jul 27 12:34:53 kickstart in.tftpd[14652]: Client ::ffff:172.168.1.101 finished /initrd.img
Jul 27 12:35:04 kickstart dhcpd: DHCPDISCOVER from 00:0c:29:a5:a7:e7 via ens33
Jul 27 12:35:04 kickstart dhcpd: DHCPOFFER on 172.168.1.101 to 00:0c:29:a5:a7:e7 via ens33
Jul 27 12:35:04 kickstart dhcpd: DHCPREQUEST for 172.168.1.101 (172.18.41.133) from 00:0c:29:a5:a7:e7 via ens33
Jul 27 12:35:04 kickstart dhcpd: DHCPACK on 172.168.1.101 to 00:0c:29:a5:a7:e7 via ens33
# 该文件存着客户端的动态分配信息,可以对比一下mac地址,也可以针对该mac地址,在dhcpd.conf中设置固定ip
[root@kickstart ~]# cat /var/lib/dhcpd/dhcpd.leases
我们没有借助本地磁盘工具,通过网络,获取镜像源,直到系统开始安装界面
客户端机器通过网络,分配了dhcp地址
安装介质,是我们制定的apache站点目录,获取ISO镜像文件
手动通过pxe远程安装,搞定,最终安装完毕系统,查看ip
上述我们还是通过鼠标点击,进行装机,这些步骤,可以写成脚本文件,自动化装机。
通常,我们在安装操作系统的过程中,需要大量的和服务器交互操作,为了减少这个交互过程,kickstart就诞生了。使用这种kickstart,只需事先定义好一个Kickstart自动应答配置文件ks.cfg(通常存放在安装服务器上),并让安装程序知道该配置文件的位置,在安装过程中安装程序就可以自己从该文件中读取安装配置,这样就避免了在安装过程中多次的人机交互,从而实现无人值守的自动化安装。
生成kickstart配置文件的三种方法:
环境准备,确保启动好PXE网络安装系统的各个组件
1.启动dhcp服务
[root@kickstart ~]# systemctl start dhcpd
[root@kickstart ~]# netstat -tunlp
udp 0 0 0.0.0.0:67 0.0.0.0:* 1007/dhcpd
2.启动tftp服务,
[root@kickstart ~]# systemctl restart xinetd.service
[root@kickstart ~]# netstat -tunlp | grep xinetd
udp 0 0 0.0.0.0:69 0.0.0.0:* 19479/xinetd
启动httpd服务,并且可以正常获取iso镜像
[root@kickstart ~]# systemctl restart httpd
挂载镜像到http
[root@kickstart ~]# mount /dev/cdrom /var/www/html/CentOS-7/
mount: /dev/sr0 is write-protected, mounting read-only
[root@kickstart ~]# curl 127.0.0.1/CentOS-7
1.第一步编写ks脚本文件,自动应答配置文件,把安装的步骤,写人到开始文件里,系统自动化的根据这个ks文件,就能够吧系统安装好了
生成ks配置文件方式
centso默认安装好之后,在/root家目录下就会自动生成一个ks脚本文件
命令段
包组段 %packages开头,以%end结束
脚本段 以%post开头,以%end结束,在安装完系统之后,执行的linux命令,脚本
以%pre开头,以%end结束,在安装完系统之前执行的linux命令,脚本
通过工具检查ks文件语法
yum install pykickstart
ksvalidator /var/www/html/ks_config/CentOS-7-ks.cfg
该工具只是基本的对文件语法进行简单检测,并不能保证完全正确,还需人为检查
用python脚本对文件加密
python -c ‘import crypt;print(crypt.crypt("chaoge666"))‘
得到如下结果
部署操作
1.准备一个自定义的ks文件,放入http目录下
[root@kickstart ks_config]# cat /var/www/html/ks_config/ks.cfg
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
# old format: keyboard us
# new format:
keyboard --vckeymap=us --xlayouts=‘us‘
# Root password
rootpw --iscrypted $6$cIVuOep8khS61xi3$iNU0CiA8ANu8.8KNEmADfIVqPgcSEaC440oF.41eKin6vpyehf1QMDzjqPLYSfh1SGi8fJ2ajR3axw6jJqrvU1
# Use network installation
url --url="http://172.18.41.133/CentOS-7"
# System language
lang en_US
# yum configuation
repo --name="Red Hat Enterprise Linux" --baseurl="http://172.168.1.13/CentOS-7" --cost=100
# System authorization information
auth --useshadow --passalgo=sha512
# Use text mode install
text
firstboot --disable
# SELinux configuration
selinux --disabled
# System services
services --enabled="chronyd"
ignoredisk --only-use=sda
# Firewall configuration
firewall --disabled
# Network information
network --bootproto=dhcp --device=ens33
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# System bootloader configuration
bootloader --append="crashkernel=auto" --location=mbr --boot-drive=sda
#autopart --type=lvm
# Clear the Master Boot Record,清空分区,重新分区
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --fstype="xfs" --size=500
part swap --fstype="swap" --size=2048
part / --fstype="xfs" --grow --size=1
# 安装系统软件包
%packages
@core
%end
修改pxelinux.cfg/default文件
备份原有pxe配置文件
[root@kickstart pxelinux.cfg]# cp default{,.bak}
[root@kickstart pxelinux.cfg]# ls
default default.bak
写入新的文件信息
[root@kickstart pxelinux.cfg]# >default
[root@kickstart pxelinux.cfg]# cat /var/lib/tftpboot/pxelinux.cfg/default
# 使用欢迎界面
default vesamenu.c32
#default menu.c32
#prompt 1
# 倒计时600毫秒
timeout 600
# 欢迎词
MENU TITLE welcome to centos.
# 如下三个驱动
# 启动本地设备
label local
menu label Boot from ^local drive
localboot 0xffff
# 启动来自于ks配置文件
MENU SEPARATOR
label linux
menu label ^Install or upgrade an existing system for ks
# 系统默认选ks
menu default
kernel vmlinuz
append initrd=initrd.img ks=http://172.168.1.13/ks_config/CentOS7-ks.cfg
# 安装基本驱动
MENU SEPARATOR
label vesa
menu label Install system with ^basic video driver
kernel vmlinuz
append initrd=initrd.img xdriver=vesa nomodeset
1.检验iso文件是否可以获取
[root@kickstart pxelinux.cfg]# curl http://172.168.1.13/CentOS-7/
2.检验pxe文件是否可以获取
[root@kickstart pxelinux.cfg]# curl http://172.168.1.13/ks_config/CentOS7-ks.cfg
至此,我们就部署好了如下
上述准备工作,做好之后,开始装机
1.服务端可以观察日志
[root@kickstart pxelinux.cfg]# tail -f /var/log/messages
2.创建一个虚拟机,vmware,注意点如下
大于等于2G内存
添加网卡,选择lan区段
自动化安装界面
区别就是,本来这些选项都是图形化的,这里已经是黑屏的了
待自动装机完毕后,系统会自动重启,进入centos操作系统,大功告成
输入账号密码,登录,开始玩耍吧
root
uplooking
标签:tftp服务器 nsf ash ati info redhat 应该 解析 自动
原文地址:https://www.cnblogs.com/lzyunv/p/14191268.html