当前位置:Linux教程 - Linux - 远程无盘工作站启动的实现

远程无盘工作站启动的实现



         作 者: John Shang

    假设:

    一台Linux Server with Turbolinux 4.0 IP:192.168.1.11 Domain:server Hostname:linux
    第一台无盘工作站IP:192.168.1.5 hostname:client5
    第二台无盘工作站IP:192.168.1.6 hostname:client6

    条件:

    Linux Server启动DNS,DHCP,NFS,tftp,bootp服务,修改/etc/inetd.conf,将tftp和bootps前的注释符去掉。关于DNS和DHCP的配置请查看相关的文章。
    一块NE2000兼容网卡。

    目的:

    实现远程无盘启动(注:本文只是用软盘仿真BootpROM,如果您有实际的BootpROM启动经验,请告诉大家一起分享)。

    关于远程启动的原理,在此不在详述,您可以参阅相关文档。

    服务器端配置:

    1.进入Turbolinux 4.0的src目录,make menuconfig,加入对bootp和nfs网络启动的支持,make dep,make zImage,make modules,make modules_install.

    2.在/下建立tftpboot目录,同时在tftpboot目录下建立192.168.1.5和192.168.1.6两个子目录.

    3.进入192.168.1.5,建立bin,etc,lib,mnt,root,tmp,var,dev,home,misc,net,proc,sbin,usr等目录。

    mknod /dev/nfsroot b 0 255
    cp -a /bin/* /tftpboot/192.168.1.5/bin
    cp -a /sbin/* /tftpboot/192.168.1.5/sbin
    cp -a /etc/* /tftpboot/192.168.1.5/etc
    cp -a /lib/* /tftpboot/192.168.1.5/lib
    cp -a /dev/* /tftpboot/192.168.1.5/dev
    cp -a /var/* /tftpboot/192.168.1.5/var
    chmod a+w /tftpboot/192.168.1.5/tmp以便客户端写临时数据。

    4.修改/etc/exports,加入远程客户端可以mount的目录。

    My /etc/exports below:
    /home/golden 192.168.1.5(rw,no_root_squash)
    /home/john 192.168.1.6(rw,no_root_squash)
    /tftpboot/192.168.1.5 192.168.1.5(rw,no_root_squash)
    /tftpboot/192.168.1.6 192.168.1.6(rw,no_root_squash)
    /home/public 192.168.1.*(rw,no_root_squash)
    /usr 192.168.1.*(ro,no_root_squash)

    至此服务器端的配置已经完成。


    客户端配置:

    1.进入/tftpboot/192.168.1.5/etc目录,重新建立fstab,以mount刚才服务器端/etc/exports文件中授权的可mount目录。

    My /tftpboot/192.168.1.5/etc/fstab below:
    192.168.1.11:/tftpboot/192.168.1.5 / nfs defaults 0 0
    none /proc proc defaults 0 0
    192.168.1.11:/usr /usr nfs defaults 0 0
    192.168.1.11:/home/public /home/public nfs defaults 0 0
    192.168.1.11:/home/golden /home/golden nfs defaults 0 0
    注:/home/pulic为一自建的共享目录,/home/golden为用户golden的目录。

    2.修改/tftpboot/192.168.1.5/etc/sysconfig/network文件,只需以下即可:

    NETWORKING=yes
    FORWARD_IP4=no
    HOSTNAME=client5.server
    DOMAINNAME=server
    GATEWAY=192.168.1.11
    GATEWAYDEV=eth0

    3.修改/tftpboot/192.168.1.5/etc/sysconfig/network-scripts/ifcfg-eth0文件:

    DEVICE=eth0
    IPADDR=192.168.1.5
    NETMASK=255.255.255.0
    NETWORK=192.168.1.0
    BROADCAST=192.168.1.255
    ONBOOT=yes
    BOOTPROTO=none

    4.取出turbolinux 4.0的安装光盘,在images目录下有boot.img文件。在linux下运行

    dd if=boot.img of=/dev/fd0 bs=1440k

    5.修改刚才建立的软盘,我们不需要安装linux,所以可删除initrd.img。

    把刚才新编译的内核cp到软盘上,以同名覆盖vminuz。
    boot.msg是显示的文本信息,可自行修改(我可以有自己的linux版本了,哈...)。

    6.重要的就是那个syslinux.cfg文件了,我们要修改他,让其以我们新建立的内核启动,并自动挂上 linux server中授权可mount的共享目录。

    My syslinux.cfg below:
    display boot.msg
    default normal
    timeout 60
    label normal
    kernel vmlinuz
    append root=/dev/nfsroot nfsroot=192.168.1.11:/tftpboot/192.168.1.5,tcp vga=normal

    5.OK,如此就可以在客户端用此软盘来启动server上的linux了。

    注:您还可以有其他更多的配置方案,如:权限的控制,多台工作站共享同一配置,工作站自动获得动态IP等。
    本文只是简单的介绍linux nfs文件系统的应用,如果您有更好的方案,请和大家一同共享。

    我将继续维护此文章。Next is about real Diskless Linux with BootpROM.

    john shang
    2000.05.01 1:00PM

    =============================================================

    或许我是太幸运了,经过一个下午的实验,已经完成真正无盘启动linux的技术,在此小弟贴出来,与各位共同分享。

    条件:

    一块NE2000兼容网卡(最好是ISA的),以及提供Rom远程启动的软件包etherboot。您可以在以下网址获得
    http://www.slug.org.au/etherboot

    服务器端配置:

    1.除了上篇文章说明的配置外,请解开下载的etherboot软件包。

    My configuration below:
    tar zxvf etherboot.gar.gz --prefix /usr/local
    cd /usr/local/etherboot/src,run \"make\".
    cd /usr/local/etherboot/netboot-0.8.1,run \"./configure\" and \"make\".

    2.将我们编译的内核cp到/usr/local/etherboot/src,运行以下命令生成供远程启动Rom使用的内核影像文件。

    mknbi -x -k zImage -o /tftpboot/vmlinuz.xterm
    并把vmlinuz.xterm设成all可读。

    3.为了测试是否成功,我们可以用etherboot自带的软件生成Floppy仿真式的ROM,即把ROM放在软盘上,就像是用BootProm启动一样。(这次可是真的同Rom一样)
    运行以下命令,将Rom仿真文件写到软盘上。
    cd /usr/local/etherboot/src
    cat floppyload.bin.pre ./bin32/ne.lzrom > /dev/fd0
    请根据具体的情况,替换ne.lzrom.

    4.如此,就可用此软盘启动了。
    客户端配置同上篇文章介绍的相同。


    注:
    1.建议根据网卡的ID,为其指定IP.
    2.同上篇文章不同的是,你可以用主机名来代替IP名,即/tftpboot/192.168.1.5 ---> golden
    3.如果用此软盘启动时,在find网卡后,总是probing......,大部分是你的网卡支持性不好。
    4.更详细的FAQ请在etherboot的doc目录下查找。
    5.以下是我的dhcpd.conf文件。
    subnet 192.168.1.0 netmask 255.255.255.0 {
    filename \"/tftpboot/vmlinuz.xterm\";
    range dynamic-bootp 192.168.1.5 192.168.1.6;
    option subnet-mask 255.255.255.0;
    option broadcast-address 192.168.1.255;
    option routers 192.168.1.11;
    option domain-name \"server\";
    option domain-name-servers 192.168.1.11;
    }
    host golden {
    hardware ethernet 52:54:ab:1b:94:6b;
    fixed-address 192.168.1.5;
    option host-name \"golden\";
    filename \"/tftpboot/vmlinuz.xterm\";
    }

    发布人:netbull 来自:蓝森林