国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Linux > 正文

Linux Remote-Boot mini-HOWTO

2024-07-26 00:31:22
字體:
供稿:網(wǎng)友
作者: Marc Vuilleumier Stückelberg, Sandro Viale and David Clerc
譯者: 曾元佑 yytseng@ms16.hinet.net
v2.5.2, 九月 1997 


--------------------------------------------------------------------------------
這份文件將說明如何使一群PC擁有相當(dāng)穩(wěn)定的 Server-based 架構(gòu) , 此法可使每臺PC在開機時選擇使用何種作業(yè)系統(tǒng). 此種架構(gòu)的精要就是 TCP/ip bootPRom ,它可以讓使用者在開機時選擇不同的開機區(qū)塊. 此份文件的最新版本,包含超文件連結(jié)到可供下載的軟體及其它相關(guān)的資訊,都可以在這個網(wǎng)址找到 http://cuiwww.unige.ch/info/pc/remote-boot/howto.html. linuxdoc-SGML,DVI 及 postscript各種版本都在這個目錄下. 
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

1. 有那些變更...

1.1 ...從 1.x 版後 ? 
一大堆變動: 

Linux server-based 的架構(gòu)與文件已全部重新設(shè)計. 目前是以 RedHat Linux 4.1為主 , kernel 更新成2.0.30 . 更簡化了 Linux 系統(tǒng)的設(shè)定與維護(hù). 
DOS 和 Windows 的設(shè)定也重新設(shè)計過, 幾乎換成 "hard-disk based" . 如此使得架構(gòu)更加簡化, 開機速度變快, 降低網(wǎng)路的負(fù)載,甚至允許Windows NT workstation 采用 server-based setup (雖然還未在本文中談到). 
目前我們用一臺 DHCP server, 遵尋 DHCP/BOOTP extensions (RFC 2132). 
在這個架構(gòu)也用了 Samba 免費的 SMB server , 來取代 Novell server. 事實上, 我們正要丟掉我們的 Novell server... 

1.2 ...從 2.4 版後? 
新的 開機旗幟 功能已加在 bpunzip 這個工具程式. 它現(xiàn)在可以在 VESA-相容型的顯視卡下工作. 開機旗幟可以用 ESC鍵; 從螢?zāi)恢幸频? 其他的按鍵已不會干擾到 TFTP 的傳輸. MRZIP,有一只臭□, 在解壓縮 磁碟壓縮影像 時會導(dǎo)至 "Bad compressed data" 錯誤, 我們已發(fā)現(xiàn)并修正了. 另外在 BPUNZIP 中發(fā)現(xiàn)的兩只會導(dǎo)至電腦當(dāng)機的臭□也被修正了. 

更加完整的 . 加入連結(jié)到相關(guān)軟體 ( Shared LAN Cache) 及文件 (from J. Carlstedt, of The Cathedral School of Uppsala, Sweden). 

加入 UNZIPREG 原始程式碼的連結(jié)位址. 這些資訊是用來跟Windows 95 OSR2搭配使用的. 

bootptag Linux版的工具程式改采 DHCP 取代 BOOTP. 現(xiàn)在可以跟 Solaris 2.6 DHCP server 一起搭配使用. 



--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

2. 簡介
這里所描述的架構(gòu)是從1996 夏季開始在 CUI, University of Geneva所發(fā)展的. 這個資訊系有許多的伺服器(大多是 Unix 與 Novell), 和一些個人電腦, 可依用途分為兩類: 

學(xué)生使用 
研究與輔助教學(xué) 
以下是我們發(fā)展這種架構(gòu)的目標(biāo): 
任何一臺電腦都可以執(zhí)行 Linux, DOS, Windows 3.1 or Windows 95. 每次開機時可以選擇所需要的作業(yè)系統(tǒng). 
所有的軟體, 包含作業(yè)系統(tǒng), 可以放在伺服器上, 便於安裝與更新. 
客戶端電腦可以不對伺服器作寫入的狀態(tài)下正常工作(為了安全性),home 目錄除外. 
盡可能減少客戶端的設(shè)定. 客戶端可以自動由伺服器取得 IP 組態(tài)設(shè)定, 這些資訊放在一個小檔案, 可供各種作業(yè)系統(tǒng)使用. 
大部份的電腦都各自擁有硬碟, 客戶端可以靠這優(yōu)點來降低網(wǎng)路負(fù)載與存放使用者的暫存檔. 
所有的使用者都 必須注冊才能使用電腦. 
注冊資訊必須所有的作業(yè)系統(tǒng)都相同且使用者可以存取個人的目錄,而每種作業(yè)系統(tǒng)都一致. 
學(xué)生所使用的電腦在每次啟動時必須清理一次. 也就是像剛安裝完的樣子. 
每臺電腦可以防毒. 
這些限制使我們選用來自 Köppen EDV GmbH 的 TCP/IP Bootprom 因為這種 Bootprom 跟作業(yè)系統(tǒng)無關(guān)而令我們相當(dāng)感興趣; 它只是模擬出一臺軟碟機, 而且當(dāng)以 Linux 開機時就跟 DOS 或 Windows 95 一樣簡單. 另外,開機磁碟的影像檔,可由自制的程式來取代, 這個功能使我們能在作業(yè)系統(tǒng)啟動前,先做許多初始設(shè)定. 


2.1 網(wǎng)路 
Geneva 大學(xué)擁有 B 級網(wǎng)域, 分割成許多子網(wǎng)路. CUI 共使用了四個子網(wǎng)路, 其中之一供學(xué)生使用. 

原本,我們的個人電腦使用兩種網(wǎng)路的通訊協(xié)定: IPX 與 IP. IPX 這一類,我們由一臺 Novell Netware 3 的伺服器共用 DOS 與 Windows的軟體. IP 這一類, 我們由一臺 SUN 伺服器靠 NFS 共用 Linux 軟體及個人的分割區(qū). 

在我們最新的架構(gòu)中, 已不再使用 IPX 通訊協(xié)定. 改由一臺 Unix 伺服器 (可以是 Linux 或 SUN)擔(dān)任, Linux 客戶端可透過 NFS 而 DOS與Windows則由 SMB (NetBIOS) over TCP/IP 共用軟體及使用者的檔案. 


2.2 它是如何工作 

客戶端個人電腦開機後, 在 TCP/IP Bootprom 獲得控制權(quán)之前先做自我測試. 
Bootprom 送出 BOOTP/DHCP 要求而取得 IP 組態(tài)參數(shù). 
如果伺服器收到個人電腦所送出的要求, 就會送回 BOOTP/DHCP 回應(yīng),內(nèi)容包括客戶端的 IP 位址, 預(yù)設(shè)通訊閘道, 及開機影像檔. 否則, 伺服器會忽略這個要求. 
Bootprom 由 TFTP 通訊協(xié)定從伺服器下載開機影像檔, 并同時用這個開機影像檔虛擬出一臺 BIOS 層級的軟碟機. 
個人電腦透過這個開機影像檔 開機, 這個開機檔只是單純的開機程式(并不包括作業(yè)系統(tǒng)). 
如果這臺電腦是學(xué)生的個人電腦, 開機程式開始就由 TFTP 通訊協(xié)定下載一個小 的文字檔其內(nèi)容是敘述這臺電腦的硬碟規(guī)劃狀態(tài). 透過這個小檔案, 硬碟的分割區(qū)將 重新規(guī)劃且 DOS 所使用的分割區(qū)也被快速格式化. 當(dāng)所有的工作完成, 這些工作將在開機後三秒內(nèi)完成. 
開機程式接著讓使用者選擇所需的作業(yè)系統(tǒng). 
依照使用者的選擇, 新的開機影像檔將從伺服器透過 TFTP 通訊協(xié)定下載. 
如果選擇使用 Linux, 開機影像檔將包含 kernel loader 及壓縮過的 kernel, 此 kernel 將支援 NFS root 及caching 檔案系統(tǒng): 
第一點, IP 組態(tài)是透過 BOOTP/DHCP 通訊協(xié)定由 Novell 伺服器所接收. 
這個 kernel 可以透過 NFS 掛上一個只能讀的 root filesystem. 
掛上一塊有寫入功能的小型 ramdisk . 
如果在硬碟內(nèi)發(fā)現(xiàn) swap 分割區(qū), 則為它做好準(zhǔn)備并啟動它. 
如果在硬碟內(nèi)發(fā)現(xiàn) linux 分割區(qū), 掛上它并為它做好 caching NFS 分割區(qū). 
IP 組態(tài)一完成, 啟動所有的服務(wù), 也啟動 xdm. 
要求使用者登入. 這臺工作站就續(xù). 
如果選擇使用 DOS 或 Windows, 開機影像檔將是一個可以處理 FAT16 分割區(qū)壓縮影像的程式. 透過 TFTP 下載開機影像檔, 并且儲存在硬碟中以供未來使用, 包含任何使用過的分割區(qū). 更嚴(yán)緊的說法是, 這個程式可以在以下的狀況中執(zhí)行: 
這個程式下載一個檢查檔 (512 bytes)以確認(rèn)所選作業(yè)系統(tǒng)的開機影像檔 
如果所需的影像檔并不存在磁碟中, 或者與檢查檔不吻合 (可能是由於開機影像檔已被變更或者一個新 的版本被安裝到伺服器上), 整個影相像檔將透過 TFTP 通訊協(xié)定來傳輸. 
作業(yè)系統(tǒng)的影像檔解壓縮到第一個 FAT16的分割區(qū), 傳輸速度大約是以每秒一 mega bytes. 
程式接著跳到所選的作業(yè)系統(tǒng)的開機磁區(qū), 而它現(xiàn)在已存在本機的硬碟中. 
對 DOS 與 Windows 3.1 而言, 我們使用免費的 Microsoft LanManager for DOS (請透過網(wǎng)路找到較接近您的 mirror 站; 它是由三個檔案所組成 disk1 to disk4) 當(dāng)成 SMB 客戶端. Microsoft LanManager 可藉 DHCP 而支援動態(tài)設(shè)定. 在登入後, 使用者會看到 DOS, 并且可以打 win 啟動 Windows 3.1 . 請注意這點, DOS 與 Windows 3.1 就如同安裝在客戶端一般. 對 Windows 95 而言, 我們也使用 Microsoft SMB 客戶端 (叫 Client for the Microsoft Network), 它也可藉 DHCP 而支援動態(tài)設(shè)定. 我們?yōu)榻档途W(wǎng)路負(fù)載使用了 Shared LAN Cache, 一個強而有力的 network-to-disk cache 程式. 
學(xué)生所使用的電腦可以很暴力的直接關(guān)掉電源而不會有任何問題, 因為硬碟的資料在每次開機都會重新建立. 
對於比較 "安全的" 電腦 (如輔助教學(xué)的電腦), 或許有時會使用上述的方法來開機, 有時則直接載入硬碟內(nèi)的開機影像檔而不再清理硬碟. 這樣可以允許使用者保留資料在硬碟中. 而當(dāng)組態(tài)修正後又可以完整的更新開機影像檔就如同重新安裝一般. 


2.3 相關(guān)非商業(yè) 
這種組態(tài)已經(jīng)成功的移殖到世界上的許多地方. 少數(shù)人已經(jīng)開始篆寫一些技巧跟提示來完成這份 How-To. 如果您也曾做過但在本文件中未備引用歡迎送一份 e-mail 給 Marc.VuilleumierStuckelberg@cui.unige.ch. 如果您在重建這種組態(tài)中遇到問題, 請在詳細(xì)看一次文件 ! 

http://www.katedral.se/system/elevsyst, by Johan Carlstedt of The Cathedral School of Uppsala, Sweden. 
http://vitoria.upf.tche.br/~fred/, in portuguese, by Frederico Goldschmidt of the Passo Fundo University, Brasil. 


--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

3. 如何設(shè)定
首先, 調(diào)整機器位置使手邊有下列兩臺機器: 

伺服器, 我們是用一臺 Unix 主機. 
客戶端, 一臺已經(jīng)啟動 TCP/IP Bootprom 的個人電腦, 硬碟內(nèi)不要有重要資料. 
如果你想要測試您的組態(tài)設(shè)定而您還沒拿到 TCP/IP Bootprom, 您可以到 http://www.incom.de 下載測試版的磁片. 這個磁片可以使您的電腦就好像是插上 TCP/IP Bootprom 一般.If you want to test the configuration but you do not yet have a 

學(xué)生所使用的電腦, 我們設(shè)定 Bootprom 由網(wǎng)路開機, 不能使用硬碟開機及軟碟開機. 教學(xué)用電腦, 我們設(shè)定 Bootprom 可以由往路開機, 也允許硬碟與軟碟開機; 在你的客戶端設(shè)定 Bootprom. 

伺服器端, 設(shè)定 DHCP daemon (我們使用 Internet Software Consortium 所提供的正式版, 970329 發(fā)行). 你也必需啟動 TFTP daemon. 這份文件將假設(shè)您使用 TCP/IP Bootprom 工具磁片內(nèi)的加強型 TFTP daemon . 如果您較喜歡使用標(biāo)準(zhǔn)的 TFTP daemon, 移掉所有開機影像檔的副檔名 P, 用來支會 Bootprom 使用標(biāo)準(zhǔn)的 TFTP port (請看 TCP/IP Bootprom 文件). 

別忘了 BOOTP/DHCP 通訊協(xié)定被限制在子網(wǎng)域中使用. 如果客戶端與伺服端不在同一網(wǎng)域, 您必須在這兩網(wǎng)域間架設(shè)閘道器. 現(xiàn)在, 先假設(shè)兩臺機器在相同的網(wǎng)域中. 

首先, 我們先做所有作業(yè)系統(tǒng)都要得做的事,如: 

設(shè)定初始化硬碟的組態(tài)及清理 
設(shè)定作業(yè)系統(tǒng)選單 
測試開機流程 
然後, 對每一種作業(yè)系統(tǒng), 我們將完成下列步驟: 
建立單獨的客戶端 
把它的組態(tài)放到伺服器上 
測試遠(yuǎn)端開機客戶端 
由本尊產(chǎn)生分身 
完成這些事, 以後你所追加的客戶端只要插上 Bootprom 再加幾行到 DHCP 設(shè)定檔. 

3.1 設(shè)定開機流程 
在伺服器端的 /tftpboot 目錄下, 放下列的開機影像檔 (這些是二進(jìn)位格式) 

bpclean, 硬碟清理工具 
bpmenu, TCP/IP Bootprom 選單程式 (包含在您的 Bootprom 工具磁片) 
bpunzip, 我們的硬碟還原工具 
bphdboot, 傳送開機程序到硬碟的影像檔 

硬碟的初始化與清理
在相同的目錄下, 我們建立符號連結(jié)到 (或者直接用拷背指令)) bpclean 命名為 XXXclean (或者您認(rèn)為可以幫助您記住這是用來清理您的客戶端機器的名稱) 并且產(chǎn)生一個名為 XXXclean.tab 檔敘述您客戶端所需的硬碟分割區(qū), 及您要聯(lián)接的開機影像檔. 例如: 我們對 2 Gb 硬碟使用下面的方法 


--------------------------------------------------------------------------------

# 允許不超過 512 bytes 的說明敘述
# 十六進(jìn)制請在字首加一個 $ 錢字符

# Part |       |  Part
# type | Boot? |  Size
   6      Y       +500 Mb
  $82     N       +31 Mb
  $83     N       -50 Mb
   0

# 聯(lián)接的影像檔
/tftpboot/XXXmenu


--------------------------------------------------------------------------------

完整的檔案格式在後面會敘述. 現(xiàn)在您只要知道這些 
分割區(qū)型態(tài) 6 是指 BIGDOS, ie. 如. DOS Fat-16 由 32Mb 到 500Mb 
分割區(qū)型態(tài) hex 82 是 Linux Swap 
分割區(qū)型態(tài) hex 83 是 Linux Ext2fs 
大小如為負(fù)值,則表示我們的第三個分割區(qū)至少要占據(jù) 50 Mb 
分割區(qū)型態(tài) 0 表示是 空的 (未使用的) 分割區(qū). 
現(xiàn)在, bpclean 在不清除分割區(qū)資料內(nèi)容下,將重新寫入主要開機計錄(master boot record), 當(dāng)然也包括分割表. 

作業(yè)系統(tǒng)選單
同樣的, 建立符號連結(jié) (或者直接拷貝) bpmenu 命名為 XXXmenu (或者你認(rèn)為可以幫助您記住這是客戶端機器開機選單的名稱) 并且產(chǎn)生一個名為 XXXmenu.m 檔敘述您客戶端所需的開機選單. 您比可以手動產(chǎn)生這個檔案或透過我們寫的開機選單全營幕編輯器 menuedit.exe. 例如, 假設(shè)您用下列這個檔案: 


--------------------------------------------------------------------------------

.CLS 23
.ATT 23
.POS 23 4
.WRT Simple Boot Menu                                         /
.POS 23 5
.WRT ----------------                                         /
.POS 23 8
.WRT 1. Boot from local hard disk                             /
.POS 23 10
.WRT 2. Boot DOS and Windows 3                                /
.POS 23 12
.WRT 3. Boot Windows 95                                       /
.POS 23 14
.WRT 4. Boot RedHat Linux                                     /
.POS 23 17
.WRT Your choice :                                            /
.POS 37 17
.KEY 1 :bphdboot
.KEY 2 :linux.PX
.KEY 3 :win31.P
.KEY 4 :win95.P


--------------------------------------------------------------------------------


測試開機程序
在您的 DHCP 設(shè)定檔中加入您的客戶端. 并設(shè)定開機影像檔為 /tftpboot/XXXclean. 您可能需要重新啟動您的 DHCP 伺服器使您的變更生效. 

現(xiàn)在我們起動您的客戶端. 您可以訊速的看到由 bpclean, 所送出來的訊息, 告訴您它所建立的分割區(qū)的大小, 然後您會看到開機選單出現(xiàn)在您的營幕上. 您可以用鍵盤上的 pause 鍵來暫停以便讀取剛剛的訊息, 但是這可能會導(dǎo)致 TFTP 的連接逾時. 

如果您按下按鍵 1, 您將收到一個這樣的訊息"開機分割區(qū)存在一個無效的開機磁區(qū)" (the boot partition contains not valid boot sector). 對未被格式化過的開機分割區(qū)而言這是正常的. 因為我們現(xiàn)在還未建立任何開機影像檔所以其他的按鍵將會失效... 

現(xiàn)在我們要開始安裝各種作業(yè)系統(tǒng). 您可依您的需要來決定先做那一種. 對任何一種作業(yè)系統(tǒng), 您都需要先從軟碟來做初始化的動作. 所以我們在看到 TCP/IP Bootprom 的標(biāo)志後立刻按 space 鍵換成軟碟開機. 

有些作業(yè)系統(tǒng)會更動主要開機計錄 (master boot record). 特別是 Linux kernel loader (lilo) 會這樣做.而這種變動會因 bpclean這個程式而無法完成, 因此您最好改變客戶端的 DHCP 設(shè)定內(nèi)容使開機影像檔直接跳到 /tftpboot/XXXmenu (不做清理的動作). 別忘了要使您的改變生效,您必需重新啟動 DHCP 伺服器. 


3.2 設(shè)定 Linux 
在您的客戶端架設(shè) RedHat Linux 4.1 支援網(wǎng)路功能, kernel 原始程式碼及您所需要的軟體套件. 準(zhǔn)備未來要掛入的點 (放在 /mnt/tmp 比較有用), 設(shè)定您的 X server, 等等. 在 /usr/src/linux-2.0.27 目錄中, 您必須有 kernel 2.0.27 的原始程式碼. 

現(xiàn)在我們要加入一些修正檔, 使它升級到 2.0.30, 并且支援 TCP/IP Bootprom 及檔案快取的功能. 檔案快取是一個 把 "未確定的" NFS 檔案儲存在您硬碟中的結(jié)構(gòu), 它您可以降低網(wǎng)路負(fù)載. TCP/IP Bootprom 的支援已經(jīng)由□Marc Vuilleumier Stuckelberg 完成, 并且由 David Clerc 轉(zhuǎn)移到 kernel 2.0 . 檔案快取已經(jīng)由 Unifix GmbH 完成, 并且已 是 Unifix Linux 2.0 的一部份. TCP/IP Bootprom 及檔案快取的支援都已經(jīng)由它們的作者免費的散布. 

值得注意的是 Linux 對 NFS-Root 的支援只能架構(gòu)在 BOOTP 通訊協(xié)定, 不是 DHCP 通訊協(xié)定. 僅管 DHCP 只是 BOOTP 的延伸, Linux 也可以在 DHCP 伺服器下工作 (如果您沒有設(shè)定 DHCP 伺服器拒絕 BOOTP要求). 


產(chǎn)生 Kernel
首先, 到您的 /usr/src 目錄并加入下列修正檔, 使用這個指令 

patch -p0 < 修正檔的名稱: 

patch-2.0.28: 這是一個正式的 kernel 更新, 您一定要加入這個修正檔 
patch-config-sound: 一個美化音效設(shè)定的修正檔, 來自 Unifix Linux 2.0 
patch-PCSP: 一個較大的修正檔用來使 PC 的揚聲器模擬音效卡, 來自 Unifix Linux 2.0 
patch-bootprom: 一個小的修正檔用來產(chǎn)生特別的 kernel image, 使它可由 TCP/IP Bootprom 開機 
patch-filecache: 一個小的修正檔使 kernel 加入一些特別功能, 如 Unifix filecache. 來自 Unifix Linux 2.0 
patch-penguinlogo: 一個小的修正檔幫助您的使用者等到 Linux 系統(tǒng)完全載入 
patch-2.0.29: 另一個小的正式的 kernel 更新檔, 如果您不需要最新版的 kernel 則不用加入它 
patch-2.0.30: 又是一個正式的 kernel 更新檔, 滿大的. 一樣, 您不需要加入這項修正 (但它會改善 TCP/IP 通訊 協(xié)定). 如果在您的機器上您沒有 alpha 的原始程式碼 (這很有可能發(fā)生), 這個修正檔將出現(xiàn)兩次抱怨含入檔不存在的訊息. 不要緊張, 只要回答您要跳過這些缺少的檔案,不會發(fā)生任何問題 
接著執(zhí)行 make mrproper 及 make xconfig, 產(chǎn)生 kernel. 記住這將是客戶端電腦以 Linux 啟動時, 唯一接收到的軟體, 所以 它必須要包含啟動整個作業(yè)系統(tǒng)所需的東西. 可以使用模組方式, 但是不包括網(wǎng)路模組. 因為網(wǎng)路功能一定要放在 kernel 中. 簡而言之, 您的 kernel 至少需要以下這些 

支援網(wǎng)路 
在有 BOOTP 通訊協(xié)定下,支援 NFS-Root 
支援 filecache 
支援客戶端電腦的硬體所需的模組 
您可以使用我們的 .config 當(dāng)做起點. 如果您想要在沒有 Bootprom 的狀況下測試, 請確定您已經(jīng)在 kernel 內(nèi)包含硬碟機的支援. 
當(dāng)您的選擇完成後, 照常地輸入 make clean; make dep 接著 make zImage, make modules 與 make modules_install. 這會花一點時間... 現(xiàn)在您準(zhǔn)備去測試您的新 kernel, 先用先用 lilo. 安裝您的 kernel (參考 lilo 文件),并重新啟動您的電腦 (由硬碟啟動). 如有任何錯誤, 修正它們并再試一次. 執(zhí)行 depmod -a 計算 modules dependencies. 當(dāng)完全無誤時, 執(zhí)行 make bpImage 產(chǎn)生一個 bootimage 給 TCP/IP Bootprom 使用. 


把 Root 檔案系統(tǒng)移到 NFS
您的伺服器要有足夠的空間來保存您的整個 Linux 檔案系統(tǒng) (幾百 Megabytes). 建立一個新的目錄給 NFS 輸出, 就叫 rootfs, 并在其中建立另一個新目錄就叫 runtime. 我們使用 /export/linux/rootfs/runtime. 把它輸出成只有您的 Linux 客戶端可讀可寫, 并具有 root 的存取權(quán) ( annon=0). 例如, 我們的 NFS 是在 Solaris 下執(zhí)行, 我們用以下這個指令: 


share -F nfs -o rw=pc7971,anon=0 /export/linux/rootfs/runtime. 

在您的 Linux 客戶端掛上這個分割區(qū)并用GNU tar 把整個 Linux 檔案系統(tǒng)復(fù)制過去 (預(yù)設(shè)是 RedHat Linux). 很重要的是當(dāng)您使用 GNU tar 指令,因為所有的 tar 指令可能無法正確地處理 block device 的 special nodes . 然後編輯檔案 /export/linux/rootfs/runtime/etc/fstab 并變更根目錄的設(shè)定,使根目錄符合以 nfs mount 取代自己的硬碟機. 你還要移去 (或者 至少要變更名稱) /export/linux/rootfs/runtime/etc/sysconfig/network-scripts/ifcfg-eth0 因為網(wǎng)路裝置將由 NFS-root 初始化但不能被初始化兩次. 

現(xiàn)在在您的 /etc/lilo.conf 復(fù)制一行 linux, 例如:以 linux-nfs 為名, 并加入以下的參數(shù): 


append="root=/dev/nfs nfsroot=/export/linux/rootfs/runtime nfsaddrs=您的-ip:伺服器的-ip:閘道器的-ip:網(wǎng)路遮罩:機器名稱" 

(您的-ip 是您的 Linux 客戶端的 IP 位址,是以十進(jìn)位有點的方法表示, 伺服器的-ip 是 NFS 伺服器的 IP 位址, 閘道器的-ip 是 Linux 客戶端的預(yù)設(shè)閘道器, 網(wǎng)路遮罩 是 Linux 客戶端的網(wǎng)路遮罩 而 機器名稱 是Linux 客戶端的主機名稱). 再執(zhí)行一遍 lilo , 重新啟動您的電腦 (仍然是由硬碟機), 并選擇 linux-nfs 開機設(shè)定. 您的電腦將如先前一般啟動, 即使有一點慢. 如果在這里有某些東西不能正常工作, 您只要重新開機用您原來 local的 linux 開機設(shè)定并試著修正它. 大部份的狀況是, 您的 NFS root 設(shè)定錯誤. 如果有任何東西您不了解, 看一下 /usr/src/linux/Documentation 這些檔案... 您或許可以看看 NFS-Root-Mini-Howto. 

您可以再試一次,這次只用 append="root=/dev/nfs" 以確定 Linux kernel 可以透過 DHCP/BOOTP要求而獲得您所設(shè)定的 IP 參數(shù). 如果要這樣做, 您必須在您的 DHCP 設(shè)定檔中加入以下這些選項 (當(dāng)然是要設(shè)定您自己的網(wǎng)路組態(tài)), 加上您的機器的硬體及 IP 位址: 


--------------------------------------------------------------------------------

option subnet-mask 255.255.252.0;
option routers 129.194.68.1; 
option root-path "/export/linux/rootfs";


--------------------------------------------------------------------------------

如果您的 Linux kernel 須要再加入其它指令參數(shù), 您可以用 option option-177 來加入. 
下一步要使我們的系統(tǒng)在 唯讀的 NFS 檔案系統(tǒng)下可以工作. 


產(chǎn)生唯讀的 NFS Root 檔案系統(tǒng)
既然我們要我們的 root 檔案系統(tǒng)在大部份的 Linux 客戶端以唯讀的方式掛上, 那就要使檔案系統(tǒng)有些微的不同, 因此我們將需要寫入權(quán)限的地方以 ramdisk 或 filecache 取代. 我們把這個檔案系統(tǒng)建立在 /export/linux/rootfs 目錄下, 而標(biāo)準(zhǔn)的版本則直接放到 /runtime/ 下. 登入您的 NFS 伺服器并在 /export/linux/rootfs目錄下,建立以下的目錄跟連結(jié): 


bin -> cache/bin 
dev -> ramdisk/dev 
etc -> ramdisk/etc 
lib -> cache/lib 
root -> ramdisk/root 
sbin -> cache/sbin 
tmp -> ramdisk/tmp 
usr -> cache/usr 
var -> ramdisk/var 
cache/ 
bin -> /runtime/bin 
lib -> /runtime/lib 
sbin -> /runtime/sbin 
usr -> /runtime/usr 
mnt/ 
cdrom/ 
floppy/ 
tmp/ 
proc/ 
ramdisk/ 
dev -> /runtime/dev 
etc -> /runtime/etc 
root -> /runtime/root 
tmp -> /runtime/tmp 
var -> /runtime/var 
就如您所見的, 它看起來像正常的 root filesystem, 除了少部份幾個是重新指到 /ramdisk, 有些則重新指到 cache 目錄. 當(dāng)用唯讀的 NFS filesystem 開機, 我們將掛上一個已初始化過的 ramdisk 放在 /ramdisk 下. 同樣□ 自己硬碟的分割區(qū)將被掛在 /cache 給 NFS 快取使用. 粗略的說,這個檔案快取的原理是當(dāng)the principle of the filecache is that whenever a symbolic link from the cache subdirectory is followed, it is replaced by its target. 如果目標(biāo)自己是一個子目錄, 則每一個子目錄會轉(zhuǎn)換成一個符號連結(jié)并連結(jié)到外部檔案系統(tǒng)的原始位置. 注意檔案快取使用絕對符號連結(jié)是必須的, 即使它們在 NFS 伺服器上是無意義的. 如果您不喜歡這樣, 可以在您的 NFS 伺服器上,建立一個符號連結(jié)由 /runtime 到 /export/linux/rootfs/runtime . 
在唯讀的客戶端加入一些設(shè)定的東西是必須的, 如此才可以掛上 ramdisk, 及設(shè)定檔案快取和偵測硬體以變更設(shè)定檔. 這些都由三個程序檔和一個組態(tài)檔來完成, 您可以把它復(fù)制到您的NFS 伺服器: 


runtime/etc/rc.d/rc.ramdisk, 可以快速設(shè)定并掛上 ramdisk: 

--------------------------------------------------------------------------------

#!/bin/sh
#
# 設(shè)定一個 ramdisk 因為 root 透過 NFS 以唯讀方式掛上
#
modprobe rd
gzip -c -d /runtime/lib/ramdisk.gz | dd of=/dev/ram bs=1k > /dev/null 2>&1
mount -n -t ext2 /dev/ram /ramdisk


--------------------------------------------------------------------------------

runtime/etc/rc.d/rc.sysdetect, 這是所有的機器各自獨立的設(shè)定檔, 包括偵測及分配 區(qū)域硬碟機的分割區(qū)給檔案快取使用. 為了空間的理由我們不在此份文件可列印的版本中包含此檔, 但您可以在超文件的版本找到它; 
runtime/etc/rc.d/init.d/filecache.init 這是用來啟動檔案系統(tǒng)的: 

--------------------------------------------------------------------------------

#!/bin/sh
#
# filecache:    檔案快取:    啟動檔案快取 (給 NFS root 用)
#
# 來源功能函數(shù)庫.
. /etc/rc.d/init.d/functions

# 看看我們?nèi)绾魏艚泄δ芎瘮?shù).
case "$1" in
  start)
        if [ -e /cache -a -r /etc/filecache.conf ]; then
                echo -n "Starting NFS filecache: "
                # 把 var 與 tmp 移到區(qū)域性的硬碟機
                rm -rf /cache/var /cache/tmp
                (cd /ramdisk; tar cf - var tmp) | (cd /cache; tar xf -)
                (cd /ramdisk; rm -rf var tmp;ln -s /cache/var;ln -s /cache/tmp
)
                chmod 777 /cache/tmp
                # 啟動檔案快取
                daemon filecache -d on
                echo ""
                touch /var/lock/subsys/filecache
        fi
        ;;
  stop)
        filecache off
        rm -f /var/lock/subsys/filecache
        ;;
  *)
        echo "*** Usage: filecache.init {start|stop}"
        exit 1
esac

exit 0


--------------------------------------------------------------------------------

runtime/etc/filecache.conf, 檔案快取的設(shè)定檔 

--------------------------------------------------------------------------------

Max 100 MB 50 % #
Cache /runtime /cache


--------------------------------------------------------------------------------

前兩個檔案應(yīng)該放在前兩個檔案應(yīng)該放在 runtime/etc/rc.d/rc.sysinit, 檔案內(nèi)最前面的位置, 如下所示: 

--------------------------------------------------------------------------------

# 設(shè)定所需的  ramdisk  (給 root NFS 唯讀的機器)
if [ -e /ramdisk -a -r /etc/rc.d/rc.ramdisk ]; then
        /etc/rc.d/rc.ramdisk
fi

# 設(shè)定硬體各自獨立的參數(shù) (給每個 root NFS使用)
if [ -r /etc/rc.d/rc.sysdetect ]; then
        /etc/rc.d/rc.sysdetect
fi


--------------------------------------------------------------------------------

而第三個應(yīng)該 be bound as usual to the System V init directories: we use links named S35filecache in the rc3.d and rc5.d directories, and K80filecache in the rc0.d, rc1.d, rc2.d and rc6.d directories. 
檢查一下 rc.sysdetect 這個檔案, 并使它與您的硬體設(shè)備配合. 特別要注意的是, 如果您跟我們一樣沒有使用相同的顯示卡及螢?zāi)弧?這很可能發(fā)生的 :-), 看看它們在 /proc/pci 的回應(yīng)并依此修改敘述檔. 在每臺機器所使用的存放位置下, 其 rc.sysdetect 之中有一段內(nèi)容為, 可自訂的設(shè)定檔 (例如 printcap), a為了能每臺獨立工作, 您需要於伺服器的 dhcpd.conf 檔案中, 用特別的標(biāo)記 option-132 設(shè)定每臺機器所使用的位置. 在您繼續(xù)安裝之前, 您至少要先建立基本的幾個檔案 runtime/etc/fstab.ref 和 runtime/etc/hosts.ref , 這些將由 rc.sysdetect 敘述檔在啟動時透過偵測設(shè)定來完成, 為了動態(tài)的設(shè)定 X servver, 使用 RedHat 軟體套件, 有一件事您必須先變更的: 在 /usr/X11R6/bin 及 /usr/X11R6/lib/X11 目錄下, 有一些相關(guān)的連結(jié)設(shè)定檔及目錄應(yīng)該改成絕對連結(jié). 別忘了以後的 X server 更新安裝也要如法泡制. 

把 filecache 安裝在 runtime/bin 目錄下, 并把它的使用說明 man page 安裝在 runtime/usr/man/man8 目錄下. 把 bootptag 或 dhcptag 安裝在 runtime/usr/local/bin 目錄下, 并且 bootptag.c (或 dhcptag.c) 必須放在 runtime/usr/local/src 目錄下: 它是一個發(fā)送 BOOTP/DHCP 要求, 并以相容於 shell 的標(biāo)準(zhǔn)輸出格式回應(yīng) BOOTP/DHCP 內(nèi)容的小程式, 就如下的□例所示: 




--------------------------------------------------------------------------------

bootp_your_ip='129.194.71.32'
bootp_server_ip='129.194.77.31'
bootp_filename='XXXclean'
bootp_subnet_mask='255.255.252.0'
bootp_routers='129.194.68.1'
bootp_domain_name_servers='129.194.69.200 129.194.8.7 129.194.4.32'
bootp_host_name='pc7132'
bootp_domain_name='unige.ch'
bootp_root_path='/export/linux/rootfs'
bootp_broadcast_address='129.194.71.255'
bootp_nis_domain='cuisunnet.unige.ch'
bootp_nis_servers='129.194.69.200'
bootp_option_132='dufour'


--------------------------------------------------------------------------------

標(biāo)記的名稱與 RFC 2132 很相似. 如果您使用 dhcptag, 您將得到一些以 dhcp_ 開頭的標(biāo)記, 這些是 DHCP-規(guī)格的選項內(nèi)容; 為了顧及相容性, 其它的資訊仍然以 bootp_ 為字首. 我們使用這個程式自動設(shè)定 rc.sysdetect. 最後, 在 runtime/lib 安裝 makeramdisk script . 我們將用它自動產(chǎn)生 ramdisk 影像檔. 這些軟體都在超文件的版本中. 
現(xiàn)在試著由客戶端以 read-write NFS 開機 (仍然用硬碟開機). 它將偵測您客戶端的個別組態(tài), 并產(chǎn)生適當(dāng)?shù)臋n□ 檢查 /etc/fstab, /etc/hosts, /etc/sysconfig/network 是否設(shè)定正確. 如果您看到的不是這樣, 請在單人工作模式下重試一遍, 并找出您在 rc.sysdetect 敘述檔中所犯的錯誤. 

等到它可以正常工作, 到 /lib 目錄下執(zhí)行 ./makeramdisk. 將會花幾秒鐘, 來產(chǎn)生一個 ramdisk 影像檔給唯讀的 NFS 客戶端. 把產(chǎn)生出來得 ramdisk image 放在這 /lib/ramdisk.gz, 就這樣您的組態(tài)就緒了! 


由 Bootprom 開機
如果您還未完成它, 請安裝您的 TCP/IP Bootprom-相容的 kernel 影像檔 (可在這找到 /usr/src/linux/arch/i386/boot/bpImage) 即您伺服器上的 /tftpboot/linux.PX . rc.sysdetect 這個敘述檔用來初始化您的 Linux swap 及 Linux 資料分割區(qū). 因為要啟動它, 故編輯伺服器上 XXXclean.tab 這個檔案并改變分割區(qū)的型態(tài)由 hex 82 改為 hex 28, 及 hex 83 改為 hex 38. 這是一種未知的分割區(qū)型態(tài), 但是安裝程序檔能把它當(dāng)成預(yù)備分割區(qū)來辨識. 在 DHCP 的設(shè)定檔中, 把開機檔設(shè)定為 XXXclean , 使它能重新建立分割表. 別忘了在修改完設(shè)定檔後要重新啟動 DHCP daemon. 

最後, unexport 可讀寫的 runtime 目錄, 并 export 唯讀的 /export/linux/rootfs 目錄. 重新啟動客戶端, 這一次使用開機使用 Linux 選單的選項. 您的系統(tǒng)現(xiàn)在已是 remote-boot Linux. 


系統(tǒng)維護(hù)與更新
如果您以後想更新軟體,安裝一些錯誤修正檔或安全性修正檔, 請按照下列步驟: 

Unexport rootfs 目錄 
Export runtime 目錄為可讀可寫給您得客戶端 
設(shè)定您客戶端的 nfsroot 目錄為 runtime (在 /etc/bootptab 中設(shè)定) 
啟動您得 Linux 客戶端, 并安裝您想安裝的東東. 不要怕使用 rpm, 它可以做得很好 (只要小心當(dāng)您安裝任何軟體套件時,要注意一些您做過的修正可能有些要作修改). 
當(dāng)您完成後重新?lián)Q成正常的 export 
這是指, 您必須在 local 安裝的狀態(tài)下, 才能更新您的 server-based 設(shè)定的軟體. 

3.3 設(shè)定 DOS 6 及 Windows 3.1 
在您的客戶端電腦, 使用您喜歡的 dos 軟碟開機 (記得開機時, 按空白鍵取消 BootPROM 開機). 格式化您硬碟中的 dos 分割區(qū)并加上 /S 參數(shù), 使它放入作業(yè)系統(tǒng). 建立一個名為 DOS 的子目錄, 把 DOS 拷貝進(jìn)去. 安裝你所喜歡的網(wǎng)路客戶端程式 (例如 Microsoft LanManager), Windows 3.1, 等等. 使用 DHCP 通訊協(xié)定設(shè)定 IP 組態(tài). 

您必須恢復(fù)原本被 BootPROM 所使用掉的記憶體空間 (當(dāng) DOS 啟動後這些記憶體不再需要用到啦) 加入下面這一行到您 config.sys 內(nèi)的第一行: 



--------------------------------------------------------------------------------

device=/util/bputil.sys -r


--------------------------------------------------------------------------------

(bputil 是一個 TCP/IP BootPROM 工具磁片中的程式). 不用怕使用 EMM386 最佳化您所使用的記憶體, 您可以把網(wǎng)路卡 ROM 所占的區(qū)域納入管理, 因為它在這時已經(jīng)用不到了. 但要記得把網(wǎng)路卡所使用的 RAM 區(qū)塊不納入管理, 否則您將無法連接到您的伺服器. 
如果您不讓您的客戶端機器使用無效的登入名稱, 把我們的 nobreak.sys pseudo-device 驅(qū)動程式放在您 config.sys 的開頭處并把以下這些東西放到您的 autoexec.bat: 



--------------------------------------------------------------------------------

rem -- 我們使用 c:/logged 為一個旗號
del c:/logged >nul
:loginneeded
cls
echo Please type in your login name and passWord
echo.
net logon *
rem -- the login script 已經(jīng)建立好 c:/logged
if not exist c:/logged goto loginneeded
del c:/logged
rem -- 使 break 功能生效
echo Yes >NOBRK


--------------------------------------------------------------------------------

重新開機并在開機選單中選擇 Boot from local hard-disk 選項, 確定可以開機. 


把組態(tài)設(shè)定移到伺服器
回到伺服器上, 建立一個分享名稱為 admin , 用來放一些系統(tǒng)管理者用的東東. 如果伺服器是跑 Unix, 建議您把 /tftpboot 子目錄用 softlink 放一份到 admin , 這樣您可以直接由客戶端傳回開機影像檔. 在 admin 目錄內(nèi), 建一個 /utils 子目錄并放入如下的工具: 

mrzip.exe, 一個用來壓縮您客戶端硬碟影像檔的程式. 
mrunzip.exe, 一個用來回存您硬碟影像檔到伺服器的程式. 
您也需要把一些用來清理硬碟及產(chǎn)生壓縮影像的批次檔放到相同的目錄下,這些批次檔如下: 

--------------------------------------------------------------------------------

@echo off
if "%1"=="" goto error
echo >c:/lanman.dos/lmuser.ini
l:/utils/mrzip l:/tftpboot/%1
goto end
:error
echo Usage: MAKEIMG {image-name-without-extension}
:end


--------------------------------------------------------------------------------

現(xiàn)在回到您的客戶端, 以下將以 admin mount 為磁碟機 L: 為□例作說明接著執(zhí)行您建立的批次檔, 如果您還沒做那可以按下列的指令執(zhí)行 (不一定要用絕對路徑 ) 




--------------------------------------------------------------------------------

        L:/util/mrzip L:/tftpboot/win31


--------------------------------------------------------------------------------

一分鐘過後, 您伺服器上的 /tftpboot 子目錄下將有兩個新檔案, 名稱為 win31.imz, 是您硬碟內(nèi)容的壓縮影響檔win31.chk, 這是相關(guān)的檢查檔 (是 partition boot record 細(xì)部修改後的拷貝). 在這真正的目錄內(nèi), 只要建立一個 bpunzip 的 symbolic link (或這用拷貝的) 且命名為 win31.P. 

您的硬碟為主的遠(yuǎn)端開機設(shè)定現(xiàn)在一切就緒啦. 


測試遠(yuǎn)端開機客戶端
現(xiàn)在重新啟動您的客戶端并在開機選單中選 DOS and Windows 3.1 的選項. bpunzip 這程式將傳給您一些它產(chǎn)生影像的表格訊息, 并自網(wǎng)路下載整個開機影像檔 (因這是第一次它看到這個開機影像檔). 這將會花掉一分鐘左右. 接著它會解壓縮這個影像到 DOS 分割區(qū), 并由他開機. 這就是你要的, 您的遠(yuǎn)端開機客戶端完成啦 ! 

下一次您重新開機, 它只會解壓所這個影像檔, 大概在 30 秒內(nèi)完成. 


轉(zhuǎn)換設(shè)定檔給其他機器
如果您要為每臺機器修正一些設(shè)定 (例如預(yù)設(shè)印表機), 或者如果您需要變更一些不能透過 DHCP 通訊協(xié)定修改的網(wǎng)路設(shè)定, 您可以使用 unzipreg.exe 程式來處理, 它必須放到客戶端的 autoexec.bat (原始程式碼在 這). 這程式將讀取一個由 bpunzip 產(chǎn)生的特殊隱藏檔案, 名稱為 BOOTP.ANS, 它的內(nèi)容是由伺服器透過 BOOTP/DHCP 通訊協(xié)定回傳的. 接著, 它將讀取第一個參數(shù)所指的檔案名稱, 藉由 BOOTP/DHCP 的回應(yīng)內(nèi)容, 以 UNZIPREG: 標(biāo)簽名 : 這種格式取代所有的字串, 并把結(jié)果寫入第二個參數(shù)所指的檔案名稱. 例如, 如過您有個檔案名為 input.bat 內(nèi)容為: 




--------------------------------------------------------------------------------

set hostname=UNZIPREG:HOSTNAME:
set domainname=UNZIPREG:DOMAINNAME:
set gateway=UNZIPREG:ROUTER:
set subnetmask=UNZIPREG:SUBNET:
set printer=UNZIPREG:T180:


--------------------------------------------------------------------------------

而您執(zhí)行了這個指令 

--------------------------------------------------------------------------------

        unzipreg input.bat output.bat


--------------------------------------------------------------------------------

您將得到一個檔案名為 output.bat 包含內(nèi)容: 

--------------------------------------------------------------------------------

set hostname=pc7179
set domainname=unige.ch
set gateway=129.194.76.1
set subnetmask=255.255.252.0
set printer=laserwriter1


--------------------------------------------------------------------------------

假設(shè)您的 DHCP 設(shè)定檔定義這臺機器名為 pc7179, 領(lǐng)域名稱為 unige.ch, 等等, 而 option-180 標(biāo)記是 laserwriter1. 
也可以透過這種登入修改 Windows 桌面. 我們寫了一個小程式 simple program 用來增加 PROGMAN.INI 檔案, 允許為一群使用者設(shè)定同樣的桌面. 

在為任何一臺客戶端機器設(shè)定後, 別忘了使用 mrzip 重新建立磁碟影像檔以維持您的所有變更. 


3.4 設(shè)定 Windows 95 
在此份文件先前的版本, 我們使用過微軟公司的 Windows 95 server-based installation, 但是用這方法太過痛苦又不是那麼的有價值: 

它就真的是非常的虛擬 
大部份的軟體套件都不支援它而且如果您試著去安裝結(jié)果通常是失敗的. 包括, Microsoft Internet Explorer, OnNet 32, Novell's Protected-mode client (這較 Microsoft Client for Netware安全). 
因為微軟公司不提供 Windows 95 在真實模式下的 TCP/IP 相容的驅(qū)動程式所以您無法使用 Microsoft Network client over TCP/IP 這也就意味著您不能使用 Samba 
因為當(dāng)客戶端一啟動就會鎖住一些動態(tài)連結(jié)檔造成許多程式幾乎無法更新, 如果您試著去更新它則會出現(xiàn)違背分享(sharing violations)的錯誤. 
因此幾個月前我們放棄這份錯誤百出的資料 (您仍然可在這找到 http://cuiwww.unige.ch/info/pc/remote-boot/win95old/win95old.html) 然後換到我們這個新的 disk-based 遠(yuǎn)端啟動的概念. 基本上, 這種 Windows 95 安裝方法就跟安裝 DOS一樣容易. 

建立一臺獨立的客戶端
在客戶端用 DOS 開機, 如果您已經(jīng)設(shè)定好 DOS/Windows 3.1 那就隨便由開機選項中選一個, 或者用一個軟碟開機 (按 space 鍵可以跳過 BootPROM). 使用第一種方法的優(yōu)點是你已經(jīng)有一臺可使用網(wǎng)路的客戶端, 并且只需要把 Windows 95 的安裝磁片放到您的伺服器上的某個地方. 

如果您由軟碟開機, 您的第一步是安裝作業(yè)系統(tǒng), 方法是格式化您硬碟機的 DOS 分割區(qū)并用 /S 的選項. 如果您使用 DOS/Windows 3.1 的組態(tài), 那麼首先您要清除一些您安裝 Windows 95 時不需要的檔案以及一些在您最後的開機影像中不需要的檔案 (例如, WINDOWS 這個目錄). 

開始安裝 Windows 95, 照著步驟把它裝在 local . 安裝最後, 程式會重新啟動您的客戶端電腦, 做一些設(shè)定并再重新啟動一次. 這幾次的重新開機, 您必須再您的開機選單選擇 Boot from local hard-disk 選項. 等到您設(shè)定好您所需要的驅(qū)動程式後, 您可以執(zhí)行 defrag 做完整的硬碟重組 (包含重組未使用得磁碟空間). 

您或許也想要使用 BootPROM 所占掉的記憶體, 只要在 config.sys 第一行加上 : 



--------------------------------------------------------------------------------

device=/util/bputil.sys -r


--------------------------------------------------------------------------------

(bputil 是放在 TCP/IP Bootprom 工具磁片中). 不同於 DOS, 您避需避免在 Windows 95 中使用 EMM386 . 
如果您要使用 Windows 95 OSR2 (或叫 MSWIN 4.1, 或者 Windows 95 service pack 1, 或者 Windows 95 with Internet Explorer), 您要在 MSDOS.SYS 中的 [Options] 段加一行 (沒錯它是文字檔): 



--------------------------------------------------------------------------------

AUTOSCAN=0


--------------------------------------------------------------------------------

這樣可以使 Windows 知道您開機時不自動啟動 ScanDisk . 
當(dāng)所有的軟體都放在伺服器時, 如果您要減輕網(wǎng)路及伺服器的負(fù)擔(dān) (這將增進(jìn)您的系統(tǒng)效率) , 您可以考慮安裝這套相當(dāng)不錯的 Shared LAN Cache,由 Measurement Techniques, Inc 生產(chǎn)的 (參考 http://www.lancache.com). 這套軟體在每臺客戶端電腦執(zhí)行, 它會對所有從網(wǎng)路上取得的資料放在區(qū)域性的硬碟中快取. 即使像 MS-Office 在您第二次執(zhí)行時也會更快... 您的每臺客戶端電腦都要有一份版權(quán), 不是它還不是很貴, 這家公司對於大專院校有特惠價格. 更好的是您可以到他們的網(wǎng)頁下載免費的評估版. 



把設(shè)定檔移到伺服器
伺服器端, 如果您目前還沒有建一個名為 admin 的目錄, 那就建一個. 這將放一些系統(tǒng)管理要用的東西. 如果伺服器是 Unix 的機器, 現(xiàn)在把 admin 目錄用 softlink 到 /tftpboot 子目錄下, 這樣您可以由客戶端直接把影像檔放到這. 在 admin 目錄內(nèi), 建立一個 /utils 子目錄并把下列工具放進(jìn)去: 

mrzip.exe, 一個用來產(chǎn)生您客戶端硬碟機壓縮影像的程式. 
mrunzip.exe, 一個用來把壓縮影像檔從伺服器回存到您客戶端硬碟的程式. 
在您的客戶端開個 MS-DOS 視窗, 可以把您的 admin 用網(wǎng)路磁碟機掛在 L: 并執(zhí)行下列的指令 (不一定要使用絕對路徑, 多打幾個字無害啦 :-) 



--------------------------------------------------------------------------------

        L:/util/mrzip L:/tftpboot/win95


--------------------------------------------------------------------------------

這將在伺服器的 /tftpboot 子目錄下, 產(chǎn)生兩個新檔案, 名為 win95.imz, 一個您客戶端硬碟機的壓縮影像及 win95.chk, 檢查用的檔案 (其實內(nèi)容是把開機分割區(qū)做些許的變動). 真正的目錄, 只要建個名為 win95.P 的符號連結(jié)到 bpunzip (或者拷背一份) . 

現(xiàn)在您的 Windows 95 遠(yuǎn)端開機組態(tài)就完成啦. 


測試遠(yuǎn)端開機客戶端
現(xiàn)在重新啟動您的客戶端電腦并從開機選單中選擇 Windows 95 . bpunzip 程式將給您一些關(guān)於它更新影像表的訊息, 并且從網(wǎng)路下載整個開機影像 (如果它是第一次看到這個開機影像). 這大約會花掉兩分鐘. 接著它將解壓縮這個影像檔到 DOS 分割區(qū), 并啟動它. 就這樣, 您的遠(yuǎn)端開機客戶端就序啦! 下一次您重新開機, 它只會解開這個影像檔, 大概會花 40 秒. 


轉(zhuǎn)換為其它分身的設(shè)定
Windows 95 與 Windows 3.1 最大的不同是加入了即插即用的程式碼, 即自動偵測您的硬體設(shè)備. 它本身無舍壞處, 但問題是出在它太過靈敏, 而且有時後會出□. 

如果您試著用同樣的開機影像去啟動另一臺客戶端機器, 您將在收到一堆 Windows 偵測到新的硬體設(shè)備的訊息: 一片新的音效卡, 一棵新的硬碟機, 一片新的網(wǎng)路卡, 或者一只新的滑鼠... 會這樣的原因有二: 


這些設(shè)備可能使用不同的硬體資源 (比如, 滑鼠不是接在相同的連接埠, 音效卡不是接在同樣的擴充槽 - 沒錯, 這會被偵測到) 
這些設(shè)備可能通知 Windows 95 它們的序號 (比如, 每臺跑 Windows 95 的網(wǎng)路卡, 從最基礎(chǔ)的乙太網(wǎng)路位址就每臺都不一樣了) 
事實上 , 如果 Windows 95 的即插即用功能可以正常工作的話, 自動偵測變更的硬體設(shè)備并不會出問題, 所以如果即插即用功能失效時, 問題就來了. 例如, Windows 95 對上我們的羅技 PS2 滑鼠時就不能即插即用, 更糟的是滑鼠就消失了. 要解決這類問題方法就是, 盡可能使全部電腦有相同的設(shè)備. 
您無法避免的問題是每臺電腦的網(wǎng)路卡. 很不幸的, 給我們的 SMC EtherEX 使用的即插即用的程式碼會使電腦當(dāng)機. 唯一的解法是使 Windows 95 相信它已經(jīng)知道有這片網(wǎng)路卡, 且不需觸動即插即用機制. 這個技巧就是透過開機自動執(zhí)行檔 autoexec.bat , 自動的把關(guān)於這片網(wǎng)路卡的設(shè)定值加入 Windows 95 的系統(tǒng)注冊資訊. 要注意的是使用 PCI 的網(wǎng)路卡并不需要這個技巧. 

到您的客戶端電腦, 編輯開機自動執(zhí)行檔 autoexec.bat 并加入下列幾行: 



--------------------------------------------------------------------------------

rem --- 修正 Windows 系統(tǒng)注冊資訊以避免即插即用功能偵測
cls
unzipreg c:/lib/smc.reg c:/temp/smc.reg
regedit /L:c:/win95/system.dat /R:c:/win95/user.dat c:/temp/smc.reg
echo.
del c:/temp/smc.reg


--------------------------------------------------------------------------------

regedit 是標(biāo)準(zhǔn) Windows 95 的程式. 如果您在 Windows 95下執(zhí)行它,它可以幫您流覽您的系統(tǒng)登錄資訊, 或者如果您在 DOS 下執(zhí)行它, 它可以對您的系統(tǒng)登錄資訊做一些簡單的修正. unzipreg.exe 是一個自制的小程式, 您可以放在您的路徑下的任何地方 (原始程式至在 這). 它將讀取一個由 bpunzip 所產(chǎn)生的特別隱藏檔案, 名稱是 BOOTP.ANS, 它包含來自伺服器的原始 BOOTP/DHCP 回應(yīng)資訊. 然後, 它將讀取第一個參數(shù)的檔案(c:/lib/smc.reg), 然後以 BOOTP/DHCP 回應(yīng)的資料取代檔案內(nèi)所有以 UNZIPREG:tagname: 為格式的內(nèi)容, 接著寫入第二個參數(shù)的檔案(c:/temp/smc.reg). 
在 lib 子目錄下, 我們有個名為 smc.reg 的檔案其內(nèi)容如下: 



--------------------------------------------------------------------------------

REGEDIT4

[HKEY_LOCAL_MACHINE/Enum/ISAPNP/SMC8416/UNZIPREG:MACID:C0]
"HardwareID"="*SMC8416,ISAPNP/SMC8416"
"HWRevision"="1.0.10"
"DeviceDesc"="SMC EtherEZ (8416)"
"Class"="Net"
"Driver"="Net//0001"
"CompatibleIDs"="*SMC8416"
"Mfg"="SMC"
"ConfigFlags"=hex:10,00,00,00

[HKEY_LOCAL_MACHINE/Enum/ISAPNP/SMC8416/UNZIPREG:MACID:C0/Bindings]
"MSTCP//0001"=""

[HKEY_LOCAL_MACHINE/Enum/ISAPNP/SMC8416/UNZIPREG:MACID:C0/LogConfig]
"0000"=hex:00,04,00,00,00,20,00,00,10,00,00,00,04,00,00,00,00,00,00,00,a8,0e,/
  00,00,20,00,00,00,02,00,00,00,01,00,0c,00,00,00,00,00,00,00,00,00,e0,ff,20,/
  00,40,02,ff,03,00,00,04,03,2c,00,00,00,01,00,00,00,01,00,14,00,00,00,00,00,/
  00,00,00,00,00,00,00,00,00,e0,ff,ff,00,20,00,00,00,00,0c,00,ff,ff,0f,00,00,/
  00,00,00,2c,00,00,00,01,80,00,00,01,00,14,00,00,00,00,00,00,00,00,00,00,00,/
  00,00,00,e0,ff,ff,00,80,00,00,00,00,0c,00,ff,5f,10,00,00,00,00,00,00,00,00,/
  00

[HKEY_LOCAL_MACHINE/Enum/ISAPNP/SMC8416/UNZIPREG:MACID:C1]
"HardwareID"="*SMC8416,ISAPNP/SMC8416"
"HWRevision"="1.0.10"
"DeviceDesc"="SMC EtherEZ (8416)"
"Class"="Net"
"Driver"="Net//0001"
"CompatibleIDs"="*SMC8416"
"Mfg"="SMC"
"ConfigFlags"=hex:10,00,00,00

[HKEY_LOCAL_MACHINE/Enum/ISAPNP/SMC8416/UNZIPREG:MACID:C1/Bindings]
"MSTCP//0001"=""

[HKEY_LOCAL_MACHINE/Enum/ISAPNP/SMC8416/UNZIPREG:MACID:C1/LogConfig]
"0000"=hex:00,04,00,00,00,20,00,00,10,00,00,00,04,00,00,00,00,00,00,00,a8,0e,/
  00,00,20,00,00,00,02,00,00,00,01,00,0c,00,00,00,00,00,00,00,00,00,e0,ff,20,/
  00,40,02,ff,03,00,00,04,03,2c,00,00,00,01,00,00,00,01,00,14,00,00,00,00,00,/
  00,00,00,00,00,00,00,00,00,e0,ff,ff,00,20,00,00,00,00,0c,00,ff,ff,0f,00,00,/
  00,00,00,2c,00,00,00,01,80,00,00,01,00,14,00,00,00,00,00,00,00,00,00,00,00,/
  00,00,00,e0,ff,ff,00,80,00,00,00,00,0c,00,ff,5f,10,00,00,00,00,00,00,00,00,/
  00


--------------------------------------------------------------------------------

這個檔案一開始由 Windows 95 的 regedit 產(chǎn)生. 我們把關(guān)於網(wǎng)路卡的設(shè)定部份輸出成一個檔案 ( HKEY_LOCAL_MACHINE/Enum/ISAPNP/SMC8416) 然後用 UNZIPREG:MACID: 記號取代網(wǎng)路卡的硬體位址. 當(dāng)我們在這檔案中執(zhí)行 unzipreg , 它會自動的以網(wǎng)路卡真實的硬體位址值取代我們所設(shè)定的記號. 注意這里有個數(shù)字在 MACID 之後的有時是 C0 有時是 C1. 即使放一個不存在的網(wǎng)路卡在這個登錄檔中不會出□, 我們還是把兩項都放進(jìn)去. 
還要一次ㄡ, 這整個技巧對 PCI 網(wǎng)路卡而言并不需要. 順便一提的是, 我們可以用同樣的方法自動的配置主電腦名稱, 當(dāng) Windows 95 不能透過 DHCP 取的設(shè)定時. 我們只須加入下列幾行到我們的 smc.reg 檔案中: 



--------------------------------------------------------------------------------

[HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/VxD/VNETSUP]
"ComputerName"="UNZIPREG:HOSTNAME:"

[HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/VxD/MSTCP]
"HostName"="UNZIPREG:HOSTNAME:"

[HKEY_LOCAL_MACHINE/System/CurrentControlSet/control/ComputerName/ComputerName]
"ComputerName"="UNZIPREG:HOSTNAME:"


--------------------------------------------------------------------------------

您也可以使用同樣的機器按照機器的型態(tài)跟位置來設(shè)定其他的環(huán)境. 這個□例, 您一樣可以參考 DOS/Windows 3.1 那一段的敘述. 

在變更任何客戶端機器的設(shè)定後, 千萬別忘了用 mrzip 重新建立磁碟影像, 否則您所有的設(shè)定都會不見. 

使用這個系統(tǒng)登錄資訊的小技巧, 您的設(shè)定資訊將可以正常的轉(zhuǎn)移到所有的機器. 如果您無法避免 Windows 去偵測一些機器上的新硬體, 試著由這臺機器重新建立磁碟影像檔. 包含針對這臺機器所設(shè)定的登錄資訊也要放入磁碟影像中, 如果順利的話可以解決這個問題. 

當(dāng)磁碟影像檔解壓縮時會花一些時間 (通常是 20-30 秒.), 您可以給使用者一些訊息或者就放張漂漂的圖給他們看. 這個工作可以很簡單的完成 (看看下一篇文件的 BPUNZIP ). 

如果您想得到更多設(shè)定 Samba 的資訊與工具給遠(yuǎn)端開機的電腦使用, 我們還寫了另一份文件. 可以看看 http://cuiwww.unige.ch/info/pc. 



--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

4. TCP/IP Bootprom 相關(guān)工具程式
這一段將把我們?yōu)椤CP/IP BootPROM 所寫的程式作一些說明. 


4.1 MENUEDIT 
這是在 DOS 下執(zhí)行的程式, 用來編輯給 TCP/IP Bootprom 的開機選單敘述檔. 它很簡單, 不過比原廠所提供的開機選單敘述檔來的方便. 您可以按 F1 看到一些線上說明. 如果您想要加強他的功能 ( 比如加入剪貼功能), 我會很樂意發(fā)表您的新版本. 

原始程式為 Pascal 語法可在 這取得. 


4.2 BPHDBOOT 
此 boot image 將載入硬碟的 master boot record 并執(zhí)行它. 

這個 boot image 對於那些需要重新開機才能完成所有設(shè)定的作業(yè)系統(tǒng)是相當(dāng)方便的. 它也可以用在當(dāng)您要強迫清理硬碟的時候. 

原始程式為 Assembler 語法可在 這取得. 


4.3 BPCLEAN 
此 boot image 將重新寫入硬碟的 master boot record, 包含硬碟的分割表. 此外, 它可以快速格式化 DOS (FAT16) 資料分割區(qū) (但無法使它可開機). 因為版權(quán)的關(guān)系, 我們必須重新規(guī)劃我們的 master boot record 與 FAT16 開機磁區(qū), 除了一些遠(yuǎn)端開機的訊息外, 它們與標(biāo)準(zhǔn)的分割區(qū)大致上是一樣的. 為了使這個程式能工作, 您或許需要關(guān)掉 BIOS 對 master boot record 的保護(hù) (因為每次開機都更新一遍). 

這個程式下載與這個程式同樣主檔名的分割表敘述檔其副檔名為 .tab. 這個檔案可以包含空行, 注解由記號開始但不得超過 512 個字元. 

前四個不含空白及注解的幾行應(yīng)該包含四個硬碟分割區(qū)的敘述. 第五個不含空白及注解的那一行應(yīng)包含下一個要載入的開機影像檔名稱. 

分割區(qū)的敘述行由由空格或 tab 鍵來分割, 必須如下這三種格式: 



--------------------------------------------------------------------------------

type  boot?  1st-cyl  1st-head  1st-sect  last-cyl  last-head  last-sect
type  boot?  1st-cyl  1st-head  1st-sect  relative-size
type  boot?  relative-size


--------------------------------------------------------------------------------

第一種格式, 給予精確的分割區(qū)敘述. 
第二種格式, 第一個 sector 位置有定義但分割區(qū)的結(jié)束位置是依要求的分割區(qū)大小自動計算. 
第三種格式, 第一個 sector 依照前一個分割區(qū)的結(jié)束位置自動推算且分割區(qū)的結(jié)束位置是靠所要求的分割區(qū)大小自動計算. 這種格式是完全決定於硬碟的大小. 
所有的數(shù)字都假設(shè)十進(jìn)制, 除非字首有出現(xiàn)錢字號, 這樣才會被設(shè)定為十六進(jìn)制. 
分割區(qū)的 type DOS 分割區(qū)小於 32 Mb 為 4, DOS 分割區(qū)在 32Mb 到 500Mb 之間為 6 . 其他的值可以在使用 Linux fdisk help 找到例子. 
如果可開機分割區(qū) boot? 這一段應(yīng)該設(shè)定成 Y 而其它分割區(qū)設(shè)定成 N . 這個旗標(biāo)是給主要開機紀(jì)錄 (master boot record) 所使用. 
1st-cyl, 1st-head 及 1st-sect 是關(guān)系著這個分割區(qū)的第一個磁區(qū). 千萬別忘記,磁柱及磁頭是從 0 開始, 而磁區(qū)是從 1 開始. 
last-cyl, last-head 及 last-sect 是關(guān)系著 這個分割區(qū)的最後一個磁區(qū). 分割區(qū)通常結(jié)束在磁柱的邊界. 
分割區(qū)所占的 大小比例 可以下列的方法表示: 
+ 10 Mb 是指分割區(qū)至少要有 10 Mb (即 2048 磁區(qū)); 
- 100 Mb 是指分割區(qū)必須預(yù)留至少 100 Mb (即 20480 磁區(qū)) 可用的空間給下一個分割區(qū); 
+ 30 % 是指分割區(qū)必須在目前的位置, 占住至少 30 perceny 的空間; 
- 70 % 是指分割區(qū)應(yīng)留下至少 70 percent 的空間在目前的位置給下一個分割區(qū). 
以大小比例定義分割區(qū)時通常會在磁柱的邊界結(jié)束, 并且除非第一個分磁區(qū)的位置是正確的, 才會從磁頭的邊界處開始. 以我們所知, 這是為了符合標(biāo)準(zhǔn)的使用. 
當(dāng)一個標(biāo)簽附加在一個分割區(qū)敘述句之後, 相對應(yīng)的分割區(qū)會被格式化成 DOS FAT16 的分割區(qū),無論原本是哪種格式. 分割區(qū)形式 4 跟 6 是相容的, 而且它在清理學(xué)生所使用的電腦時相當(dāng)有用的. 這種快速格式化只要花幾十秒. 

預(yù)設(shè)值, bpclean 是編譯成支援 LBA (不超過 1024 個磁柱, 但可達(dá) 256 個磁頭). 某些奇怪的 BIOS 及某些奇怪的作業(yè)系統(tǒng)較喜歡另一種 NORMAL 模式 (可達(dá) 4096 個磁柱, 但不能超過 64 個磁頭); 如果您需要這種模式, 那麼把 LBA 的定義從原始程式里改成注解然後重新編譯一遍. 

Assembler 語法的原始程式碼在 這. 


4.4 MRZIP, MRUNZIP and BPUNZIP 


MrZip 是一個在 DOS 下執(zhí)行的程式, 用來建立壓縮的 DOS FAT 16分割區(qū). 第一步, 先分析磁碟機的使用狀況, 它然後只對有使用到的資料做壓縮, 接著用相當(dāng)快的 (并不是最有效率的) 統(tǒng)計的壓縮演算法則來壓縮資料. 已經(jīng)支援 Windows 95 的長檔名, 但是副檔名為 .SWP 的檔案并不會儲存. 在各式不同的檔案類型中,已經(jīng)包含許多 magic numbers, 且已跟原始資料做過檢查的 處理. 當(dāng)檔案容量的高位序號數(shù)字增大時, 這個檢查碼儲存在檔案的容量的低位序號數(shù)字中 . 如果您在建立壓縮影像檔前把您硬碟的序號歸零, 則您可以使用這個數(shù)字來 追蹤您影像檔的更新次數(shù). 

因為 MrZip 會使用直接磁碟存取, 建議您在執(zhí)行前先把磁碟機快取區(qū)的資料回存. Windows 95 似乎是對做一制性的管理直接磁碟存取□ 

MrUnzip 是一個在 DOS 下執(zhí)行的程式,用來解壓縮磁碟影像檔到硬碟機中, 使用直接磁碟存取. 不要跟任何具有快取功能的程式一起使用, 因為光是這個程式就已經(jīng)快把 DOS 給折磨死了... 不管怎樣, 如果您要恢復(fù)一個無法開機的機器那麼它會是將很有用的. 

BpUnzip 是一個開機影像用來管理壓縮硬碟的影像檔. 粗略的來說, 它將由硬碟機的影像來開機并用同樣的名稱, 副檔名為 .imz. 

首先, 它會先讀取分割區(qū)表并檢查 


第一個 DOS 分割區(qū), 磁碟影像檔回存的地方 
分割區(qū)中最後一個磁柱, 以後將儲存壓縮硬碟影像. 
接著它會讀取第一個未用到的磁柱的第一個磁區(qū)并檢查是否已經(jīng)有一個影像表. 如果不是這樣, 或者影像表內(nèi)容有點矛盾, 或者兩個 shift 鍵都被按下時 (一種特別的 general-cleaning 信號), 這個影像表將會被清除. 
如果影像表還沒有包含所需的影像, 它會透過 TFTP 通訊協(xié)定載入并加在影像表內(nèi). 如果在前面所載入的影像之後, 沒有足夠的空間來存放舊的影像資料時, 則舊的影像檔會被砍掉. 如果影像檔已經(jīng)存在影像表中, 最新的開機影像磁區(qū) (包含檢查碼) 將會透過 TFTP 通訊協(xié)定載入并且與目前得影像檔做比較. 如果它們不完全一致, 則壓縮影像會再重新載入一次. 

這個影像接著會被解壓縮, 所有的 magic numbers 都再確認(rèn), 并檢查解壓縮後的資料. 如果解壓縮失敗, 或者檢查結(jié)果與最新的開機磁區(qū)不吻合, 則影像檔將會重新載入并修正一次. 否則, 程式會把控制權(quán)交給開機磁區(qū), 作業(yè)系統(tǒng)就會啟動. 

如果 bpunzip 透過副檔名 .P 載入 (如 win95.P), 則它會假設(shè) TFTP 伺服器在 port 59 有加強型的介面 (在正規(guī)的 port 69 之外所附加的). BpUnzip 將透過它以較大的封包格式載入影像檔, 通常是以 1408 bytes 來取代每個封包 512 bytes (這種轉(zhuǎn)換使用大封包的技巧有點像TCP/IP Bootprom所使用的). 

同理, 如果 bpunzip 是透過副檔名 .G 載入 (如 win95.GP), 則它將會先下載一個以同樣主檔名的 GIF 圖檔 (如 win95.gif) 并在開機時把它秀在營幕上. 這個程式只能在 800x600, 256 色的模式下工作 (即使 GIF 圖檔可以更小或者使用更少的顏色). 如果您想要看看開機的流程記錄, 則這個標(biāo)題可以按 ESC 鍵移除. 如果您的顯示卡不是 VESA 相容型, 則這個功能您不能使用. 另外,還要注意的是這個標(biāo)記的執(zhí)行完成棒是使用調(diào)色盤的 最後十六色來顯示. 如果不想使用這個功能, 或者希望修正它. 順便一提, 如果您不喜歡我們標(biāo)記的執(zhí)行完成棒, 您可以自由的改變它 (在 GIFDATA.ASM), 但請保留我們的名字在可以看得到的地方. 

目地分割區(qū)不需要完全跟原始的大小相同 ; 它只要有足夠的空間來存放分割區(qū)中,所有使用到的磁柱. 如果目地分割區(qū)小於原始的分割區(qū), 則 檔案對硬表 FAT 將會因此而萎縮 (但磁柱大小則不變). 如果目地分割區(qū)大小大於原始分割區(qū), 則 檔案對應(yīng)表 FAT 將會盡可能的擴大. 然而, 如果目地分割區(qū)比原始分割區(qū)大更多, 可能 65518 個磁柱就不夠覆蓋所有的空間 (因為磁柱大小是無法改變的). 像這種狀況, bpunzip 將會產(chǎn)生警告,告訴使用者有一些空間流失掉了. 

預(yù)設(shè)值, bpunzip 是編譯成支援 LBA (不超過 1024 個磁柱, 但可達(dá) 256 個磁頭). 某些奇怪的 BIOS 及某些奇怪的作業(yè)系統(tǒng)較喜歡另一種 NORMAL 模式 (可達(dá) 4096 個磁柱, 但不能超過 64 個磁頭); 如果您需要這種模式, 那麼把 LBA 的定義從原始程式里改成注解然後重新編譯一遍. 

Assembler 語法的原始程式碼在 這. 

如果使用 Solaris 2.5 當(dāng) TFTP server. 在處理超過 16 Megabytes 時, 會有問題. 這是因為它無法處理超過 32768 packets per file 這是一個已知的臭□, 但直到目前 SUN 仍未提供修正. 我們建議您使用更有效率的加強型 extended TFTP server (它也支援其他作業(yè)系統(tǒng), 就在 TCP/IP Bootprom 工具磁片中). 


4.5 NOBREAK 
Nobreak.sys 相當(dāng)小 (大概只有 350 bytes ) 的驅(qū)動程式, 它將加在您 config.sys 中的開始處. 它的目的是保護(hù)開機程序, 直到使用者登入. DOS 為這提供一種設(shè)定 (名為 BREAK=OFF), 但它不夠暴力, 并且在 autoexec.bat 沒舍用. 我們的驅(qū)動程式工作原理是當(dāng)中斷要求產(chǎn)生時修改鍵盤的掃描碼, 直接在 BIOS 層工作. 以這方法, 所有的程式在中斷未致能前都收不道中斷訊息. 

這個驅(qū)動程式必須放在 config.sys 檔中(或者使用 Undocumented DOS 的 devlod 程式). 接著, 可以透過傳送 Yes 到 NOBRK 這個虛擬裝置, 并且傳送 No 而禁能 (事實上, 只需要第一個字元, Y 或 N 才是最重要的). 

因為這個驅(qū)動程式依靠 BIOS, 所以它只能在 DOS 跟 Windows 3.1.下工作 Windows 95 則有它自己的低階鍵盤處理機制. 

Assembler 語法的原始程式碼在 這. 



--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

5. 討論
我們在這將討論關(guān)於這個架構(gòu)的相關(guān)理論性議題. 


5.1 Bootproms 與 硬碟機 
Bootproms 已經(jīng)出現(xiàn)相當(dāng)久了, 而通常我們只會把它們使用在無磁碟機的電腦. 但我們主張, Bootproms 用在具有硬碟機的電腦將更有趣, 因為我們得到了雙面的利益: 

一個 Bootprom 可以使得您的架構(gòu)更加穩(wěn)定, 因為它可以確定電腦必定會以同一個開機步驟開機, 即使是中了病毒或分割表損毀. 還可以這樣作, 也就是我們做過的, 在載入作業(yè)系統(tǒng)之前先清理您的硬碟 
有硬碟機使得這個組態(tài)更加有效率, 因為它可以透過快取而降低網(wǎng)路負(fù)載, 并允許更有效率的 swap. 

5.2 使用那一種 Bootprom ? 
個人電腦可用的 Bootproms 相當(dāng)多. 我們有許多理由選擇 Köppen EDV GmbH 的 TCP/IP Bootprom : 


它是以 BOOTP/DHCP 通訊協(xié)定為基礎(chǔ), 這些通訊協(xié)定已由 RFCs 公開的定義. 它的定義是當(dāng) BOOTP/DHCP 伺服器收到未知的客戶端的要求訊號, 將不會有任何回應(yīng). 這是用來防止有多臺伺服器時而互相干擾, 當(dāng)您苦於 MSD 開機伺服器的體驗. 而且, 而且 IP 只能在子網(wǎng)路內(nèi)廣播, 這樣比起 IPX 會產(chǎn)生較低的雜訊. 
它可使用多種作業(yè)系統(tǒng). 
技術(shù)資料與 API 資料可索取. 
可以自己寫開機載入程式 (我們試過) 
開機的程序可以有更多的變化. 特別是, 它可以允許我們在舊式的 AST 電腦關(guān)掉軟碟的開機, 這在原機器的 BIOS 不包括這項功能. 
提供建立與維護(hù)開機選單的工具. 


--------------------------------------------------------------------------------
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 肥西县| 陵水| 海安县| 湖口县| 扬州市| 阳城县| 南昌市| 安康市| 林州市| 信宜市| 金堂县| 拉萨市| 会东县| 五莲县| 雷州市| 定兴县| 洛浦县| 临颍县| 松原市| 盐亭县| 镇安县| 商城县| 奈曼旗| 东兰县| 韩城市| 鄂温| 友谊县| 沭阳县| 永善县| 易门县| 定西市| 宣化县| 宁乡县| 邵武市| 永新县| 子长县| 孙吴县| 洛隆县| 新源县| 利辛县| 北海市|