當前位置:首頁 » 雲伺服器 » arch搭建dhcp伺服器

arch搭建dhcp伺服器

發布時間: 2025-08-18 05:50:07

linux如何配置網路游戲伺服器

要建立一個安全Linux伺服器就首先要了解Linux環境下和網路服務相關的配置文件的含義及如何進行安全的配置。在Linux系統中,TCP/IP網路是通過若干個文本文件進行配置的,也許你需要編輯這些文件來完成聯網工作,但是這些配置文件大都可以通過配置命令linuxconf(其中網路部分的配置可以通過netconf命令來實現)命令來實現。下面介紹基本的TCP/IP網路配置文件。

*/etc/conf.moles文件
該配置文件定義了各種需要在啟動時載入的模塊的參數信息。這里主要著重討論關於網卡的配置。在使用Linux做網關的情況下,Linux伺服器至少需要配置兩塊網卡。為了減少啟動時可能出現的問題,Linux內核不會自動檢測多個網卡。對於沒有將網卡的驅動編譯到內核而是作為模塊動態載入的系統若需要安裝多塊網卡,應該在「conf.moles」文件中進行相應的配置。

若設備驅動被編譯為模塊(內核的模塊):對於PCI設備,模塊將自動檢測到所有已經安裝到系統上的設備;對於ISA卡,則需要向模塊提供IO地址,以使模塊知道在何處尋找該卡,這些信息在「/etc/conf.moles」中提供。

例如,我們有兩塊ISA匯流排的3c509卡,一個IO地址是0x300,另一個是0x320。編輯「conf.moles」文件如下:

aliaseth03c509

aliaseth13c509

options3c509io=0x300,0x320

這是說明3c509的驅動程序應當分別以eth0或eth1的名稱被載入(aliaseth0,eth1),並且它們應該以參數io=0x300,0x320被裝載,來通知驅動程序到哪裡去尋找網卡,其中0x是不可缺少的。

對於PCI卡,僅僅需要alias命令來使ethN和適當的驅動模塊名關聯,PCI卡的IO地址將會被自動的檢測到。對於PCI卡,編輯「conf.moles」文件如下:

aliaseth03c905

aliaseth13c905

若驅動已經被編譯進了內核:系統啟動時的PCI檢測程序將會自動找到所有相關的網卡。ISA卡一般也能夠被自動檢測到,但是在某些情況下,ISA卡仍然需要做下面的配置工作:

在「/etc/lilo.conf」中增加配置信息,其方法是通過LILO程序將啟動參數信息傳遞給內核。對於ISA卡,編輯「lilo.conf」文件,增加如下內容:

append="ether="0,0,eth0ether="0,0,eth1"

註:先不要在「lilo.conf」中加入啟動參數,測試一下你的ISA卡,若失敗再使用啟動參數。

如果用傳遞啟動參數的方法,eth0和eth1將按照啟動時被發現的順序來設置。

*/etc/HOSTNAME文件
該文件包含了系統的主機名稱,包括完全的域名,如:deep.openarch.com。

*/etc/sysconfig/network-scripts/ifcfg-ethN文件
在RedHat中,系統網路設備的配置文件保存在「/etc/sysconfig/network-scripts」目錄下,ifcfg-eth0包含第一塊網卡的配置信息,ifcfg-eth1包含第二塊網卡的配置信息。

下面是「/etc/sysconfig/network-scripts/ifcfg-eth0」文件的示例:

DEVICE=eth0

IPADDR=208.164.186.1

NETMASK=255.255.255.0

NETWORK=208.164.186.0

BROADCAST=208.164.186.255

ONBOOT=yes

BOOTPROTO=none

USERCTL=no

若希望手工修改網路地址或在新的介面上增加新的網路界面,可以通過修改對應的文件(ifcfg-ethN)或創建新的文件來實現。

DEVICE=name name表示物理設備的名字

IPADDR=addr addr表示賦給該卡的IP地址

NETMASK=mask mask表示網路掩碼

NETWORK=addr addr表示網路地址

BROADCAST=addr addr表示廣播地址

ONBOOT=yes/no 啟動時是否激活該卡

none:無須啟動協議

bootp:使用bootp協議

dhcp:使用dhcp協議

USERCTL=yes/no 是否允許非root用戶控制該設備

*/etc/resolv.conf文件
該文件是由域名解析器(resolver,一個根據主機名解析IP地址的庫)使用的配置文件,示例如下:

searchopenarch.com

nameserver208.164.186.1

nameserver208.164.186.2

「searchdomainname.com」表示當提供了一個不包括完全域名的主機名時,在該主機名後添加domainname.com的後綴;「nameserver」表示解析域名時使用該地址指定的主機為域名伺服器。其中域名伺服器是按照文件中出現的順序來查詢的。

*/etc/host.conf文件
該文件指定如何解析主機名。Linux通過解析器庫來獲得主機名對應的IP地址。下面是一個「/etc/host.conf」的示例:

orderbind,hosts

multion

ospoofon

「orderbind,hosts」指定主機名查詢順序,這里規定先使用DNS來解析域名,然後再查詢「/etc/hosts」文件(也可以相反)。

「multion」指定是否「/etc/hosts」文件中指定的主機可以有多個地址,擁有多個IP地址的主機一般稱為多穴主機。

「nospoofon」指不允許對該伺服器進行IP地址欺騙。IP欺騙是一種攻擊系統安全的手段,通過把IP地址偽裝成別的計算機,來取得其它計算機的信任。

*/etc/sysconfig/network文件
該文件用來指定伺服器上的網路配置信息,下面是一個示例:

NETWORK=yes

RORWARD_IPV4=yes

HOSTNAME=deep.openarch.com

GAREWAY=0.0.0.0

GATEWAYDEV=

NETWORK=yes/no 網路是否被配置;

FORWARD_IPV4=yes/no 是否開啟IP轉發功能

HOSTNAME=hostnamehostname表示伺服器的主機名

GAREWAY=gw-ip gw-ip表示網路網關的IP地址

GAREWAYDEV=gw-dev gw-dw表示網關的設備名,如:etho等

注意:為了和老的軟體相兼容,「/etc/HOSTNAME」文件應該用和HOSTNAME=hostname相同的主機名。

*/etc/hosts文件
當機器啟動時,在可以查詢DNS以前,機器需要查詢一些主機名到IP地址的匹配。這些匹配信息存放在/etc/hosts文件中。在沒有域名伺服器情況下,系統上的所有網路程序都通過查詢該文件來解析對應於某個主機名的IP地址。

下面是一個「/etc/hosts」文件的示例:

IPAddress Hostname Alias

127.0.0.1 Localhost Gate.openarch.com

208.164.186.1 gate.openarch.comGate

………… ………… ………

最左邊一列是主機IP信息,中間一列是主機名。任何後面的列都是該主機的別名。一旦配置完機器的網路配置文件,應該重新啟動網路以使修改生效。使用下面的命令來重新啟動網路:/etc/rc.d/init.d/networkrestart

*/etc/inetd.conf文件
眾所周知,作為伺服器來說,服務埠開放越多,系統安全穩定性越難以保證。所以提供特定服務的伺服器應該盡可能開放提供服務必不可少的埠,而將與伺服器服務無關的服務關閉,比如:一台作為www和ftp伺服器的機器,應該只開放80和25埠,而將其他無關的服務如:fingerauth等服務關掉,以減少系統漏洞。

而inetd,也叫作「超級伺服器」,就是監視一些網路請求的守護進程,其根據網路請求來調用相應的服務進程來處理連接請求。inetd.conf則是inetd的配置文件。inetd.conf文件告訴inetd監聽哪些網路埠,為每個埠啟動哪個服務。在任何的網路環境中使用Linux系統,第一件要做的事就是了解一下伺服器到底要提供哪些服務。不需要的那些服務應該被禁止掉,最好卸載掉,這樣黑客就少了一些攻擊系統的機會。查看「/etc/inetd.conf」文件,了解一下inetd提供哪些服務。用加上注釋的方法(在一行的開頭加上#號),禁止任何不需要的服務,再給inetd進程發一個SIGHUP信號。

第一步:把文件的許可許可權改成600。

[root@deep]#chmod600/etc/inetd.conf

第二步:確信文件的所有者是root。

[root@deep]#stat/etc/inetd.conf

第三步:編輯「inetd.conf」文件(vi/etc/inetd.conf),禁止所有不需要的服務,如:ftp、telnet、shell、login、exec、talk、ntalk、imap、pop-2、pop-3、finger、auth,等等。如果你覺得某些服務有用,可以不禁止這些服務。但是,把這些服務禁止掉,系統受攻擊的可能性就會小很多。改變後的「inetd.conf」文件的內容如下面所示:

#Tore-readthisfileafterchanges,justdoa'killall-HUPinetd'

#

#

#echodgramudpwaitrootinternal

#

#

#

#

#

#

#

#timedgramudpwaitrootinternal

#

#Thesearestandardservices.

#

#ftpstreamtcpnowaitroot/usr/sbin/tcpdin.ftpd-l-a

#telnetstreamtcpnowaitroot/usr/sbin/tcpdin.telnetd

#

#Shell,login,exec,comsatandtalkareBSDprotocols.

#

#shellstreamtcpnowaitroot/usr/sbin/tcpdin.rshd

#loginstreamtcpnowaitroot/usr/sbin/tcpdin.rlogind

#execstreamtcpnowaitroot/usr/sbin/tcpdin.rexecd

#comsatdgramudpwaitroot/usr/sbin/tcpdin.comsat

#talkdgramudpwaitroot/usr/sbin/tcpdin.talkd

#ntalkdgramudpwaitroot/usr/sbin/tcpdin.ntalkd

#dtalkstreamtcpwaitnobody/usr/sbin/tcpdin.dtalkd

#

#Popandimapmailservicesetal

#

#pop-2streamtcpnowaitroot/usr/sbin/tcpdipop2d

#pop-3streamtcpnowaitroot/usr/sbin/tcpdipop3d

#imapstreamtcpnowaitroot/usr/sbin/tcpdimapd

#

#TheInternetUUCPservice.

#

#uucpstreamtcpnowaituucp/usr/sbin/tcpd/usr/lib/uucp/uucico-l

#

#.Mostsites

#runthisonlyonmachinesactingas"bootservers."Donotuncomment

#thisunlessyou*need*it.

#

#tftpdgramudpwaitroot/usr/sbin/tcpdin.tftpd

#bootpsdgramudpwaitroot/usr/sbin/tcpdbootpd

#

#Finger,

#valuabletopotential"systemcrackers."Manysiteschoosetodisable

#.

#

#fingerstreamtcpnowaitroot/usr/sbin/tcpdin.fingerd

#cfingerstreamtcpnowaitroot/usr/sbin/tcpdin.cfingerd

#systatstreamtcpnowaitguest/usr/sbin/tcpd/bin/ps-auwwx

#netstatstreamtcpnowaitguest/usr/sbin/tcpd/bin/netstat-finet

#

#Authentication

#

#authstreamtcpnowaitnobody/usr/sbin/in.identdin.identd-l-e-o

#

#Endofinetd.conf

注意:改變了「inetd.conf」文件之後,別忘了給inetd進程發一個SIGHUP信號(killall–HUPinetd)。

[root@deep/root]#killall-HUPinetd

第四步:

為了保證「inetd.conf」文件的安全,可以用chattr命令把它設成不可改變。把文件設成不可改變的只要用下面的命令:

[root@deep]#chattr+i/etc/inetd.conf

這樣可以避免「inetd.conf」文件的任何改變(意外或是別的原因)。一個有「i」屬性的文件是不能被改動的:不能刪除或重命名,不能創建這個文件的鏈接,不能往這個文件里寫數據。只有系統管理員才能設置和清除這個屬性。如果要改變inetd.conf文件,你必須先清除這個不允許改變的標志:

[root@deep]#chattr-i/etc/inetd.conf

但是對於諸如sendmail,named,www等服務,由於它們不象finger,telnet等服務,在請求到來時由inet守護進程啟動相應的進程提供服務,而是在系統啟動時,作為守護進程運行的。而對於redhatlinux,提供了一個linuxconfig命令,可以通過它在圖形界面下互動式地設置是否在啟動時運行相關服務。也可以通過命令來設置是否啟動時啟動某個服務,如:[root@deep]#chkconfig–level35namedoff

具體命令可以參考manchkconfig的說明。
*/etc/hosts.allow文件
但是對於telnet、ftp等服務,如果將其一同關閉,那麼對於管理員需要遠程管理時,將非常不方便。Linux提供另外一種更為靈活和有效的方法來實現對服務請求用戶的限制,從而可以在保證安全性的基礎上,使可信任用戶使用各種服務。Linux提供了一個叫TCPwrapper的程序。在大多數發布版本中該程序往往是預設地被安裝。利用TCPwrapper你可以限制訪問前面提到的某些服務。而且TCPwrapper的記錄文件記錄了所有的企圖訪問你的系統的行為。通過last命令查看該程序的log,管理員可以獲知誰曾經或者企圖連接你的系統。

在/etc目錄下,有兩個文件:hosts.denyhosts.allow通過配置這兩個文件,你可以指定哪些機器可以使用這些服務,哪些不可以使用這些服務。

當服務請求到達伺服器時,TCPwrapper就按照下列順序查詢這兩個文件,直到遇到一個匹配為止:

1.當在/etc/hosts.allow裡面有一項與請求服務的主機地址項匹配,那麼就允許該主機獲取該服務

2.否則,如果在/etc/hosts.deny裡面有一項與請求服務的主機地址項匹配,就禁止該主機使用該項服務。

3.如果相應的配置文件不存在,訪問控制軟體就認為是一個空文件,所以可以通過刪除或者移走配置文件實現對清除所有設置。在文件中,空白行或者以#開頭的行被忽略,你可以通過在行前加#實現注釋功能。

配置這兩個文件是通過一種簡單的訪問控制語言來實現的,訪問控制語句的基本格式為:

程序名列表:主機名/IP地址列表。

程序名列表指定一個或者多個提供相應服務的程序的名字,名字之間用逗號或者空格分割,可以在inetd.conf文件里查看提供相應服務的程序名:如上面的文件示例中,telent所在行的最後一項就是所需的程序名:in.telnetd。

主機名/IP地址列表指定允許或者禁止使用該服務的一個或者多個主機的標識,主機名之間用逗號或空格分隔。程序名和主機地址都可以使用通配符,實現方便的指定多項服務和多個主機。

Linux提供了下面靈活的方式指定進程或者主機列表:

1.一個以"."起始的域名串,如.amms.ac.cn那麼www.amms.ac.cn就和這一項匹配

2.以"."結尾的IP串如202.37.152.那麼IP地址包括202.37.152.的主機都與這一項匹配。

3.格式為n.n.n.n/m.m.m.m表示網路/掩碼,如果請求服務的主機的IP地址與掩碼的位與的結果等於n.n.n.n那麼該主機與該項匹配。

4.ALL表示匹配所有可能性

5.EXPECT表示除去後面所定義的主機。如:list_1EXCEPTlist_2表示list_1主機列表中除去List_2所列出的主機

6.LOCAL表示匹配所有主機名中不包含"."的主機

上面的幾種方式只是Linux提供的方式中的幾種,但是對於我們的一般應用來說是足夠了。我們通過舉幾個例子來說明這個問題:

例一:我們只希望允許同一個區域網的機器使用伺服器的ftp功能,而禁止廣域網上面的ftp服務請求,本地區域網由202.39.154.、202.39.153.和202.39.152.三個網段組成。

在hosts.deny文件中,我們定義禁止所有機器請求所有服務:

ALL:ALL

在hosts.allow文件中,我們定義只允許區域網訪問ftp功能:

in.ftpd-l–a:202.39.154202.39.153.202.39.152.

這樣,當非區域網的機器請求ftp服務時,就會被拒絕。而區域網的機器可以使用ftp服務。此外,應該定期檢查/var/log目錄下的紀錄文件,發現對系統安全有威脅的登錄事件。last命令可以有效的查看系統登錄事件,發現問題所在。

最後tcpdchk是檢查TCP_WAPPERS配置的程序。它檢查TCP_WAPPERS的配置,並報告它可以發現的問題或潛在的問題。在所有的配置都完成了之後,請運行tcpdchk程序:

[root@deep]#tcpdchk

*/etc/services文件
埠號和標准服務之間的對應關系在RFC1700「AssignedNumbers」中有詳細的定義。「/etc/services」文件使得伺服器和客戶端的程序能夠把服務的名字轉成埠號,這張表在每一台主機上都存在,其文件名是「/etc/services」。只有「root」用戶才有許可權修改這個文件,而且在通常情況下這個文件是沒有必要修改的,因為這個文件中已經包含了常用的服務所對應的埠號。為了提高安全性,我們可以給這個文件加上保護以避免沒有經過授權的刪除和改變。為了保護這個文件可以用下面的命令:

[root@deep]#chattr+i/etc/services

*/etc/securetty文件
「/etc/securetty」文件允許你規定「root」用戶可以從那個TTY設備登錄。登錄程序(通常是「/bin/login」)需要讀取「/etc/securetty」文件。它的格式是:列出來的tty設備都是允許登錄的,注釋掉或是在這個文件中不存在的都是不允許root登錄的。

注釋掉(在這一行的開頭加上#號)所有你想不讓root登錄的tty設備。

編輯securetty文件(vi/etc/securetty)象下面一樣,注釋掉一些行:

tty1

#tty2

#tty3

#tty4

#tty5

#tty6

#tty7

#tty8

*使Control-Alt-Delete關機鍵無效
把「/etc/inittab」文件中的一行注釋掉可以禁止用Control-Alt-Delete關閉計算機。如果伺服器不是放在一個安全的地方,這非常重要。

編輯inittab文件(vi/etc/inittab)把這一行:

ca::ctrlaltdel:/sbin/shutdown-t3-rnow

改為:

#ca::ctrlaltdel:/sbin/shutdown-t3-rnow

用下面的命令使改變生效:

[root@deep]#/sbin/initq

*改變「/etc/rc.d/init.d/」目錄下的腳本文件的訪問許可
/etc/rc.d/init.d/下的腳本主要包含了啟動服務的腳本程序。一般用戶沒有什麼必要知道腳本文件的內容。所以應該改變這些腳本文件的許可權。

[root@deep]#chmod-R700/etc/rc.d/init.d/*

這樣只有root可以讀、寫和執行這個目錄下的腳本。

*/etc/rc.d/rc.local文件
在默認情況下,當登錄裝有Linux系統的計算機時,系統會告訴你Linux發行版的名字、版本號、內核版本和伺服器名稱。這泄露了太多的系統信息。最好只顯示一個「Login:」的提示信息。

第一步:

編輯「/ect/rc.d/rc.local」文件,在下面這些行的前面加上「#」:

--

#Thiswilloverwrite/etc/issueateveryboot.So,makeanychangesyou

#wanttomaketo/etc/.

#echo"">/etc/issue

#echo"$R">>/etc/issue

#echo"Kernel$(uname-r)on$a$(uname-m)">>/etc/issue

#

#cp-f/etc/issue/etc/issue.net

#echo>>/etc/issue

--

第二步:

刪除「/etc」目錄下的「issue.net」和「issue」文件:

[root@deep]#rm-f/etc/issue

[root@deep]#rm-f/etc/issue.net

注意:「/etc/issue.net」文件是用戶從網路登錄計算機時(例如:telnet、SSH),看到的登錄提示。同樣在「」目錄下還有一個「issue」文件,是用戶從本地登錄時看到的提示。這兩個文件都是文本文件,可以根據需要改變。但是,如果想刪掉這兩個文件,必須向上面介紹的那樣把「/etc/rc.d/rc.local」腳本中的那些行注釋掉,否則每次重新啟動的時候,系統又會重新創建這兩個文件。

Ⅱ 如何組建一個無盤工作站,具體步驟

無盤工作站構架指南2(5-10)

5、486運行Win2000?無盤工作站

你想用486機運行Win2000嗎?你想不買終端卡組建無盤Win2000網路嗎?好了,請跟我來吧。根據本人長期的組網實踐經驗,總結出一套完整的無盤Win2000方案,給大家分享!

首先說說大致工作原理:

主要先通過Win2000遠程無盤引導Win32工作站,再利用Win2000終端服務和終端連網軟體從無盤win32中登陸到終端伺服器上。

請看以下具體步驟:

一、硬體配置:

1.伺服器:建議CPU PIII500 以上、256M內存,硬碟15G以上(經濟允許的話最好用SCSI)因為伺服器是整個網路核心的核心,所以配置一定要好。

2.工作站:低配置的486,586即可。筆者這里是奔騰75,8M內存,無硬碟。

二、安裝步驟:

1.首先把伺服器裝好Win2000 Server,並配置好所有硬體。

2.為window2000安裝終端服務。

打開控制面版---添加/刪除程序---添加/刪除Windows組件--選中Windows終端服務確定。安裝時要放入Win2000光碟.

3.在伺服器上安裝MetaFrame。Metaframe是citrix公司在Win2000下的終端伺服器他比Win2000的終端服務更加強大,提供多種客戶終端接入服務。

4.安裝好Metafrmae後,開始製作終端客戶安裝軟盤.

開始---程序---Metaframe tools---Ica client creator----Ica Client For win3x

5.為Win2000添加遠程啟動服務。由於Win2000已經不在支持遠程啟動服務。因此,我們考慮將NT4的遠程啟動服務移植到Win2000中。可到凌心之 家(www.lingxin-home.com)或我的主頁(networld2001.8u8.com)去下載遠程服務安裝工具。

6.在Win2000下依次配一台Dos、win32無盤站.方法與nt下一模一樣,別告訴我你不會配置.不會的,以下就不用看了。

7.以無盤win32啟動工作站,把第4步製作的終端客戶盤安裝在無盤站上。

8.配置客戶端。雙擊citrix圖標,建立一個新連接,這里注意:要填好主機名(伺服器名稱),協議選擇Netbios,的其它全部用他的默認就可以了。

9.建立連接完成後,雙擊剛才建立的連接,就出現夢寐以求的Win2000桌面了。你可以運行任何在伺服器的軟體了!

6、安裝Linux無盤工作站

[文章導讀]

其實Linux 對遠程引導的支持非常好,Linnx內核自身又支持網路文件系統,因此非常適合做無盤工作站,本文將以一個實例向大家詳細介紹無盤Linux工作站的安裝辦法。

[正文]

當年Novell下的無盤DOS工作站很是流行,後來又流行過Win95無盤工作站,只是由於問題多多,後來微軟自己停止了對無盤Windows的支持。隨著Linux的日益流行,使用Linux的人越來越多,其實Linux 對遠程引導的支持非常好,Linnx內核自身又支持網路文件系統,因此非常適合做無盤工作站,本文將以一個實例向大家詳細介紹無盤Linux工作站的安裝辦法。

這個網路是一個小的區域網,有1台伺服器和4台 Linux 無盤工作站,彼此之間用雙絞線通過HUB連接,伺服器的IP地址定為192.168.0.80 ,名字是server ,5台無盤工作站的地址由伺服器動態分配,地址范圍從 192.168.0.1 到192.168.0.4 ,名字分別是c1,c2, c3,c4,伺服器和無盤工作站使用的都是NE2000 兼容網卡,無盤工作站使用的網卡上都安 裝了BOOTROM 啟動晶元,伺服器操作系統安裝的是 RedHat Linux 6.0 ,安裝時選用定製安裝,並安裝了全部軟體。

Linux的遠程引導有兩種方式,一是利用Bootp協議,有一個專門的項目EtherBoot 提供支持(http://www.slug.org.au/etherboot/),這種方式引導 Linux 的速度是最快的,但這種方式有一個最大的問題,就是在市場上找不到支持這種遠程引導協議的 BOOTROM 啟動 晶元(除非自己刻錄),因為市場上幾乎所有的 BOOTROM 啟動晶元都是遵循NOVELL遠程引導 協議的,於是有人提出另外一種方式,就是伺服器端用 NetWare 伺服器,客戶端就可以用現 有的BOOTROM 啟動晶元了,說到這里大家一定胡塗了,作Linux無盤工作站豈不是還一台 NetWare 伺服器?不是的,因為神通廣大的 Linux 可以模擬 NetWare 伺服器,就象Samba 可以把 Linux 模擬成 NT 一樣,mars_nwe 可以把 Linux 模擬成 NetWare,不僅能提供 NetWare 文件和列印服務,還能提供遠程引導支持(知道Linux的厲害了吧),本文講述的 Linux 無盤工作站就是用這種方式作遠程引導的。

准備啟動盤

由於在 Linux 下沒有製作符合 NetWare 遠程引導協議啟動映象的工具,所以只能用早期的Win95提供的工具(遺憾)。找一台裝有 Win95 的機器啟動後按 F8 進入純DOS方式,格式化一張啟動盤 format a: /s ,然後將RedHat Linux安裝光碟上 dosutils 目錄下的 loadlin.exe復制到啟動盤,在啟動盤上作一個 autoexec.bat 文件,代碼只有一行 loadlin.exe bzImage root=/dev/nfsroot從 Windows 95 安裝光碟的 Win95 目錄下的cab文件中解出 rplboot.sys 文件放在啟動 盤上,命令如下:

extract.exe /a /l a:\ win95-27.cab rplboot.sys

一張用來做啟動映象的啟動盤就作好了,保存好啟動盤,以後作啟動映象時會用到它。

編譯內核

用於無盤工作站的Linux內核與用於從本地硬碟引導的Linux內核是不同的,無盤工作站的內核必須支持NFS作為根文件系統,即遠程根文件系統,所以必須編譯無盤工作站專用的內核。筆者使用的內核代碼版本是2.2.16,將內核源代碼解壓到/usr/src下, cd /usr/src/linux 進入內核子目錄,執行命令make menuconfig 進行內核編譯配置,下列項目必須按要求設置:

Processor type and features 該項目下面的選項必須根據無盤工作站的CPU類型設置,而不是根據伺服器的CPU類型設置
Loadable mole support 該項目下面的所有選項都禁止,即不支持模塊功能
Plug and Play support 設置為有效
Block devices 該項目下面的
Loopback device support
Network block device support

都設置為有效
Networking option 該項目下面的

kernel level autoconfiguration
DHCP support (NEW)
都設置為有效
Network device support 該項目下面的選項必須根據無盤工作站使用的網卡進 行設置,本例中使用的是NE2000兼容網卡,選項
Ethernet (10 or 100Mbit)
Other ISA cards
NE2000/NE1000 support (NEW)
都設置為有效
Filesystems 該項目下面的Network File Systems子項目下面的
NFS filesystem support
Root file system on NFS (NEW)
都設置為有效

以上設置完成後,退出內核編譯設置程序,會出現一個對話框:Do you wish to save your new kernel configuration?

然後執行 make dep && make bzImage 進行內核編譯,這個過程得花一點時間,特別是如果計算機的速度不快的話,花的時間會更長一些。編譯內核如果沒有錯誤,會得到內核映象文件/usr/src/linux/arch/i386/boot/bzImage ,將啟動軟盤插入計算機,執行下面的命令 mount -t vfat /dev/fd0 /mnt/floopy cp /usr/src/linux/arch/i386/boot/bzImage /mnt/floppy umount /dev/fd0

好了,啟動盤上的文件都准備齊全了,等會兒用它到Win95環境下製作啟動映象。

伺服器設置

伺服器端需要運行nfsd、dhcpd、mars_new等幾個服務進程,這些軟體在ReHat Linux 發行套件里都有,如果在安裝 Linux 的時候選擇全部安裝,這些軟體都會隨著安裝操作 系統而裝好了,下面對這些軟體進行設置,注意,下面的操作要以 root 身份進行。

1、 NFS 守護進程nfsd

首先要建立幾個供無盤工作站使用的目錄,並通過nfsd 導出,命令如下:

mkdir /tftpboot

然後編輯文件 /etc/hosts ,加入下面的內容

192.168.0.80 server server.domain
192.168.0.1 c1 c1.domain
192.168.0.2 c2 c2.domain
192.168.0.3 c3 c3.domain
192.168.0.4 c4 c4.domain

第一台工作站的工作目錄設置方法如下:

mkdir /tftpboot/192.168.0.1
cd /tftpboot/192.168.0.1
c000p -a /bin .
cp -a /dev .
mknod dev/nd0 b 43 0
chmod 600 dev/nd0
cp -a /etc .
cp -a /home .
cp -a /lib .
rm -rf lib/moles
cp -a /root .
cp -a /sbin .
cp -a /var .
mkdir proc
mkdir usr
mkdir tmp
chmod 777 tmp
touch fastboot
chattr +i fastboot
cd etc

編輯文件 sysconfig/network-scripts/ifcfg-eth0

保留其中的

DEVICE=eth0
ONBOOT=yes

其餘的行全部刪除,然後增加一行

BOOTPROTO=dhcp

編輯文件 rc.d/rc.sysinit ,在文件最後加上兩行

mount -t nfs server:/usr /usr
/usr/X11R6/bin/xfs

編輯文件 fstab

保留其中的

none /proc proc defaults 0 0

其餘的行全部刪除,然後增加一行

server:/tftpboot/192.168.0.1 / nfs defaults 1 1

其它工作站的工作目錄設置方法就簡單多了

cd /tftpboot
cp -a 192.168.0.1 192.168.0.2
cp -a 192.168.0.1 192.168.0.3
cp -a 192.168.0.1 192.168.0.4

編輯文件 /etc/exports ,加入以下內容

/usr (ro,no_root_squash)
/tftpboot/192.168.0.1 (rw,no_root_squash)
/tftpboot/192.168.0.2 (rw,no_root_squash)
/tftpboot/192.168.0.3 (rw,no_root_squash)
/tftpboot/192.168.0.4 (rw,no_root_squash)

2、動態主機配置協議伺服器 dpchd

檢查一下文件/etc/dhcpd.leases是否存在,若不存在就用命令touch /etc/dhcpd.leases 創建一個,然後編輯文件 /etc/dhcpd.conf ,加入以下內容

subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.1 192.168.0.4;
}

3、NetWare 模擬器 marsw_nwe

編輯文件 /etc/nwserv.conf,找到下面的行

# 4 0x10 eth0 802.3 1

將該行開頭的'#'去掉,再找到

4 0x0 * 802.3 1

在該行開頭加上'#'

製作啟動映象

進入Win95,將Win95(早期的版本,可以用伺服器安裝方式安裝)安裝光碟的admin\nettools\netsetup\rplimage.exe 復制到硬碟,將啟動軟盤插入軟碟機,然後在純MSDOS方式下執行 rplimage a: 就會得到啟動映象 net$dos.sys,再將啟動映象 net$dos.sys 復制到啟動盤上(如果啟動盤空間不夠,可以先刪除啟動盤上的一些文件以留出空間)。

啟動 Linux 伺服器,以 root 用戶登錄,將啟動軟盤插入軟碟機,執行下面的命令 mount -t vfat /dev/fd0 /mnt/floppy cp /mnt/floppy/net\$dos.sys /var/mars_nwe\sys\login umount /dev/fd0 然後執行 setup ,移動光棒至 System services 選項回車,出現 Services 設置畫面,將dhcpd,nfs,mars-nwe 都設為有效,退出 setup 程序,執行以下的命令以啟動上述服務進程:

/etc/rc.d/rc3.d/*mars-nwe restart
/etc/rc.d/rc3.d/*dhcpd restart
/etc/rc.d/rc3.d/*nfs restart

下一次再啟動伺服器時,上述服務進程會自動執行。

至此,所有的設置工作全部完成了,聯好網路隨便打開一台無盤工作站,稍等一下,出現遠程引導的信息,接著會啟動 Win95,接下來很快就會裝載 Linux ,在一大堆 Linux 的啟動信息之後如果看到 Linux 的登錄提示,就說明遠程啟動成功了。

Linux 無盤工作站雖然運轉起來了,但還有一個問題,就是交換的問題,因為Linux 是一個支持虛擬存儲的操作系統,當機器內存不夠時,Linux 就會把內存中暫時不用的數 據換出到交換設備上,等需要時再換回來,剛才我們沒有設置交換區,在無盤工作站上用 free 命令就會發現交換區為零,如果無盤工作站內存較大,運行一些不大的程序,沒有交換區還是可以的,但若運行大型程序就會出問題,下面介紹在伺服器上設置交換區即遠 程交換的方法。
對於2.1.101版以前的內核,要實現遠程交換可有點費事,得從網路上下載有關的補丁來修改內核代碼,然後再編譯內核映象。從2.1.101版後的內核支持網路塊設備,這樣,實現遠程交換就容易了。首先編譯內核時要使 Network block device support 選項有效(剛才編譯內核時就是這么作的),再從http://atrey.karlin.mff.cuni.cz/~pavel/nbd/nbd.html 下載實用程序 nbd.14.tar.gz ,執行下面的命令

tar zxvf nbd.14.tar.gz
cd nbd
./configure
make

編譯完後會得到文件 nbd-server 和 nbd-client,將它們復制到 /usr/sbin 下面:

cp nbd-server nbd-client /usr/sbin
然後編輯文件 /etc/rc.d/rc.sysinit,在文件最後加上一行
/usr/sbin/nbd-server 7999 /tftpboot/%s/swap > /dev/null &
執行剛才的命令激活nbd服務:
/usr/sbin/nbd-server 7999 /tftpboot/%s/swap > /dev/null &

下一次伺服器啟動時,上述命令會自動執行。

再在伺服器上每個工作站目錄(/tftpboot/192.168.0.1,/tftpboot/192.168.0.2等等)下為各個無盤工作站建立交換文件,命令如下(本例中交換區大小為32M):

dd if=/dev/zero of=swap count=32768 bs=1024
mkswap swap

在每個工作站目錄下文件 /etc/rc.d/rc.sysinit 的最後加上兩行

/usr/sbin/nbd-client server 7999 /dev/nd0
swapon /dev/nd0

就這么簡單,再打開無盤工作站試一試啟動成功後登錄系統,執行命令 free 就會看到在顯示信息的最後有這樣一行:

Swap: 32764 XX XXXX
這說明交換區設置成功了。

通過以上步驟,一個完整的 Linux 無盤工作站網路就作好了,Linux 無盤工作站的用法很靈活,既可以象使用普通有盤工作站一樣使用,還可以把無盤工作站當成別的 Unix 主機的終端,特別是可以作為 X 終端,運行遠程 Unix 主機上的 X 應用。

7、實戰Linux無盤工作站

[文章導讀]

本文將詳細敘述一下建立linux無盤工作站的步驟。

[正文]

LINUX無盤工作站的建立,需要作客戶端和伺服器端兩方面的工作,本文將詳細敘述一下建立linux無盤工作站的步驟。

一.無盤工作站客戶端

這部分的主要任務是做一個EPROM的啟動文件,還包括一個處理Linux內核的工具mknbi-linux。有兩個package:etherboot和netboot可供選用, etherboot對網卡型號有要求,支持的網卡種類不算很多,但對最常用的網卡如3c503/507/509/905b、NE1000/2000/PCIne2000、Intel eepro等基本上都能支持;Netboot可以用ndis或pktdrv,這些文件一般在隨卡附帶的驅動盤上都有,但這僅限於網路啟動,對網卡的要求首先是Linux能識別。

以下步驟所述適用於etherboot;

1. 展開etherboot,進入src-32,編輯Config。有許多選項可以讓你做多重啟動、顯示信息、詢問口令之類的事情,這時你需要做的是用bootp代替dhcp,即在Config中定義-DNO_DHCP_SUPPORT設置。因為我們打算在伺服器端用bootp,所以這是必須的,否則在啟動時會因為未能尋找到dhcp server而啟動不了。如果你准備在伺服器端使用dhcp,那麼這一步就不需要了。

2. make。對每種網卡都會生成兩個文件 .rom和 .lzrom,後者是壓縮過的。

3. 使用軟盤啟動驗證所作的啟動ROM沒問題,假設你用的網卡是ne2000兼容的:

cat ../src/floppyload.bin ne.lzrom > /dev/fd0

如用軟盤啟動,系統能探測到你的網卡並發出bootp請求。如果一切OK,你就可以把ROM文件刻寫到EPROM里了。

4. cd ../netboot*;make;make install。make如果出錯,解決辦法是把系統中的bcc改名,然後將gcc連接成bcc,再重新make。最後在系統中會增加一個程序mknbi-linux,這是用來處理linux內核的,在伺服器端設置部分會講它的用法。

客戶端的工作完成了。
二、伺服器端:

假設你的無盤工作站ip為10.0.0.1; 機器名為dc1.subnet.net,另一台無盤工作站ip為10.0.0.2,機器名為dc2.subnet.net, 伺服器ip為10.0.0.254,名為server.subnet.net。

1. 修改/etc/hosts,增加dc1.subnet.net,dc2.subnet.net

2. 取得bootp-2.x.x,展開後注意把帶的各種patch都打上。然後make; make install

3. 建立/etc/bootptab,如下:
global.prof:

:sm=255.255.255.0:

:bf=/tftpboot/vmlinuz.nb:

dc1:tc=global.prof:ha=0000c0863d7a:ip=10.0.0.1:

dc2:tc=global.prof:ha=0800110244e1:ip=10.0.0.2:

ha用無盤工作站網卡的MAC地址代替。

4. 修改inetd.conf,去掉bootpd和tftpd的#號,如下:

tftp dgram udp wait root /usr/sbin/tcpd tftpd –s /tftpboot

bootps dgram udp wait root /usr/sbin/tcpd bootpd -i

kill –HUP `cat /var/run/inetd.pif`

5. 建立/tftpboot/10.0.0.1,cd /tftpboot/10.0.0.1,

(cd /; tar cpf – lib sbin bin var etc dev)| tar xpf –

mkdir usr; mkdir tmp; chmod 1777 tmp; mkdir home;mkdir root; makdir

proc; mkdir mnt

6. touch fastboot; chattr +i fastboot

(fstab 中 / 和 /usr 的最後一項設成0,也許不需要這一步了,但我沒試過)

以下是一個shell script,可用於自動執行以上操作。

#!/bin/sh

if [ $# != 1 ]

then
echo Usage: $0 client-IP-addr

exit 1

fi

cd /

umask 022

mkdir -p /tftpboot/$1

# just make these ones

for d in home mnt proc tmp usr

do

mkdir /tftpboot/$1/$d

done

chmod 1777 /tftpboot/$1/tmp

touch /tftpboot/$1/fastboot

chattr +i /tftpboot/$1/fastboot

# these ones

(cd /; tar cpf - bin lib sbin dev etc var) | (cd /tftpboot/$1; tar xpf -)

7. 刪除var下一切不需要的東西, 減小空間。刪除lib/moles下一切不需要的模塊。

8. 修改etc/sysconfig/network,etc/sysconfig/network-scripts/ifcfg-eth0,

etc/fstab,etc/conf.mole

fstab中指明root在伺服器server上,like this

server:/tftpboot/10.0.0.1 / nfs default 0 0

server:/usr /usr nfs default 0 0

9. 配置etc/rc.d/rc3.d,關掉一切不需要的網路服務。

10. 刪除etc/rc.d/rc6.d/K??network。

11. 修改etc/rc.d/rc.sysinit,尋找「mount –a –t nonfs,smbfs…"改成

「mount.–a –t nosmbfs…"

12. mkdir /tftpboot/10.0.0.2; cd /tftpboot/10.0.0.2;

13. 修改etc/sysconfig/network,etc/sysconfig/network-scripts/ifcfg-eth0,

etc/fstab,etc/conf.mole

14. cd /etc; vi exports;

/usr dc*.subnet.net(ro)

/tftpboot/10.0.0.1 dc1.subnet.net(rw,no_root_squash)

/tftpboot/10.0.0.2 dc2.subnet.net(rw,no_root_squash)

exportfs –a

15. 編譯一個新內核,必須包含以下特性:

NFS filesystem 支持

Root on NFS 支持

Bootp 支持

無盤工作站所用的網卡型號支持

編譯出新內核之後,用mknbi-linux處理,

mknbi-linux bzImage vmlinuz.nb

將vmlinuz.nb放在/tftpboot下即可。

至此,伺服器端的工作就完成了。

注意事項:

1. 如果你打算在伺服器端用dhcp,需要自己配置,參看dhcp的文檔。

2. Rh6.1自帶一個bootparamd,也應該能完成同樣的工作,但在manual中語焉不詳,不知該如何設置。

3. 伺服器端 / 和 /usr 最好單獨分區。

4. etherboot的文檔上說對有些網卡比如PCI NE2000兼容網卡,可能需要調整Makefile中的vendor信息和ID信息,我還未試過。

啟動你的無盤工作站,如一切操作無誤的話,工作站則應該能啟動起來。啟動過程中如果有一些地方不順利,可以在啟動之後對無盤工作站上按一般方法進行設置。

希望以上的講述能給讀者有所幫助和啟迪!

8、Linux無盤工作站架設實例

後面還有實例你自己看吧!

熱點內容
安卓手機如何變成蘋果便簽 發布:2025-08-18 07:37:00 瀏覽:772
安卓美團撤投訴在哪裡 發布:2025-08-18 07:22:06 瀏覽:830
crc32c源碼 發布:2025-08-18 06:48:20 瀏覽:25
jspajax資料庫數據 發布:2025-08-18 06:43:00 瀏覽:734
vs如何從伺服器獲取數據 發布:2025-08-18 06:37:07 瀏覽:971
絢星的安卓名字叫什麼 發布:2025-08-18 06:01:45 瀏覽:300
arch搭建dhcp伺服器 發布:2025-08-18 05:50:07 瀏覽:19
php游戲後台 發布:2025-08-18 05:34:05 瀏覽:65
安卓手機怎麼看不了電池健康值 發布:2025-08-18 05:27:48 瀏覽:303
php表格顯示資料庫數據 發布:2025-08-18 05:20:44 瀏覽:725