分类: LINUX
2009-12-05 14:48:36
分布式集群LINUX平台下
正如你所看到的一样,你的机器在绝大多数时间是空闲的,如果你在Windows下用任务管理器或其他的Linux平台的工具(例如top,xload)观察CPU,你会看到CPU的使用率常见在1~2%。
事实上,如果你有更多的计算机,这种浪费会加剧,在一个有300台计算机的部门里,CPU的空闲率是惊人的。然而这些部门还是需要强大的服务器用来编译或模拟计算,这样的情况还会加剧,不止需要一台,因为随着用户的增加,即使是8个CPU的服务器,满负荷时也不能把任务交给另外的空闲服务器,因为用户很少会改变习惯去登陆另外一台服务器。如果能利用现有的计算资源,把空闲的CPU利用起来,或者能让服务器智能的迁移负荷,就是你看下去的理由。
集群的基本单位是单独的计算机,称为节点(node)。其可增长的特性,称为延展性(Scale),也就是向集群中加入计算机。集群没有严格的定义,可以说就是许多利用高速联接的,具有高速运算能力的,具有单一用户界面的计算机组合。这并不是集群的定义,而是表面现象的描述。集群中的节点需要硬件尽可能的一致,不一致的硬件集群称为异构集群,虽然这并不能改变集群的特性,但是异构导致集群会花费额外的时间来处理由于异构带来的延迟,另一方面这也是集群的优势,任何其他的多CPU系统都是严格要求CPU是一致的,集群就有足够的自由度增减节点,不受类型的限制。
本文选择MOSIX作为集群的方案,并使用无盘节点。架构集群并没有想象中那样复杂,参考下面的步骤可以一步步的架构集群,整个的方案并不是很昂贵,而且便于扩展。使用RedHat是因为在中国这是最有权威的版本,不论是初学者还是专业工作者,都可以在RedHat Linux中定制自己的版本。使用终端服务器LTSP是因为结构简单,便于快速扩展。使用的硬件是可以改进的,比如使用双CPU的主板和至强处理器,这样单一机柜中处理器就密集到48块CPU,本例中可以使用24块CPU。除了CPU以外,还可以使用千兆网卡或光纤网卡,交换机可以使用光纤交换机,内存总数可以达到48GB。但是随着硬件的升级,整体价格就会过高,而性能的提升并不是按比例的,因此本例的配置是性价比较好的组合。MOSIX是利用给内核源代码加补丁的办法,增加内核的功能来达到内核级的集群支持,通过编译后的内核启动的系统间类似SMP多处理器的系统,从外面的角度看只有一台有很多处理器的庞大机器,但是内部是用很多机器架构成的。而MOSIX集群的特点是对用户透明,原有的应用程序不需要修改代码即可以在集群中分布计算。
有几种情况是不需要使用集群系统的,使用类似网格计算的脚本就可以完成计算,比如三维动画的渲染,这类计算可以使用不同的节点,不需要对称的硬件,不需要一致的操作系统(需要应用具有支持不同操作系统的版本),只需要按照处理器来分割渲染的任务段,在每个节点上运行相应的任务段,然后合成所有节点的计算结果。因为计算数据是离散的(结果的连续是视觉的连续),因此用类似网格计算的脚本也可以完成。这类计算不需要使用集群也可以完成。
下面本文将告诉你如何准备硬件和软机环境。首先是规划你的计算环境。
硬件环境:
49U标准机柜,安装1U的交换机,24台2U机架式机箱。
1U的24口100MB交换机(不是集线器)
Intel P4 2GHz CPU,1GB DDR,Intel 845D主板,软驱,NVIDIA显卡(能启动X Windows就可以),2U机架式机箱,3C905B 10/100MB自适应网卡,网关需要配置光驱,80GB硬盘和双网卡。
5类线,按照693A压3米网线24根。
显示器,键盘,鼠标仅在安装时使用。
软件环境和必要的安装包(除特殊说明外,高版本不一定适用):
Redhat 7.2 CD1 和CD2安装光盘
dhcp-3.0.1rc9-1.i386.rpm是支持启动内核调用的DHCP版本
dhcpcd-1.3.22pl1-7.i386.rpm是DHCPD守护进程
mknbi-1.2-6.noarch.rpm是制作客户端启动内核的必要软件包
MOSIX-1.6.0.tar.gz是原始的MOSIX文件,最新的版本是1.7.0
MOSKRN-1.6.0.tar.gz是原始MOSIX内核文件,最新的版本是1.7.0
openmosix-kernel-2.4.18-openmosix2.i386.rpm是MOSIX分支版本的通用内核,最新的版本是2.4.19
openmosix-kernel-2.4.18-openmosix2.i686.rpm是MOSIX分支版本的新处理器内核,最新的版本是2.4.19
openmosix-kernel-smp-2.4.18-openmosix2.i686.rpm是MOSIX分支版本的多处理器内核,最新的版本是2.4.19
openmosix-kernel-2.4.18-openmosix2.src.rpm是MOSIX分支版本的源代码
openmosix-tools-0.2.2-1.i386.rpm是MOSIX分支版本的客户端工具
ltsp_core-3.0-11.i386.rpm是LTSP的核心文件
ltsp_kernel-3.0-3.i386.rpm是LTSP的内核
ltsp_floppyd-3.0.0-2.i386.rpm是LTSP的软盘工具
ltsp_initrd_kit-3.0.1-i386.tgz是LTSP的启动制作工具
linux_kernel-2.4.18.tar.gz是需要编译的内核源码
网络配置环境:
网关对外网卡配置10.193.15.169,子网掩码255.255.255.0给内部网使用,用于登录和提交进程。 网关对内网卡配置192.168.0.254,子网掩码255.255.255.0,网关为10.193.15.169给集群用于DHCP服务器,NFS服务器,LTSP服务器。
网关对内网卡配置DHCP,分配地址从192.168.0.100到192.168.0.253,子网掩码255.255.255.0,都是C类。
当以上条件都具备时,可以开始架构MOSIX集群。
1.安装所有硬件,并能确保可以从光盘启动网关服务器系统,节点可以使用软盘启动,检查BIOS的启动设置,并确认可以正确启动。将所有节点和交换机安装到机柜上,用网线连接交换机和各节点,网关需要额外的网线连接到局域网,因为可以称集群计算环境为计算场(Computing Farm),因此对应局域网称集群系统的网络为计算网络。连接好电源后,使用两套显示器和键盘鼠标,分别连接一台节点机和网关服务器。
2.安装RedHat 7.2版本在具有两块网卡的网关服务器上,分区使用自动分区(比较简单,本文不讨论Linux其他问题),选择定制安装,但
J,安装开始后会有一些问题,除新内核加入LILO或GRUB一问回答为G以外的问题都用回车使用缺省选择(大写的字母为缺省值)。问题依次为内核源代码的路径,新内核的启动选项添加在那个启动程序中,内核所包含的库文件连接,MOSIX服务的启动级别,创建MFS装载目录,启动那种内核编译配置菜单,是否显示内核编译详细过程,是否显示用户级编译详细过程。随后系统开始给内核源代码加补丁,启动内核编译配置菜单。
K,在内核编译配置菜单中,你可以看到新增加的MOSIX选项。
L,选择进入MOSIX选项并添加直接文件系统访问 (Direct File-System Access) 和MOSIX文件系统 (MOSIX File-System)。用ESC键推出当前选单。
M,添加块设备 (Block devices) 的内存虚拟盘的支持 (RAM disk support) 和使用初始化进程初始化内存虚拟盘 (Initial RAM disk (initrd) support)两项。
N,在网络选项 (Networking options) 中增加对IP内核级自动配置 (IP: kernel level autoconfiguration),IP动态地址支持 (IP: DHCP support),IP启动地址绑定支持 (IP: BOOTP support)。
O,建议除去SCSI的支持,本例中没采用SCSI设备,并且可以避免内核编译失败。建议除去声卡支持。
P,在网络文件系统 (Network File System) 中增加NFS支持根文件系统(Root file system on NFS)。
Q,最后多按一次ESC键,提示保存配置文件,选择Yes。系统将开始编译内核,编译模块,安装内核,安装模块。该过程可能会产生一些警告,只要编译没退出,并正常完成回到提示符状态就完成了编译。
R,先不要忙于重启,需要修改/boot/grub/grub.conf文件中MOSIX的内核路径一行,原路径为/boot/vmlinuz-2.4.18-mosix,修改为/vmlinuz-2.4.18-mosix。修改完后键入reboot可以重新启动。
S,这时的启动菜单中出现Mosix 1.6.0 (2.4.1,选择该项启动MOSIX系统。
T,系统启动中会出现若干错误,图中第一个是由于没有创建/mfs引起的,第二个是由于MOSIX更改了sshd服务的权限,而没启动另外的MOSIX的sshd引起的。第一次启动MOSIX系统,会要求配置mosix.map文件,回车选择缺省的编辑器进入编辑。
U,配置文件修改完成后,系统会提示节点的IP地址有变化时需要修改mosix.map文件中的节点号。因为网关服务器是192.168.0.254因此定义为节点1,其他的节点从192.168.0.1开始共有253个节点,节点号从2开始。
V,进入系统后,启动MOSIX,显示初始化MOSIX,MOSIX配置完成。
service mosix start
4.因为MOSIX有另外的分支openmosix,因为版权问题不同(后面将会介绍),openmosix更开放一些,而且openmosix的安装相对简单,推荐没有经验的初学者使用,下面是openmosix的安装和基于openmosix的客户端配置。注意:MOSIX和openmosix虽然都是MOSIX原理下的软件,但是互相是不能通讯的,因此一个集群系统里要统一使用一种平台。openmosix是使用rpm为安装包的,事实上只是把编译好的内核直接挂接到系统里,并没有经过你自己的编译,对于初学者而言要方便许多。以下操作是在刚安装完RedHat Linux 7.2的系统上完成的,除openmosix的软件包外,不需要其他任何的软件包,缺省目录在/usr/src/下。可根据情况安装SMP版本,openmosix-kernel-2.4.18-
18. 检查重要的服务进程是否启动,并使新配置文件生效。
chkconfig tftp on chkconfig dhcpd on service dhcpd restart service xinetd restart
19. 创建mosix.map文件,并保持服务器和客户端的一致。
cd /etc/ vi mosix.map 1 192.168.0.254 1 2 192.168.0.1 253 cp /etc/mosix.map /opt/ltsp/i386/etc/
20. 复制openmosix的工具到客户端的目录中。
cp /sbin/setpe /opt/ltsp/i386/sbin/ cp /bin/mosrun /opt/ltsp/i386/bin/ cp /bin/mosmon /opt/ltsp/i386/bin/ cp /bin/mosctl /opt/ltsp/i386/bin/ cp /bin/migrate /opt/ltsp/i386/bin/
21. 因为/opt/ltsp/i386目录最后是客户端的根文件系统,需要的工具都可以复制到相应的目录中。因为/opt/ltsp/i386/etc/hosts文件是连接,因此需要先删除后复制新文件。
cp /bin/touch /opt/ltsp/i386/bin rm -f /opt/ltsp/i386/etc/hosts cp /etc/hosts /opt/ltsp/i386/etc/ cp /etc/rc.d/init.d/openmosix /opt/ltsp/i386/etc/rc.openmosix
22. 创建客户端的/mfs目录:
mkdir /opt/ltsp/i386/mfs
23. 修改客户端文件系统配置文件,加入mfs的配置:
cd /opt/ltsp/i386/etc vi fstab none /mfs mfs dfsa = 1 0 0
24. 修改客户端启动进程脚本,加入启动openmosix的配置,禁止客户端提交集群
30. 启动mosmon监控程序来检查通讯是否有效,这是刚加入3个节点时,启动setiathome计算的状态。将下载的应用展开在/dw目录下,注意命令的格式。
mosrun -j1-3 /mfs/1/dw/setiathome1 -nolock
31. 制作启动盘,陆续加入节点,MOSIX集群就创建完了。
典型的配置文件
/etc/mosix.map1 192.168.0.254 12 192.168.0.1 253
/etc/dhcpd.confdefault-lease-time 21600;max-lease-time 21600;ddns-update-style none;allow booting;allow bootp;option subnet-mask 255.255.255.0;option broadcast-address 192.168.0.255;option routers 192.168.0.254;option domain-name-servers 192.168.0.254;option domain-name "mosix";option root-path "192.168.0.254:/opt/ltsp/i386";shared-network NODES { subnet 192.168.0.0 netmask 255.255.255.0 { range dynamic-bootp 192.168.0.100 192.168.0.253; use-host-decl-names on; option log-servers 192.168.0.254; if substring (option vendor-class-identifier, 0, 9) = "PXEClient" { filename "/lts/pxe/pxelinux.bin"; } else { filename "/lts/vmlinuz-2.4.18-mosix"; option host-name = concat("node" , binary-to-ascii( 10, 8, "", substring(reverse( 1, leased-address), 0, 1))); } }}group { use-host-decl-names on; option log-servers 192.168.0.254; host node001 { hardware ethernet 00:E0:06:E8:00:84; fixed-address 192.168.0.1; filename "/lts/boot/bootp/vmlinuz.eepro100.bootp"; } host node002 { hardware ethernet 00:D0:09:30:6A:1C; fixed-address 192.168.0.2; filename "/lts/boot/bootp/vmlinuz.tulip.bootp"; } host node003 { hardware ethernet 00:D0:09:30:28:B2; fixed-address 192.168.0.3; # kernels are specified in /tftpboot/lts/boot/pxe/pxelinux.cfg/ filename "/lts/boot/pxe/pxelinux.bin"; }}
/etc/exports/opt/ltsp/i386 192.168.0.0/255.255.255.0(ro,no_root_squash)/var/opt/ltsp/swapfiles 192.168.0.0/255.255.255.0(rw,no_root_squash)
/etc/hosts 和 /opt/ltsp/i386/etc/hosts192.168.0.254 mosix192.168.0.1 node001192.168.0.2 node002192.168.0.3 node003192.168.0.4 node004
省略一部分
192.168.0.253 node253127.0.0.1 localhost.localdomain localhost/opt/ltsp/i386/etc/fstabnone /mfs mfs dfsa=1 0 0
/opt/ltsp/i386/etc/lts.conf [Default] SERVER = 192.168.0.254 XSERVER = off X_MOUSE_PROTOCOL = "PS/2" X_MOUSE_DEVICE = "/dev/psaux" X_MOUSE_RESOLUTION = 400 X_MOUSE_BUTTONS = 3 X_USBMOUSE_PROTOCOL= "PS/2" X_USBMOUSE_DEVICE = "/dev/input/mice" X_USBMOUSE_RESOLUTION = 400 X_USBMOUSE_BUTTONS = 3 USE_XFS = N LOCAL_APPS = N RUNLEVEL = 3 SOUND = Y VOLUME = 75
常见问题和解决方法
内核编译失败怎么办?
编译内核是MOSIX集群的最大操作,对于没有编译过内核的人会遇到很多编译失败的问题。对于经常出现的问题和解决办法如下:
编译失败在SCSI设备时,如果没有SCSI设备,在编译配置菜单中除去SCSI选项。
编译失败在SiS芯片时,如果没使用SiS芯片组的主板,在编译菜单中除去SiS芯片支持选项。
更改编译文件后仍然编译失败时,注意将上一次编译的中间文件清理干净,使用如下命令(不要忘记备份.config文件):
cd /usr/src/linux-2.4.18-om2 cp .config /usr/src/config.backup/config-newkernel make mrproper
DHCP为什么不能正确读取配置文件?
确认你的DHCP版本要3.0.1以上,可以到RedHat的网站上下载。另外检查/etc/dhcpd.conf文件配置是否有错误,可以参考本例的文件。
配置完启动时出现sshd加载失败时怎么办?
该情况出现在MOSIX修改sshd的属性后出现,你可以加载MOSIX的ssd守护进程,操作如下:
chkconfig sshd.pre-mosix on service sshd.pre-mosix start
首次启动MOSIX时提示Host name lookup failure是什么原因?
这是由于/etc/hosts文件没有正确标出主机名对应的地址造成的,修改/etc/hosts文件正确就可以。
首次启动MOSIX时提示以下错误:
setpe: the supplied table is well-formatted,
but my IP address (127.0.0.1) is not there!
是什么原因?
这是由于RedHat Linux 的host文件缺省只有127.0.0.1对应主机名,可以将/etc/hosts文件中的127.0.0.1 mosix localhost分开描述:
vi /etc/hosts 192.168.0.254 mosix 127.0.0.1 localhost
制作LTSP启动内核映象失败
注意使用的LTSP初始化工具是ltsp_initrd_kit-3.0.1-i386.tgz版本
背景资料:
相关名词
SMP:对称多处理器
LTSP:Linux终端服务器项目 (Linux Terminal Server Project)
Kernel:内核
Ramdisk:内存虚拟盘
Etherboot:以太启动
Bootrom:网卡启动芯片
大型主机(Mainframes),超级计算机(Supercomputers)和集群(Clusters)
纵观计算机的历史,最先让人了解的就是大型主机和超级计算机,这是计算机历史的一部分,没有这些大家伙,就没有今天的个人电脑。这些大家伙通常是一个或几个有强大研发队伍和资金的厂商完成,最初的目的是军方或政府的需要,很多大学的研发也促成了这些大家伙更强大。一般情况下,大型主机和超级计算机都使用超过8个,多达上百个的CPU和自己的专用操作系统,计算机历史上很多的重要成员都和这些大家伙有关,IBM,DEC,Cray,SGI,HAL。大型主机已经成为历史,而超级计算机成了各国技术实力的争夺焦点,但是目前个人电脑的发展使集群成为竞争超级计算机的强大对手,集群的CPU数和浮点能力和超级计算机的差距已经越来越近。
Cluster
集群系统,也有成为机群和群集系统的。集群主要分为三类:容错集群(Fail-over Cluster),负载均衡集群(Load balancing Cluster),高性能计算集群(High Performance Computing)。
容错集群是指两台主机通过两个或两个以上网路连接的系统,其中一个连接称为心跳线(heartbeat),利用每台主机上的服务进程监控对方主机的状态,一旦发现对方主机宕机或出现不能正常工作的情况,心跳线会反映给互为备份的另外一台主机,该主机则会接替出问题的主机。典型的使用场景是空军的雷达追踪系统。
负载均衡集群一般用于相应网络请求的网页服务器,代理服务器。这种集群可以在接到请求时,检查接受请求较少,不繁忙的服务器,并把请求转到这些服务器上。从检查其他服务器状态这一点上看,负载均衡和容错集群很接近,不同之处是数量上更多。
高性能计算集群是指具有响应大量计算的性能,可以作为数据中心使用的计算机的集合。比如压缩mp3,气象云图的分析等。
集群模式
(N)UMA非一致性内存访问(Non-)Uniform Memory Access一般是指通过执行特殊的程序代码对内存的共享访问。在Linux内核中,可以执行对访问时间内的不同内存区域进行交叉访问,也就是内核进程可以使用接近CPU使用时的内存。对正在使用内存区域的访问,才可以共享。线性的内存访问是无法共享的。
PVM/MPI是指并行虚拟机(Parallel Virrual Machine)和信息传递界面(Message Passing Interface)。在Beowulf的世界里最常提到的就是这两个概念,该软件包已经提供了多平台的版本。通过开放式的标准信息传递库,并行机之间可以通讯,事实上PVM也是一组库,程序可以使用这些编译库来改造程序适应并行系统。但是这些都要相应的修改源程序,系统内核事实上并没有发生改变。
其他模式:Turbo Linux EnFuzion,Platform等网格计算(Grid Computing)不必讨论这类集群不是单纯意义的集群,以Enfuzion为例,EnFuzion是Turbo Linux收购的一个软件改良版(前身就叫Cluster),因为使用了Java,可以跨平台,使用驻留系统服务来监控集群间的通讯,事实上是任务分发和监控器,依赖于计算数据离散性,对于数据不可分的程序,无能为力。也就是说每个节点都运行相同的程序,但处理的数据是不同的,该集群提供了控制这些程序的界面,跨平台性也只是依赖于计算的应用有跨平台版本,而其只提供跨平台的监控。主要集中在CPU空闲的监控和计算的再分配。
数据可分和程序可分
集群计算中最重要的就是分布,根据不同的应用,分为两种:数据可分和程序可分。
数据可分是指数据间没有必然联系或联系在结果的基础上,比如mp3的压缩,每个单独的mp3互不关联,或者有限元计算的某个步骤,单一的曲面计算生成结果再参加后面的关联计算,更着名的是通过分析射电望远镜的信号寻找外星人,这是典型的将中间分析结果传递给下一部分析,这就是数据可分,这最适合网格计算。
程序可分,用过ANSYS的人都知道商业软件分为单处理器和多处理器版本,因为计算量大,所以支持SMP的计算软件和使用单一CPU的软件是不同的,多CPU共同运算时也要考虑到内存的访问,处理通讯和负载均衡,除非操作系统支持,不然使用DOS和Windows9x很难用到第二个CPU(甚至不可见),有了操作系统的支持,应用程序也要支持,即使操作系统支持并行,应用程序不可分的话,只能使用1/n(n=CPU数量)的处理能力,典型的例子就是2CPU的WindowsNT/2000下使用单处理器版本的ANSYS,处理器进程显示50%,但是2CPU共同生效。而使用多处理器版本时,2CPU都可以在98%的使用率。因此程序可分是集群重要的应用基础,即使程序本身不可分,而集群支持子进程的迁移,也意味
需要强大计算的应用
财务与社会行为分析,使用数学模型模拟的计算。
音乐,图象等多媒体数据处理,例如mp3压缩,动画渲染,后期处理。
流体力学,有限元分析,例如乐高玩具的数字模拟强度分析。
编译,数据库挖掘。
医学研究,例如AIDS和DNA的结构分析,成功运作的有UD(United Devices )
天文研究,例如,在家寻找外星人项目()。天气和海浪预报。
电子电路数字模拟分析,例如研发新的处理器。
穷举解密,例如破解DES密码()。
正在研发的分布式计算系统
相关连接:
Plan 9
1993年源于贝尔实验室(Computing Sciences Research Center of Bell Laboratories) 开发的新分布式操作系统,建立在Unix和C与C++基础上,支持的处理器有Intel x86, Sparc, Alpha, Power PC, 和ARM。目前没有象KDE漂亮的图形界面,使用上接近UNIX,标准UNIX工具也可以使用,但是从设计原理和基础上不同于UNIX,核心已经完全重写并设计成网络操作系统,就像设计完UNIX后的补充,其中设计元素包括用户端的终端,存储固定文件的服务器和提供更快CPU的计算服务器,提供用户验证和网关特性。
目前吸引人的焦点是Plan 9的文件系统可以支持所有的系统服务进程,也就是说所有任何用户可以使用的资源在文件系统中都可以找到唯一的命名,已经可以称为命名空间了。通过网络层的协议9P来访问所有的资源,这一点类似NFS,但不同之处是对用户不透明。支持异构的网络:以太网,光纤和普通调制解调器,还有ISDN的连接。
较早的Plan 9更像文件系统,现在的系统支持更多的用户并发。标准情况下,用户可以运行任意的从他们的终端上或CPU服务器上启动应用,应用将会从文件服务器上获取数据,并且可以小到在笔记本上运行。因为具备了高可配置性,因此摆脱了客户机服务器体系的中心控制模式。
相关连接:
其他的网格计算
网格计算的信息站点
SUN的网格计算软件
TurboLinux的EnFuzion
如何编译内核
首先你的手中要有一个Linux的分发版本,RedHat是个不错的选择,为了具有普遍性,下面的操作是在RedHat 7.2的基础上完成的。
当你安装完Linux后,你需要确认下列的rpm包已经存在(*是指不同的版本),你可以使用rpm -Uvh来安装(绝大多数文件在CD2中) :
mount /dev/cdrom /mnt/cdrom cd /mnt/redhat/RPM rpm -Uvh kernel-headers* rpm -Uvh kernel-source* rpm -Uvh kernel-doc* rpm -Uvh dev86* rpm -Uvh make-* rpm -Uvh glibc-devel* rpm -Uvh cpp* rpm -Uvh ncurses-devel* rpm -Uvh binutils* rpm -Uvh gcc-2* cd /usr/src umount /mnt/cdrom
如果你从上下载了Linux稳定的内核2.4.18,可以将他解开并移到/usr/src目录下:
tar xvfz linux-2.4.18.tar.gz mv linux /usr/src/linux-2.4.18
你可以修改Makefile文件来改变编译的内核名称,RedHat 7.2的内核版本是2.4.7.10,首先要清理编译的过程文件,将当前版本内核配置文件作为新编译内核版本的配置使用,编译中的错误输出到指定文件
cd /usr/src/linux-2.4.18 make mrproper cp -p /usr/src/linux-2.4/config/kernel-*-i686.config .config make oldconfig make dep make bzImage 2 > errors make modules 2 > mod-errors cp -p arch/i386/boot/bzImage /boot/vmlinuz-2.4.18 cp -p System.map /boot/System.map-2.4.18 make modules_install
编译内核的初始化文件:
new-kernel-pkg -install -mkinitrd -depmod 2.4.18 mkdir /mnt/initrd gzip -dc /boot/initrd-2.4.8.img > /tmp/initrd.img mount -o loop /tmp/initrd.img /mnt/initrd ls -R /mnt/initrd umount /mnt/initrd
修改GRUB的启动配置(/boot/grub/grub.conf)文件,加入新编译内核的条目:
vi /boot/grub/grub.conf title Red Hat Linux (2.4.1 root (hd0,0) kernel /vmlinuz-2.4.18 ro root=/dev/hda2
下次启动时就可以选择了。
动态创建以太网启动映象。目前的版本是5.0.7。使用的原理就是用软盘启动来模拟网卡的启动芯片。主页是交互式的,通过下拉菜单,可以选择网卡的类型和映象类型。在配置菜单中还可以设置支持的启动类型和其他的参数,最后点击Get ROM将提示保存映象文件。把保存的结果传到Linux上,使用cat命令将映象文件创建以太启动软盘。
LTSP的启动过程
LTSP的启动过程需要很多步骤,了解这些步骤可以很好排除出现的问题:
以下的例子硬件环境是
客户端DELL Gx1 PII 350MB 128MB 3C905B ATI rage128
服务器端运行RedHat 7.2和DHCP服务
网络地址范围192.168.0.0网段,子网掩码是255.255.255.0
客户端开机自检
在开机自检的过程中,BIOS将检测扩展的芯片,也就是网卡上增加的用于以太网启动的启动芯片(bootrom),BIOS可以检测到网卡上的启动芯片。 一旦开机自检完成,执行步骤将到以太启动代码。 以太启动代码检测网卡类型,当检测正确时,初始化网卡。
以太启动代码将在本地网段中发申请DHCP的广播,网卡的MAC地址将包括在该广播中。
服务器端的DHCPD守护进程将收到来自客户端的广播申请,检查配置文件中与接受到客户端MAC地址相匹配的参数。
DHCPD守护进程发送回复的数据包,该数据包中包括:该客户端的IP地址,本网段的子网掩码,下载内核的路径,需要装载的根文件系统的路径,传递内核命令行执行的参数。
以太启动代码将从服务器接受这些数据,随后开始按照提供的数据配置网卡的TCP/IP设置。
使用TFTP(Trivial File Transfer Protocol直接文件传输协议),以太启动代码可以从服务器上下载内核。
一旦内核下载到客户端完成,以太启动代码将