linux无盘系统(网吧无硬盘系统安装方法)
谁知道用LINUX做网吧服务器的无盘系统怎么做
客户端是支持PXE方式启动的刀片,用Linux作为服务器,服务器配置如下:
1)安装DHCP服务器dhcpd
2)配置/etc/dhcpd.conf文件,下面是我机器上的文件
max-lease-time-1;
default-lease-time-1;#注:IP地址永不过期
option subnet-mask 255.0.0.0;
option routers 10.0.0.1;
option domain-name-servers 10.10.10.10;
# option netbios-name-servers 10.10.10.10;
option broadcast-address 10.255.255.255;
# option dhcp-class-identifier"XEClient";
# option vendor-encapsulated-options 01:04:00:00:00:00:ff;
# option option-135"start";
subnet 10.0.0.0 netmask 255.0.0.0{
range 10.10.12.131 10.10.12.150;
host blade01{
hardware ethernet 00:e0:43:00:02:00;
fixed-address 10.10.12.131;
filename"/tftpboot/pxelinux.0";#注:启动映象文件
}
host blade02{
hardware ethernet 00:e0:43:00:02:02;
fixed-address 10.10.12.132;
filename"/tftpboot/pxelinux.0";
}
host blade03{
hardware ethernet 00:e0:43:00:02:04;
fixed-address 10.10.12.133;
filename"/tftpboot/pxelinux.0";
}
host blade04{
hardware ethernet 00:e0:43:00:02:06;
fixed-address 10.10.12.134;
filename"/tftpboot/pxelinux.0";
}
host blade05{
hardware ethernet 00:e0:43:00:02:08;
fixed-address 10.10.12.135;
filename"/tftpboot/pxelinux.0";
}
}
说明:dhcp客户得到IP地址后用TFTP协议从服务器上下载启动映象文件。我用syslinux
工具包里边的pxelinux来作为远程启动的loder.
3)配置tftp server
使用pxelinux作引导工具需要支持TSIZE参数的tftp server。可从下载。
通过xinetd来使用tftp服务,我的/etc/xinetd.conf文件如下
......
service tftp
{
socket_type= dgram
protocol= udp
wait= yes
user= root
server=/usr/sbin/in.tftpd
}
4)配置PXELINUX
先安装syslinux软件包。可从下载。
将pxelinux.0拷贝到/tftpboot/目录下,然后建立/tftpboot/syslinux.cfg/目录。该目录下存放配置文件。
pxelinux使用ip地址的十六进制表示来作为该ip地址的配置文件的文件名。如blade01的
ip地址为10.10.12.131,配置文件名为0A0A0C83,内容为:
default linux
label linux
kernel vmlinuz
append ip=dhcp root=/dev/nfsroot nfsroot=10.10.11.120:/remote/blade01 vga=normal
5)配置nfs
为每个刀片建立一个根目录,在该刀片的pxelinux配置文件里指定了从这个nfs export的目录启动。
该根目录里应把标准的目录都建好,另外需要重新mount的usr, home, public等目录也要export。
我的/etc/exports文件:
#/etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
/remote/blade01 blade01(rw,async,no_root_squash)
/remote/blade02 blade02(rw,async,no_root_squash)
/remote/blade03 blade03(rw,async,no_root_squash)
/remote/blade04 blade04(rw,async,no_root_squash)
/remote/blade05 blade05(rw,async,no_root_squash)
/remote/root*(rw,async,no_root_squash)
/remote/home*(rw,async,no_root_squash)
/usr*(ro,async,no_root_squash)
/sbin*(ro,async,no_root_squash)
/bin*(ro,async,no_root_squash)
/lib*(ro,async,no_root_squash)
/home*(ro,async,no_root_squash)
6)为每个刀片修改它的/etc/fstab文件,以blade01为例,它的nfs root是/remote/blade01
/remote/blade01/etc/fstab文件如下:
#/etc/fstab: static file system information.
#
#
10.10.11.120:/remote/blade01/ nfs defaults,intr 0 1
10.10.11.120:/remote/root/root nfs defaults,intr 0 1
10.10.11.120:/remote/home/home nfs defaults,intr 0 1
10.10.11.120:/bin/bin nfs defaults,intr 0 1
10.10.11.120:/usr/usr nfs defaults,intr 0 1
10.10.11.120:/sbin/sbin nfs defaults,intr 0 1
10.10.11.120:/lib/lib nfs defaults,intr 0 1
none/proc proc defaults,intr 0 1
同时还要为每个刀片修改它的网络配置文件,配置ip地址,启动两块网卡等等。。
7)编译内核
刀片用的内核,应该支持Kernel Level Auto Configuration的DHCP协议,支持NFS,支持NFS ROOT,
假设编译好的内核为vmlinuz,将它拷贝到/tftpboot/目录下。
什么是无盘系统,Linux系统和windows系统区别在那里
无盘系统是一种特殊的电脑运行模式,它无需在本地硬盘上安装操作系统和程序。相反,无盘系统通过网络连接到远程服务器,从服务器读取和运行所需的数据。这种系统通常在网吧、教育机构和企业环境中使用。在无盘工作站中,硬盘被省略,内存承担起硬盘的角色,以存储和读取服务器上传输的数据。
无盘系统的优点是能够显著降低硬件成本,提高设备管理和更新的效率。但是,无盘系统也有其局限性,如在游戏等对数据处理速度和延迟敏感的应用中,服务器的负担会直接影响用户体验。此外,如果服务器出现故障,无盘系统的运行会受到直接影响。
而Linux系统与Windows系统之间的区别主要体现在以下几个方面:
1.开源与闭源:Linux是一个开源操作系统,源代码对公众开放,任何人都可以查看、修改和分发。相比之下,Windows系统是由微软公司开发的闭源操作系统,其源代码不对外公开。
2.系统稳定性:由于Linux系统的源代码开放,开发者可以持续改进和优化系统性能,因此Linux通常被认为在稳定性方面优于Windows。然而,这也意味着Windows系统的更新更频繁,提供更多的新功能和改进。
3.应用程序兼容性:由于Windows系统广泛应用于个人电脑和商业市场,其应用程序生态系统非常庞大,兼容性好。相比之下,Linux系统虽然也在努力拓展其应用生态,但与Windows相比,部分特定的软件可能在Linux上缺乏支持。
4.易用性与用户界面:Windows系统以其直观的用户界面和丰富的图形操作而著称,对大多数非技术用户更为友好。Linux系统虽然也在逐步改善其易用性,但仍可能需要用户具备一定的技术知识才能高效使用。
总的来说,无盘系统与Linux系统和Windows系统各有其特点和适用场景。无盘系统在成本控制、管理效率上有明显优势,而Linux和Windows则在操作系统特性和应用生态方面各有千秋。选择何种系统,需要根据实际需求和环境来综合考虑。
linux 如何设置无盘启动
你可以参考一下……这个笔记做的还行!!
一.编译内核
1.进入linux源代码目录:
#cd/usr/src/linux-2.4.20
2.清理源代码树,检测内核包里面的文件是否正确:
#make mrproper
3.运行配置程序:
#make xconfig
说明:最关键要选择fs(ext3),initrd,cpu,网卡型号的支持,或直接将准备好的config文件拷贝到/usr/src/linux-2.4.20/arch/i386目录下,改名为defconfig(注意先将原有的defconfig文件备份,切记).
4.开始编译,检查相关独立性:
#make dep
5.清除内存和编译过程中生成的.o文件:
#make clean
6.生成bzImage内核文件,在./arch/i386/boot下:
#make bzImage
二.Busybox文件系统的生成
1. Busybox简介
busybox是一个集成了一百多个最常用linux命令和工具的软件,他甚至还集成了一个http服务器和一个telnet服务器,而所有这一切功能却只有区区1M左右的大小.我们平时用的那些linux命令就好比是分力式的电子元件,而busybox就好比是一个集成电路,把常用的工具和命令集成压缩在一个可执行文件里,功能基本不变,而大小却小很多倍,在嵌入式linux应用中,busybox有非常广的应用,另外,大多数linux发行版的安装程序中都有busybox的身影,安装linux的时候案ctrl+alt+F2就能得到一个控制台,而这个控制台中的所有命令都是指向busybox的链接.
2.配置busybox
busybox的配置程序和linux内核菜单配置方式简直一模一样.
解压:#tar xvfz/Nodiskboot/busybox-1.00.tar.gz
#cd/Nodiskboot/busybox-1.00
#make menuconfig
下面是需要编译进busybox的功能选项,其他的可以根据需要自选,但是同样不要太贪心.
General Configuration应该选的选项
Show verbose applet usage messages
Runtime SUID/SGID configuration via/etc/busybox.conf
Build Options
Build BusyBox as a static binary(no shared libs)
这个选项是一定要选择的,这样才能把busybox编译成静态链接的可执行文件,运行时才独立于其他函数库.否则必需要其他库文件才能运行,在单一个linux内核不能使他正常工作.
Installation Options
Don't use/usr
这个选项也一定要选,否则make install后busybox将安装在原系统的/usr下,这将覆盖掉系统原有的命令.选择这个选项后,make install后会在busybox目录下生成一个叫_install的目录,里面有busybox和指向他的链接.
其他选项都是一些linux基本命令选项,自己需要哪些命令就编译进去,一般用默认的就可以了.
配置好后退出并保存.
3.编译并安装busybox
#make
#make install
这样,在busybox目录下将生成一个_install的文件夹,里面会有四项bin,sbin和linuxrc,其中bin,sbin都是目录,busybox文件放在bin下面,然后其他的所有文件都是符号连接,连接到busybox上。
上述步骤生成了initrd简单的目录架构,我们还有手工添加若干。
4.制作根文件系统
一个根文件系统必须包含支持一个完整的Linux系统所需的最基本的全部文件:
*最基本的文件结构
*/dev,/proc,/bin,/etc,/lib,/usr,/tmp等目录的最小集合
* sh, ls, cp, mv等基本工具程序
* rc, inittab, fstab等基本配置文件
*/dev/hd*,/dev/tty*,/dev/fd0等基本设备
* libc-x.x.x.so等程序运行所需的各种动态库文件
1).创建目录rootfs
mkdir/Nodiskboot/rootfs
cd/Nodiskboot/rootfs
2).基本目录结构
#mkdir etc usr var tmp proc home root dev etc/init.d mnt lib
#chmod 755 etc usr var tmp home root dev etc/init.d mnt lib
#chmod 555 proc
介绍一下各种目录的作用:
*/dev--设备文件,实现系统I/O所需
*/proc--使用proc文件系统所需
*/etc--包含系统配置文件
*/sbin--包含重要的系统程序
*/bin--包含大部分系统程序
*/lib--包含提供动态链接所需的共享库文件
*/mnt--挂载其他设备:磁盘、光盘、usb设备等的挂载点
*/usr--额外的程序、函数库文件以及配置文件
3).拷贝busybox
#cp-R/Nodiskboot/busybox-1.00/_install/*/Nodiskboot/rootfs/
4).建立dev设备文件名
#cd/Nodiskboot/rootfs/dev
#mknod-m 666 tty c 5 0
#mknod-m 666 console c 5 1
#mknod-m 666 tty0 c 4 0
#mknod-m 600 fd0 b 2 0
#mknod-m 600 ram0 b 1 0
#mknod-m 600 null c 1 3
mknod是在dev下成生mknod节点设备文件。加载磁盘的命令是:
#mknod-m 660 hda b 3 1
其中3是第一条主线上,1是主设备上第一个分区(0~63),如果是第二条线则是22,如果是从设备则是(64~127).
但是手工方法建立太麻烦了,通常直接从/dev下把需要的设备文件拷贝过来.
这些设备文件是特殊文件,在拷贝时一定要加上-R参数才能拷贝.
#cp-R/dev/console./
#cp-R/dev/null./
#cp-R/dev/zero./
...
5).建立etc目录下的配置文件
写入三个文件inittab,fstab,init.d/rc.sysinit,文件内容如下
inittab:
::sysinit:/etc/init.d/rcS
::askfirst:/bin/sh
fstab:
proc/proc proc defaults 0 0
init.d/rcS:
#!/bin/sh
mount–a
exec bin/dhcpcd
# chmod 755 rc.sysinit
其中rcS中exec语句是启动dhcp客户端软件,启动自动配置IP功能。
6).在lib下面cp相应的库文件
用ldd命令查看文件运行所用到的库,由于未用到动态链接库,而是直接链接到linuxrc文件上,所以lib下面是空的.
7).存储节点的初始化是另一个需要注意的问题。在前面曾提到,内核引导的最后一项工作是创建并执行init进程,随后init进程将创建其他进程,运行一些系统所需的重要程序。由于在通常的Linux系统中的init程序的使用和配置与System V系统中的init程序类似,而在嵌入式系统等特殊应用场合并不需要实现多个用户(multiuser)的使用,也不需要用户登陆终端,所以System V系统中的init程序对我们的要求而言功能过于复杂。在此,我们采用使用比较广泛的工具busybox中的init程序。busybox包含常用的基本工具程序如:sh,ls,mount,init,cp等,而大小只有几百K(视所选择工具程序的数目来决定大小)。实际上,编译busybox后只有一个busybox程序,其余的所有工具程序都是busybox程序的符号链接,busybox通过辨别不同的程序名称,跳转执行不同的功能。
busybox中的init程序可以完成初始化的基本功能而且去掉了System V系统init程序的多余功能,init程序执行的顺序如下:
<1>.创建init的信号处理
<2>.初始化控制台
<3>.分析inittab文件,/etc/inittab
<4>.执行系统初始化脚本,/etc/init.d/rcS
<5>.执行所有inittab中类型为wait的程序
<6>.执行所有inittab中类型为once的程序
完成以上步骤后,init循环执行所有inittab中类型为respawn和askfirst的程序。文件inittab中的每一行配置遵照格式如下:
id:runlevel:action:process
虽然这个格式与传统的System V init类似,但是id域的含义不同。id通常是用来指定控制启动进程运行的tty。如果id域为空则代表这个进程的运行不需要与shell交互。在busybox中,runlevel域可以完全忽略。process指明执行程序以及所带参数选项。 action域可以选择一下八个类型:
sysinit提供给init初始化脚本所在的路径;
respawn当进程终止后将其重新启动;
askfirst与respawn类似,不同之处是在终端提示“Please press Enter to activate this console.”;
wait代表init等待这个程序执行完后才继续执行;
once表示执行一次而且不需要等待完成;
ctrlaltdel表示当按下Ctrl-Alt-Delete时执行;
shutdown表示程序在关机时执行;
restart表示程序在重启时执行,通常是init本身。
在存储节点上运行的程序是:挂载硬盘(mount),扫描硬盘生成多媒体文件报告的程序,流媒体服务器(vls),与管理节点通信程序(agent),监视网络带宽使用状况的程序()。其中,mount的action域应为wait,因为首先要将存有多媒体文件的硬盘挂载才能对其执行扫描;vls的action域应为respawn,vls运行出现严重错误后,重新启动vls,并向管理节点报告,写入log。
三.制作ramdisk映象文件
根文件系统所有东西都放在/Nodiskboot/rootfs下,我们将利用ramdisk把这些内容做成ramdisk映象文件并压缩它.
# dd if=/dev/zero of=/dev/ram0
dd:正在写入‘/dev/ram1’:设备上没有空间
读入了 8193+0个块
输出了 8192+0个块
zero是一个特殊的设备,表示全部为0的字符块.上面这条命令的意思是把系统的第一个ramdisk用全部为0的数据填充,因为 ramdisk默认大小为4M,因此当读满8192个块(每块512字节)后,显示'设备上没空间'.这很正常,/dev/ram0已经被填充满了.
如果指定块的大小:
# dd if=/dev/zero of=/dev/ram0 bs=1M count=4
读入了 4+0个块
输出了 4+0个块
不会有错误提示,这里演示了dd的一般用法,接下来还要频繁用到dd命令.
在/dev下有很多ramdisk设备ram0,ram1,ram2,ram3....一般用第一个就可以了.
填充后,ram1就有可空间,可以在这个空间上创见一个文件系统:
# mkfs.ext2-m0/dev/ram0
将ram0挂装到文件系统中:
先建立一个挂装点:
#mkdir/mnt/ram0
挂上ram0:
#mount/dev/ram0/mnt/ram0
将先前做好的Nodiskboot根文件系统拷贝到ram0上.
#cp-R/Nodiskboot/rootfs/*/mnt/ram0
做完以上几步,你应就白了ramdisk设备的含义,他是和hda1,hdb1,一样的块设备,用mount挂到文件系统下后就可以访问,往里放东西,但是所有的东西在内存上.关机将丢失所有东西.
拷贝好Nodiskboot根文件系统后卸载ram0:
#umount/dev/ram0
如果出现"device is busy",说明有别的进程在使用/dev/ram0上的文件,解决办法如下:
#fuser-v/mnt/ram0
#umount/dev/ram0
这时,虽然不能通过/mnt/ram这个挂装点访问ram0中的内容了,但是他却切切实实得在内存中存在.
再用dd把这个ram1以映象方式取出来:
# dd if=/dev/ram0 of=/Nodiskboot/ramdisk.img
验证一下取出来的内容:
# file ramdisk.img
ramdisk.img: Linux rev 1.0 ext2 filesystem data
他是一个ext2文件系统,类似一个ISO光盘映象文件.
因次,我们可以用loop设备来把他重新挂装到文件系统里:
# mount-o loop ramdisk.img/mnt/ram0/
为了方便,我仍旧把他挂在/mnt/ram0下,因此,在先前一定要把/dev/ram0 umount掉
查看/mnt/ram0下的内容,他应该和/Nodiskboot/rootfs下的一模一样,否则就是出错了:
# ls/mnt/ram0
etc usr var tmp proc home root dev etc/init.d mnt lib
这样,我们就得到了一个ramdisk根文件系统映象ramdisk.img
把他umount掉:
#umount/mnt/ram0
压缩ramdisk.img印象文件:
# gzip-v9 ramdisk.img
查看压缩后的大小:
# ls-lh ramdisk.img.gz
四.压缩内核与根文件系统
当内核与根文件系统准备好之后,就要将这两者压缩在一起,使用的工具是mknbi,它是DHCP启动映象制作工具,在linux下与etherboot配合使用.mknbi压缩的文件下载到存储节点后,由etherboot进行分析,对内核与根文件系统分离解压后
1:将bzImage拷贝到mknbi下,将initrd也拷贝到mknbi下
2:mkelf-linux--output=/tftpboot/boot.eb--param="rw root=/dev/ram initrd=0x075F0000" bzImage initrd
其中param参数的设置, initrd代表内核映象文件bzimage将被解压缩到的内存的位置。
五.最后一步――执行
将mknbi-linux生成的压缩文件boot.eb放置在管理节点的/tftpboot路径下,并修改/etc/dhcpd.conf中的配置,使boot.eb作为每一个存储节点通过TFTP需要从管理节点下载的文件。然后,管理节点启动DHCP守护进程(# service dhcpd start),运行TFTP服务(# chkconfig tftp on)。
存储节点在上电后就可以分配得到IP地址,下载操作系统内核和根文件系统,运行各种配置好了的程序,可以在存储节点上ifconfig,可以看到节点上的网卡开始工作,现在可以完成busybox里面集成的简单命令,如ping之类。