Linux kickstart 自动化安装

第一步:PXE Client向DHCP发送请求
首先,将支持PXE的网络接口卡(NIC)的客户端的BIOS设置成为网络启动,通过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),则会在这个时候初始化网络,并定位安装源位置。或许你会说,刚才PXE不是已经获取过IP地址了吗?为什么现在还需要一次?这是由于PXE获取的是安装用的内核以及安装程序等,而安装程序要获取的是安装系统所需的二进制包以及配置文件。由于它们需要的内容不同造成PXE模块和安装程序是相对独立的,PXE的网络配置并不能传递给安装程序。从而进行两次获取IP地址过程。
接着会读取该文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。
第六步:客户端安装操作系统
将ks.cfg文件下载回来后,通过该文件找到OS Server,并按照该文件的配置请求下载安装过程需要的软件包。
OS Server和客户端建立连接后,将开始传输软件包,客户端将开始安装操作系统。安装完成后,将提示重新引导计算机。这个时候注意,在重新引导的过程中一定要将BIOS修改回从硬盘启动,不然的话又会重复的自动安装操作系统。


在本次实验中我们所有的服务,都放在192.168.0.247 这台服务器上


需要配置如下服务:
1,DHCP服务,用于PXE 启动的IP地址分发和发送TFTP 服务地址
2,TFTP服务,用于提供客户端PXE引导所必须的文件
3,NFS或FTP或HTTP服务,用于提供安装系统的系统安装文件即ISO镜像文件
4,Kickstart,就是一个系统服务,用于生成ks.cfg文件,可以按照/root/anaconda-ks.cfg 配置来写

5,PXE 其实不是一个服务,而是需要客户机的主板支持,即支持网络启动,否则,接下来的实验皆无法进行

1.1安装DHCP服务器

rpm -ivh dhcp-3.0.5-23.el5_5.2.x86_64.rpm dhcp-devel-3.0.5-23.el5_5.2.x86_64.rpm 
warning: dhcp-3.0.5-23.el5_5.2.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
   1:dhcp                   ########################################### [ 50%]
   2:dhcp-devel             ########################################### [100%]
1.2,更改DHCP配置文件
cd /etc/
cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample .
修改 /etc/dhcpd.conf 文件,指定 IP 地址等信息。 
在 '''/etc/dhcpd.conf''' 中增加 tftp-server 需要推送给客户端的启动文件(bootstrap):filename "pxelinux.0";因为 tftp 的默认目录是 /tftpboot,所以文件的绝对路径就是: /tftpboot/pxelinux.0";当然也可以指定为其它的路径。
另外需要指定 next-server 参数,告诉客户端在获取到 pxelinux.0 文件之后去哪里获取其余的启动文件: 
配置文件更改如下:
ddns-update-style interim;
#ignore client-updates;
allow booting; #定义能够PXE启动
allow bootp; #定义支持bootp
next-server 192.168.0.247; #TFTP Server 地址
filename "pxelinux.0"; #pxelinux 启动文件位置

subnet 192.168.0.0 netmask 255.255.255.0 {

# --- default gateway
#       option routers                  192.168.0.1;
#       option subnet-mask              255.255.255.0;

#       option nis-domain               "domain.org";
#       option domain-name              "domain.org";
        option domain-name-servers      192.168.0.247;
        option subnet-mask              255.255.255.0;


        option time-offset              -18000; # Eastern Standard Time
#       option ntp-servers              192.168.1.1;
#       option netbios-name-servers     192.168.1.1;
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
#       option netbios-node-type 2;

        range dynamic-bootp 192.168.0.200 192.168.0.220; #这里的IP地址段根据机器的多少来增加和减少
        default-lease-time 21600;
        max-lease-time 43200;

        # we want the nameserver to appear at a fixed address
#       host ns {
#               next-server marvin.redhat.com;
#               hardware ethernet 12:34:56:78:AB:CD;
#               fixed-address 207.175.42.254;
#       }
}
1.3设置DHCP 服务
chkconfig dhcpd on
service dhcpd start

2.安装,配置TFTP服务器

rpm -ivh tftp-server-0.49-2.x86_64.rpm 
配置
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
}
启动
/etc/init.d/xinetd restart
2.1PXE引导配置(bootstrap)
cd /usr/lib/syslinux/
cp pxelinux.0 /tftpboot/
2.2用于网络启动的内核文件
cp images/pxeboot/{vmlinuz,initrd.img} /tftpboot/ 
cp isolinux/*.msg /tftpboot/
cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
修改默认系统加载的配置文件
vim /tftpboot/pxelinux.cfg/default 

default linux
prompt 1
timeout 600
display boot.msg
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
label linux
  kernel vmlinuz
  append ks=nfs:192.168.0.247:/mnt/install/ks.cfg initrd=initrd.img #指定ks.cfg安装文件
label text
  kernel vmlinuz
  append initrd=initrd.img text
label ks
  kernel vmlinuz
  append ks initrd=initrd.img
label local
  localboot 1
label memtest86
  kernel memtest
  append -
3.NFS 配置
这里我使用的是NFS,来提供系统安装文件

mount -o loop /usr/local/src/rhel-server-5.6-x86_64-dvd.iso /media/
mkdir /mnt/install
cp -R /media/* /mnt/install/
3.2设置NFS
cat /etc/exports 
/mnt/install * (ro,sync) 
service portmap start
service nfs start

showmount  -e localhost #检查共享
chkconfig --level 35 nfs on

4,配置Kickstart 

4.1如果安装了图形界面,可以安装一下该服务,用来图形生成ks.cfg文件
没有安装的话,可以再/root/anaconda-ks.cfg 基础上进行更改
我的配置文件如下:

[root@stat install]# cat ks.cfg 
# Kickstart file automatically generated by anaconda.
#for auto install linux 
install
text
nfs --server=192.168.0.247 --dir=/mnt/install #系统安装文件
key --skip
lang en_US.UTF-8
keyboard us
# Installation logging level
logging --level=info
xconfig --startxonboot
network --bootproto=dhcp --device=eth0 --onboot=on
rootpw --iscrypted $1$Ftd5JARW$a8t5CIMF5rn9mmaRv7l9D1
firewall --enabled --port=22:tcp
authconfig --enableshadow --enablemd5
selinux --disabled
timezone --utc Asia/Shanghai
bootloader --location=mbr --driveorder=hda --append="rhgb quiet"
# 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 --linux
clearpart --all --initlabel 
part /boot --bytes-per-inode=4096 --fstype="ext3" --size=100
part / --bytes-per-inode=4096 --fstype="ext3" --size=50000
part swap --bytes-per-inode=4096 --fstype="swap" --size=4096
part /data --bytes-per-inode=4096 --fstype="ext3" --grow --size=1

%packages
@admin-tools
@base
@core
@development-libs
@development-tools
@editors
@gnome-desktop
@system-tools
@base-x
system-config-kickstart
kexec-tools
iscsi-initiator-utils
fipscheck
device-mapper-multipath
sgpio
python-dmidecode
imake
emacs
audit
xorg-x11-utils
xorg-x11-server-Xnest
xorg-x11-server-Xvfb

5.关闭iptables(其实可以不用关闭,但是需要开放相关端口比较麻烦)和SELinux

6,从网卡启动 需要安装的机器




你可能感兴趣的:(Linux kickstart 自动化安装)