Linux无盘工作站的做法

一、远程启动原理

客户端在启动前,既无操作系统,又无启动的软盘或者硬盘,它只有计算机的基本部件: CPU, 内存,主板等。但最重要的必须有网卡和启动的BootRom。客户机只能通过网络获得操作系统。Linux的无盘远程启动与Novell、WinNT下的无盘启动技术不一样,不是采用RPL( Remote Initial Program Loader),而是基于标准的BootP/DHCP和TFTP协议,并通过NFS文件系统建立文件系统。相对前两种,更具有其通用性和适应性。可以基于Linux系统远程启动Dos,Win95,WinNT和Linux客户。

由于自己的网卡(3c905b-tpo100,有BUG,按照etherboot的说明没修正成功,现在是用软盘代替网卡的EPROM,不好多说,还请自己直接到http://sourceforge.net/下载所需要源码等或者编译自己所需要源码.

下面简单介绍Linux启动原理:
1.客户端个人电脑开机后, 在 TCP/IP Bootrom 获得控制权之前先做自我测试.
2.Bootprom 送出 BOOTP/DHCP 要求而取得 IP.
3.如果服务器收到个人电脑所送出的要求, 就会送回 BOOTP/DHCP 回应,内容包括客户端的 IP 地址, 预设网关及开机影像文件.否则, 服务器会忽略这个要求.
4.Bootprom 由 TFTP 通讯协议从服务器下载开机影像文件。
5.个人电脑通过这个开机影像文件开机, 这个开机文件可以只是单纯的开机程式也可以是操作系统.
6.开机影像文件将包含 kernel loader 及压缩过的 kernel, 此 kernel 将支持NFS root系统。
7.远程客户端根据下载的文件启动机器.

一切OK!!! 简单吧!好用吧!下面具体介绍如何建立Linux远程启动.

二、远程启动实例
作为例子定义以下:
Linux 服务器: server(IP:192.168.0.254)
第一个客户机:pc01(IP:192.168.0.1)
第二个客户机:pc02(IP:192.168.0.2)
所有远程启动客户目录:/client
第一个远程启动客户机目录:/client/pc01
第二个远程启动客户机目录:/client/pc02
支持rsh

首先重新编译Linux内核。
make menuconfig
注意网络的支持,NFS-Root 支持,BootP(DHCP) 的支持必须包括在内。
make clean
make dep
make bzImage
make modules
make modules_install
以上命令之后,你会发现客户端启动的影像文件在 /usr/src/linux/i386/boot 目录中,编译出新内核之后,用 mknbi-linux(mknbi-linux bzImage vmlinuz.nb)处理,将vmlinuz.nb 放在/tftpboot下即可。
然后执行以下命令:mknod /dev/nfsroot b 0 255 修改启动设备,让其指向NFSRoot.

下面为远程客户机修改服务器,用于建立远程客户机的文件系统。

在服务器/etc/exports 中加入:
/client/pc01 192.168.0.1(rw, no_root_squash)
/client/pc02 192.168.0.2(rw, no_root_squash)
/home 192.168.0.1/255.255.255.0(rw,no_root_squash)

使用DHCP,在/etc/dhcpd.conf 加入对远程客户的支持,其中server地址是192.168.0.254:
# dhcpd.conf

# Global options
option domain-name "server.ustc.edu.cn";
option domain-name-servers 202.38.64.1;

# Intranet
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.1 192.168.0.250;
default-lease-time -1;

# option root-path "/client/pc01";
option dhcp-server-identifier 192.168.0.254;
option broadcast-address 192.168.0.255;
# option routers 198.168.0.254;

server-name "server";
next-server 192.168.0.254;
filename "/boot/vmlinuz";
host pc01{
option root-path "/client/pc01";
hardware ethernet 00:01:02:96:65:92;
fixed-address 192.168.0.1;
}
host pc02{
option root-path "/client/pc02";
hardware ethernet 00:01:02:98:92:55;
fixed-address 192.168.0.2;
}
}
subnet 202.38.64.0 netmask 255.255.255.0 {
}
请参阅:DHCP-Howto

在服务器上建立远程客户机目录:
/client
/client/pc01
/client/pc02

下面说一下pc01的做法.

pc01目录下包括:bin,dev,etc,home,lib,mnt,proc,root,sbin,tmp,usr,var目录。
我们是把bin,dev,etc,lib,sbin,usr,var直接完全复制过来,home,mnt,proc,root,tmp是新建的空目录,(当时是重新安装了一个包括DHCP,NFS,RSH等支持的尽量小、尽量干净的Linux,然后完全将它们完全复制过来,这样一来必然有很多不必要的东西可以删除,可惜现在水平不照,按参考文献做不成功,只好用了这种省事的法子:(,等以后慢慢删除不必要的文件)
注意必须修改/client/pc01/etc/rc.d 启动文件:改 mount -avt nonfs 为 mount -av.允许使用NFS Root文件系统。(我们的是Debian Woody,这个文件变为了/client/pc01/etc/init.d/mountall.sh,并且我们的是mount -a -t noproc,nosmbfs )

以如下格式修改/client/pc01/etc/fstab文件:
192.168.0.254:/client/pc01 / nfs defaults,rw 0 0
192.168.0.254:/home /home nfs rw,bg 0 0
proc /proc proc defaults 0 0

修改client/pc01/etc/hostname:
pc01

修改client/pc01/etc/hosts:
127.0.0.1 localhost
192.168.0.254 pc00
192.168.0.1 pc01
192.168.0.2 pc02

修改client/pc01/etc/hosts.equiv:
+
server
pc01
pc02

修改client/pc01/etc/mtab:
192.168.0.254:/client/pc01 / nfs rw 0 0
proc /proc proc rw 0 0
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
192.168.0.254:/home /home nfs rw,bg,addr=192.168.0.254 0 0

修改client/pc01/etc/network/interfaces
face eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.254

接下来必须建立一个链,将远程客户机的IP地址链接到/client/pc01目录。
$:ln -s pc01 192.168.0.1

做pc02则可以复制pc01过来,并将上述几个文件修改一下.

下面在个人目录下设置rsh支持:
home/username/.rhosts

192.168.0.254 username
192.168.0.1 username
192.168.0.2 username

最后请确认服务器上的nfsd,tftpd 和 bootpd daemons是否启动。
一切完事!远程启动很快十秒钟左右就可享用Linux.
关于NFS,TFTP,BOOTP(DHCP)的设置请参阅How-to.

一点经验之谈, 最好把client的所有文件放在一个独立分区里面,这样就可以在这给分区里装上一个基本的系统(就像普通的安装一样).然后作为修改的基础(建议使用Debian,比较易于裁剪). 如果以后需要在客户端安装什么软件的话,可以这样做:
chroot /client/pc01
dselect或者apt -get

(0)

相关推荐

  • Linux rpm tar 操作系统下软件的安装与卸载方法

    Linux操作系统下软件的安装与卸载在Windows下安装软件时,只需运行软件的安装程序(setup.install等)或者用zip等解压缩软件解开即可安装,运行反安装程序(uninstall.unware."卸载"等)就能将软件清除干净,完全图形化的操作界面,简单到只要用鼠标一直点击"下一步"就可以了.而Linux好象就不一样了,很多的初学者都抱怨在Linux下安装和卸载软件非常地困难,没有像使用Windows时那么直观.其实在Linux下安装和卸载软件也非常简单

  • Linux NFS服务器的安装与配置方法(图文详解)

    一.NFS服务简介 NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布.功能是通过网络让不同的机器.不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法. NFS 的基本原则是"容许不同的客户端及服务端通过一组RPC分享相同的文件系统",它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享. NF

  • linux下/etc/passwd文件的选项说明

    /etc/passwd 文件是一个纯文本文件,每行采用了相同的格式: name:password:uid:gid:comment:home:shell 它们的含义如下: 域 说明 name 用户登录名 password 用户口令.此域中的口令是加密的.当用户登录系统时,系统对输入的口令采取相同的算法,与此域中的内容进行比较.如果此域为空,表明该用户登录时不需要口令. uid 指定用户的 UID.用户登录进系统后,系统通过该值,而不是用户名来识别用户. gid GID.如果系统要对相同的一群人赋予

  • Linux下执行java程序的方法

    想要在Ubuntu上运行java程序,可以将java程序编译成功后打包,然后在Ubuntu上用命令执行jar文件 具体操作如下: 1.Windows上使用eclipse编译java工程,编译完成后导出为Runnable JAR File 例如,此处将test工程中的Test2文件export为MyTest2.jar文件 2.Ubuntu上java环境安装 ①jdk官网http://www.oracle.com/technetwork/java/javase/downloads/jdk8-down

  • Linux 快速定位web路径方法

    假如服务器上有几百个网站,文件夹的名称都是随机生成的,那就更郁闷了 不过不要气馁,还是有办法快速定位目标的.我们只需要用linux的两个命令 首先,找到目标站的某个图片的链接,查看图片的文件名.比如 www.jb51.net/img/fuckyou.jpg.我们记下来fuckyou.jgp,然后用find命令查找 fuckyou.jpg的位置 find -name /www fuckyou.jpg >1.txt 等到执行完之后我们可以查看1.txt的內容 cat 1.txt,里面所显示的就是ww

  • 详解Linux下读取位图的注意事项

    详解Linux下读取位图的注意事项 在Linux下读取位图遇到的问题,很好地体现了linux与Windows操作系统的不同.按理说位图格式与操作系统无关,读取也应该无关,实际上在位图读到内存中时已经不同.下面主要介绍自己在Linux下操作位图遇到的问题. (一).位图结构 位图一开始是两个结构体,包括位图的详细信息,是读取后面数据的关键.所以读取位图首先要正确读取这两个结构体:BITMAPFILEHEADER和BITMAPINFOHEADER.其具体定义为: typedef struct tag

  • Linux环境下段错误的产生原因及调试方法小结

    最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多.花费时间最长的问题就是著名的"段错误"(Segmentation Fault).借此机会系统学习了一下,这里对Linux环境下的段错误做个小结,方便以后同类问题的排查与解决. 1. 段错误是什么 一句话来说,段错误是指访问的内存超出了系统给这个程序所设定的内存空间,例如访问了不存在的内存地址.访问了系统保护的内存地址.访问了只读的内存地址等等情况.这里贴一个

  • Linux无盘工作站的做法

    一.远程启动原理 客户端在启动前,既无操作系统,又无启动的软盘或者硬盘,它只有计算机的基本部件: CPU, 内存,主板等.但最重要的必须有网卡和启动的BootRom.客户机只能通过网络获得操作系统.Linux的无盘远程启动与Novell.WinNT下的无盘启动技术不一样,不是采用RPL( Remote Initial Program Loader),而是基于标准的BootP/DHCP和TFTP协议,并通过NFS文件系统建立文件系统.相对前两种,更具有其通用性和适应性.可以基于Linux系统远程启

  • Linux无盘工作站架设实例

    摘要 架设Linux无盘工作站实例,服务器和客户端都使用Linux.主要涉及:DHCP TFTP SYSLINUX NFS(2003-03-12 08:52:24) -------------------------------------------------------------------------------------- 客户端是支持PXE方式启动的刀片,用Linux作为服务器,服务器配置如下: 1) 安装DHCP服务器dhcpd 2) 配置/etc/dhcpd.conf文件,下

  • node.js 和HTML5开发本地桌面应用程序

    HTML5让Web开发人员用纯HTML技术开发富客户端互联网应用或者甚至本地桌面应用成为了可能.HTML5可以将任何普通网站转变成Web应用.HTML5 web 应用不仅具有在桌面浏览器应用中的优势,同时在智能手机和平板中也是开发利器. 在手机端,有一个非常棒的工具叫做PhoneGap,使用这个快速开发平台,任何人都可以使用HTML5+CSS3+JavaScript开发出安卓,iOS等应用.PhoneGap的最好的一个特点是,你并不需要联网,不需要连接web服务器,你可以从把它当成本地桌面应用.

  • 分析Windows和Linux动态库

    摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Linux系统中都有动态库的概念,采用动态库可以有效的减少程序大小,节省空间,提高效率,增加程序的可扩展性,便于模块化管理.但不同操作系统的动态库由于格式 不同,在需要不同操作系统调用时需要进行动态库程序移植.本文分析和比较了两种操作系统动态库技术,并给出了将Visual C++编制的动态库移植到Linux上的方法和经验. 1.引言 动态库(Dynamic Link Library abbr,DLL)技术是程序设计中经常采用的技术.

  • xshell上传下载文件(Windows、Linux)

    经常有这样的需求,我们在Windows下载的软件包,如何上传到远程Linux主机上?还有如何从Linux主机下载软件包到Windows下:之前我的做法现在看来好笨好繁琐,不过也达到了目的,笨人有本方法嘛: 我是怎么操作的: 1.打开一台本地Linux虚拟机,使用mount 挂载Windows的共享文件夹到Linux上,然后拷贝数据到Linux虚拟机里面:(经常第一步都不顺利,无法挂载Windows的文件夹) 2.在本地Linux虚拟机使用rsync同步拷贝的数据到远程Linux主机上,需要双方都

  • DDNS 的工作原理及其在 Linux 上的实现

    DDNS 工作原理的分析 DDNS 的实现最根本的一点是当主机的 IP 地址发生变化的时候,实现 DNS 映射信息的及时更新,应用程序需要及时地获得这一信息,主要的方法可分为两大类: 一类是轮询机制,即:应用程序每隔一定的时间,去从查询主机当前的 IP 地址,并与之前的进行比较,从而判断网络地址是否发生了变化.显然,这种方法不仅效率低下,而且对每次查询 IP 地址的时间间隔很难得到一个折中的数值. 第二类方法是异步实现方式,即:每当主机的 IP 地址发生变化的时候,应用程序能够被及时地通知到.这

  • 解析Linux内核的基本的模块管理与时间管理操作

    内核模块管理 Linux设备驱动会以内核模块的形式出现,因此学会编写Linux内核模块编程是学习linux设备驱动的先决条件. Linux内核的整体结构非常庞大,其包含的组件非常多.我们把需要的功能都编译到linux内核,以模块方式扩展内核功能. 先来看下最简单的内核模块 #include <linux/init.h> #include <linux/module.h> static int __init hello_init(void) { printk(KERN_ALERT &

  • Linux使用ssh公钥实现免密码登录实例

    ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例. 有机器A(192.168.1.155),B(192.168.1.181).现想A通过ssh免密码登录到B. 首先以root账户登陆为例. 1.在A机下生成公钥/私钥对. [root@A ~]# ssh-keygen -t rsa -P '' -P表示密码,-P '' 就表示空密码,也可以不用-P参数,这样就要三车回车,用-P就一次回车. 该命令将在/root/.ssh目录下面

  • 详解Linux环境下使Nginx服务器支持中文url的配置流程

    1:确定你的系统是UTF编码 [root@Tserver ~]# env|grep LANG LANG=en_US.UTF-8 2:NGINX配置文件里默认编码设置为utf-8 server { listen 80; server_name .inginx.com ; index index.html index.htm index.php; root /usr/local/nginx/html/inginx.com; charset utf-8; } 如果是用securecrt 上传文件,请选

  • Linux Shell中的特殊符号和含义简明总结(包含了绝大部份)

    在Linux Shell中有很多的特殊符号,这对于我们写Shell脚本时要特别留意:一方面要知道这些特殊符号的用法,这些符号用好了可以达到事半功倍的效果:但另一方面要避免这些特殊符号的过度使用而导致脚本难以调试.难以阅读. 这些特殊符号罗列出来大致如下: 复制代码 代码如下: # ; ;; . , / / 'string'| ! $ ${} $? $$ $* "string"* ** ? : ^ $# $@ `command`{} [] [[]] () (()) || &~ ~

随机推荐