PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行。

要使用kickstart安装平台,包括的完整架构为:Kickstart+DHCP+NFS(http)+TFTP+PXE,从架构可以看出,大致需要安装的服务,例如dhcp、tftp、nfs、kickstart/pxe等。

1) DHCP、TFTP安装

yum  install   -y   dhcp*  tftp*  xinetd 

首先配置tftp服务:

vi /etc/xinetd.d/tftp
service tftp
{
disable = no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -u nobody -s /tftpboot
per_source =
cps =
flags = IPv4
}
只需要把disable = yes改成disable = no即可。

2)TFTP+PXE配置

要实现远程安装系统,首先需要在TFTPBOOT目录指定相关PXE内核模块及相关参数。配置步骤如下:

要实现远程安装系统,首先需要在TFTPBOOT目录指定相关PXE内核模块及相关参数。配置步骤如下:
mount /dev/cdrom /mnt 挂载本地光盘
#如果系统是6.x,默认tftpboot目录在/var/lib/下,所以centos6.x需要做软链接到/根目录下。
ln -s /var/lib/tftpboot /
cp /usr/share/doc/syslinux/pxelinux. /tftpboot/
(yum install syslinux syslinux-devel -y)
cp /mnt/images/pxeboot/{vmlinuz,initrd.img} ./ 拷贝内核至tftpboot目录下
mkdir -p pxelinux.cfg &&cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
拷贝isolinux.cfg配置文件重命名,系统安装的时候会根据这个文件的配置启动相应的选项。
修改pexlinux.cfg/default内容如下:
default linux
prompt
timeout
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.113:/centosinstall/ks.cfg ksdevice=ens33 initrd=initrd.img
label text
kernel vmlinuz
append initrd=initrd.img text
label ks
kernel vmlinuz
append ks initrd=initrd.img
label local
localboot
label memtest86
kernel memtest
append –

解析:192.168.0.113是kickstart服务器,/centosinstall 是nfs共享linux镜像的目录,也是linux存放安装文件的路径,ks.cfg是kickstart主配置文件;设置timeout 10 /*超时时间为10S */;ksdevice=etho代表当我们有多块网卡的时候,要实现自动化需要设置从ens33安装。

TFTP配置完毕,由于是TFTP是非独立服务,需要依赖xinetd服务来启动,启动命令为:

chkconfig    tftp  --level 35 on  && service  xinetd  restart

3) NFS+KICKSTART配置

远程系统安装,客户端需要下载系统所需的软件包,所以需要使用NFS或者httpd把镜像文件共享出来。

mkdir   -p   /centosinstall
nohup cp -rf /mnt/* /centosinstall &
echo “/centosinstall *(rw,sync)” >>/etc/exports

在NFS配置文件/etc/exports中加入如上语句:/centosinstall    *(rw,sync),表示允许任何主机访问/centosinstall目录,有读写权限。

配置kickstart,可以使用system-kickstart系统软件包来配置,也可以直接拷贝/root/目录下anaconda-ks.cfg 重命名为ks.cfg,并把ks.cfg拷贝至刚共享的/centosinstall目录下,赋权限为chmod 777 ks.cfg

如下我这里采用配置文件内容如下:vi ks.cfg

# Kickstart file automatically generated by anaconda.
install
text
nfs --server=192.168.0.79 --dir=/centosinstall
key --skip
lang zh_CN.UTF-
keyboard us
network --device eth0 --bootproto=dhcp --noipv6
rootpw
firewall --disabled
authconfig --enableshadow --enablemd5
selinux --disabled
timezone Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="rhgb quiet"
zerombr
clearpart --all --initlabel
part /boot --fstype ext3 --size=
part swap --size=
part / --fstype ext3 --size=
part /data --fstype ext3 --size=--grow
reboot
%packages
@base
@core
@chinese-support

第一步install,以text字符界面,指定nfs共享IP和目录,设置安装后的服务器字符集、网络分配方式、密码;

然后设置防火墙状态,磁盘采用MBR方式引导,然后客户机分区的情况;%packages

后写入客户机系统需要安装的软件包,可以自己定制。更多详细的参数在此就不做过多的说明了,可以进一步学习。

4)在真实环境中,通常我们会发现一台服务器好几块硬盘,做完raid,整个硬盘有等10T,如果来使用kickstart自动安装并分区呢;一般服务器硬盘超过2T,如何来使用kickstart安装配置呢?这里就不能使用MBR方式来分区,需要采用GPT格式来引导并分区。

需要在ks.cfg末尾添加如下命令来实现需求:

%pre
parted  -s  /dev/sdb 
mklabel  gpt
%end

为了实现kickstart安装完系统后,自动初始化系统等等工作,我们可以在系统安装完后,自动执行定制的脚本,需要在ks.cfg末尾加入如下配置:

%post

mount  -t  nfs 192.168.0.79:/centos/init   /mnt

cd  /mnt/ ;/bin/sh  auto_init.sh

%end

5)    
DHCP配置及测试

Pxe+kickstart自动安装系统,需要用到DHCP分配的客户端的IP地址,这里直接上dhcpd.conf配置文件:

ddns-update-style
interim;

ignore
client-updates;

next-server 192.168.0.79;

filename "pxelinux.0";

allow
booting;

allow
bootp;

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;

range
dynamic-bootp 192.168.0.100 192.168.0.200;

host ns {

hardware
ethernet  00:1a:a0:2b:38:81;

fixed-address
192.168.0.101;}

}

最后重启所有服务,并关闭iptables和selinux,然后找一台新服务器,接入网线与kickstart服务器在一个交换机或通过中继能获取到IP的网络即可。

service    xinetd  
restart

service     nfs   
restart

service     dhcpd 
restart

真实环境需要注意,新服务器跟kickstart最后独立在一个网络,不要跟办公环境或者服务器机房网络混在一起,如果别的机器以网卡就会把它的系统重装成Linux系统。

最新文章

  1. 高性能 Socket 组件 HP-Socket v3.1.3 正式发布
  2. AspNetPager控件报错误: Syntax error, unrecognized expression: input#ctl00$ContentPlaceHolder1$Aspnetpager1_input问题解决[摘]
  3. python之集合,函数,装饰器
  4. JSON代码小计
  5. C# 递归程序 获取某个节点下的全部子节点
  6. PostgreSQL的 initdb 源代码分析之十一
  7. insert 另外一种用法
  8. leetcode@ [208] Implement Trie (Prefix Tree)
  9. Linux系统编程(9)—— 进程之进程控制函数exec系列函数
  10. 进入MAC下面的Library目录
  11. jquery子元素过滤选择器
  12. git merge简介(转)
  13. 彻底理解Promise对象——用es5语法实现一个自己的Promise(上篇)
  14. 聊聊RocksDB Compact
  15. js 时间字符串转化为时间
  16. 关于Tensorflow安装opencv和pygame
  17. LInux命令英文全称
  18. java问题
  19. 虚拟主机连接FTP发送"AUTH TLS"命令后提示“无法连接到服务器”
  20. JAVA 集合操作总结

热门文章

  1. [ZZ] 用matlab绘制箭头
  2. [转]ORACLE 11G 导出报错(EXP-00003)未找到段 (0,0) 的存储定义
  3. JavaScript 学习笔记(基础学习)
  4. python3-基础6
  5. delphi 各版本的特性
  6. linux tee
  7. mat函数
  8. bzoj5107: [CodePlus2017]找爸爸
  9. Linux裸设备管理详解--
  10. 闪动效果的实现 (jquery方式和css方式)以及 keyframes和opacity 与ie等各浏览器兼容问题