LTSP的启动过程 LTSP的启动过程需要很多步骤,了解这些步骤可以很好排除出现的问题。以下的例子硬件环境是:客户端DELL Gx1 PII 350MB 128MB 3C905B ATI rage128;服务器端运行Red Hat 7.2和DHCP服务;网络地址范围192.168.0.0网段,子网掩码是255.255.255.0。
LTSP的启动过程如下:
1.客户端开机自检。
2.在开机自检的过程中,BIOS将检测扩展的芯片,也就是网卡上增加的用于以太网启动的启动芯片(bootrom),BIOS可以检测到网卡上的启动芯片。
3.一旦开机自检完成,执行步骤将到以太启动代码。
4.以太启动代码检测网卡类型,当检测正确时,初始化网卡。
5.以太启动代码将在本地网段中发申请DHCP的广播,网卡的MAC地址将包括在该广播中。
6.服务器端的DHCPD守护进程将收到来自客户端的广播申请,检查配置文件中与接受到客户端MAC地址相匹配的参数。
7.DHCPD守护进程发送回复的数据包,该数据包中包括:该客户端的IP地址,本网段的子网掩码,下载内核的路径,需要装载的根文件系统的路径,传递内核命令行执行的参数。
8.以太启动代码将从服务器接受这些数据,随后开始按照提供的数据配置网卡的TCP/IP设置。
9.使用TFTP(Trivial File Transfer Protocol直接文件传输协议),以太启动代码可以从服务器上下载内核。
10.一旦内核下载到客户端完成,以太启动代码将把内核放到内存正确的位置。
11.完成必要步骤之后,控制权交到内核控制,内核将开始初始化整个系统和全部的可识别外围设备。
12.下面才是真正的开始。因为内核是文件系统的镜像,需要象调入内存的虚拟盘中,并作为根文件系统临时装载到系统中。用内核命令行表示root=/dev/ram0引导内核镜像作为根文件系统装载。
13.正常情况下,内核完成启动过程后,将启动init进程。需要指明内核如何调入shell脚本,用init=/linuxrc命令行表示。
14./linuxrc脚本将扫描PCI总线,搜索网卡等。每种类型的PCI驱动都会在/etc/niclist中寻找匹配的参数。一旦发现匹配的,该网卡类型的模块将返回给内核用来加载。对于ISA接口的卡,驱动模块必须被内核以命令行方式加载,并且需要特别指定中断和占用的地址。
15.一旦网卡被识别,/linuxrc脚本将加载前面返回的内核模块。
16.dhclient将随后运行来从DHCP服务器来的确认请求。这里需要特别区分确认的类型,从以太启动得到的确认将被内核取消,内核将忽略任何曾经特殊指定过根路径的NFS(网络文件系统)服务器。如果你的NFS服务器和TFTP服务器不是同一台时,这一点非常重要。也就是说这是系统不再依赖TFTP服务器而是开始使用NFS服务器来装载文件系统了。
17.当dhclient从服务器得到回应,将开始运行/etc/dhclient-script文件,它将重新收集系统信息,配置eth0网卡。
18.从上面的几点,根文件系统实际是在内存虚拟盘里的。现在/linuxrc脚本将通过NFS装载新的根文件系统,这个目录就是在服务器上共享的/opt/ltsp/i386目录。它将被装载成新的根文件系统。首先它要被装载到/mnt目录下,随后将作一次根对称 (pivot_root),也就是把当前的根文件系统和新文件系统交换,一旦完成,NFS文件系统将装载到根,而旧的根文件系统将会装载到/oldroot目录下。
19.当装载和根对称完成,也就完成了/linuxrc脚本,这时才真正的开始init进程。
20.init将读取 /etc/inittab文件开始设定客户端环境。
21.init提供了运行级别(runlevel),客户端不同的服务进程运行在不同的运行级别上,LTSP客户端的运行级别就是2,这是系统缺省的运行级别。
22.列在inittab中头一项的就是rc.local文件,该命令是运行于客户端的系统初始化状态(sysinit)。
23.rc.local脚本将创建1MB的内存虚拟盘,其中有在整个过程中随时需要写和修改的任何文件。
24.内存虚拟盘将被装载到/tmp目录下。任何需要写的文件都会真实的存在/tmp目录下,然后创建相应的符号连接到正确的目录下。
25.随后是/proc文件系统被装载。
26.如果客户端配置为通过NFS作交换区(swap),/var/opt/ltsp/swapfiles目录将会被装载到/tmp/swapfiles下。反之,如果没有设置,交换区将被自动创建。交换区的大小设置在lts.conf文件中配置。
27.交换文件通过swapon命令激活。自循环(loopback)网卡将被配置,设定IP地址为127.0.0.1。
28.本地应用模式激活,随后/home目录将被装载,随后的应用将以用户的家目录起始访问。
29.一系列的目录在/tmp文件系统下创建,用来提供给系统运行作临时过渡文件。这些目录包括:
/tmp/compiled a.
/tmp/var b.
/tmp/var/run c.
/tmp/var/log d.
/tmp/var/lock e.
/tmp/var/lock/subsys f. |
30.配置X-Window系统,在lts.conf文件中,参数(XSERVER)是不可缺少的,一般设定为auto自动,这意味着尝试自动检测。如果是PCI的设备,将尝试获取驱动厂商和驱动设备标识,并从/etc/vidlist文件中寻找匹配项。
31.如果该卡支持XFree86 4.x版本,PCI扫描程序将返回驱动模块的名称,如果仅支持XFree86 3.3.6版本,PCI扫描程序返回将要使用的X服务器的名称。rc.local脚本可以选择不同的版本使用,因为旧的3.3.6服务器是使用XF86_开头的。如果是XFree86 4.x版本,/etc/rc.setupx脚本将创建XF86Config配置文件给4.x版本。反之,XFree86 3.3.6将由/etc/rc.setupx3脚本创建XF86Config配置文件。
32.XF86Config配置文件是基于/etc/lts.conf文件的,当rc.setupx脚本完成后,将返回给rc.local脚本,创建/tmp/start_ws脚本,该脚本是用来启动X服务器的。
33.随后创建/tmp/syslog.conf文件。该文件将告知syslogd守护进程发送关于系统的日志信息到指定的日志机接收。日志主机定义在lts.conf文件中。事实上/etc/syslog.conf是/tmp/syslog.conf的符号连接。
34.启动syslogd守护进程,配置文件在上一步骤已经创建。
35.返回控制权给init进程,该进程将寻找初始缺省的运行级别。缺省的LTSP核心运行级别定义是2。缺省的运行级别是2,将导致init设定运行级别set_runlevel脚本,该脚本将读取lts.conf文件并定义客户端实际运行的运行级别。客户端LTSP运行级别一般是3、4和5。“3”将启动shell,常使用在排错模式,本文中也是定义为3。“4”将会在字符模式启动一个或更多的telnet进程,这将有力的替换旧的串行终端。“5”代表图形用户界面,这是X-Window,并且发送XDMCP申请给服务器,随着登录对话框的出现,你就可以登录到服务器了。这种情况下,服务器需要启动显示管理器,例如XDM、GDM或KDM。