kickstart无人值守安装
PXE介绍
PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicasttrivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。
严格来说,PXE 并不是一种安装方式,而是一种引导方式。进行 PXE 安装的必要条件是在要安装的计算机中必须包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE 协议可以使计算机通过网络启动。此协议分为 Client端和 Server 端,而PXE Client则在网卡的 ROM 中。当计算机引导时,BIOS 把 PXE Client 调入内存中执行,然后由 PXE Client 将放置在远端的文件通过网络下载到本地运行。运行 PXE 协议需要设置 DHCP 服务器和 TFTP 服务器。DHCP 服务器会给 PXE Client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE Client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。此外,在 PXE Client 的 ROM 中,已经存在了 TFTP Client,那么它就可以通过 TFTP 协议到 TFTP Server 上下载所需的文件了。
2. 无人值守安装原理图:
PXE的工作过程:
PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP;
DHCP 服务器返回分配给客户机的IP以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上) ;
PXE Client 向本网络中的TFTP服务器索取pxelinux.0文件;
PXE Client 取得pxelinux.0 文件后之执行该文件;
根据pxelinux.0 的执行结果,通过TFTP服务器加载内核和文件系统 ;
进入安装画面, 此时可以通过选择HTTP、FTP、NFS 方式之一进行安装;
详细工作流程,请参考下面这幅图:
3.环境需求
实验环境 |
VMware workstations 11.0 |
系统平台 |
CentOS6.7(Final 最小化安装) |
网络采用NAT |
网关10.0.0.2 |
NFS、TFTP服务器的地址 |
10.0.0.9 |
DHCP服务器地址 |
10.0.0.9 |
4.操作步骤:
创建挂载目录:
mkdir /data/sys �Cp
因为我们这个是挂载的,所以目录sys是只读了。
我后面又需要把ks.cfg也要放在共享里面,我在data目录下再创建一个kickstart目录
mkdir /data/kickstart -p
我们采用的是虚拟机:就不要把镜像拷贝到这个目录了,我们之间把镜像挂载到这个目录。如果是真实环境我们需要把镜像拷贝到这个目录下。
[root@oldboy /]# mount /dev/cdrom /data/sys
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@oldboy /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 6.9G 3.7G 2.9G 57% /
tmpfs 238M 4.0K 238M 1% /dev/shm
/dev/sda1 190M 36M 145M 20% /boot
/dev/sr0 3.7G 3.7G 0 100% /data/sys
2.安装NFS服务器;
查询有没安装
[root@oldboy /]# rpm -qa nfs-utilsrpcbind
rpcbind-0.2.0-11.el6.x86_64
nfs-utils-1.2.3-64.el6.x86_64
没有安装通过yum来安装
[root@oldboy /]# yum -y installnfs-utils rpcbind
安装完过后把这两个服务加入开机自启动。
[root@oldboy /]# chkconfig nfs on
[root@oldboy /]# chkconfig rpcbind on
并把/data/sys设置为共享目录
echo "/data/sys10.0.0.0/24(ro,sync)" >>/etc/exports
echo "/data/kickstart10.0.0.0/24(ro,sync)" >>/etc/exports
启动NFS服务
/etc/init.d/rpcbind start
/etc/init.d/nfs start
查看共享目录:
[root@oldboy /]# showmount -e localhost
Export list for localhost:
/data/kickstart 10.0.0.0/24
/data/sys 10.0.0.0/24
3.安装TFTP服务:
[root@oldboy /]# yum -y installtftp-server*
安装完成修改配置文件将disable的yes 改为no 默认器server_args是在 /var/lib/ tftpboot 下。我们改为/tftpboot 默认都可以。
vim /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
mkdir /tftpboot 目录。
把xinetd 加入开机自启动
chkconfig xinetd on
[root@oldboy /]# chkconfig --list|grep xinetd
xinetd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
4.配置支持PXE引导配置:
复制pxelinux.0 文件至/tftpboot/ 文件夹中
cp/usr/share/syslinux/pxelinux.0 /tftpboot/
复制iso 镜像中的/image/pxeboot/initrd.img 和vmlinux 至/tftpboot/ 文件夹
cp/data/sys/images/pxeboot/initrd.img /tftpboot/
cp/data/sys/images/pxeboot/vmlinuz /tftpboot/
在tftpboot目录下再创建一个pxelinux.cfg目录
mkdir /tftpboot/pxelinux.cfg/ -p
将镜像中的isolinux.cfg 文件拷贝到 pxelinux.cfg 下并改名为default
cp/data/sys/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
[root@oldboy sys]# chmod u+w/tftpboot/pxelinux.cfg/default
修改文件
default linux # 默认启动Linux标记的内核
prompt 1
timeout 6
#并把告诉系统从哪里获取ks.cfg文件
label linux
menu label ^Install or upgradean existing system
menu default
kernel vmlinuz
appendinitrd=initrd.img text append ks=nfs:10.0.0.9:/data/kickstart/ks.cfg
5.安装DHCP服务:
yum -y install dhcp*
安装完把DHCP加入开机自启动。
chkconfig dhcpd on
[root@oldboy /]# chkconfig --list|grep dhcpd
dhcpd 0:off 1:off 2:off 3:on 4:off 5:off 6:off
拷贝模板配置文件到/etc/dhcp/
cp -f /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
修改/etc/dhcp/dhcpd.conf配置文件,内容如下:
ddns-update-style none;
ignore client-updates;
allow booting;
allow bootp;
default-lease-time 21600;
max-lease-time 43200;
option routers 10.0.0.2; #网关
option subnet-mask 255.255.255.0; #子网掩码
subnet 10.0.0.0 netmask 255.255.255.0 {
range dynamic-bootp10.0.0.100 10.0.0.199;
next-server 10.0.0.9; #服务ip地址
filename"/data/sys/kickstart/ks.cfg"; #ks.cfg位置
next-server 10.0.0.9; #服务器ip地址
filename"pxelinux.0"; #pxe启动文职
}
6.生成ks.cfg文件
可以通过系统生成,用system-config-kickstart生成ks.cfg
# Kickstart file automatically generated by anaconda.
#version=DEVEL
install
nfs --server=10.0.0.9 --dir=/data/sys #指定从哪里加载系统镜像
lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto dhcp --noipv6
rootpw 123456 # root 密码
firewall --disabled
authconfig --enableshadow --passalgo=sha512
selinux --disabled
timezone --utc Asia/Shanghai
bootloader --location=mbr --driveorder=sda--append="crashkernel=auto rhgb quiet"
logging --level=info
zerombr
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
#clearpart --none
#part /boot --fstype=ext4 --size=200
#part / --fstype=ext4 --grow --asprimary --size=200
#part swap --size=768
clearpart --all
part /boot --fstype=ext4 --size=200
part / --fstype=ext4 --grow --asprimary --size=200
part swap --size=768
%packages
@base
@compat-libraries
@core
@debugging
@development
@server-policy
@workstation-policy
python-dmidecode
sgpio
device-mapper-persistent-data
systemtap-client
%end
这些都配好了。检查服务开启了没有
[root@oldboy /]# /etc/init.d/nfs status
rpc.svcgssd is stopped
rpc.mountd (pid 16194) is running...
nfsd (pid 16210 16209 16208 16207 16206 16205 16204 16203) isrunning...
rpc.rquotad (pid 16189) is running...
[root@oldboy /]# /etc/init.d/rpcbind status
rpcbind (pid 18430) isrunning...
[root@oldboy /]# /etc/init.d/xinetd status
xinetd (pid 17055) isrunning...
[root@oldboy /]# /etc/init.d/dhcpd status
dhcpd (pid 16262) isrunning...
接下来我们就在vmware创建一个空的虚拟机。
开机测试。