kickstart、pxe的原理。
kickstart安装是redhat开创的按照你设计好的方式全自动安装系统的方式。安装方式可以分为光盘、硬盘、和网络。
PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动。协议分为client和server两端,PXE client在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行。既然是通过网络传输,就需要IP地址;也就是说在其启动过程中,客户端请求服务器分配IP地址,之后PXE Client使用TFTP Client 通过TFTP(Trivial File Transfer Protocol)协议下载启动安装程序所需的文件。简单地说PXE网络安装,客户机通过支持PXE的网卡向网络中发送请求DHCP信息的广播请求IP地址等信息,DHCP服务器给客户端提供IP地址和其它信息(TFTP服务器、启动文件等),之后请求并下载安装需要的文件。在这个过程中需要一台服务器来提供启动文件、安装文件、以及安装过程中的自动应答文件等。
使用kickstart优势:
1. 流线化自动化的安装;
2. 快速大量的裸机部署;
3. 强制建立的一致性(软件包,分区,配置,监控,安全性)
4. 减少人为的部署失误
使用Kickstart方法安装的过程:
1. 创建一个kickstart文件
2. 创建有kickstart文件的引导介质或者使这个文件在网络上可用;
3. 筹备一个安装树
4. 开始ks安装:anconda自身启动 -->选取ks安装模式--> 从ks文件读取配置 --> 最后安装
创建kickstart配置文件的方式:
1. 文本编辑器编辑生成:vim
2. 用图形化界面配置:system-config-kickstat
实验环境:服务器采用的操作系统为RHEL 4.0,客户端预装RHEL 4.0。
服务器上的配置如下:
第一步:配置安装树:
在虚拟机中添加新的硬盘,并且实现开机之后的自动挂载。
这个步骤在以前已经总结过,所以在这里我只给出完成之后的结果:
我在虚拟机中添加的为SCSI硬盘,分区格式化之后的文件为/dev/sda1,编辑/etc/fstab文件,将该分区自动挂载于/installing文件夹下,并且在该文件夹下建立目录/var/ftp/pub,那么配置的安装树就在/installing/var/ftp/pub目录下。
挂载第一张光盘:
[root@server1 ~]# mount /media/cdrom
[root@server1 cdrom]# alias cp=cp 使cp命令在执行的时候直接覆盖已经存在内容而不询问
[root@server1 cdrom]# cp -dpR * /installing/var/ftp/pub/ 拷贝第一张光盘内容到目标
挂载第二张光盘:
[root@server1 cdrom]# cp -dpR * /installing/var/ftp/pub/RedHat/RPMS 将所有的安装包集中到一起
按照同样的方法挂载并拷贝第三张和第四张光盘的内容
重启动系统进行检测。
第二步:配置kickstart无人值守安装脚本:
需要安装kickstart工具包:
[root@server1 ~]# cd /installing/var/ftp/pub/RedHat/RPMS/
[root@server1 RPMS]# ls *kickstart*
system-config-kickstart-2.5.16-2.noarch.rpm
[root@server1 RPMS]# rpm -ihv system-config-kickstart-2.5.16-2.noarch.rpm --aid
warning: system-config-kickstart-2.5.16-2.noarch.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing... ########################################### [100%]
1:system-config-kickstart########################################### [100%]
进入图形界面运行system-config-kickstart命令按照提示进行无人值守脚本配置
*选择的安装方式是通过NFS网络文件系统安装;
*选择的分区方法是不管客户机磁盘多大,都分三个必须分区,并指定分区的大小,剩余空间备用;
*选择的数据包不能包含图形界面开发工具或者开发工具,否则安装过程中会报错
将生成的ks.cfg文件拷贝到安装树所在路径下/installing/var/ftp/pub
第三步:配置服务器的服务:
1.配置DHCP服务:
从安装树中安装DHCP服务的软件包:
[root@server1 ~]# cd /installing/var/ftp/pub/RedHat/RPMS/
[root@server1 RPMS]# ls *dhcp*
dhcp-3.0.1-12_EL.i386.rpm dhcpv6-0.10-8.i386.rpm
dhcp-devel-3.0.1-12_EL.i386.rpm dhcpv6_client-0.10-8.i386.rpm
[root@server1 RPMS]# rpm -ihv dhcp-3.0.1-12_EL.i386.rpm dhcp-devel-3.0.1-12_EL.i386.rpm �Caid
配置DHCP服务:
[root@server1 ~]# cp /usr/share/doc/dhcp-3.0.1/dhcpd.conf.sample /etc/dhcpd.conf
[root@server1 ~]# vi /etc/dhcpd.conf
我的服务器IP地址为192.168.1.170,所以该配置文件的内容如下:
红色的地方为我修改或者需要注意的地方
ddns-update-style interim;
ignore client-updates;
subnet 192.168.1.0 netmask 255.255.255.0 {
# --- default gateway
option routers 192.168.1.170;
option subnet-mask 255.255.255.0;
option nis-domain "RHCE";
option domain-name "example.com";
option domain-name-servers 192.168.1.170;
option time-offset -18000; # Eastern Standard Time
# option ntp-servers 192.168.1.170;
# option netbios-name-servers 192.168.1.170;
# --- 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.1.128 192.168.1.254;
default-lease-time 21600;
max-lease-time 43200;
filename "/pxelinux.0";
# 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;
保存并且退出,其中NTP服务器、NIS服务器、以及NETBIOS服务器并不是必须,但是一定要注意后面手动添加的一行:filename "/pxelinux.0";
完成之后启动服务:
# service dhcpd restart
在客户端启动之后通过查看文件/var/lib/dhcp/dhcpd.leases可以得知客户端是否正常获得IP地址
2.配置DNS服务:
按照刚才DHCP配置文件中的内容去配置DNS即可,这个步骤不是必须;
3.配置TFTP服务:
这种安装的原理是客户端启动之后通过TFTP服务器获得配置文件信息和安装信息,因此需要开启TFTP服务。
# vi /etc/xi net.d/tftp
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
{
disable = no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
per_source = 11
cps = 100 2
flags = IPv4
}
之后重启TFTP服务:/etc/rc.d/init.d/xinetd restart或者干脆chkconfig tftp on即可
4.配置NFS服务:
# vi /etc/exports
添加安装树的路径:
/installing/var/ftp/pub 192.1681.0/24(ro,async)
保存退出
# service portmap restart
# service nfs restart
# exportfs �Crv
# showmount �Ce
# chkconfig nfs on
出现下面内容即可:
/installing/var/ftp/pub 192.168.1.0/24
5.配置支持PXE启动:
# mkdir /tftp ――――>若该文件夹已经存在则不用建立
# cp /usr/lib/syslinux/pxelinux.0 /tftpboot
把Linux第一张安装光盘上/image/pxeboot/initrd.img和vmlinux 以及isolinux/*.msg拷贝到/tftpboot目录下
# cd /tftpboot
# mkdir pxelinux.cfg
# cd pxelinux.cfg
# vi default
配置文件default文件的内容如下:
default
prompt 1
timeout 30
display boot.msg
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
F7 snake.msg
label local
localboot 0
label linux
kernel vmlinuz
append initrd=initrd.img devfs=nomount ramdisk_size=9216
label text
kernel vmlinuz
append initrd=initrd.img text devfs=nomount ramdisk_size=9216
label expert
kernel vmlinuz
append expert initrd=initrd.img devfs=nomount ramdisk_size=9216
label ks
kernel vmlinuz
append ks initrd=initrd.img devfs=nomount ramdisk_size=9216
label nofb
kernel vmlinuz
append initrd=initrd.img devfs=nomount nofb ramdisk_size=9216
label lowres
kernel vmlinuz
append initrd=initrd.img lowres devfs=nomount ramdisk_size=9216
kernel vmlinuz
如果我们执行的是远程手动安装,这个配置文件就足够了。但是我们执行的是远程无人值守安装,所以还需要对该配置文件进行一定修改,主要在配置文件中添加内容,指定ks.cfg配置文件的位置。
因此经过编辑,最终配置文件的内容如下:
default linux
prompt 1
timeout 30
display boot.msg
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
F7 snake.msg
label local
localboot 0
label linux
kernel vmlinuz
append ks=nfs:192.168.1.170:/installing/var/ftp/pub/ks.cfg initrd=initrd.img devfs=nomount
ramdisk_size=9216
label text
kernel vmlinuz
append initrd=initrd.img text devfs=nomount ramdisk_size=9216
label expert
kernel vmlinuz
append expert initrd=initrd.img devfs=nomount ramdisk_size=9216
label ks
kernel vmlinuz
append ks initrd=initrd.img devfs=nomount ramdisk_size=9216
label nofb
kernel vmlinuz
append initrd=initrd.img devfs=nomount nofb ramdisk_size=9216
label lowres
kernel vmlinuz
append initrd=initrd.img lowres devfs=nomount ramdisk_size=9216
kernel vmlinuz
准备一台客户端,然后更改启动方式为通过带PXE自启动模块的网卡启动,客户端在开启之后会主动向DHCP服务器获取地址,并且从TFTP服务器上获得安装配置以及信息;客户端所做的工作只是开机,剩下的工作由ks.cfg文件控制自动完成。