欢迎来到皮皮网网首页

【安卓1.0源码】【广州到深圳源码】【内部通知asp源码】bootp源码详解

来源:git源码安装vim 时间:2024-12-23 01:28:48

1.TCP/IP详解卷1:协议的作品目录
2.Linux下针对路由功能配置iptables的码详方法详解
3.TCP/IP详解卷1:协议目录
4.国产电脑麒麟安装linux国产麒麟操作系统可以安装什么版本的软件windows还是linux
5.如何组建一个无盘工作站,具体步骤

bootp源码详解

TCP/IP详解卷1:协议的作品目录

       è¯‘者序

       å‰è¨€

       ç¬¬1ç«  概述1

       1.1 引言1

       1.2 分层1

       1.3 TCP/IP的分层4

       1.4 互联网的地址5

       1.5 域名系统6

       1.6 封装6

       1.7 分用8

       1.8 客户-服务器模型8

       1.9 端口号9

       1. 标准化过程

       1. RFC

       1. 标准的简单服务

       1. 互联网

       1. 实现

       1. 应用编程接口

       1. 测试网络

       1. 小结

       ç¬¬2ç«  链路层

       2.1 引言

       2.2 以太网和IEEE 封装

       2.3 尾部封装

       2.4 SLIP:串行线路IP

       2.5 压缩的SLIP

       2.6 PPP:点对点协议

       2.7 环回接口

       2.8 最大传输单元MTU

       2.9 路径MTU

       2. 串行线路吞吐量计算

       2. 小结

       ç¬¬3ç«  IP:网际协议

       3.1 引言

       3.2 IP首部

       3.3 IP路由选择

       3.4 子网寻址

       3.5 子网掩码

       3.6 特殊情况的IP地址

       3.7 一个子网的例子

       3.8 ifconfig命令

       3.9 netstat命令

       3. IP的未来

       3. 小结

       ç¬¬4ç«  ARP:地址解析协议

       4.1 引言

       4.2 一个例子

       4.3 ARP高速缓存

       4.4 ARP的分组格式

       4.5 ARP举例

       4.5.1 一般的例子

       4.5.2 对不存在主机的ARP请求

       4.5.3 ARP高速缓存超时设置

       4.6 ARP代理

       4.7 免费ARP

       4.8 arp命令

       4.9 小结

       ç¬¬5ç«  RARP:逆地址解析协议

       5.1 引言

       5.2 RARP的分组格式

       5.3 RARP举例

       5.4 RARP服务器的设计

       5.4.1 作为用户进程的RARP服务器

       5.4.2 每个网络有多个RARP服务器

       5.5 小结

       ç¬¬6ç«  ICMP:Internet控制报文协议

       6.1 引言

       6.2 ICMP报文的类型

       6.3 ICMP地址掩码请求与应答

       6.4 ICMP时间戳请求与应答

       6.4.1 举例

       6.4.2 另一种方法

       6.5 ICMP端口不可达差错

       6.6 ICMP报文的4.4BSD处理

       6.7 小结

       ç¬¬7ç«  Ping程序

       7.1 引言

       7.2 Ping程序

       7.2.1 LAN输出

       7.2.2 WAN输出

       7.2.3 线路SLIP链接

       7.2.4 拨号SLIP链路

       7.3 IP记录路由选项

       7.3.1 通常的例子

       7.3.2 异常的输出

       7.4 IP时间戳选项

       7.5 小结

       ç¬¬8ç«  Traceroute程序

       8.1 引言

       8.2 Traceroute 程序的操作

       8.3 局域网输出

       8.4 广域网输出

       8.5 IP源站选路选项

       8.5.1 宽松的源站选路的traceroute

       ç¨‹åºç¤ºä¾‹

       8.5.2 严格的源站选路的traceroute

       ç¨‹åºç¤ºä¾‹

       8.5.3 宽松的源站选路traceroute程序

       çš„往返路由

       8.6 小结

       ç¬¬9ç«  IP选路

       9.1 引言

       9.2 选路的原理

       9.2.1 简单路由表

       9.2.2 初始化路由表

       9.2.3 较复杂的路由表

       9.2.4 没有到达目的地的路由

       9.3 ICMP主机与网络不可达差错

       9.4 转发或不转发

       9.5 ICMP重定向差错

       9.5.1 一个例子

       9.5.2 更多的细节

       9.6 ICMP路由器发现报文

       9.6.1 路由器操作

       9.6.2 主机操作

       9.6.3 实现

       9.7 小结

       ç¬¬ç«  动态选路协议

       .1 引言

       .2 动态选路

       .3 Unix选路守护程序

       .4 RIP:选路信息协议

       .4.1 报文格式

       .4.2 正常运行

       .4.3 度量

       .4.4 问题

       .4.5 举例

       .4.6 另一个例子

       .5 RIP版本

       .6 OSPF:开放最短路径优先

       .7 BGP:边界网关协议

       .8 CIDR:无类型域间选路

       .9 小结

       ç¬¬ç«  UDP:用户数据报协议

       .1 引言

       .2 UDP首部

       .3 UDP检验和

       .3.1 tcpdump输出

       .3.2 一些统计结果

       .4 一个简单的例子

       .5 IP分片

       .6 ICMP不可达差错(需要分片)

       .7 用Traceroute确定路径MTU

       .8 采用UDP的路径MTU发现

       .9 UDP和ARP之间的交互作用

       . 最大UDP数据报长度

       . ICMP源站抑制差错

       . UDP服务器的设计

       ..1 客户IP地址及端口号

       ..2 目标IP地址

       ..3 UDP输入队列

       ..4 限制本地IP地址

       ..5 限制远端IP地址

       ..6 每个端口有多个接收者

       . 小结

       ç¬¬ç«  广播和多播

       .1 引言

       .2 广播

       .2.1 受限的广播

       .2.2 指向网络的广播

       .2.3 指向子网的广播

       .2.4 指向所有子网的广播

       .3 广播的例子

       .4 多播

       .4.1 多播组地址

       .4.2 多播组地址到以太网地址的转换

       .4.3 FDDI和令牌环网络中的多播

       .5 小结

       ç¬¬ç«  IGMP:Internet组管理协议

       .1 引言

       .2 IGMP报文

       .3 IGMP协议

       .3.1 加入一个多播组

       .3.2 IGMP报告和查询

       .3.3 实现细节

       .3.4 生存时间字段

       .3.5 所有主机组

       .4 一个例子

       .5 小结

       ç¬¬ç«  DNS:域名系统

       .1 引言

       .2 DNS基础

       .3 DNS的报文格式

       .3.1 DNS查询报文中的问题部分

       .3.2 DNS响应报文中的资源记录部分

       .4 一个简单的例子

       .5 指针查询

       .5.1 举例

       .5.2 主机名检查

       .6 资源记录

       .7 高速缓存

       .8 用UDP还是用TCP

       .9 另一个例子

       . 小结

       ç¬¬ç«  TFTP:简单文件传送协议

       .1 引言

       .2 协议

       .3 一个例子

       .4 安全性

       .5 小结

       ç¬¬ç«  BOOTP: 引导程序协议

       .1 引言

       .2 BOOTP的分组格式

       .3 一个例子

       .4 BOOTP服务器的设计

       .5 BOOTP穿越路由器

       .6 特定厂商信息

       .7 小结

       ç¬¬ç«  TCP:传输控制协议

       .1 引言

       .2 TCP的服务

       .3 TCP的首部

       .4 小结

       ç¬¬ç«  TCP连接的建立与终止

       .1 引言

       .2 连接的建立与终止

       .2.1 tcpdump的输出

       .2.2 时间系列

       .2.3 建立连接协议

       .2.4 连接终止协议

       .2.5 正常的tcpdump输出

       .3 连接建立的超时

       .3.1 第一次超时时间

       .3.2 服务类型字段

       .4 最大报文段长度

       .5 TCP的半关闭

       .6 TCP的状态变迁图

       .6.1 2MSL等待状态

       .6.2 平静时间的概念

       .6.3 FIN_WAIT_2状态

       .7 复位报文段

       .7.1 到不存在的端口的连接请求

       .7.2 异常终止一个连接

       .7.3 检测半打开连接

       .8 同时打开

       .9 同时关闭

       . TCP选项

       . TCP服务器的设计

       ..1 TCP服务器端口号

       ..2 限定的本地IP地址

       ..3 限定的远端IP地址

       ..4 呼入连接请求队列

       . 小结

       ç¬¬ç«  TCP的交互数据流

       .1 引言

       .2 交互式输入

       .3 经受时延的确认

       .4 Nagle算法

       .4.1 关闭Nagle算法

       .4.2 一个例子

       .5 窗口大小通告

       .6 小结

       ç¬¬ç«  TCP的成块数据流

       .1 引言

       .2 正常数据流

       .3 滑动窗口

       .4 窗口大小

       .5 PUSH标志

       .6 慢启动

       .7 成块数据的吞吐量

       .7.1 带宽时延乘积

       .7.2 拥塞

       .8 紧急方式

       .9 小结

       ç¬¬ç«  TCP的超时与重传

       .1 引言

       .2 超时与重传的简单例子

       .3 往返时间测量

       .4 往返时间RTT的例子

       .4.1 往返时间RTT的测量

       .4.2 RTT估计器的计算

       .4.3 慢启动

       .5 拥塞举例

       .6 拥塞避免算法

       .7 快速重传与快速恢复算法

       .8 拥塞举例(续)

       .9 按每条路由进行度量

       . ICMP的差错

       . 重新分组

       . 小结

       ç¬¬ç«  TCP的坚持定时器

       .1 引言

       .2 一个例子

       .3 糊涂窗口综合症

       .4 小结

       ç¬¬ç«  TCP的保活定时器

       .1 引言

       .2 描述

       .3 保活举例

       .3.1 另一端崩溃

       .3.2 另一端崩溃并重新启动

       .3.3 另一端不可达

       .4 小结

       ç¬¬ç«  TCP的未来和性能

       .1 引言

       .2 路径MTU发现

       .2.1 一个例子

       .2.2 大分组还是小分组

       .3 长肥管道

       .4 窗口扩大选项

       .5 时间戳选项

       .6 PAWS:防止回绕的序号

       .7 T/TCP:为事务用的TCP扩展

       .8 TCP的性能

       .9 小结

       ç¬¬ç«  SNMP:简单网络管理协议

       .1 引言

       .2 协议

       .3 管理信息结构

       .4 对象标识符

       .5 管理信息库介绍

       .6 实例标识

       .6.1 简单变量

       .6.2 表格

       .6.3 字典式排序

       .7 一些简单的例子

       .7.1 简单变量

       .7.2 get-next操作

       .7.3 表格的访问

       .8 管理信息库(ç»­)

       .8.1 system组

       .8.2 interface组

       .8.3 at组

       .8.4 ip组

       .8.5 icmp组

       .8.6 tcp组

       .9 其他一些例子

       .9.1 接口MTU

       .9.2 路由表

       . trap

       . ASN.1和BER

       . SNMPv

       . 小结

       ç¬¬ç«  Telnet和Rlogin:远程登录

       .1 引言

       .2 Rlogin协议

       .2.1 应用进程的启动

       .2.2 流量控制

       .2.3 客户的中断键

       .2.4 窗口大小的改变

       .2.5 服务器到客户的命令

       .2.6 客户到服务器的命令

       .2.7 客户的转义符

       .3 Rlogin的例子

       .3.1 初始的客户-服务器协议

       .3.2 客户中断键

       .4 Telnet协议

       .4.1 NVT ASCII

       .4.2 Telnet命令

       .4.3 选项协商

       .4.4 子选项协商

       .4.5 半双工、一次一字符、一次

       ä¸€è¡Œæˆ–行方式

       .4.6 同步信号

       .4.7 客户的转义符

       .5 Telnet举例

       .5.1 单字符方式

       .5.2 行方式

       .5.3 一次一行方式(准行方式)

       .5.4 行方式:客户中断键

       .6 小结

       ç¬¬ç«  FTP:文件传送协议

       .1 引言

       .2 FTP协议

       .2.1 数据表示

       .2.2 FTP命令

       .2.3 FTP应答

       .2.4 连接管理

       .3 FTP的例子

       .3.1 连接管理:临时数据端口

       .3.2 连接管理:默认数据端口

       .3.3 文本文件传输:NVT ASCII

       è¡¨ç¤ºè¿˜æ˜¯å›¾åƒè¡¨ç¤º

       .3.4 异常中止一个文件的传输:

       Telnet同步信号

       .3.5 匿名FTP

       .3.6 来自一个未知IP地址的匿名FTP

       .4 小结

       ç¬¬ç«  SMTP:简单邮件传送协议

       .1 引言

       .2 SMTP协议

       .2.1 简单例子

       .2.2 SMTP命令

       .2.3 信封、首部和正文

       .2.4 中继代理

       .2.5 NVT ASCII

       .2.6 重试间隔

       .3 SMTP的例子

       .3.1 MX记录:主机非直接连到

       Internet

       .3.2 MX记录:主机出故障

       .3.3 VRFY和EXPN命令

       .4 SMTP的未来

       .4.1 信封的变化:扩充的SMTP

       .4.2 首部变化:非ASCII字符

       .4.3 正文变化:通用Internet邮件

       æ‰©å……

       .5 小结

       ç¬¬ç«  网络文件系统

       .1 引言

       .2 Sun远程过程调用

       .3 XDR:外部数据表示

       .4 端口映射器

       .5 NFS协议

       .5.1 文件句柄

       .5.2 安装协议

       .5.3 NFS过程

       .5.4 UDP还是TCP

       .5.5 TCP上的NFS

       .6 NFS实例

       .6.1 简单的例子:读一个文件

       .6.2 简单的例子:创建一个目录

       .6.3 无状态

       .6.4 例子:服务器崩溃

       .6.5 等幂过程

       .7 第3版的NFS

       .8 小结

       ç¬¬ç«  其他的TCP/IP应用程序

       .1 引言

       .2 Finger协议

       .3 Whois协议

       .4 Archie、WAIS、Gopher、Veronica

       å’ŒWWW

       .4.1 Archie

       .4.2 WAIS

       .4.3 Gopher

       .4.4 Veronica

       .4.5 万维网WWW

       .5 X窗口系统

       .5.1 Xscope程序

       .5.2 LBX: 低带宽X

       .6 小结

       é™„录A tcpdump程序

       é™„录B 计算机时钟

       é™„录C sock程序

       é™„录D 部分习题的解答

       é™„录E 配置选项

       é™„录F 可以免费获得的源代码

       å‚考文献

       ç¼©ç•¥è¯­

Linux下针对路由功能配置iptables的码详方法详解

       作为公司上网的路由器需要实现的功能有nat地址转换、dhcp、码详dns缓存、码详流量控制、码详应用程序控制,码详安卓1.0源码nat地址转换通过iptables可以直 接实现,码详dhcp服务需要安装dhcpd,码详dns缓存功能需要使用bind,码详流量控制可以使用tc,码详应用程序控制:例如对qq的码详封锁可以使用 netfilter-layer7-v2.+-protocols---.tar.gz来实现

       1、网络规划

        操作系统是码详centos5.8

       2、安装dhcpd

       代码如下:

       yum install dhcp-3.0.5-.el5

       vim /etc/dhcp/dhcpd.conf

       ddns-update-style interim;

       ignore client-updates;

       subnet .0.0.0 netmask ...0 {

       option routers .0.0.1;

       option subnet-mask ...0;

       option domain-name-servers .0.0.1;

       range dynamic-bootp .0.0. .0.0.;

       default-lease-time ;

       max-lease-time ;

       }

        3、码详安装bind,码详实现dns缓存

       代码如下:

       yum install bind.i bind-libs.i bind-utils.i

       vim /etc/named.conf

       options {

       directory "/var/named";

       allow-recursion { .0.0.0/; };

       recursion yes;

       forward first; #将所有请求都进行转发

       forwarders { ...; }; #定义转发服务器地址

       };

       zone "." IN {

       type hint;

       file "named.ca";

       };

       zone "localhost" IN {

       type master;

       file "named.localhost";

       allow-transfer { none; };

       };

       zone "0.0..in-addr.arpa" IN {

       type master;

       file "named.loopback";

       allow-transfer { none; };

       };

       创建根域文件,码详默认有

       代码如下:

       dig -t NS . /var/named/named.ca

       chown :named /var/named/named.ca

       创建本地正向解析文件,默认有

       代码如下:

       vim /var/named/named.localhost

       $TTL 1D

       @ IN SOA @ rname.invalid. (

       0 ; serial

       1D ; refresh

       1H ; retry

       1W ; expire

       3H ) ; minimum

       NS @

       A .0.0.1

       chown :named /var/named/named.localhost

       创建本地反向解析文件,默认有

       代码如下:

       vim /var/named/named.loopback

       $TTL 1D

       @ IN SOA @ rname.invalid. (

       0 ; serial

       1D ; refresh

       1H ; retry

       1W ; expire

       3H ) ; minimum

       NS @

       A .0.0.1

       PTR localhost.

       chown :named /var/named/named.loopback

       检查主配置文件

       代码如下:

       named-checkconf

       检查根区域配置文件

       代码如下:

       named-checkzone “.” /var/named/named.ca

       检查区域文件

       代码如下:

       named-checkzone “localhost” /var/named/named.localhost

       启动服务

       代码如下:

       service named start

       4、重新编译编译内核和iptables以支持应用层过滤

       由于实行防火墙功能的是netfilter内核模块,所以需要重新编译内核,需要下载新的内核源码,并使用netfilter-layer7-v2.作为内核的补丁一起编译到内核中。而控制netfiler的是iptables工具,因此iptables也必须重新编译安装,最后再安装应用程序过滤特征码库-protocols--.tar.gz

       1、给内核打补丁,并重新编译内核

       2、给iptables源码打补丁,广州到深圳源码并重新编译iptables

       3、安装proto

       备份iptables脚本和配置文件

       代码如下:

       cp /etc/rc.d/init.d/iptables /root/iptables.sysv

       cp /etc/sysconfig/iptables-config /root/iptables-config

       2.6内核下载地址

       /l7-filter/

       iptables源码下载地址

       /l7-filter/

       代码如下:

       xz -d linux-2.6...tar.xz

       tar -xvf linux-2.6...tar.gz -C /usr/src #新的内核源码,用于重新编译

       tar -zxvf netfilter-layer7-v2..tar.gz -C /usr/src #内核补丁和iptables补丁 ,只支持到2.6.

       #进入解压目录并创建软连接

       pcd /usr/src

       ln -sv linux-2.6.. linux

       #进入内核目录

       pcd /usr/src/linux

       #为当前内核打补丁

       ppatch -p1 ../netfilter-layer7-v2./kernel-2.6.-2.6.-layer7-2..path

       #为了方便编译内核将系统上的内核配置文件复制过来

       pcp /boot/config-2.6.-.el5 /usr/src/linux/.config

       编译内核

       代码如下:

       make menuconfig

       Networking support - Networking Options - Network packet filtering framework - Core Netfilter Configuration

       Netfilter connection tracking support

       "lawyer7" match support

       "string" match support

       "time" match support

       "iprange" match support

       "connlimit" match support

       "state" match support

       "conntrack" connection match support

       "mac" address match support

       "multiport" Multiple port match support

       Networking support - Networign options - Network packet filtering framework - IP:Netfiltr Configuration

       IPv4 connection tracking support (required for NAT)

       Full NAT

       MASQUERADE target support

       NETMAP target support

       REDIRECT target support

       在Networking support中选择 Networking options

       查找Network packet filtering framework(Netfilter)–Core Netfiler Configrationg–Netfilter connection tracking support(NEW),”layer7″ match support(NEW),”time” match support(NEW),”iprange”

       查找IP:Netfilter Configuration–IPv4 connection tracking support,Full NAT(NEW)

       代码如下:

       make

       make modules_install

       make install

       重启操作系统选择新内核登录

       卸载旧的iptables

       代码如下:

       rpm -e iptables-1.3.5-9.1.el5 iptables-ipv6-1.3.5-9.1.el5 iptstate-1.4-2.el5 --nodeps

       安装新的iptables,以支持新的netfiler模块

       代码如下:

       tar -jsvf iptables-1.4.6.tar.bz2 -C /usr/src

       cd /usr/src/netfilter-layer7-v2.

       cd iptables-1.4.3forward-for-kernel-2.6.forward

       cp * /usr/src/iptables-1.4.6/extensions/

       cd /usr/src/iptables-1.4.6/

       ./configure --prefix=/usr --with-ksource=/usr/src/linux

       make

       make install

       查看安装后的iptables的文件

       代码如下:

       ls /usr/sbin |grep iptables

       ls /usr/libexec/xtables

       复制之前备份的配置文件和脚本

       代码如下:

       cp /root/iptables-config /etc/sysconfig/

       cp /root/iptables.sysv /etc/rc.d/init.d/iptables

       修改脚本中iptables的路径

       代码如下:

       vim /etc/rc.d/init.d/iptables

       :.,$s@/sbin/$IPTABLES@/usr/sbin/$IPTABLES@g

       让iptables服务开机自动启动

       代码如下:

       chkconfig --add iptables

       修改iptables 配置文件

       将/etc/sysconfig/iptables-config中的

       IPTABLES_MODULES=”ip_conntrack_netbios_ns” 注释掉

       安装协议特征码

       代码如下:

       tar xvf -protocols--.tar.gz

       make install

       完成后在/etc/l7-protocols会生成文件

       支持的协议/etc/l7-protocols/protocols

       添加iptables策略,运行内部网络上网,禁止qq和视频

       代码如下:

       iptables -t nat -A POSTROUTING -s .0.0.0/ -j SNAT --to-soure ..6.

       iptables -A FORWARD -m layer7 --l7proto qq -j DROP

       iptables -A FORWARD -m layer7 --l7proto )或我的主页(networld.8u8.com)去下载远程服务安装工具。

        6.在Win下依次配一台Dos、win无盘站.方法与nt下一模一样,别告诉我你不会配置.不会的,以下就不用看了。

        7.以无盘win启动工作站,把第4步制作的终端客户盘安装在无盘站上。

        8.配置客户端。双击citrix图标,建立一个新连接,这里注意:要填好主机名(服务器名称),协议选择Netbios,的其它全部用他的默认就可以了。

        9.建立连接完成后,双击刚才建立的连接,就出现梦寐以求的Win桌面了。你可以运行任何在服务器的软件了!

       6、安装Linux无盘工作站

       [文章导读]

       其实Linux 对远程引导的支持非常好,Linnx内核自身又支持网络文件系统,因此非常适合做无盘工作站,内部通知asp源码本文将以一个实例向大家详细介绍无盘Linux工作站的安装办法。

       [正文]

       当年Novell下的无盘DOS工作站很是流行,后来又流行过Win无盘工作站,只是由于问题多多,后来微软自己停止了对无盘Windows的支持。随着Linux的日益流行,使用Linux的人越来越多,其实Linux 对远程引导的支持非常好,Linnx内核自身又支持网络文件系统,因此非常适合做无盘工作站,本文将以一个实例向大家详细介绍无盘Linux工作站的安装办法。

        这个网络是一个小的局域网,有1台服务器和4台 Linux 无盘工作站,彼此之间用双绞线通过HUB连接,服务器的IP地址定为..0. ,名字是server ,5台无盘工作站的地址由服务器动态分配,地址范围从 ..0.1 到..0.4 ,名字分别是c1,c2, c3,c4,服务器和无盘工作站使用的都是NE 兼容网卡,无盘工作站使用的网卡上都安 装了BOOTROM 启动芯片,服务器操作系统安装的是 RedHat Linux 6.0 ,安装时选用定制安装,并安装了全部软件。idm下载网站源码

        Linux的远程引导有两种方式,一是利用Bootp协议,有一个专门的项目EtherBoot 提供支持( ( or Mbit)

        Other ISA cards

        NE/NE 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/i/boot/bzImage ,将启动软盘插入计算机,执行下面的命令 mount -t vfat /dev/fd0 /mnt/floopy cp /usr/src/linux/arch/i/boot/bzImage /mnt/floppy umount /dev/fd0

        好了,启动盘上的文件都准备齐全了,等会儿用它到Win环境下制作启动映象。

       服务器设置

       服务器端需要运行nfsd、dhcpd、mars_new等几个服务进程,这些软件在ReHat Linux 发行套件里都有,如果在安装 Linux 的时候选择全部安装,这些软件都会随着安装操作 系统而装好了,下面对这些软件进行设置,注意,下面的操作要以 root 身份进行。

       1、 NFS 守护进程nfsd

       首先要建立几个供无盘工作站使用的目录,并通过nfsd 导出,命令如下:

       mkdir /tftpboot

       然后编辑文件 /etc/hosts ,(7 16)的源码加入下面的内容

       ..0. server server.domain

       ..0.1 c1 c1.domain

       ..0.2 c2 c2.domain

       ..0.3 c3 c3.domain

       ..0.4 c4 c4.domain

       第一台工作站的工作目录设置方法如下:

       mkdir /tftpboot/..0.1

       cd /tftpboot/..0.1

       cp -a /bin .

       cp -a /dev .

       mknod dev/nd0 b 0

       chmod dev/nd0

       cp -a /etc .

       cp -a /home .

       cp -a /lib .

       rm -rf lib/modules

       cp -a /root .

       cp -a /sbin .

       cp -a /var .

       mkdir proc

       mkdir usr

       mkdir tmp

       chmod 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/XR6/bin/xfs

       编辑文件 fstab

       保留其中的

       none /proc proc defaults 0 0

       其余的行全部删除,然后增加一行

       server:/tftpboot/..0.1 / nfs defaults 1 1

       其它工作站的工作目录设置方法就简单多了

       cd /tftpboot

       cp -a ..0.1 ..0.2

       cp -a ..0.1 ..0.3

       cp -a ..0.1 ..0.4

       编辑文件 /etc/exports ,加入以下内容

       /usr (ro,no_root_squash)

       /tftpboot/..0.1 (rw,no_root_squash)

       /tftpboot/..0.2 (rw,no_root_squash)

       /tftpboot/..0.3 (rw,no_root_squash)

       /tftpboot/..0.4 (rw,no_root_squash)

       2、动态主机配置协议服务器 dpchd

       检查一下文件/etc/dhcpd.leases是否存在,若不存在就用命令touch /etc/dhcpd.leases 创建一个,然后编辑文件 /etc/dhcpd.conf ,加入以下内容

       subnet ..0.0 netmask ...0 {

       range ..0.1 ..0.4;

       }

       3、NetWare 模拟器 marsw_nwe

       编辑文件 /etc/nwserv.conf,找到下面的行

       # 4 0x eth0 .3 1

       将该行开头的'#'去掉,再找到

       4 0x0 * .3 1

       在该行开头加上'#'

       制作启动映象

       进入Win,将Win(早期的版本,可以用服务器安装方式安装)安装光盘的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

        下一次再启动服务器时,上述服务进程会自动执行。

       至此,所有的设置工作全部完成了,联好网络随便打开一台无盘工作站,稍等一下,出现远程引导的信息,接着会启动 Win,接下来很快就会装载 Linux ,在一大堆 Linux 的启动信息之后如果看到 Linux 的登录提示,就说明远程启动成功了。

        Linux 无盘工作站虽然运转起来了,但还有一个问题,就是交换的问题,因为Linux 是一个支持虚拟存储的操作系统,当机器内存不够时,Linux 就会把内存中暂时不用的数 据换出到交换设备上,等需要时再换回来,刚才我们没有设置交换区,在无盘工作站上用 free 命令就会发现交换区为零,如果无盘工作站内存较大,运行一些不大的程序,没有交换区还是可以的,但若运行大型程序就会出问题,下面介绍在服务器上设置交换区即远 程交换的方法。

       对于2.1.版以前的内核,要实现远程交换可有点费事,得从网络上下载有关的补丁来修改内核代码,然后再编译内核映象。从2.1.版后的内核支持网络块设备,这样,实现远程交换就容易了。首先编译内核时要使 Network block device support 选项有效(刚才编译内核时就是这么作的),再从boot可供选用, etherboot对网卡型号有要求,支持的网卡种类不算很多,但对最常用的网卡如3c///b、NE//PCIne、Intel eepro等基本上都能支持;Netboot可以用ndis或pktdrv,这些文件一般在随卡附带的驱动盘上都有,但这仅限于网络启动,对网卡的要求首先是Linux能识别。

        以下步骤所述适用于etherboot;

        1. 展开etherboot,进入src-,编辑Config。有许多选项可以让你做多重启动、显示信息、询问口令之类的事情,这时你需要做的是用bootp代替dhcp,即在Config中定义-DNO_DHCP_SUPPORT设置。因为我们打算在服务器端用bootp,所以这是必须的,否则在启动时会因为未能寻找到dhcp server而启动不了。如果你准备在服务器端使用dhcp,那么这一步就不需要了。

        2. make。对每种网卡都会生成两个文件 .rom和 .lzrom,后者是压缩过的。

        3. 使用软盘启动验证所作的启动ROM没问题,假设你用的网卡是ne兼容的:

        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为.0.0.1; 机器名为dc1.subnet.net,另一台无盘工作站ip为.0.0.2,机器名为dc2.subnet.net, 服务器ip为.0.0.,名为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=...0:

       :bf=/tftpboot/vmlinuz.nb:

       dc1:tc=global.prof:ha=cd7a:ip=.0.0.1:

       dc2:tc=global.prof:ha=e1:ip=.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/.0.0.1,cd /tftpboot/.0.0.1,

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

       mkdir usr; mkdir tmp; chmod 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

       mkdir -p /tftpboot/$1

       # just make these ones

       for d in home mnt proc tmp usr

       do

       mkdir /tftpboot/$1/$d

       done

       chmod /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 -)

       7. 删除var下一切不需要的东西, 减小空间。删除lib/modules下一切不需要的模块。

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

       etc/fstab,etc/conf.module

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

       server:/tftpboot/.0.0.1 / nfs default 0 0

       server:/usr /usr nfs default 0 0

       9. 配置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/.0.0.2; cd /tftpboot/.0.0.2;

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

       etc/fstab,etc/conf.module

       . cd /etc; vi exports;

       /usr dc*.subnet.net(ro)

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

       /tftpboot/.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下即可。

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

        注意事项:

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

        2. Rh6.1自带一个bootparamd,也应该能完成同样的工作,但在manual中语焉不详,不知该如何设置。

        3. 服务器端 / 和 /usr 最好单独分区。

        4. etherboot的文档上说对有些网卡比如PCI NE兼容网卡,可能需要调整Makefile中的vendor信息和ID信息,我还未试过。

        启动你的无盘工作站,如一切操作无误的话,工作站则应该能启动起来。启动过程中如果有一些地方不顺利,可以在启动之后对无盘工作站上按一般方法进行设置。

        希望以上的讲述能给读者有所帮助和启迪!

       8、Linux无盘工作站架设实例

        后面还有实例你自己看吧!