Linux 環境下無盤工作站的架設和實現

來源:互聯網
上載者:User

作無盤工作站的方法

  最近有些網友問作無盤工作站的的方法,我剛剛作完,有一些心得貼出來供大家參考。用的系統是rh6.1。

  作無盤工作站需要用戶端和伺服器端兩方面的工作,下面分別敘述。

  無盤工作站用戶端

  這部分的主要任務是做一個EPROM的開機檔案,還包括一個處理linux核心的工具mknbi-linux。有兩個package可以用,etherboot和netboot, etherboot對網卡型號有要求,支援的網卡種類不算少但不是全部,但基本上最常用的網卡都支援,比如3c503/507/509/905b,NE1000/2000/PCIne2000,Intel eepro等等。Netboot可以用ndis或pktdrv,這些在隨卡帶的驅動盤上一般都有,所以什麼卡都能用。但這僅限於網路啟動,Linux核心啟動之後不支援的還是不支援。所以對網卡的要求是Linux能識別。

  以下所述適用於etherboot;

展開etherboot,進入src-32,編輯Config。有許多選項可以讓你做多重啟動、顯示資訊、詢問口令之類的事情,但是唯一需要的是用bootp代替dhcp,即在Config中定義-DNO_DHCP_SUPPORT。因為在伺服器端我們打算用bootp,所以這是必須的,否則啟動時會因為尋找dhcp server又找不到啟動不了。如果你準備在伺服器端使用dhcp,那麼這一步就不需要了。
make。對每種網卡都會產生兩個檔案 .rom和 .lzrom,後者是壓縮過的。
使用磁碟片啟動驗證所作的啟動ROM沒問題,假設你用的網卡是ne2000相容的: cat ../src/floppyload.bin ne.lzrom > /dev/fd0

  用磁碟片啟動,應該能探測到你的網卡並發出bootp請求。如果一切OK,你就可以把ROM檔案燒到EPROM裡了。

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。

修改/etc/hosts,增加dc1.subnet.net,dc2.subnet.net
取得bootp-2.x.x,展開後注意把帶的各種patch都打上。然後make; make install
建立/etc/bootptab,like this
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地址代替。

修改inetd.conf,去掉bootpd和tftpd的#號,like this
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`

建立/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; mkdir proc; mkdir mnt

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

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

刪除var下一切不需要的東西, 減小空間。刪除lib/modules下一切不需要的模組。
修改etc/sysconfig/network,etc/sysconfig/network-scripts/ifcfg-eth0,etc/fstab,etc/conf.module
  fstab中指明root在伺服器server上,like this

server:/tftpboot/10.0.0.1 / nfs default 0 0
server:/usr /usr nfs default 0 0

配置etc/rc.d/rc3.d,關掉一切不需要的網路服務。
刪除etc/rc.d/rc6.d/K??network。
修改etc/rc.d/rc.sysinit,尋找“mount –a –t nonfs,smbfs…"改成 “mount.–a –t nosmbfs…"

mkdir /tftpboot/10.0.0.2; cd /tftpboot/10.0.0.2; (cd ../10.0.0.1; tar cpf - *)
| tar xpf –

修改etc/sysconfig/network,etc/sysconfig/network-scripts/ifcfg-eth0, etc/fstab,etc/conf.module

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

編譯一個新核心,必須包含以下特性:
NFS filesystem 支援
Root on NFS 支援
Bootp 支援
  無盤工作站所用的網卡型號支援

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

mknbi-linux bzImage vmlinuz.nb

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

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

  注意事項:

如果你打算在伺服器端用dhcp,需要自己配置,參看dhcp的文檔。
Rh6.1內建一個bootparamd,也應該能完成同樣的工作,但manual中語焉不詳,不知該如何設定。
伺服器端 / 和 /usr 最好單獨分區。
etherboot的文檔上說對有些網卡比如PCI NE2000相容網卡,可能需要調整Makefile中的vendor資訊和ID資訊,我沒試過。
  啟動你的無盤工作站,一切無誤的話,它應該順利起來。啟動過程中如果有一些地方failed,可以在起來之後在無盤工作站上按一般方法設定。

摘自:LinuxAid

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.