Next Previous Contents

3. 如何設定

首先, 調整機器位置使手邊有下列兩台機器:

如果你想要測試您的組態設定而您還沒拿到 TCP/IP Bootprom, 您可以到 http://www.incom.de 下載測試版的磁片. 這個 磁片可以使您的電腦就好像是插上 TCP/IP Bootprom 一般.If you want to test the configuration but you do not yet have a

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

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

別忘了 BOOTP/DHCP 通訊協定被限制在子網域中使用. 如果客戶端與伺服端不在同一網域, 您必須在這兩網域間 架設閘道器. 現在, 先假設兩台機器在相同的網域中.

首先, 我們先做所有作業系統都要得做的事,如:

然後, 對每一種作業系統, 我們將完成下列步驟: 完成這些事, 以後你所追加的客戶端只要插上 Bootprom 再加幾行到 DHCP 設定檔.

3.1 設定開機流程

在伺服器端的 /tftpboot 目錄下, 放下列的開機影像檔 (這些是二進位格式)

硬碟的初始化與清理

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


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

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

# 聯接的影像檔
/tftpboot/XXXmenu

完整的檔案格式在後面會敘述. 現在您只要知道這些 現在, bpclean 在不清除分割區資料內容下,將重新寫入主要開機計錄(master boot record), 當然也包括分割表.

作業系統選單

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


.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 設定檔中加入您的客戶端. 並設定開機影像檔為 /tftpboot/XXXclean. 您可能需要重新啟動您的 DHCP 伺服器使您的變更生效.

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

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

現在我們要開始安裝各種作業系統. 您可依您的需要來決定先做那一種. 對任何一種作業 系統, 您都需要先從軟碟來做初始化的動作. 所以我們在看到 TCP/IP Bootprom 的標誌後立 刻按 space 鍵換成軟碟開機.

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

3.2 設定 Linux

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

現在我們要加入一些修正檔, 使它升級到 2.0.30, 並且支援 TCP/IP Bootprom 及檔案快取的 功能. 檔案快取是一個 把 "未確定的" NFS 檔案儲存在您硬碟中的結構, 它您可以降低網路 負載. TCP/IP Bootprom 的支援已經由� Marc Vuilleumier Stuckelberg 完成, 並且由 David Clerc 轉移到 kernel 2.0 . 檔案快取已經由 Unifix GmbH 完成, 並且已 是 Unifix Linux 2.0 的一部份. TCP/IP Bootprom 及檔案快取的支援都已經由它們的作者免費的散布.

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

產生 Kernel

首先, 到您的 /usr/src 目錄並加入下列修正檔, 使用這個指令

patch -p0 < 修正檔的名稱:

接著執行 make mrpropermake xconfig, 產生 kernel. 記住這將是客戶端電腦以 Linux 啟動時, 唯一接收到的軟體, 所以 它必須要包含啟動整個作業系統所需的東西. 可以使用模組方式, 但是不包括網路模組. 因為網路功能一定要放在 kernel 中. 簡而言之, 您的 kernel 至少需要 以下這些

您可以使用我們的 .config 當做起點. 如果您想要在沒有 Bootprom 的狀況下測試, 請確定您 已經在 kernel 內包含硬碟機的支援.

當您的選擇完成後, 照常地輸入 make clean; make dep 接著 make zImage, make modulesmake modules_install. 這會花一點時間... 現在您準備去測試您的新 kernel, 先用先用 lilo. 安裝您的 kernel (參考 lilo 文件),並重新啟動您的電腦 (由硬碟啟動). 如有任何錯誤, 修正它們並再試一次. 執行 depmod -a 計算 modules dependencies. 當完全無誤時, 執行 make bpImage 產生一個 bootimage 給 TCP/IP Bootprom 使用.

把 Root 檔案系統移到 NFS

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

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

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

現在在您的 /etc/lilo.conf 複製一行 linux, 例如:以 linux-nfs 為名, 並加入以下的參數:

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

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

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


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

如果您的 Linux kernel 須要再加入其它指令參數, 您可以用 option option-177 來加入.

下一步要使我們的系統在 唯讀的 NFS 檔案系統下可以工作.

產生唯讀的 NFS Root 檔案系統

既然我們要我們的 root 檔案系統在大部份的 Linux 客戶端以唯讀的方式掛上, 那就要使檔 案系統有些微的不同, 因此我們將需要寫入權限的地方以 ramdisk 或 filecache 取代. 我們把 這個檔案系統建立在 /export/linux/rootfs 目錄下, 而標準的版本則直接放到 /runtime/ 下. 登入您 的 NFS 伺服器並在 /export/linux/rootfs目錄下,建立以下的目錄跟連結:

就如您所見的, 它看起來像正常的 root filesystem, 除了少部份幾個是重新指到 /ramdisk, 有 些則重新指到 cache 目錄. 當用唯讀的 NFS filesystem 開機, 我們將掛上一個已初始化過的 ramdisk 放在 /ramdisk 下. 同樣�, 自己硬碟的分割區將被掛在 /cache 給 NFS 快取使用. 粗略的 說,這個檔案快取的原理是當the principle of the filecache is that whenever a symbolic link from the cache subdirectory is followed, it is replaced by its target. 如果目標自己是一個子目錄, 則每一個 子目錄會轉換成一個符號連結並連結到外部檔案系統的原始位置. 注意檔案快取使用絕 對符號連結是必須的, 即使它們在 NFS 伺服器上是無意義的. 如果您不喜歡這樣, 可以在 您的 NFS 伺服器上,建立一個符號連結由 /runtime/export/linux/rootfs/runtime .

在唯讀的客戶端加入一些設定的東西是必須的, 如此才可以掛上 ramdisk, 及設定檔案快取 和偵測硬體以變更設定檔. 這些都由三個程序檔和一個組態檔來完成, 您可以把它複製到 您的NFS 伺服器:

前兩個檔案應該放在前兩個檔案應該放在 runtime/etc/rc.d/rc.sysinit, 檔案內最前面的位置, 如下所示:

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

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

而第三個應該 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 這個檔案, 並使它與您的硬體設備配合. 特別要注意的是, 如果您跟我們一樣沒有 使用相同的顯示卡及螢幕 (這很可能發生的 :-), 看看它們在 /proc/pci 的回應並依此修改敘述檔. 在每台 機器所使用的存放位置下, 其 rc.sysdetect 之中有一段內容為, 可自訂的設定檔 (例如 printcap), a為了能每 台獨立工作, 您需要於伺服器的 dhcpd.conf 檔案中, 用特別的標記 option-132 設定每台機器所使用的位 置. 在您繼續安裝之前, 您至少要先建立基本的幾個檔案 runtime/etc/fstab.ref runtime/etc/hosts.ref , 這些將由 rc.sysdetect 敘述檔在啟動時透過偵測設定來完成, 為了動態的設定 X servver, 使用 RedHat 軟體套件, 有一件事您必須先變更的: 在 /usr/X11R6/bin/usr/X11R6/lib/X11 目錄下, 有一些相關的 連結設定檔及目錄應該改成絕對連結. 別忘了以後的 X server 更新安裝也要如法泡製.

filecache 安裝在 runtime/bin 目錄下, 並把它的使用說明 man page 安裝在 runtime/usr/man/man8 目錄下. 把 bootptagdhcptag 安裝 在 runtime/usr/local/bin 目錄下, 並且 bootptag.c (或 dhcptag.c) 必須放在 runtime/usr/local/src 目錄下: 它是一個發送 BOOTP/DHCP 要求, 並以相容於 shell 的標準輸出格式回應 BOOTP/DHCP 內容的小程式, 就如下的範例所示:


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'

標記的名稱與 RFC 2132 很相似. 如果您使用 dhcptag, 您將得到一些以 dhcp_ 開頭的標記, 這些是 DHCP-規格的選項內容; 為了顧及相容性, 其它的資訊仍然以 bootp_ 為字首. 我們使用這個程式自動設 定 rc.sysdetect. 最後, 在 runtime/lib 安裝 makeramdisk script . 我們將用它自動產生 ramdisk 影像檔. 這些軟體 都在超文件的版本中.

現在試著由客戶端以 read-write NFS 開機 (仍然用硬碟開機). 它將偵測您客戶端的個別組態, 並 產生適當的檔�. 檢查 /etc/fstab, /etc/hosts, /etc/sysconfig/network 是否設定正確. 如果您看到的不是這樣, 請在 單人工作模式下重試一遍, 並找出您在 rc.sysdetect 敘述檔中所犯的錯誤.

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

由 Bootprom 開機

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

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

系統維護與更新

如果您以後想更新軟體,安裝一些錯誤修正檔或安全性修正檔, 請按照下列步驟:

這是指, 您必須在 local 安裝的狀態下, 才能更新您的 server-based 設定的軟體.

3.3 設定 DOS 6 及 Windows 3.1

在您的客戶端電腦, 使用您喜歡的 dos 軟碟開機 (記得開機時, 按空白鍵取消 BootPROM 開機). 格式 化您硬碟中的 dos 分割區並加上 /S 參數, 使它放入作業系統. 建立一個名為 DOS 的子目錄, 把 DOS 拷 貝進去. 安裝你所喜歡的網路客戶端程式 (例如 Microsoft LanManager), Windows 3.1, 等等. 使用 DHCP 通訊協定設定 IP 組態.

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


device=\util\bputil.sys -r

(bputil 是一個 TCP/IP BootPROM 工具磁片中的程式). 不用怕使用 EMM386 最佳化您所使用的記憶體, 您可以把網路卡 ROM 所佔的區域納入管理, 因為它在這時已經用不到了. 但要記得把網路卡所使用 的 RAM 區塊不納入管理, 否則您將無法連接到您的伺服器.

如果您不讓您的客戶端機器使用無效的登入名稱, 把我們的 nobreak.sys pseudo-device 驅動程式放在您 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 已經建立好 c:\logged
if not exist c:\logged goto loginneeded
del c:\logged
rem -- 使 break 功能生效
echo Yes >NOBRK

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

把組態設定移到伺服器

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

您也需要把一些用來清理硬碟及產生壓縮影像的批次檔放到相同的目錄下,這些批次檔如下:

@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

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


        L:\util\mrzip L:\tftpboot\win31

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

您的硬碟為主的遠端開機設定現在一切就緒啦.

測試遠端開機客戶端

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

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

轉換設定檔給其他機器

如果您要為每台機器修正一些設定 (例如預設印表機), 或者如果您需要變更一些不能透 過 DHCP 通訊協定修改的網路設定, 您可以使用 unzipreg.exe 程式來處理, 它必須放到客戶端的 autoexec.bat (原始程式碼在 ). 這程式將讀取一個由 bpunzip 產生的特殊隱藏檔案, 名稱為 BOOTP.ANS, 它的內容是由伺服器透過 BOOTP/DHCP 通訊協定回傳的. 接著, 它將讀取第一個參數所指的檔案名 稱, 藉由 BOOTP/DHCP 的回應內容, 以 UNZIPREG: 標籤名 : 這種格式取代所有的字串, 並把結果寫入 第二個參數所指的檔案名稱. 例如, 如過您有個檔案名為 input.bat 內容為:


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

而您執行了這個指令

        unzipreg input.bat output.bat

您將得到一個檔案名為 output.bat 包含內容:

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

假設您的 DHCP 設定檔定義這台機器名為 pc7179, 領域名稱為 unige.ch, 等等, 而 option-180 標記是 laserwriter1.

也可以透過這種登入修改 Windows 桌面. 我們寫了一個小程式 simple program 用來增加 PROGMAN.INI 檔案, 允許為一 群使用者設定同樣的桌面.

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

3.4 設定 Windows 95

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

因此幾個月前我們放棄這份錯誤百出的資料 (您仍然可在這找到 http://cuiwww.unige.ch/info/pc/remote-boot/win95old/win95old.html) 然後換到我們這個新的 disk-based 遠端 啟動的概念. 基本上, 這種 Windows 95 安裝方法就跟安裝 DOS一樣容易.

建立一台獨立的客戶端

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

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

開始安裝 Windows 95, 照著步驟把它裝在 local . 安裝最後, 程式會重新啟動您的客戶端電腦, 做一些 設定並再重新啟動一次. 這幾次的重新開機, 您必須再您的開機選單選擇 Boot from local hard-disk 選 項. 等到您設定好您所需要的驅動程式後, 您可以執行 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 .

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

把設定檔移到伺服器

伺服器端, 如果您目前還沒有建一個名為 admin 的目錄, 那就建一個. 這將放一些系統管理要用的東 西. 如果伺服器是 Unix 的機器, 現在把 admin 目錄用 softlink 到 /tftpboot 子目錄下, 這樣您可以由客戶端 直接把影像檔放到這. 在 admin 目錄內, 建立一個 /utils 子目錄並把下列工具放進去:

在您的客戶端開個 MS-DOS 視窗, 可以把您的 admin 用網路磁碟機掛在 L: 並執行下列的指令 (不一 定要使用絕對路徑, 多打幾個字無害啦 :-)


        L:\util\mrzip L:\tftpboot\win95

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

現在您的 Windows 95 遠端開機組態就完成啦.

測試遠端開機客戶端

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

轉換為其它分身的設定

Windows 95 與 Windows 3.1 最大的不同是加入了即插即用的程式碼, 即自動偵測您的硬體設備. 它本 身無舍壞處, 但問題是出在它太過靈敏, 而且有時後會出鎚.

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

事實上 , 如果 Windows 95 的即插即用功能可以正常工作的話, 自動偵測變更的硬體設備並不會出問 題, 所以如果即插即用功能失效時, 問題就來了. 例如, Windows 95 對上我們的羅技 PS2 滑鼠時就不 能即插即用, 更糟的是滑鼠就消失了. 要解決這類問題方法就是, 盡可能使全部電腦有相同的設備.

您無法避免的問題是每台電腦的網路卡. 很不幸的, 給我們的 SMC EtherEX 使用的即插即用的程式 碼會使電腦當機. 唯一的解法是使 Windows 95 相信它已經知道有這片網路卡, 且不需觸動即插即用 機制. 這個技巧就是透過開機自動執行檔 autoexec.bat , 自動的把關於這片網路卡的設定值加入 Windows 95 的系統註冊資訊. 要注意的是使用 PCI 的網路卡並不需要這個技巧.

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


rem --- 修正 Windows 系統註冊資訊以避免即插即用功能偵測
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 是標準 Windows 95 的程式. 如果您在 Windows 95下執行它,它可以幫您流覽您的系統登錄資訊, 或 者如果您在 DOS 下執行它, 它可以對您的系統登錄資訊做一些簡單的修正. unzipreg.exe 是一個自製的小程式, 您可以放在您的路徑下的任何地方 (原始程式至在 ). 它將讀取一個由 bpunzip 所產生的特別隱藏檔案, 名稱是 BOOTP.ANS, 它包含來自伺服器的原始 BOOTP/DHCP 回應資訊. 然後, 它將讀取第一個參數的檔案(c:\lib\smc.reg), 然後以 BOOTP/DHCP 回應的資料取代檔案內所有以 UNZIPREG:tagname: 為格式的內容, 接著寫入第二個參數的檔案(c:\temp\smc.reg).

lib 子目錄下, 我們有個名為 smc.reg 的檔案其內容如下:


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 產生. 我們把關於網路卡的設定部份輸出成一個檔案 ( HKEY_LOCAL_MACHINE/Enum/ISAPNP/SMC8416) 然後用 UNZIPREG:MACID: 記號取代網路卡的硬體位址. 當我 們在這檔案中執行 unzipreg , 它會自動的以網路卡真實的硬體位址值取代我們所設定的記號. 注意這 裡有個數字在 MACID 之後的有時是 C0 有時是 C1. 即使放一個不存在的網路卡在這個登錄檔中不 會出鎚, 我們還是把兩項都放進去.

還要一次ㄡ, 這整個技巧對 PCI 網路卡而言並不需要. 順便一提的是, 我們可以用同樣的方法自動的 配置主電腦名稱, 當 Windows 95 不能透過 DHCP 取的設定時. 我們只須加入下列幾行到我們的 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:"

您也可以使用同樣的機器按照機器的型態跟位置來設定其他的環境. 這個範例, 您一樣可以參考 DOS/Windows 3.1 那一段的敘述.

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

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

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

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


Next Previous Contents