可扩展linux网络启动方案

本文介绍了利用Etherboot + NFS-ROOT + tmpfs实现可扩展Linux网络启动的方法。

启动过程
linux网络启动过程可划分为两个阶段:
第一阶段:下载内核
在这一阶段中,客户端必须有一段小小的网络启动自举代码。
在Linux中,这一段自举代码能够由netboot或etherboot来生成。
自举代码要实现的两个核心功能是:
网卡驱动功能:驱动客户端的网卡,以便经过网络收发数据。
交互引导功能:经过必定的用户界面与用户交互;
              使用适当的网络协议从服务器获取信息和下载数据;
      引导内核。
这一阶段的流程是:
1. 客户机开机并实现bios自检后,把控制权交给etherboot。
2. etherboot利用DHCP协议,经过广播找到DHCP服务器,并取得TFTP服务器的IP和映象文件名等信息。
3. etherboot显示菜单,让用户选择启动参数和内核。
4. etherboot使用TFTP协议,从TFTP服务器下载映象文件。
5. etherboot从映象文件中解出linux内核,并把控制权交给内核。
第二阶段:引导系统
1. linux内核启动,并取得本身的ip及其它网络配置信息。
2. linux内核mount上服务器提供的NFS根分区,并进行系统的初始化。


这种无盘系统,具备以下优势:
建立和维护简单而方便,扩展性和伸缩性好,通用性和适用范围广。

简单步骤以下(假设您已具备Linux无盘启动的初步知识):
一、在一台普通的机子上安装一个debian/woody系统,进行初步的系统配置。
二、将此系统完整的拷贝到服务器的目录/croot下。
三、在服务器上配置运行nfsd。将/croot经过NFS共享:
#/etc/exports
/croot *(ro,no_root_squash)
四、在服务器上配置运行dhcpd,tftpd。
五、缺省的/etc,/var等目录,客户端须要拥有写入权,所以须要在客户端内存创建虚拟的文件系统。
   把/croot下的etc/,var/,root/等目录精简并打包,放在/croot/nfsboot/目录下。
   系统启动时下面的脚本会创建若干tmpfs文件系统,并把这些压缩包解开还原到其中去。
六、在/croot/etc/init.d/下新建nfsboot.sh脚本文件,并创建连接
   ln -s /croot/etc/init.d/nfsboot.sh /croot/etc/rcS.d/S03nfsboot.sh
   使之能在系统启动的初期自动执行。
七、编译客户端内核,分别使用etherboot及mknbi制做启动软盘及映像文件。

参考资料:
在198上你能找到所有的配置参考资料.好比:
ftp://202.38.73.198/diskless/src/         etherboot及mknbi源代码
ftp://202.38.73.198/diskless/boot/          启动无盘客户端用
ftp://202.38.73.198/diskless/p_w_picpath/          这是我已作好的.nbi文件。
ftp://202.38.73.198/diskless/config/          各类配置文件样板,仅供参考。
ftp://202.38.73.198/diskless/etherboot/ 已编译好的各类etherboot启动文件
(NFS) 202.38.73.198:/croot NFS-ROOT,整个系统都给你了噢。
(NFS) 202.38.73.198:/croot/etc/init.d/nfsboot.sh 网络启动初始化脚本,呵呵,本系统运行的关键之处。
(NFS) 202.38.73.198:/croot/nfsboot/     已打包的精简版本/etc,/var等目录
以上目录亦可用http访问。

附录:
A. 编译内核(2.4.x)时须要选上的options
__________________________________________________________________
# File systems

#  Virtual memory file system support
CONFIG_TMPFS=y
#  /dev file system support
CONFIG_DEVFS_FS=y
#  Automatically mount devfs at boot time
CONFIG_DEVFS_MOUNT=y

# Networking options

#  Kernel level IP autoconfiguration
CONFIG_IP_PNP=y
#  DHCP support
CONFIG_IP_PNP_DHCP=y

# Network File Systems

#  NFS file system support
CONFIG_NFS_FS=y
#  Provide NFSv3 client support
CONFIG_NFS_V3=y
#  Root file system on NFS
CONFIG_ROOT_NFS=y
__________________________________________________________________

B. 制作网络启动映像文件的简单脚本
__________________________________________________________________
#!/bin/sh
IMAGE=nc
mknbi-linux --output=$IMAGE.nbi  --rootdir=rom --ip=rom vmlinuz \
&& cp $IMAGE.nbi /tftpboot/ \
&& echo success
__________________________________________________________________

C. 开设TFTP服务
很简单,我用的是atftpd.

D. 开设DHCP服务
配置文件中添加以下内容,以支持无盘客户端的启动:
(其中的一部分请酌情修改)
__________________________________________________________________
# diskless options to support etherboot clients
# TODO: insert the following text into your dhcpd.conf

# Define options for Etherboot
option etherboot-magic      code 128 = string;
option etherboot-cmdline    code 129 = string;
option etherboot-motdline1  code 184 = string;
option etherboot-motdline2  code 185 = string;
option etherboot-motdline3  code 186 = string;
option etherboot-motdline4  code 187 = string;
option etherboot-motdline5  code 188 = string;
option etherboot-motdline6  code 189 = string;
option etherboot-motdline7  code 190 = string;
option etherboot-motdline8  code 191 = string;
option etherboot-menuparam  code 160 = string;
option etherboot-menuline1  code 192 = string;
option etherboot-menuline2  code 193 = string;
option etherboot-menuline3  code 194 = string;
option etherboot-menuline4  code 195 = string;
option etherboot-menuline5  code 196 = string;
option etherboot-menuline6  code 197 = string;
option etherboot-menuline7  code 198 = string;
option etherboot-menuline8  code 199 = string;
option etherboot-menuline9  code 200 = string;
option etherboot-menuline10 code 201 = string;
option etherboot-menuline11 code 202 = string;
option etherboot-menuline12 code 203 = string;
option etherboot-menuline13 code 204 = string;
option etherboot-menuline14 code 205 = string;
option etherboot-menuline15 code 206 = string;
option etherboot-menuline16 code 207 = string;

class "Etherboot" {
    match if substring (option vendor-class-identifier, 0, 9) = "Etherboot";

option etherboot-magic  = E4:45:74:68:00:00;
option vendor-encapsulated-options 3c:09:45:74:68:65:72:62:6f:6f:74:ff;

option root-path    "202.38.73.198:/croot,flags=hard,nolock,intr,v3";

option etherboot-cmdline   "ramdisk_size=204800";
option etherboot-menuparam "timeout=10:default=192";
option etherboot-motdline1 "Linux Remote Boot Service";

option etherboot-menuline1   "Linux WorkStation:::pc.nbi:";
option etherboot-menuline2   "Network Computer:::nc.nbi:";
option etherboot-menuline3   "Debian   2.2 Installation Disk:::debian.nbi:";
option etherboot-menuline4   "Redhat   7.3 Installation Disk:::redhat.nbi:";
option etherboot-menuline5   "Mandrake 8.2 Installation Disk:::mandrake.nbi:";
option etherboot-menuline6   "SuSE     8.0 Installation Disk:::suse.nbi:";
option etherboot-menuline7   "IBM Disk Manager:::dm.nbi:";
option etherboot-menuline8   "Windows 98 bootdisk:::win98.nbi:";
}
__________________________________________________________________

E. 配置NFS-ROOT,开设NFS服务
在/etc/exports文件中添加以下内容:
__________________________________________________________________
#/etc/exports
/croot 10.0.0.0/255.255.255.0(ro,no_root_squash)
__________________________________________________________________

F. 编写启动脚本
请自行修改脚本内容以适合本身的须要,
并将之连接到/etc/rcS.d/目录中,以保证在系统初始化时被执行。
__________________________________________________________________
#!/bin/sh
# nfsboot.sh : boot from nfs-root.
# by WFG 2001.9.30

# setup dirs and packages
cd /

mount -n -t tmpfs tmpfs /tmp

mount -n -t tmpfs tmpfs /var
tar zxf /nfsboot/var.tgz

mount -n -t tmpfs tmpfs /etc
tar zxf /nfsboot/etc.tgz

mount -f /
mount -f /etc
mount -f /var
mount -f /tmp

mount -t tmpfs tmpfs /root
tar zxf /nfsboot/root.tgz

mount -t tmpfs tmpfs /home

mount -t proc  proc  /proc

chmod 755 /etc  /var  /home
chmod 700 /root
__________________________________________________________________

G. 测试运行
转载自:http://blog.chinaunix.net/uid-7747097-id-2562073.html
相关文章
相关标签/搜索