一:Linux安装工作原理
众所周知,在安装过程中Linux首先需要一个引导程序来让安装光盘启动,再实行配置与安装。但目前转化为远程网络安装那么就需要我们的安装程序能够远程地通过网络传送给客户端。因此在搭建远程Linux安装服务器时候首先要值得注意以下几个问题:
1.远程客户端属于裸机。在这里所定义的裸机是除了标准硬件之外没有任何的操作系统与软件程序。当然也可以拥有操作系统或者是软件,之所以告诉大家是裸机是主要说明最简单的一种思维方式。
2.远程客户端必须能够支持网络启动。在这里所说明的问题是远程客户端为了能够发送安装请求必须能够通过网络的方式进行,将安装请求发送给服务器端。因此客户端必须存在网卡,并且网卡上拥有PXE ROM[预引导执行环境]芯片而且BIOS能够支持网络启动。
3.在远程计算机启动后将会出现初始化设置,此时因客户端没有进入操作系统或处于在裸机状态下,不可能绑定我们所熟悉TCP/IP地址或者其他网络协议地址。因此他们之间的沟通必须通过IP地址自动分配服务----DHCP来为客户端进行分发IP地址,从而实现Client-Server端之间的链接与沟通。
4.在远程安装客户端得到IP地址之后,将请求远程安装服务器给客户端一个Linux引导程序以便于引导Linux并在客户端上实现安装界面。但是在TCP/IP协议栈中如果采用TCP协议进行传送服务,那么将会出现著名的TCP三次握手过程,从而导致远程客户端等待超时而无法完成引导过程。因此就需要采用UDP协议进行快速传递,确保远程客户端的引导。因此笔者在这里所采用的程序为TFTP[琐碎文件传输协议]服务作为远程传输服务器传送Linux引导程序的服务器。
5.虽然UDP速度非常快速(这是本身结构有关),但是其仍然属于不可靠协议之一不具备纠错、确保数据到达目的地等保障机制,因此在传输大量文件或者是大文件时候还是需要采用TCP方式,这样将不会出现因UDP协议传输丢包而导致安装无法进行。
在这里有多种方式供大家选择:
1)NFS[网络文件系统]
2)HTTP
3)FTP等
笔者在这里选择采用FTP方式,主要原因在于FTP的方式比较简单。
因此准备建立远程安装服务器至少需要三个服务:DHCP、TFTP、FTP,三个服务可以再三台不同的计算机上,也可以在同一台计算机上进行实现。
原理归纳:
远程客户端计算机启动,由于BIOS设置了网卡启动,所以网卡PXE ROM中的程序被调入内存执行。首先,客户端在网络中寻找DHCP服务器,然后请求一个IP地址;同时DHCP服务器联系到TFTP服务器为此客户端发送一个bootstrap(引导程序)。客户端收到bootstrap(文件pxelinux.0)后执行,bootstrap会请求TFTP传送bootstrap的配置文件(pxelinux.cfg)。收到后读配置文件。根据配置文件内容和客户情况,客户端请求TFTP传送内核映象文件(vmlinuz)和根文件系统文件(initrd.img)。最后启动内核。这就是一个完整的pxe构建过程。然而要使网卡启动后再继续网络安装系统,则最后还需要FTP服务将系统所需安装文件放置FTP相应目录中进行传输安装。
下面用图形来表述原理:
二:Linux安装实现步骤
这里实现中所使用的平台为vmware6+RHEL5,您可以在FC系列、RH9、CenOS中都可以实现。
首先创建ks.cfg文件。如果你先前已安装了一个rhel5,则在root目录下有一个anaconda-ks.cfg文件,你可以对它进行编辑,然后保存为ks.cfg文件,如果没有就要手工创建或者用其他方法创建我的如下所示:
# Kickstart file automatically generated by anaconda.
install
nfs --server=mail.xzxj11.com --dir=/tools/i386
lang en_US.UTF-8
keyboard us
xconfig --startxonboot
network --device eth0 --bootproto dhcp
rootpw --iscrypted $1$PGpgheN.$eAAu/giXgKY4iU4AMcyi20
firewall --enabled --port=22:tcp
authconfig --enableshadow --enablemd5
selinux --enforcing
timezone Asia/Chongqing
bootloader --location=mbr --driveorder=sda --append="rhgb quiet"
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
clearpart --linux
part /boot --fstype ext3 --size=100 --grow --maxsize=100
part / --fstype ext3 --size=100 --grow
part swap --size=100 --grow --maxsize=512
%packages
@admin-tools
@base
@base-x
@cluster-storage
@clustering
@core
@dialup
@dns-server
@editors
@ftp-server
@games
@gnome-desktop
@graphical-internet
@graphics
@legacy-network-server
@mail-server
@network-server
@news-server
@office
@printing
@server-cfg
@smb-server
@sound-and-video
@text-internet
@web-server
@x-software-development
1、配置DHCP服务器
配置DHCP服务器主要用途是为了能够给客户端分配IP地址,从而让客户端与TFTP及FTP进行联系
1.1 DHCP的配置文件
DHCP的配置文件的位置在/etc目录下配置文件的名称为dhcpd.conf。如果您的系统中不存在dhcpd.conf同时您又确认您确实安装了DHCP程序,那么您可以手动建立dhcpd.conf文件。
1.2 配置文件的内容:
option space PXE; #DHCP对PXE的TFTP(琐碎文件传输协议)应答选项
option PXE.mtftp-ip code 1 = ip-address;
option PXE.mtftp-cport code 2 = unsigned integer 16;
option PXE.mtftp-sport code 3 = unsigned integer 16;
option PXE.mtftp-tmout code 4 = unsigned integer 8;
option PXE.mtftp-delay code 5 = unsigned integer 8;
option PXE.discovery-control code 6 = unsigned integer 8;
option PXE.discovery-mcast-addr code 7 = ip-address;
class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
option vendor-class-identifier "PXEClient";
vendor-option-space PXE;
option PXE.mtftp-ip 0.0.0.0;
filename "pxelinux.0"; #指定客户端所需要的的bootstrap(引导器)文件名
next-server 192.168.1.105; #指定TFTP服务器的IP地址
}
ddns-update-style interim;
ignore client-updates;
default-lease-time 1200;
max-lease-time 9200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
option domain-name-servers 192.168.1.105;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.2 192.168.1.254;
}
上述所指明的pxelinux.0为网络远程安装引导程序bootstrap.其位置在/usr/lib/syslinux目录中。
1.3 启动DHCP服务
#service dhcpd restart
2、配置TFTP服务器
配置TFTP服务器主要用途是为了能够给客户端传送bootstrap程序[即pxelinux.0],这样才能够让客户端进行引导加载内核映象文件(vmlinuz)和根文件系统文件(initrd.img)以及启动内核(Kernel)
2.1 TFTP的配置文件
TFTP的配置文件的位置在/etc/xinetd.d目录下配置文件的名称为tftp。
配置内容如下:
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot #指定TFTP的根目录所在位置,允许任何用户可以进行访问
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
在这里主要修改的字段是 disable ,将yes改为no。以打开TFTP服务
2.2 启动TFTP服务
#service xinetd restart
3、配置NFS服务器
#vi /etc/exports
/tools/i386 *(ro,insecure,sync,no_root_squash)
/tools/ks *(ro,insecure,sync,no_root_squash)
#service nfs start
4、配置bootstrap目录
要配置TFTP所要传输的bootstrap,首先要准备好引导文件、内核镜像文件、跟文件系统文件。
4.1 bootstrap文件:pxelinux.0
文件位置在/usr/lib/syslinux目录中。将其拷贝到/tftpboot目录中
#cp /usr/lib/syslinux /pxelinux.0 /tftpboot
4.2.内核镜像文件:vmlinuz
vmlinuz文件在RHEL5第一张光盘下的/images/pxeboot目录中,将vmlinuz拷贝到/tftpboot目录中[假定光盘加载到/mnt/cdrom]
#cp /mnt/cdrom/images/pxeboot/vmlinuz /tftpboot
4.3.根文件系统文件:initrd.img
initrd.img文件在RHEL5第一张光盘下的/images/pxeboot目录中,将initrd.img拷贝到/tftpboot目录中[假定光盘加载到/mnt/cdrom]
#cp /mnt/cdrom/images/pxeboot/initrd.img /tftpboot
5、创建pxelinux.cfg目录与default文件
pxelinux.cfg为远程安装客户端配置文件所在目录,您可以为不同的计算机制定不同的安装方式或者方法。但是基本上我们都可以用default配置文件来进行为所有的计算机进行配置。
#cd /tftpboot
#mkdir pxelinux.cfg
#vi /tftpboot/pxelinux.cfg/default
default内容如下:
DEFAULT install
PROMPT 1
LABEL install
KERNEL vmlinuz
APPEND initrd=initrd.img devfs=nomount ramdisk_size=16384 ##启动参数包括启动内核时所需要mount的挂载点和ramdisk大小。一般16384都可以满足了。
6、最后检查一下/tftpboot下是否存在以下文件:
1.initrd.img
2.pxelinux.0
3.vmlinuz
4.pxelinux.cfg目录
5.pxelinux.cfg/default
ok,启动一台机器进入bios里设置为lan启动,如果没有报错的话就会出现boot:提示符,然后输入install ks=nfs:192.168.1.105:/tools/ks/ks.cfg回车,无需人工干预就开始安装了。
原文地址 http://blog.chinaunix.net/u1/36549/showart_307973.html