pxe:预启动执行环境,是由intel公司开发,工作于C/S网络模式,用于网络引导操作系统.
http:超文本传输协议,这里的角色仅提供安装系统所需的软件包
kickstart: 是什么
许多系统管理员宁愿使用自动化的安装方法来安装红帽企业 Linux.为了满足这种需要,红帽创建了kickstart安装方法.使用kickstart,系统管理员可以创建一个文件,这个文件包含了在典型的安装过程中所遇到的问题的答案.
Kickstart文件可以存放于单一的服务器上,在安装过程中被独立的机器所读取.这个安装方法可以支持使用单一kickstart文件在多台机器上安装红帽企业Linux,这对于网络和系统管理员来说是个理想的选择.
Kickstart给用户提供了一种自动化安装红帽企业Linux的方法.
1、客户端开机启动时,会根据客户端主机主板上的BIOS设定的启动顺序启动.如果没有找到bootload,就会根据启动顺序与其对应的启动介质启动.
2、如果是DHCP网络启动的话,客户端首先会向其服务器请求IP地址以及mask
3、服务器响应客户端并分配IP及其Mask
4、当客户端获取其IP及Mask之后还会向服务器发送请求获取启动安装的bootload,及其系统安装时需要文件
5、Tftp Server 会响应客户端,提供启动安装时所需的文件
6、客户端将服务器提供的启动软件包下载至本地,并在内存中执行安装
简单介绍:其实能够提供这bootload,及其安装系统所需文件的服务器除了tftp之外,还有ftp,http
tftp: Trivial file transfer server , 简单文件传输协议,由于开发初期就是为了提供高效传输小文件,所以是基于udp协议开发的,并监听在udp:69,等待客户端的请求;不过客户端对Tftp的需求并不是特别高,所以每次系统启动时都需要开启的话,其实挺浪费资源的.所以tftp实在后端工作的,睡眠状态.
在linux系统中有这样的一种进程:叫做超级守护进程:xinetd:就是为了那些极少接收用户请求的服务,专门提供监听功能负责代替Tftp服务器监听udp:69号端口,事实上当用户请求到来之后xinetd,负责唤醒Tftp响应客户端请求
瞬时(非独立)守护进程:它们无须定义在运行级别下,只需要一次性地定义xinetd的运行级别 瞬时守护进程基于xinetd的配置文件:/etc/xinetd.d/Service_name
什么是:pxe预启动执行环境,是由intel公司开发,工作于C/S网络模式,用于网络引导操作系统
1、配置DHCP服务器
# yum -y install dhcp # vim /etc/dhcp/dhcpd.conf
ddns-update-style interim; #表示dhcp服务器和dns服务器的动态信息更新模式。这行必须要有dhcp服务器才能启动以来。 subnet 172.16.0.0 netmask 255.255.0.0 { #subnet 定义网段DHCP工作的网段 option routers 172.16.0.1; # 默认网关 option subnet-mask 255.255.255.0; # 子网掩码掩码 option domain-name "Mozilla.com"; # 客户端所在域的名称 option domain-name-servers 220.2.2.2,220.2.2.1; # 首选DNS,以及备用DNS服务器的IP地址 option time-offset -180000; range dynamic-bootp 172.16.251.100 172.16.251.254; # 能够兼容bootp;以及IP地址池,能够分配IP的地址范围 default-lease-time 21600; #默认租约时间 max-lease-time 43200; #最大租约时间 next-server 172.16.251.67; #tftp Sserver 的ip地址 filename "pxelinux.0"; }
2、启动服务
# service dhcpd start
# tail -f /var/log/boot.log
注释:# tail -f /var/log/boot.log,能够查看客户端请求dhcp服务器获取IP的过程
3、配置tftp-server
# yum -y install xinetd tftp-server tftp # chkconfig xinetd on # chkconfig tftp on # service xinetd start # ss -unl | grep ":69"
3、准备安装树,将挂载在media/cdrom 通过mount命令绑定到web服务DocumentRoot
# mkdir /var/www/html/centos6 # mount --bind /media/cdrom /var/www/html/centos6 # service httpd start
4、准备tftpboot下的文件,tftp默认文件存放的根目录/var/lib/tftpboot/
# yum -y install syslinux # cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/ # cp /media/cdrom/isolinux/{boot.msg,vesamenu.c32,splash.jpg} /var/lib/tftpboot/ # cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ # mkdir /var/lib/tftpboot/pxelinux.cfg # cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
5、提供kickstart文件 kickstart文件是一个简单的文本文件,它包含了一个项目列表,每个项目由一个关键字来识别.可以用「Kickstart 配置」应用程序创建它或是自己从头编写.红帽企业Linux安装程序也根据在安装过程中的选择创建一个简单的kickstart文件,这个文件被写入到/root/anaconda-ks.cfg.可以用任何能够把文件保存为ASCII文本的文本编辑器或字处理器来编辑它. 编辑好kickstart文件后保存至/var/www/html目录下;这里假设为ks.cfg
# Kickstart file automatically generated by anaconda. #version=DEVEL #版本名称 install url --url=http://172.16.251.67/Centos6.5 #安装树的url路径,因为我们这里是基于http所以,如果是ftp:ftp://path lang en_US.UTF-8 #默认语言以及字符集 keyboard us network --onboot yes --device eth0 --bootproto dhcp --noipv6 #定义网络类型,noboot yes:自动启动,设备名称,获取地址的方式,不启动ipv6 rootpw --iscrypted $6$CGsqab6d$Cd.PnnWtlL5XZAyr9J2zoMqyJH1QodcDp1pQp0uZ1f0Cq4eq9.TMkSQU6IfpvYZEYc32.lmF0lKuQwavnC49a0 #root的密码这里使用iscrypted 加密存放 #Reboot after installation reboot #安装之后立即重新启动 firewall --disabled #默认iptables防火墙 authconfig --useshadow --passalgo=sha512 #默认用户密码加密方式使用的是sha512 selinux --disabled #安装时不启动selinux timezone Asia/Shanghai #安装的时区上海 bootloader --location=mbr --driveorder=sda --append="crashkernel=auto crashkernel=auto rhgb rhgb quiet quiet" #定义bootload安装在本地mbr中 并创建创建设备sda # 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 --all #将系统中的所有分区清空格式化 zerombr #将mbr格式化 text #安装方式text文本安装 #part /boot --fstype=ext4 --size=200 #定义boot分区文件系统类型以及的大小 #part pv.008002 --size=61440 volgroup vg0 --pesize=8192 pv.008002 logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480 logvol swap --name=swap --vgname=vg0 --size=2048 logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240 logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480 #创建lvs逻辑卷 repo --name="CentOS" --baseurl=http://172.16.251.67/Centos6.5 %packages @Base @Core @base @basic-desktop @chinese-support @client-mgmt-tools @core @desktop-platform @fonts @general-desktop @graphical-admin-tools @legacy-x @network-file-system-client @perl-runtime @remote-desktop-clients @x11 ibus-table-cangjie ibus-table-erbi ibus-table-wubi lftp #需要安装的包组 # 1.每节必须按顺序指定.除非特别申明,每节内的项目则不必按序排列.小节的顺序为: #命令部分,这里应该包括必需的选项. #%packages部分,这部分选择需要安装的软件包. #%pre和%post部分,这两个部分可以按任何顺序排列而且不是必需的. #2.不必需的项目可以被省略. #3.如果忽略任何必需的项目,安装程序会提示用户输入相关的项目的选择,就象用户在典型的安装过程中所遇到的一样.一旦用户进行了选择,安装会以非交互的方式(unattended)继续(除非找到另外一个没有指定的项目). #4.以井号("#")开头的行被当作注释行并被忽略. 对于 kickstart 升级,下列项目是必需的: #1.语言 #2.安装方法 #3.设备规格(如果这个设备是在安装过程中所需要的) #4.键盘设置 #5.upgrade 关键字 #6.引导装载程序配置 #7.如果任何其他的项目被指定为upgrade,这些项目将被忽略(注意这包括了软件包选择). #kickstart预安装脚本 #可以在 ks.cfg文件被解析后马上加入要运行的命令.这个部分必须处于kickstart文件的最后(在命令部分之后)而且必须用%pre命令开头.可以在%pre部分访问网络;然而,此时命名服务还未被配置,所以只能使用IP地址. #注:预安装脚本不在改换了的根环境(chroot)中运行. -#-interpreter /usr/bin/python,允许指定不同的脚本语言,如Python.把/usr/bin/python替换成想使用的脚本语言. #kickstart安装后脚本 #也可以加入在系统安装完毕后运行的命令.这部分内容必须在kickstart的最后而且用%post命令开头.它被用于实现某些功能,如安装其他的软件和配置其他的命名服务器. #注:如果用静态IP信息和命名服务器配置网络,可以在%post部分访问和解析IP地址.如果使用DHCP配置网络,当安装程序执行到%post部分时,/etc/resolv.conf文件还没有准备好.此时,可以访问网络,但是不能解析IP地址.因此,如果使用DHCP,必须在%post部分指定IP地址. #注:post-install 脚本是在 chroot 环境里运行的.因此,某些任务如从安装介质复制脚本或RPM将无法执行. #--nochroot,允许指定想在chroot环境之外运行的命令. #下例把/etc/resolv.conf文件复制到刚安装的文件系统里. #%post --nochroot cp /etc/resolv.conf /mnt/sysimage/etc/resolv.conf #--interpreter /usr/bin/python #允许指定不同的脚本语言,如Python.把/usr/bin/python替换成想使用的脚本语言.
6、配置引导程序能自动加载此kickstart文件 编辑/var/lib/tftpboot/pxelinux.cfg/default 在label为linux项的append一行后附加: ks=http:
//172
.16.251.67/ks.cfg