冷呆獸試驗場

在Linux上架設RIS安裝XP與2003 - 2

前一篇說明了Windows Remote Install Server on Linux的一般部份,這篇來寫一些在試著架設過程中所遇到的三個重點問題與解法。

首先是要安裝Windows XP會出現"Tftp Failed."這個訊息,在PXE開機後鍵入winxp,接著就看到全黑的畫面左上角只有這幾個字的情形。不管在Windows 2003的RIS,或是這次的RIS on Linux都有遇過這個狀況,目前還是不知道在2003 RIS上的解法,所以就不多作敘述。在Linux內的話,原本的/tftproot內,並不是實際放著winxp與win2k3的安裝檔,而是用soft link到其他目錄的,但是就遇到了這個狀況,後來把安裝檔直接搬到/tftproot底下就沒問題了。或許這是我這邊的環境問題,因為看了很多參考網頁都沒人寫出這種情形。

Tftp問題解決後,接著遇到的是INF的問題,在安裝Windows XP的時候,讀完開機檔進入藍底畫面時,就出現了這個訊息:

INF file P></PROPLIST></RESP></RMCSEQ> is corrupt or missing, status 21

中間那個像是XML的部份並不是打錯,是真的就長那樣,一開始是用Dell PowerEdge 1850來當測試安裝機,後來再怎麼試都不對,裝了一台VM來試驗,結果是正常的,完全沒有遇到這個問題,在百思不解的狀況下,我只能用非常手段解決這個詭異的問題,在/tftproot/rule檔案內加上這行:

r P></PROPLIST></RESP></RMCSEQ> winxp.sif

強制將這個字串換成安裝過程中應該對應的檔案名稱,雖然完全是偷吃步,但是真的有效!!

最後一個問題就是SCSI Controller Driver的問題了,在過去用光碟片手動安裝時,都需要再使用磁片放著SCSI Controller的驅動程式,並在安裝過程按F6載入,但是RIS的速度那麼快,根本沒有機會讓你按F6再載入text mode的driver,所以一定要在RIS這邊作修改,讓RIS在安裝時自動載入該有的driver。

在試過Windows上RIS的新增driver方式都無效之後,又努力的找了許多參考網頁,終於在這篇的reply中發現了很關鍵的部份,就是在text mode下時,RIS找driver並不會找到更下層的部份,而是只有找$oem$\textmode這個目錄裡面,所以目前的目錄結構就變成是下面這樣

/tftproot  
├ inf  
├ win2k3  
│├ i386  
│└$oem$  
│ └textmode  
└ winxp  
  ├ i386  
  └$oem$  
    └textmode

將要載入的SCSI Controller Driver放到textmode目錄內,再修改/tftproot/winxp.sif,增加下面幾行﹝以1850的PERC 4/Di為例﹞:

[MassStorageDrivers]  
"DELL PERC RAID Products for Windows 2000" = "OEM"  

[OEMBootFiles]  
TXTSETUP.oem  
percraid.cat  
MRAID2K.sys  
Oemsetup.inf  
nodev.inf  
Mraid35x.sys

注意上面[MassStorageDrivers]裡的裝置名稱必需是driver中txtsetup.oem檔案裡面有的裝置名稱,不然在載入驅動程式時就會出現錯誤。只有需要在text mode載入的裝置才需要有這樣的動作,其他要另外裝driver的裝置,只要把inf檔放進/tftproot/inf目錄內,把sys檔放進i386目錄內,重跑一次infparser.py再重新啟動binlsrv.py,就會在安裝過程中載入了。

在解決上面的問題之後發生了小插曲,在Windows XP安裝過程中都能看得到硬碟,而且可以刪除及建立磁區,而且主要檔案載入完重開機之後也是繼續安裝,一直到順利安裝完成,接下來就是開機完只看到XP logo,就重開機了。這個狀況在安裝Windows 2003 Server卻沒有發生,看了一些文章之後,大概知道問題是在inf檔,因為Dell的Server官方並不支援Windows XP。在檢查了oemsetup.inf之後發現,Windows XP的區段雖然有出現,但只有裝置資訊,並沒有作任何的安裝動作,所以自己就參考了2000的區段對XP的部份作了修改,改好之後就算完成了Windows XP與Windows 2003 Server的RIS on Linux架設,兩種系統都可以順利安裝完成,而且可以正常開機進入系統。

上面三個問題都主要是在靠著tftpd傳輸的部份,所以如果有詳細的tftpd log可看的話,會很有幫助,可以在tftpd的設定檔內修改server_args的內容成這樣:

server_args = -s /tftpboot -m /tftpboot/rules -vv

重啟tftpd之後,看到的log就會很詳細了,也比較好找出問題點在哪。