歡迎您光臨本站 註冊首頁

利用TFTP、DHCP和PXE自架Linux網路(自動)安裝伺服器

←手機掃碼閱讀     火星人 @ 2014-03-29 , reply:0

——自動獲取IP網路(自動)安裝Red Hat Enterprise Linux 4.0的伺服器架設實例

實現自動獲取IP網路安裝linux是這樣的:客啟端PXE網卡啟動——>通過Bootp協議——>DHCP伺服器——>獲得IP——>從TFTP上下載 pxelinux.0以及系統內核文件vmlinuz、initrd.img——>啟動系統——>(到指定地點去下載ks.cfg文件——>根據ks.cfg文件去NFS/HTTP/FTP伺服器自動)下載RPM包及安裝系統——>完成安裝。

注意:以下的所有試驗都是在WinXP SP2下的VMWare5.5.1中完全安裝的RHEL AS4中實現的。實現基本步驟如下:

步驟1:

1)把ISO文件或系統安裝光碟掛載到一個目錄

[root@rhel]#mkdir /media/rhel4

[root@rhel]#mount -o loop,ro /root/RHEL4.iso /media/rhel4 #掛載ISO文件

[root@rhel]#mount -o loop,ro /dev/cdrom /media/rhel4 #掛載光碟
2)8. 如果在開機時自動載入,可在/etc/fstab加一行:

[root@rhel]#vi /etc/fstab

/root/RHEL4.iso /media/rhel4 nfs intr

3)掛載ISO后,把isolinux目錄下的initrd.img、vmlinuz都複製到/tftpboot/linux-install/下:

[root@rhel]#cp /media/rhel4/isolinux/initrd.img /tftpboot/linux-install/

[root@rhel]#cp /media/rhel4/isolinux/vmlinuz /tftpboot/linux-install/

4)如果沒有RHEL AS 4的ISO文件,可以建立一個共享目錄(如:rhel)把RHEL的第一張光碟所有內容複製到這個目錄下,然後把第二、三、四張光碟的RPMS目錄下的rpm包都複製到/rhel/RedHat/RPMS目錄下,並開啟NFS服務。把上面的的掛載目錄/media/rhel4/改為建立的rhel目錄即可,其他操作同上。

步驟2:

1)安裝DHCP伺服器包(使用RPM包安裝DHCP)。

[root@rhel]#cd /rhel/RedHat/RPMS/

[root@rhel]#rpm ?ivh dhcp-3.0p12-6.14.i386.rpm

[root@rhel]#rpm ?ivh dhcp-devel-3.0p12-6.14.i386.rpm

[root@rhel]#rpm ?ivh dhclient -3.0p12-6.14.i386.rpm

2) 配置DHCP伺服器,。/etc/dhcpd.conf通常包括三部分:parameters、declarations 、option。

DHCP配置文件中的parameters(參數):
ddns-update-style 配置DHCP-DNS 互動更新模式。
default-lease-time 指定確省租賃時間的長度,單位是秒。
max-lease-time 指定最大租賃時間長度,單位是秒。
hardware 指定網卡介面類型和MAC地址。
server-name 通知DHCP客戶伺服器名稱。
get-lease-hostnames flag 檢查客戶端使用的IP地址。
fixed-address ip 分配給客戶端一個固定的地址。
authritative 拒絕不正確的IP地址的要求。
DHCP配置文件中的declarations (聲明):
shared-network 用來告知是否一些子網路分享相同網路。
subnet 描述一個IP地址是否屬於該子網。
range 起始IP 終止IP 提供動態分配IP 的範圍。
host 主機名稱 參考特別的主機。
group 為一組參數提供聲明。
allow unknown-clients ?deny unknown-client 是否動態分配IP給未知的使用者。
allow bootp;deny bootp 是否響應激活查詢。
allow booting?deny booting 是否響應使用者查詢。
filename 開始啟動文件的名稱,應用於無盤工作站。
next-server 設置伺服器從引導文件中裝如主機名,應用於無盤工作站。
DHCP配置文件中的option(選項):
subnet-mask 為客戶端設定子網掩碼。
domain-name 為客戶端指明DNS名字。
domain-name-servers 為客戶端指明DNS伺服器IP地址。
host-name 為客戶端指定主機名稱。
routers 為客戶端設定默認網關。
broadcast-address 為客戶端設定廣播地址。
ntp-server 為客戶端設定網路時間伺服器IP地址。

time-offset 為客戶端設定和格林威治時間的偏移時間,單位是秒。

注意:如果客戶端使用的是視窗操作系統,不要選擇「host-name」選項,即不要為其指定主機名稱。
運行DHCP伺服器還需要一個名為 dhcpd.leases 的文件,保持所有已經分發出去的 IP 地址。在Redhat Linux 發行版本中,該文件位於 /var/lib/dhcp/ 目錄中。如果您通過 RPM 安裝 ISC DHCP,那麼該目錄應該已經存在。dhcpd.leases的文件格式為:
Leases address {statement}
典型的文件內容如下:
lease 192.168.1.255 { #DHCP伺服器分配的IP地址#
starts 1 2005/05/02 03:02:26; # lease 開始租約時間#
ends 1 2005/05/02 09:02:26; # lease 結束租約時間#
binding state active;
next binding state free;
hardware ethernet 00:00:e8:a0:25:86; #客戶機網卡MAC地址#
uid "\001\000\000\350\240%\206"; #用來驗證客戶機的UID標示#
client-hostname "cjh1"; #客戶機名稱#
}
注意lease 開始租約時間和lease 結束租約時間是格林威治標準時間(GMT),不是本地時間。
第一次運行DHCP伺服器時dhcpd.leases是一個空文件,也不用手工建立。如果不是通過 RPM 安裝 ISC DHCP,或者 dhcpd 已經安裝,那麼您應該試著確定 dhcpd 將其 lease 文件寫到何處,並確保該文件存在。也可以手工建立一個空文件:
[root@rhel]#touch /var/lib/dhcp/dhcpd.leases

編輯DHCP伺服器配置文件,這裡是一個示例:

[root@rhel]#vi /etc/dhcp.conf

#全局配置

ddns-update-style interim;

ignore client-updates;

allow booting;

allow bootp;

#子網的(多)作用域

subnet 192.168.1.0 netmask 255.255.255.0 {

option routers 192.168.1.1;

option subnet-mask 255.255.255.0;

option nis-domain "domain.org";

option domain-name "domain.org";

option domain-name-servers 192.168.1.1;

filename "/linux-install/pxelinux.0";

range dynamic-bootp 192.168.1.50 192.168.1.100;

default-lease-time 21600;

max-lease-time 43200;

subnet 192.168.1.0 netmask 255.255.255.0 {

option routers 192.168.1.1;

option subnet-mask 255.255.255.0;

option nis-domain "domain.org";

option domain-name "domain.org";

option domain-name-servers 192.168.1.1;

filename "/linux-install/pxelinux.0";

range dynamic-bootp 192.168.1.150 192.168.1.200;

default-lease-time 21600;

max-lease-time 43200;



3) 配置DHCP的客戶端,設置為自動啟動聯網,則要修改你的網路配置文件,添加,或用ntsysv配置也可以:

[root@rhel]#vi /etc/sysconfig/network

NETWORKING=yes

讓引導的時候啟動聯網,或者使用:
[root@rhel]#echo 「NETWORKING=yes」>/etc/sysconfig/network

然後再修改你的網卡配置文件:
[root@rhel]#vi /etc/sysconfig/network-scriptes/ifcfg-eth0

應該包含這幾行

DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes

4) 修改/etc/sysconfig/dhcpd文件,配置DHCP伺服器在哪個設備上啟動,這樣對於帶有兩張網卡的DHCP伺服器更安全:

[root@rhel]#vi /etc/sysconfig/dhcpd

DHCPDARGS=eth0

5)開機自動在所有正常的運行級別中啟動DHCP服務

[root@rhel]#chkconfig --list dhcpd

[root@rhel]#chkconfig dhcpd on

6)啟動DHCP服務:啟動伺服器的目的是幫助在待安裝機器上啟動Red Hat Linux 安裝程序。啟動伺服器上需要搭建一個DHCP 伺服器和一個TFTP 伺服器。前者是為了給待安裝機器分配IP地址,後者則是提供了一個讓待安裝機器下載啟動鏡像的途徑。

啟動方法一:

[root@rhel]#service dhcpd restart

啟動方法二:

[root@rhel]#/etc/rc.d/ini.d/dhcpd restart

7)配置DHCP中繼代理,編輯/etc/sysconfig/dhcrelay

[root@rhel]#vi /etc/sysconfig/dhcrelay

INTERFACES=」eth0」

DHCPSERVERS=」192.168.1.65」

啟動DHCP中繼代理:

[root@rhel]#service dhcrelay restart

步驟3:

這個TFTP服務可以不用配置,因為大都是相同的!可以默認。

1)編輯TFTP 伺服器的配置文件,配置文件如下:

[root@rhel]#vi /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

}

2)啟動TFTP服務的話要啟動xinetd這個守護服務:

[root@rhel]#server xinetd.d restart

步驟4:

1) 將/usr/lib/syslinux/下的啟動鏡像文件pxelinux.0拷到TFTP伺服器/tftpboot/linux-install/下:

[root@rhel]#cp /usr/lib/syslinux/pxelinux.0 /tftpboot/linux-install/

2) 將/isolinux/下的isolinux.cfg複製到TFTP服務/tftpboot/linux-install/pxelinux.cfg/下:

[root@rhel]#cp /media/rhel4/isolinux/isolinux.cfg /tftpboot/linux-install/pxelinux.cfg/default

3) 將/isolinux/下的所有名為.msg文件拷到TFTP伺服器/tftpboot/linux-install/下:[root@rhel]#cp /media/rhel4/isolinux/*.msg /tftpboot/linux-install/

4)配置客戶端顯示的目錄,修改/tftpboot/linux-install/boot.msg,如下:

[root@rhel]#vi /tftpboot/linux-install/boot.msg

- To install or upgrade in graphical mode, press linux.

- To install or upgrade in text mode, press test.

- To install or upgrade in rescue mode, press rescue.

- To install or upgrade in auto_ks install mode, press ks.

- Use the function keys listed below for more information.

[F1-Main] [F2-Options] [F3-General] [F4-Kernel] [F5-Rescue]^O07

5)/tftpboot/linux-install/pxelinux.cfg/default此文件可以默認不用配置,但也可以修改:

[root@rhel]#vi /tftpboot/linux-install/pxelinux.cfg/default

default linux

prompt 1

timeout 600

display boot.msg

F1 boot.msg

F2 options.msg

F3 general.msg

F4 param.msg

F5 rescue.msg

F7 snake.msg

label linux

kernel vmlinuz

append initrd=initrd.img ramdisk_size=8192

label test

kernel vmlinuz

append initrd=initrd.img text ramdisk_size=8192

label rescue

kernel vmlinuz

append rescue initrd=initrd.img ramdisk_size=8192

label ks

kernel vmlinuz

append ks=nfs:192.168.1.65:/tftpboot/linux-install/huang-ks.cfg initrd=initrd.img ramdisk_size=8192

label expert

kernel vmlinuz

append expert initrd=initrd.img ramdisk_size=8192

label lowres

kernel vmlinuz

append initrd=initrd.img lowres ramdisk_size=8192

步驟5:

配置NFS伺服器

1) 編輯NFS伺服器配置文件 /etc/exports,以允許其它機器通過NFS訪問目錄/madia/rhel4,文件內容如下:

[root@rhel]#vi /etc/exports

/media/rhel4/ *(ro,sync)

/tftpboot/linux-install/ *(ro,sync)

2) 重新啟動NFS服務以使新配置生效

[root@rhel]# service nfs restart

步驟6:

複製/root下的anaconda-ks.cfg文件到/tftpboot/linux-install/並改名為huang-ks.cfg

[root@rhel]#cp /root/anaconda-ks.cfg /tftpboot/linux-install/huang-ks.cfg

2)配置自動安裝參數,修改/tftpboot/linux-install/huang-ks.cfg,如下:

[root@rhel]#vi /tftpboot/linux-install/huang-ks.cfg

#Generated by Kickstart Configurator

#platform=x86, AMD64, 或 Intel EM64T

#System language

lang zh_CN

#Language modules to install

langsupport en_US --default=zh_CN

#System keyboard

keyboard us

#System mouse

mouse

#Sytem timezone

clearpart --all

part /boot --fstype ext3 --seze=128

part / --fstype ext3 --size=4000

part /home --fstype ext3 --size=256

part swap --seze=512

timezone Asia/Shanghai

#Root password

rootpw --iscrypted $1$cNKZCOfZ$1g1p9Q4x0x6x2sHHZYinK1

#Reboot after installation

reboot

#Install OS instead of upgrade

install

#Use NFS installation Media

nfs --server=10.0.2.202 --dir=/media/rhel4

#System bootloader configuration

bootloader --location=mbr

#Clear the Master Boot Record

zerombr yes

#Partition clearing information

clearpart --linux --initlabel

#System authorization infomation

auth --useshadow --enablemd5

#Network information

network --bootproto=dhcp --device=eth0

#Firewall configuration

firewall --disabled

#Do not configure XWindows

skipx

#Package install information

%packages --resolvedeps

@everything

kernel

grub

kernel-devel

e2fsprogs

步驟7:

讓DHCP伺服器在chroot jail(chroot「監牢」)中運行:

dhcpd運行在jail需要幾個庫文件,可以使用ldd(library Dependency Display縮寫)命令,ldd作用是顯示一個可執行程序必須使用的共享庫。
[root@rhel]#ldd dhcpd
[root@rhel]#ln ?s libc.so.6 => /lib/tls/libc.so.6 (0x42000000)
[root@rhel]#ln ?s /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
在「監牢」中創建lib目錄,並將庫文件複製到其中。手工完成比較麻煩的,此時可以用jail軟體包來幫助簡化chroot「監牢」建立的過程:

1)Jail軟體的編譯和安裝
Jail官方網站是:http://www.jmcresearch.com/ ,最新版本:1.9a。
[root@rhel]#Wget http://www.jmcresearch.com/static/dwn/projects/jail/jail_1.9a.tar.gz #下載jail軟體
[root@rhel]#tar xzvf jail.tar.gz #解壓縮到當前目錄

[root@rhel]#vi jail/READEM;vi jail/doc/INSTALL #查看安裝文檔說明

[root@rhel]# cd jail/src/Makefiles; #把安裝路徑/tmp/jail為/usr/local
[root@rhel]#make; make install

2)用jail創建監牢

jail軟體包提供mkjailenv、addjailuser和addjailsw三個Perl腳本作為其核心命令。
mkjailenv:創建chroot「監牢」目錄,並且從真實文件系統中拷貝基本的軟體環境。addjailsw:從真實文件系統中拷貝二進位可執行文件及其相關的其它文件(包括庫文件、輔助性文件和設備文件)到該「監牢」中。addjailuser:創建新的chroot「監牢」用戶。
停止當前dhcpd服務,然後建立chroot目錄:
[root@rhel]#/sbin/service dhcpd start
[root@rhel]#mkjailenv /chroot/
[root@rhel]#mkjailenv
為「監牢」添加dhcpd程序的過程:
[root@rhel]# addjailsw /var/chroot/ -P /usr/sbin/dhcpd
[root@rhel]# addjailsw
將dhcpd的相關文件拷貝到「監牢」中(可做可不做):
[root@rhel]# mkdir -p /chroot/dhcp/etc
[root@rhel]# cp /etc/dhcpd.conf /chroot/dhcp/etc/
[root@rhel]# mkdir -p /chroot/dhcp/var/state/dhcp
[root@rhel]# touch /chroot/dhcp/var/state/dhcp/dhcp.leases
重新啟動dhcpd伺服器:
[root@rhel]# /chroot/usr/sbin/dhcpd
使用ps命令檢查dhcpd進程:
[root@rhel]# ps -ef | grep dhcpd
root 2402 1 0 14:25 ? 00:00:00 /chroot/usr/sbin/dhcpd
root 2764 2725 0 14:29 pts/2 00:00:00 grep dhcpd
注意此時進程名稱已經改變,使用檢查dhcpd運行的埠:
[root@rhel]# netstat -nutap | grep dhcpd
udp 0 0 0.0.0.0:67 0.0.0.0:* 2402/dhcpd
埠號沒有改變。現在dhcpd已經成功運行在「監牢」中。

步驟8:

啟動客戶機進行測試,可以在WinXP SP2下的VMWare5.5.1中新建一個虛擬機,從網路啟動安裝來測試是否配置成功。

對伺服器而言,要確保網卡正常工作,並具備廣播功能。對客戶機而言,還要確保客戶機的網卡正常工作。如果dhcpd進程沒有啟動,那麼可以瀏覽消息文件/var/log/messages。
網路中的客戶機卻沒辦法取得IP地址一般是Linux DHCP伺服器的網卡沒有設置具有MULTICAST功能。為了讓dhcpd(dhcp程序的守護進程)能夠正常的和DHCP客戶機溝通,需要修改路由表以激活MULTICAST功能;
[root@rhel]# route add -host 255.255.255.255 dev eth0
如果報錯:255.255.255.255:Unkown host
[root@rhel]# vi /etc/hosts#加入一行:
255.255.255.255 dhcp
DHCP客戶端程序和DHCP伺服器不兼容,不同版本使用DHCP客戶端程序和DHCP伺服器也不相同。Linux提供了四種DHCP客戶端程序:pump, dhclient, dhcpxd, 和dhcpcd。了解不同Linux發行版本的伺服器端和客戶端程序對於常見錯誤排除是必要的。腳本 附加配置文件
Red Hat Linux 9.0的dhclient 無 /sbin/ifup /etc/sysconfig/network,/etc/sysconfig/network-scripts/ifcfg-eth0

參考上面的方法,大家可以嘗試配出完美的伺服器來。

[火星人 ] 利用TFTP、DHCP和PXE自架Linux網路(自動)安裝伺服器已經有2230次圍觀

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