Linux Kickstart無人值守安裝
3)用於網絡啓動的內核文件
將 RedHat 安裝光盤目錄中的 '''images/pxeboot/{vmlinuz,initrd.img}''' 啓動文件複製到某個安裝目錄,比如:'''/tftpboot/ ''':
[root@qiuri Server]# cp /media/rhel5/images/pxeboot/{vmlinuz,initrd.img} /tftpboot/
由於多個客戶端可以從一個PXE服務器引導,PXE引導映像使用了一個複雜的配置文件搜索方式來查找針對客戶機的配置文件。如果客戶機的網卡的MAC地址爲'''88:99:AA:BB:CC:DD''',對應的IP地址爲192.168.1.195,那麼客戶機首先嚐試以MAC地址爲文件名匹配的配置文件,如果不存在就以IP地址來查找。根據上述環境針對這臺主機要查找的以一個配置文件就是 /tftpboot/pxelinux.cfg/01-88-99-aa-bb-cc-dd。如果該文件不存在,就會根據IP地址來查找配置文件了,這個算法更復雜些,PXE映像查找會根據IP地址16進制命名的客戶機配置文件。例如:192.168.1.195對應的16進制的形式爲C0A801C3。(可以通過syslinux軟件包提供的gethostip命令將10進制的IP轉換爲16進制)
如果C0A801C3文件不存在,就嘗試查找C0A801C文件,如果C0A801C也不存在,那麼就嘗試C0A801文件,依次類推,直到查找C文件,如果C也不存在的話,那麼最後嘗試default文件。
總體來說,pxelinux 搜索的文件的順序是:
/tftpboot/pxelinux.cfg/01-88-99-aa-bb-cc-dd
/tftpboot/pxelinux.cfg/ C0A801C3
/tftpboot/pxelinux.cfg/ C0A801C
/tftpboot/pxelinux.cfg/ C0A801
/tftpboot/pxelinux.cfg/ C0A80
/tftpboot/pxelinux.cfg/ C0A8
/tftpboot/pxelinux.cfg/ C0A
/tftpboot/pxelinux.cfg/ C0
/tftpboot/pxelinux.cfg/C
/tftpboot/pxelinux.cfg/default
對於一臺需要支持很多安裝機器的安裝服務器來說,將配置寫在與IP地址對應的文件裏很不靈活。把所有配置都集中在default文件中是個不錯的主意,可以減輕配置文件維護負擔。接下來創建/tftpboot/pxelinux.cfg/ 目錄,該目錄用於存放客戶端的配置文件。
[root@qiuri Server]# mkdir /tftpboot/pxelinux.cfg
將光盤中的 '''isolinux/isolinux.cfg''' 文件複製爲 '''/tftpboot/pxelinux.cfg/default'''
[root@qiuri Server]# cp /media/rhel5/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
查看default文件內容:
以下內容根據原文件略加修改並做了註釋(注:該文件中的空行和以 '''#''' 開頭的行都將被忽略)
# 默認啓動的是 'label linux' 中標記的啓動內核
default linux
# 顯示 'boot: ' 提示符。爲 '0' 時則不提示,將會直接啓動 'default' 參數中指定的內容。
prompt 1
# 在用戶輸入之前的超時時間,單位爲 1/10 秒。
timeout 60
#顯示某個文件的內容,注意文件的路徑。默認是在 /tftpboot 目錄下。也可以指定位類似 'install/rhel4.4-inst/boot.msg' 這樣的,路徑+文件名。
display boot.msg
F1 boot.msg #按下 'F1' 這樣的鍵後顯示的文件。注意路徑。默認是 /tftpboot。注:syslinux 官方網站上說目前只能使用 F1-F10。
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
# 'label' 指定你在 'boot:' 提示符下輸入的關鍵字。
# 比如:
# boot: linux[ENTER]
# 這個會啓動 'label linux' 下標記的 kernel 和 initrd.img 文件。
# 這裏還定義了其它幾個關鍵字:
# boot: text
# boot: ks
# kernel 參數指定要啓動的內核。同樣要注意路徑,默認是 /tftpboot 目錄。
# append 指定追加給內核的參數,能夠在 gurb 裏使用的追加給內核的參數,在這裏也都可以使用。
# 使用 kickstart 安裝。
# 可以在 ks 參數後直接指定 kickstart 文件的位置。
label linux
kernel vmlinuz
append ks=nfs:192.168.1.1:/mnt/install/ks.cfg initrd=initrd.img
label text
kernel vmlinuz
append initrd=initrd.img text
label ks
kernel vmlinuz
append ks initrd=initrd.img
… …
3、安裝配置NFS服務器
安裝介質存儲在服務器上的一個目錄中,可以使用各種網絡協議訪問它,比如 HTTP,FTP,和NFS。也就是我們前面提到的OS Server。這裏使用 NFS 服務來提供安裝介質,只需要將系統光盤內容拷貝放到共享目錄下即可。
創建共享目錄,並將光盤內容拷貝到共享目錄中:
[root@qiuri Server]#mkdir /mnt/install
[root@qiuri Server]#cp /media/rhel5/* /mnt/install
安裝NFS並將共享目錄發佈出去
[root@qiuri Server]# vi /etc/exports
/mnt/install *(ro,sync)
~
"/etc/exports" 1L, 25C written
重啓服務使配置生效。
[root@qiuri Server]# service portmap restart
停止 portmap: [確定]
啓動 portmap: [確定]
[root@qiuri Server]# service nfs start
啓動 NFS 服務: [確定]
關掉 NFS 配額: [確定]
啓動 NFS 守護進程: [確定]
啓動 NFS mountd: [確定]
檢查目錄/mnt/install是否被正確共享:
[root@qiuri Server]# shoumount –e locahost
Export list for localhost:
/mnt/install *
[root@qiuri Server]# chkconfig --level 35 nfs on
4、配置Kickstart安裝
通常,我們在安裝操作系統的過程需要大量的人機交互過程,減少交互過程,爲了提高安裝效率Red Hat Linux 開始支持一個稱爲 kickstart 的功能。使用這種方法,只需事先定義好一個Kickstart自動應答配置文件(通常存放在安裝服務器上),並讓安裝程序知道該配置文件的位置,在安裝過程中安裝程序就可以自己從該文件中讀取安裝配置,這樣就避免了繁瑣的人機交互,實現無人值守的自動化安裝。
我們可以通過多種方法生成Kickstart配置文件,無論使用哪種方法無非就是創建一個應答文件,當你安裝好一臺Red Hat Linux機器,Red Hat Linux 安裝程序都會創建一個 kickstart 配置文件,記錄你的真實安裝配置。如果你希望實現和某系統類似的安裝,可以基於該系統的kickstart配置文件來生成你自己的kickstart配置文件。 該文件位於/root/anaconda-ks.cfg。
這裏我直接使用該文件,拷貝本文件到/mnt/install下。
[root@qiuri Server]# cp /root/anaconda-ks.cfg /mnt/install/ks.cfg
[root@qiuri Server]# chmod a+r /mnt/install/ks.cfg
# Kickstart file automatically generated by anaconda.
install
nfs --server=192.168.1.1 --dir=/mnt/install #這個選項告訴安裝程序:到服務器192.168.1.1的NFS共享目錄 /mnt/install下尋找安裝介質
key 2515dd4e215225dd
lang zh_CN.UTF-8
keyboard us
xconfig --startxonboot
network --device eth0 --bootproto dhcp
rootpw --iscrypted $1$3xvzZgwz$1jYjrh/XtXLblT00Mn3Ys0
firewall --enabled --port=22:tcp
authconfig --enableshadow --enablemd5
selinux --enforcing
timezone --utc Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="rhgb quiet"
… …
clearpart --all --drives=sda --initlabel
part / --fstype ext3 --size=130000
part swap --fstype swap --size=2048
part /backup --fstype ext3 --size=100 --grow
%packages
@office
@admin-tools
… …
emacs
gcc43-c++
libgfortran43
5、配置客戶端PXE引導安裝
最後設置客戶端BIOS選擇從網卡啓動。具體方法因BIOS版本不同而異。
網卡中的PXE代碼會聯繫DHCP服務器來獲取IP地址以及啓動鏡像,然後啓動鏡像被載入並運行。
安裝完成後,安裝程序會提示你重新啓動機器。重新啓動機器時切記要在BIOS裏改成從硬盤啓動。如果仍然從光盤啓動機器,又會重複前面的自動安裝步驟。