一、概念与原理
什么是PXE
严格来说,PXE 并不是一种安装方式,而是一种引导的方式。进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE
支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE (Pre-boot Execution
Environment,直译为启动前的执行环境)协议使计算机可以通过网络启动。协议分为 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。PXE Client
通过 TFTP 协议到 TFTP Server 上下载所需的文件。
什么是KickStart
KickStart是一种无人职守安装方式。KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为
ks.cfg的文件;在其后的安装过程中(不只局限于生成KickStart安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找
KickStart生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。这样,如果KickStart文
件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情。等安装完毕,安装程序会根
据ks.cfg中设置的重启选项来重启系统,并结束安装。
二,安装环境
安装pxe+kickstart批量部署系统
1 dhcp服务,这个是用来分发ip,裸机用来和pxe引导机通信获取文件
2 tftp 服务器 用来和裸机传输文件
3 http服务、ftp或nfs共享文件访问
4 ks.cfg文件 用于安装过程中交互部分自动分匹配系统配置
5 syslinux服务提供pxelinux.0文件引导
6 一台支持pxe协议的网卡主机
7 关闭selinux及iptables防火墙
安装步骤
确认操作系统版本
uname -r
2.6.32-504.el6.x86_64
[root@localhost ~]# cat /etc/issue
CentOS release 6.6 (Final)
Kernel \r on an \m
使用yum源安装所需软件
挂载光盘镜像:mount /dev/cdrom /mnt/
配置本地yum源
[root@localhost ] # cat /etc/yum.repo/yum.repo
[yum]
name=local yum
baseurl=file:///mnt
enabled=1
gpgcheck=0
配置静态ip
vim /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR=192.168.1.103
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
安装dhcp服务
[root@localhost ~] # yum -y install dhcp
配置dhcp服务,使其能够为其他服务器通过ip地址
配置192.168.1.0分发网段,,子网255.255.255.0,配置项后每行必须以;结尾
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1 10 192.168.1.50;
default-lease-time 6000;
max-lease-time 72000;
next-server 192.168.1.103;
filename "/pxelinux.0";
}
[hide]
安装httpd服务(本文通过http的方式提供服务)
[root@localhost ~] # yum -y insatll httpd
此处只是让http能够提供服务,不做任何配置
将httpd设置为开机自动启动
[root@localhost ~]# chkcpnfig httpd on
安装tftp-server服务端
yum -y install tftp-server xinted
xinted是为tftp提供的守护进程,将tftp及xinted设置为开机自启动
chkconfig tftp on
chkconfig xinted on #添加开机自启动
修改TFTP的配置文件
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
}
开启TFTP服务
tftp是由xinted来启动的,
修改完后要记得service xinetd restart
重新创建目录挂载光盘,用于安装系统使用,提供安装系统的关键文件及软件包
mkdir /var/www/html/Centos6/
mount --bind /mnt/ /var/www/html/Centos6/
启动http服务
/etc/init.d/httpd start
安装syslinux,此服务为pxe提供pxelinux.0文件
yum -y install syslinux
复制pxe所需系统内核引导文件到tftp目录下
[root@localhost /]# cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/
[root@localhost /]# cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/
[root@localhost /]# cp /mnt/isolinux/boot.msg /var/lib/tftpboot/
[root@localhost /]# cp /mnt/isolinux/vesamenu.c32 /var/lib/tftpboot/
[root@localhost /]# cp /mnt/isolinux/splash.jpg /var/lib/tftpboot/
[root@localhost /]# cp /usr/share/sysliux/pxelinux.0 /var/lib/tftpboot/
[root@localhost /]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@localhost /]# cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
修改/var/lib/tftpboot/pxelinux.cfg/default
定义了开机提示,包括开机界面
指定读取ks.cfg文件方法:
append initrd=initrd.img ks=http://192.168.1.103/ks.cfg
提供kictstart文件
kictstart文件生成有两种方式
1,直接复制/root/anaconda-ks.cfg模板,使用vim进行编辑配置
2,使用system-config-kiskstart来生成,建议使用/root/anaconda-ks.cfg 模板生成
本文以第一种方式生成,修改自己所需要的参数
使用md5加密设置管理员密码
将生成的ks.cfg文件复制到/var/www/html下
其内容如下,根据需求修改
bootloader --location=mbr
clearpart --none
graphical
firewall --disabled
firstboot --disabled
keyboard us
lang en_US
logging --level=info
url --url=http://10.28.79.201/Centos6
network --bootproto=dhcp --device=eth0 --onboot=on
reboot
auth --useshadow --enablemd5
rootpw --iscrypted xiang1995
selinux --disabled
timezone --isUtc Asia/Shanghai
install
network --bootproto=dhcp device=eth0 --onboot=on
#system bootloader configuration
bootloader --append="crashkernel=auto rhgb quiet" --location=mbr --driveorder="sda"
#clear the master boot record
zerombr
clearpart --all --initlabel
part /boot --fstype="ext4" --size=200
part swap --size=2048
part / --fstype="ext4" --grow --size=200
%packages
@base
@core
@debugging
@desktop-debugging
@desktop-platform
@directory-client
@fonts
@graphical-admin-tools
@input-methods
@internet-applications
@internet-browser
@java-platform
@legacy-x
@network-file-system-client
@office-suite
@print-client
@remote-desktop-clients
@server-platform
@server-policy
@workstation-policy
@x11
mtools
pax
oddjob
sgpio
device-mapper-persistent-data
abrt-gui
samba-winbind
certmonger
pam_krb5
krb5-workstation
libXmu
%end
[/hide]
启动后系统即可自动安装完成,无需干涉
注意:引导安装配置时应和网络设备的网段一致
修改linux服务的四处ip配置
1、网卡配置静态ip
2、配置dhcp分发的ip段、与pxe机同一ip子网
3、修改/var/tftpboot/pxelinux.cfg/default/中的ks文件位置
如:
append initrd=initrd.img ks=http://192.168.1.103/ks.cfg
4、修改ks.cfg文件中指定安装镜像的位置(光盘挂载目录)
如:
url --url=http://10.28.79.201/Centos6
关于ks文件MD5加密方式
linux kickstart之中root的密码可以使用明文,也可以使用加密过的值
rootpw –iscrypted $1$BYSimLw0$I515yLiKzudlwkIskBqQE1
就是读取加密后的值,但是这个值是怎么生成的呢?
这与linux系统的密码shadow一样,生成方法如下:
perl -e ‘print crypt("123456",q($1$BYSimLw0)),"\n"‘
## 其中123456为要给用户设置的密码,$1$BYSimLw0字符串是自定义字符串,shadow里一般用$1$后面跟8个字符这种格式。
生成的密码串样式如下:
$1$BYSimLw0$I515yLiKzudlwkIskBqQE1
中间有个$,前面算salt,后面的加密值,合在一起叫hash
crypt 本身默认用des算法
如果salt以$1$开头就使用md5算法
des算法命令如下:
perl -e ‘print crypt ("123456","/g"),"\n"‘
生成的密码串样式如下:
/guLSXipk3QEU
综上,如果你想设置自定义密码为"mypass-123"
则这样可以得到:
perl -e ‘print crypt("mypass-123",q($1$BYSimiLe)),"\n"‘
你的密码为: $1$BYSimiLe$LttB1n6yMsXP7ipq0QFQI0
这里的$1$BYSimiLe 是自定义字符串。
原帖内容:http://www.apelearn.com/bbs/thread-731-1-1.html
本文出自 “linux窝” 博客,请务必保留此出处http://xiangcc.blog.51cto.com/10201823/1741110
原文地址:http://xiangcc.blog.51cto.com/10201823/1741110