pxe 遠程安裝linux系統

火星人 @ 2014-03-09 , reply:0


今天和同事去機房安裝硬碟,拆開機器,發現SCSI線不夠長,只能接一個硬碟.看來只能用新硬碟替換下老硬碟,可是去的時候沒有帶任何光碟,無法給新硬碟安裝操作系統,同事說可以回去用PXE,遠程安裝系統.以前對PXE也有一些了解,不過沒有實踐過.在網上查了如下資料:

基本原理

  1) 什麼是PXE
  PXE(Pre-boot Execution Environment)是由Intel設計的協議,它可以使計算機通過網路啟動.協議分為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





[火星人 via ] pxe 遠程安裝linux系統已經有172次圍觀

http://www.coctec.com/docs/linux/show-post-55674.html