以前的文章都是針對ia32和x86_64的,網路安裝IA64的機器有點問題,最關鍵的就是pxelinux不支援IA64,取而代之的是elilo,這是HP做的。
安騰的機器最特別的就是EFI了,在之前有篇EFI的讀書筆記可以參考。簡單來說,要實現網路安裝,做法如下:
1. 配置DHCP,和之前一樣配置
2. 配置TFTP,和之前一樣配置
3. 和其他的不一樣了,/tftpboot目錄下空空如也,什麼都沒有,這是因為IA64上根本沒有sysconfig-config-netboot這個RPM了。所以,一切自己來。首先, cp /boot/efi/efi/redhat/elilo.efi /tftpboot,這就相當於pxelinux.0;然後,配置。可以參考elilo的文檔netbooting.txt。elilo.efi搜尋設定檔的邏輯是這樣的(和pxelinux相似,但不完全一樣):
(1)在目前的目錄下尋找<HEX IP Address>.conf這樣的檔案,也就是根據DHCP獲得的IP地址,將IP地址變成16進位,然後尋找這樣的檔案,比如C0A80018.conf。和pxelinux不同的是,pxelinux.0在目前的目錄下的pxelinux.cfg目錄下尋找,elilo.efi就在目前的目錄下尋找;pxelinux.0尋找的設定檔沒有.conf尾碼,但elilo.efi的設定檔要以.conf為尾碼
(2)找不到就找elilo-ia32.conf, elilo-ia64.conf
(3)最後找elilo.conf
我們顯然用方法1,這樣多台機器就能對應多個設定檔,這些設定檔裡面就可以定義自己的ks檔案了
4. 將第一張光碟片的images/pxeboot/vmlinuz, initrd.img兩個檔案拷貝到/tftpboot下
5. 書寫elilo的設定檔,這裡有個樣板:
-
CODE: SELECT ALL
-
prompt
timeout=1
default=lniautoconf
relocatable
image=vmlinuz
label=lniautoconf
initrd=initrd.img
append="ks=ftp://192.168.0.254/ks/24.ks ksdevice=eth0 ramdisk_size=81920"
幾個注意點:
(1)和pxelinux的設定檔不一樣,每個配置項和value之間有個“=”號,pxelinux配置項和value是以空格隔開的。
(2)image=vmlinuz,也就是定義核心檔案的一行,不能寫在label一行的後面
(3)append裡面,pxe裡面有的initrd=initrd.img這裡不用寫了。但是ramdisk_size一項一定要注意寫,這裡寫的是81920,也就是80M。如果ramdisk太小的話,就會出現一個錯誤:在核心啟動的時候會詢問我們root分區的配置,然後kernel panic,Linux提示我們在append裡面添加root=XXX的配置,這是因為ramdisk裡面放不下需要的東西,所以根分區/沒有形成(原來Linux是在記憶體中形成一個根分區嘛,也就是initrd.img了),所以linux嘗試在硬碟上尋找根分區,所以需要root的配置。
ramdisk裡面放的是linux核心,還有initrd.img,在IA64裡面核心和這個initrd.img加起來有8M多,所以8192這個大小肯定是不夠的,調大就OK了。
所以現在回想起來原來做的pxelinux中的配置,這個ramdisk_size也要調大才行。以前因為i386和x86_64中,核心+initrd.img加起來沒有8M這麼大,所以以前沒有問題。
(4)timeout一項裡面定義的時間,單位是十分之一秒,填寫20,就表示等待2秒
6. 配置vsftpd,和前面一樣
7. 書寫ks檔案,和ia32,x86_64一樣,因為都是CentOS 4.4嘛,唯一需要修改的就是根據管理節點上的anaconda.ks,修改一下package那部分的配置。IA64的package和其他的有點不同。
8. 管理節點上配置OK了,開啟每台機器,進入boot maintain management, 將網路啟動add到boot option裡面去,網路啟動的boot file就是含有MAC這樣關鍵字的boot option。然後就可以網路啟動了,安裝完成後,CentOS 4.4就自動出現在EFI boot菜單的第一個了!我發現這個EFI還是非常不錯的,這樣我就可以將網路啟動設成第一個,等CentOS裝完了,CentOS的啟動項就自動放到第一個去了,從而避免了第二次網路啟動。