——自動獲取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網路(自動)安裝伺服器 已經有2165 次圍觀
本文地址: http://coctec.com/docs/linux/show-post-203749.html