pxe 遠程安裝linux系統
1) 什麼是PXE
PXE(Pre-boot Execution Environment)是由英特爾設計的協議,它可以使計算機通過網
絡啟動.協議分為client和server兩端,PXE client在網卡的ROM中,當計算機引導時,
BIOS把PXE client調入內存執行,並顯示出命令菜單,經用戶選擇后,PXE client將放置在
遠端的操作系統通過網路下載到本地運行.
PXE協議的成功運行需要解決以下兩個問題:
既然是通過網路傳輸,那麼計算機在啟動時,它的IP地址由誰來配置;
通過什麼協議下載Linux內核和根文件系統
對於第一個問題,可以通過DHCP Server解決,由DHCP server來給PXE client分配一個
IP地址,DHCP Server是用來給DHCP Client動態分配IP地址的協議,不過由於這裡是給PXE
Client分配IP地址,
在配置DHCP Server時,需要增加相應的PXE特有配置.
至於第二個問題,在PXE client所在的ROM中,已經存在了TFTP Client.PXE Client使
用TFTP Client,通過TFTP協議到TFTP Server上下載所需的文件.
這樣,PXE協議運行的條件就具備了,下面我們就來看看PXE協議的工作過程.
2) 工作過程
在上圖中,PXE client是需要安裝Linux的計算機,TFTP Server和DHCP Server運行在另外
一台Linux Server上.Bootstrap文件、配置文件、Linux內核以及Linux根文件系統都放置
在Linux Server上TFTP伺服器的根目錄下.
PXE client在工作過程中,需要三個二進位文件:bootstrap、Linux 內核和Linux根文
件系統.Bootstrap文件是可執行程序,它向用戶提供簡單的控制界面,並根據用戶的選擇
,下載合適的Linux內核以及Linux根文件系統.
具體配置過程如下:
是安裝必要的服務,DHCPD,TFTP-SERVER,NFS(一般默認就有了)
dhcpd和tftp-server都有對應的rpm,直接安裝就可以了.
# vi /etc/xinetd.d/tftp
============= ========== =========== ============ ============
service tftp
{
disable = no (默認是yes,這裡改成no,啟用它)
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -u nobody -s /tftpboot //-s 表示用/tftpboot作
為tftp目錄的根目錄.
per_source = 11
cps = 100 2
flags = IPv4
}
tftp是由xinted來啟動的,修改完后要記得service xinetd restart
# vi /etc/dhcpd.conf
============= ========== =========== ============ ============
ddns-update-style interim;
ignore client-updates;
default-lease-time 21600;
max-lease-time 43200;
authourtative;
next-server 192.168.1.103;
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
range 192.168.1.1 192.168.1.100;
default-lease-time 21600;
max-lease-time 43200;
filename "/pxelinux.0";
option domain-name-servers 202.106.0.20;
}
這裡的 pxelinux.0就是上面提到的bootstrap,上面已經指定了tftp的根目錄,
這裡用相
對路徑.
next-server 192.168.1.103;這句一開始我並沒有加上,當要安裝系統的機器啟動以後,在查
找pxelinux.cfg目錄下的配置文件的時候,就死活找不到了.經過很長時間的等待,出現一個
boot:的提示符,告訴我:can't load kernel image:linux,一開始以為
是/tftpboot/pxelinux.cfg/default的配置文件有誤,檢查后沒問題.
google了半天,總算查到了一個帖子,說可能是dhcp3.0的一個bug,需要加上這個參數來指定
DHCP SERVER的IP.修改配置文件加入此句后,重啟dhcp,然後再重新啟動客戶機,這次速度大
大加快,順利通過.
3 配置支持PXE
# mkdir /tftpboot
# cp /usr/lib/syslinux/pxelinux.0 /tftpboot
把LINUX第一張安裝光碟上/image/pxeboot/initrd.img和vmlinuz 以及isolinux/*.msg考到
/tftpboot目錄下(*.msg也可以不拷,重點是initrd.img和vmlinuz,沒有內核是無法引導的)
# cd /tftpboot
# mkdir pxelinux.cfg
# vi defaultdefault centos5
prompt 1
timeout 30
label centos5
kernel vmlinuz
append ks=nfs:192.168.1.103:/root/inst/ks initrd=initrd.img devfs=nomount
ramdisk_size=9216
#append initrd=initrd.img devfs=nomount ramdisk_size=9216
這裡的ks=nfs:192.168.1.103:/root/inst/ks 文件是指定kickstart配置文件,可以在安裝
中不用人工干預,自動按預設的參數安裝.實現安裝過程的全自動.
4 配置NFS服務
# vi /etc/exports
/root/inst 192.168.1.0/24(ro,sync) //這裡是/root/inst 而不是/root/inst/
# mkdir /home/iso
拷貝安裝LINUX的ISO文件到這個目錄
5 需要開啟的系統服務
/dhcpd/network/nfs/portmap/syslog/tftp/xinetd/
service dhcpd start
service portmap start
service nfs start
附上ks文件的內容.
install
nfs --server=192.168.1.103 --dir=/root/inst
lang en_US.UTF-8
keyboard us
network --device eth0 --bootproto static --ip 192.168.1.220 --netmask
255.255.255.0 --gateway 192.168.1.1 --nameserver 192.168.1.1
#network --device eth0 --bootproto DHCP
rootpw --iscrypted $1$WvFbqnpm$m94fa4AopXI/kfYOYbWMW.
firewall --enabled --port=22:tcp
#firewall --disabled
authconfig --enableshadow --enablemd5
selinux --disabled
timezone --utc Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="rhgb quiet"
clearpart --all
zerombr yes
clearpart --linux --initlabel
part /boot --fstype ext2 --size=256
part / --fstype ext3 --size=8192
part /opt --fstype ext3 --size=8192
part /usr --fstype ext3 --size=16384
part swap --size=4096
part /home --fstype ext3 --size=1 --grow
reboot //加入這行后裝完系統后可以自動重啟,需要注意的是機器的啟動順序不能是網卡優
先,否則會循環裝系統........
%packages --resolvedeps
@ everything
grub
kernel
kernel-devel
e2fsprogs
本文出自 「飛天豬^-^ 祥子[zhang4..」 博客,請務必保留此出處http://zhang45xiang.blog.51cto.com/813708/425309