Win2003伺服器RPL遠端啟動服務的安裝與實現

才智咖 人氣:2.47W
Win2003伺服器RPL遠端啟動服務的安裝與實現
摘 要:介紹了在Windows 2003 Server、Windows 2000 Server等作業系統上安裝遠端啟動服務的原理與,採用VC6.0程式設計,成功實現了把Windows NT4.0 的遠端啟動服務程式移植安裝到Windows 2003 Server、Windows 2000 Server等伺服器上。編寫的軟體具有使用方便、相容穩定可靠等特點。為在新作業系統上安裝無盤工作站、無盤終端提供了良好基礎。關鍵詞:遠端啟動服務;RPL;Windows 2000 Server;無盤工作站
1      引言在客戶機/伺服器體系結構中,無盤工作站以其成本低廉、具有最大程度的的安全性和最簡便的可維護管理性等突出優點得到了廣泛[1,2,3,4]。無盤站顧名思義就是不使用本機磁碟驅動器的機工作站。無盤站是怎樣工作的呢?無盤站在使用時必須連線入網路並配備至少一臺網路伺服器,無盤站的支援依靠的是網路伺服器上的遠端啟動服務。遠端啟動服務(Remoteboot)是 Windows NT Server 和Novell NetWare提供的一項功能,它支援使用伺服器硬碟而不是工作站硬碟上的軟體啟動 MS-DOS 和 Windows 工作站。工作站的網路適配卡上必須裝有一個RPL(Remote Program Load遠端初始程式載入)ROM 晶片。帶有RPL的網路介面卡發出引導記錄請求的廣播(broadcasts),遠端啟動服務伺服器就自動地建立一個連線來響應它,並載入MS-DOS或 Windows 啟動檔案到工作站的記憶體中。
Novell NetWare及Windows NT都提供了無盤工作站利用Boot ROM遠端啟動的功能。WindowsNT4.0就集成了遠端啟動服務程式,在安裝作業系統時,可選擇安裝該服務。這些作業系統都能支援無盤工作站採用DOS、Win3.1、Win95、Win98等作業系統。因Windows NT作業系統具有操作簡便等特點,逐漸代替了NetWare作業系統,使以前廣泛採用Novell NetWare無盤工作方式的使用者,大多開始採用Windows NT作業系統。
隨著計算機軟硬體檔次的提高,及無盤Win98技術、無盤Win2000、無盤WinXP及無盤終端等技術的實現,無盤網路的應用越來越廣泛。網路作業系統也由WinNT升級為的Win2000 Server和Win2003 Server。但非常遺憾的是,微軟在新的 Win2000 Server 和 Win2003 Server 中不再支援RPL遠端啟動了。由於Windows 2003 Server、Windows 2000 Server伺服器比 NT伺服器可以提供的更多的服務、更穩定的系統和更高的安全性。因而使用者都希望把無盤網路的伺服器升級為新的伺服器作業系統,這樣就需要在Windows 2003 Server、Windows 2000 Server伺服器上安裝具有遠端啟動服務的軟體。
Windows NT4.0 中的遠端啟動服務軟體是整合在NT安裝軟體中的,沒有單獨的Setup或Install程式,不能直接在 Win2003 Server 或 Win2000 Server中安裝。如果從頭設計編寫遠端啟動服務軟體,是比較困難的。我們從NT4.0中提供相關RPL服務的軟體有幾百個,就可看出該系統的複雜性。能否通過別的方法把NT4.0中的遠端啟動服務轉移到Windows 2003或 Win2000裡呢?根據這一設想,我們開展了相關。2      遠端啟動服務安裝軟體的`設計與實現2.1  WinNT 4.0遠端啟動服務程式工作原理通過對 Windows NT 4.0 安裝遠端啟動服務的過程及工作情況,我們瞭解到,Windows NT 4.0 主要是把光碟中的 Clientsrpl 目錄中的檔案無變化地拷貝到伺服器 Winnt目錄下面,其中有BBLOCK目錄、BIN目錄、FITS目錄、RPLFILES目錄和資料庫檔案等。
另利用把 I386 中與遠端啟動服務和管理及需要的動態連線庫檔案等解壓到 Winntsystem32 目錄中,主要把
_      解壓為      ;
_            解壓為      ;
_            解壓為      ;
_            解壓為      ;
_            解壓為      ;
_            解壓為      ;
_            解壓為      ;
其中 是遠端啟動服務程式,是遠端啟動管理程式,是網絡卡引數配置程式。這三個檔案執行時,需要呼叫動態連線庫和。
檔案拷貝安裝後,又在登錄檔中新增服務註冊資訊為:
[HKEY_LOCAL_MACHINESYSTEMControlSet001ServicesRemoteBoot]
"Type"=dword:00000010
"Start"=dword:00000002
"ErrorControl"=dword:00000001
"ImagePath"="%SystemRoot%system32"
"DisplayName"="遠端啟動服務"
"ObjectName"="LocalSystem"
[HKEY_LOCAL_MACHINESYSTEMControlSet001ServicesRemoteBootParameters]
"BackupInterval"=dword:00000018
"Directory"="C:WINNTRPL"
"Startup"=dword:00000000
[HKEY_LOCAL_MACHINESYSTEMControlSet001ServicesRemoteBootEnum]
"0"="RootLEGACY_REMOTEBOOT000"
"Count"=dword:00000001
"NextInstance"=dword:00000001
其中:"ImagePath"="%SystemRoot%system32" 指出了遠端啟動服務程式所在的目錄路徑;遠端啟動服務啟動後,就是根據登錄檔的這項資訊,找到程式,並執行之。另"Directory"="C:WINNTRPL" 指出了RPL檔案目錄所在磁碟位置,遠端啟動服務程式就是到該目錄下獲取無盤站配置檔案資料資訊,為無盤站提供遠端引導檔案的
2.2  手工移植遠端啟動服務程式到Win2003伺服器根據上步的遠端啟動服務程式在WinNT上安裝的情況,我們能不能把這些程式等以相同方式拷貝到Win2003伺服器上,而能正常執行,提供遠端啟動服務呢。如果手工配置能成功,就可以編寫一安裝程式,方便使用者安裝該服務。下面是我們手工操作的步驟。
1、我們用資源管理器把光碟上 Clients 下面的 RPL 目錄拷貝到 Win2003 伺服器的 Winnt目錄下。因光碟上檔案是隻讀屬性的,拷貝後的檔案也是隻讀屬性的,所以需要把拷貝後所有檔案的只讀屬性去掉。
2、在WinNT中是把、、、和等檔案拷貝到 Winntsytem32 目錄下面的,我們準備也把這幾個檔案拷貝到Win2003 伺服器的 Winntsystem32 目錄下,可拷貝時發現該目錄下面已有和。這兩個檔案已是Win2003版本的,不能用NT4.0的這兩個檔案覆蓋,否則Win2003伺服器的執行。可2003版本的該動態連線庫檔案中又沒有提供對RPL支援的函式,不拷貝這兩個檔案,RPL服務就不能執行。
怎樣解決這一呢?考慮到EXE檔案在執行時,是首先在當前目錄下呼叫其需要的動態連線庫DLL的,若找不到的話,才到系統目錄(Winntsystem32)下面去尋找呼叫。因此可以考慮把這些檔案安裝到別的目錄中,只要安裝在相同目錄下面,就不影響等程式呼叫支援RPL的動態連線庫和了。為了好管理,我們試著把這幾個檔案也全拷貝到了RPL目錄下。
3、現在可以匯入登錄檔專案了。因為上步的遠端啟動服務及管理等程式檔案沒有安裝在系統目錄中,必須修改登錄檔相關專案,因為安裝到了RPL目錄下,所以要把登錄檔項:
"ImagePath"="%SystemRoot%system32"
修改為      "ImagePath"="%SystemRoot%rpl"
如果我們是把Win2003系統目錄安裝到D盤的,是把RPL目錄拷貝到 "D:WINNT" 目錄下面的,還必須把
                 "Directory"="C:WINNTRPL"
修改為:      "Directory"="D:WINNTRPL"
匯入該登錄檔檔案後,重新啟動伺服器後,就發現遠端啟動服務已成功運行了。這樣,遠端啟動服務就成功從Windows NT4.0上移植到了Win2003伺服器上。


2.3  編寫自動安裝遠端啟動服務的程式對於一般機使用者來說,用手工在Win2003上安裝遠端啟動服務,比較麻煩,容易出錯。因此有必要編寫一自動安裝程式。我們用VC++6.0程式設計完成了這一RPL安裝軟體。使用者只需把有RPL檔案的NT4.0安裝光碟放入計算機光碟機,或拷貝到計算機硬碟上,執行即可實現安裝。
軟體在執行時,將自動探測NT4.0光碟的Clientsrpl和i386的目錄;利用VC的getenv("windir"),就可以探測Win2003 Server的系統所在盤和Winnt目錄,利用CopyFile(lpExistingFileName, lpNewFileName, bFailIfExists)等程式碼可以實現把RPL目錄檔案拷貝到系統的WinNT目錄下。利用WinExec程式碼和程式,可以實現把i386下面的_等檔案,解壓為等,並拷貝到RPL目錄下。根據上面RPL等檔案實際安裝的目錄路徑,自動修改登錄檔需要的遠端啟動服務程式和RPL目錄所在的路徑。用RegOpenKeyEx、RegCreateKey及RegSetValueEx等程式碼可實現登錄檔資訊的匯入[5]。
另利用CoCreateInstance等程式碼,在桌面和程式組管理工具上建立遠端啟動管理程式的捷徑,方便使用者使用遠端啟動的管理程式。在Winntsystem32目錄下,建立批命令檔案,可自動呼叫Winntrpl目錄下面的 程式,方便使用者使用RPLCMD命令登入網絡卡引數。安裝完畢後,自動要求使用者重新啟動計算機,以使遠端啟動服務開始執行。2.3  新增用於無盤引導的DLC等協議RPL服務需要IPX協議、DLC協議和NetBEUI協議的支援,安裝RPL前軟體要自動探測系統是否已安裝了這些協議,否則將自動提示使用者新增這些協議,或自動安裝。
可在Win2003 Server 版本中,微軟已不在支援DLC和NetBEUI協議了,因此需要我們自己編寫這兩個協議的安裝程式。實際上我們採用了上面介紹的RPL安裝思路,同樣實現了該協議的安裝。該部分程式整合在上面的RPL安裝程式中,若發現系統沒安裝這些程式,就自動把DLC和NetBEUI協議的驅動程式檔案等解壓到伺服器上,修改登錄檔,實現協議的安裝。
   
3      結束語
利用該技術已開發出穩定的RPL安裝軟體,已通過網站 向用戶提供下載服務。通過大量使用者使用證明,該安裝軟體使用方便,安全可靠,實現了在Win2000 Server和Win2003 Server等作業系統上安裝遠端啟動服務程式的目的。

[1]      姚衛新. Windows NT4.0下無盤工作站的建立方法[J]. 微型機與,2000,(3):53-55.
[2]      王曉,林學華. NOVELL無盤使用與改造升級常見與[J]. 計算機應用,2001,21(1):79-81.
[3]      洪錫軍,張奎亭等. Windows NT無盤工作站的組建[J]. 計算機應用,2001,(6):134-137.
[4]      原麗. Windows NT的無盤遠端引導及實現方法[J]. 內蒙古與,2002,(7):73-74.
[5]      Microsoft. MSDN Library Visual Studio 6.0 2000[CP/DK].2000