kickstart无人值守安装


kickstart无人值守安装

  1. PXE介绍

PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTPtrivial file transfer protocol)或MTFTP(multicasttrivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。

严格来说,PXE 并不是一种安装方式,而是一种引导方式。进行 PXE 安装的必要条件是在要安装的计算机中必须包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE ClientPXE 协议可以使计算机通过网络启动。此协议分为 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.   无人值守安装原理图

wKiom1ZJjJ3zLUGOAABQ53jZlTs694.png


PXE的工作过程:

  1. PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP

  2. DHCP 服务器返回分配给客户机的IP以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上)

  3. PXE Client 向本网络中的TFTP服务器索取pxelinux.0文件;

  4. PXE Client 取得pxelinux.0 文件后之执行该文件;

  5. 根据pxelinux.0 的执行结果,通过TFTP服务器加载内核和文件系统

  6. 进入安装画面, 此时可以通过选择HTTPFTPNFS 方式之一进行安装;

详细工作流程,请参考下面这幅图:

wKioL1ZJjKazv2yKAAETsoA9dhM358.png

3.环境需求

实验环境

VMware workstations 11.0

系统平台

CentOS6.7Final 最小化安装)

网络采用NAT

网关10.0.0.2

NFSTFTP服务器的地址

10.0.0.9

DHCP服务器地址

10.0.0.9

 

4.操作步骤:

  1. 创建挂载目录:

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*

安装完成修改配置文件将disableyes 改为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创建一个空的虚拟机。

开机测试。


你可能感兴趣的:(kickstart)