一、概念與原理
什麼是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://192.168.1.210/Centos6
network --bootproto=dhcp --device=eth0 --onboot=on
reboot
auth --useshadow --enablemd5
#perl -e 'print crypt("acgcommittee.com",q($1$BYSimiLe)),"\n"'
rootpw --iscrypted $1$BYSimiLe$x/Gre5TYTTEEghm/K0TC.1
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 --bytes -per -inode=4096 --fstype="ext4" --size=128
#part swap --bytes -per -inode=4096 --fstype="ext4" --size=1024
#part / --bytes -per inode=4096 --fstype="ext4" --grow --size=1
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 是自定義字符串。