自动安装Linux系统之"SystemImager”(下)
《自动安装Linux系统之“SystemImager”》中,我们已经完成镜像服务器和黄金客户端的安装并成功的制作了一份黄金客户端镜像。本文接下来介绍如何配置镜像服务器和要安装系统的客户端,最终完成客户端的自动安装。

SystemImager支持从PXECDUSB或硬盘等方法完成自动安装操作系统,这里主要介绍使用PXE方式安装。这就需要安装DHCP服务器来给客户端提供IP地址以及其它信息;安装TFTP服务器完成客户端使用TFTP协议下载引导文件并执行。

在镜像服务器上,依次执行如下命令完成DHCPTFTP的安装:
 
  
[root@ localhost Server]# rpm -ivh dhcp-3.0.5-13.el5.i386.rpm
[root@ localhost Server]# rpm -ivh tftp-server-0.42-3.1.i386.rpm
4、配置SystemImager服务

SystemImager提供了si_mkbootserver命令,利用交互的方式可以帮助我们自动的完成镜像服务器网络启动服务器的安装和配置。主要包括PxeLinuxTFTPDHCP等服务的配置。在整个过程中会自动执行测试功能用于检查配置是否正常,如果发现错误会宣告失败并生成错误日志,根据错误提示能够方便用户快速的更正错误。
1)执行si_mkbootserver命令后,提示我们这个脚本将要修改的配置文件以及重新启动的服务,输入“y”继续。
 
    
[root@localhost ~]# si_mkbootserver   
WARNING: this script may  modify  the following files:  
   --> /etc/services  
   --> /etc/inetd.conf  
   --> /etc/xinetd.d/tftp  
And  can restart inetd, xinetd  or  tftp servers.  
Do you wish  to   continue  (y/[n])? y  
Ok, continuing...  
Checking  for  a tftp server... found.  
Checking if tftp server  is  H. Peter Anvin's tftp server... yup -  right   on !  
Checking  for  a running inetd...  Not  found.  
Checking  for  a running xinetd... 16428.  
Looking  for   update -inetd...  not  found.  
Backing up /etc/xinetd.d/tftp...  
Moving /etc/xinetd.d/tftp  to  /etc/xinetd.d/tftp.si_mkbootserver.bak0...done.  
Restaring xinetd ...  
Stopping xinetd:                                           [  OK  ]  
Starting xinetd:                                           [  OK  ]  
done.  
Looking  for  a tftp client... found.  
Checking  for  loopback interface... up.  
Does tftp server  work ... yes.  
Looking  for  a pxe daemon... which:  no  pxe  in  (/usr/ local /sbin:/usr/ local /bin:/sbin:/bin:/usr/sbin:/usr/bin)  
not  found. 
 (2)接下来,将要为BootServer配置Pxe,在询问“pxelinux bootloader”路径时,由于“/usr/lib/syslinux/pxelinux.0”路径是syslinux安装后的默认路径,直接回车即可。
 
    
WARNING: your bootserver will be configured without a pxe daemon!  
         ( ignore  this warning if you're using a recent distro)  
done.  
What  is  the path  to  the pxelinux bootloader [/usr/lib/syslinux/pxelinux.0]?   #直接回车
Copying /usr/lib/syslinux/pxelinux.0  to  /var/lib/tftpboot/X86PC/UNDI/linux-install/linux.0 ... done.  
Linking /var/lib/tftpboot/pxelinux.bin  to  /var/lib/tftpboot/X86PC/UNDI/linux-install/linux.0 ...done.  
Copying /var/lib/tftpboot/X86PC/UNDI/linux-install/pxelinux.cfg  to  /var/lib/tftpboot/pxelinux.cfg...Ok, configuration complete. 
3)在询问你是否运行si_mkdhcpserver命令配置DHCP Server,这里直接输入“y”回车。si_mkdhcpserver命令能够帮助我们自动的完成对DHCP配置文件的修改,主要包含了你的域名、网段、子网掩码和将要给客户端分配的有效地址范围等信息。

 
    
Once you're DHCP server is configured, you should be all set.  
Do you want  to  run si_mkdhcpserver  to  configure your DHCP server ([y]/n)? y  输入“y”
   
Welcome  to  the SystemImager  "si_mkdhcpserver"  command.  This command will  
prepare  this computer  to  be a DHCP server  by  creating a dhcpd.conf file  
for  use  with  your ISC DHCP server (v2  or  v3).  
   
If there  is  an existing file, it will be backed up  with  the   
.beforesystemp_w_picpathr extension.  
   
Continue ? (y/[n]): y 
4)程序使用了交互式的方式,询问你使用的DHCP软件包的版本、配置文件名称、输入域名、网段、子网掩码、地址池等信息,根据实际环境填写。

 
    
Trying to probe your DNS domain. Please wait...  
Type your response  or  hit <Enter>  to  accept [defaults].  If you don't  
have a response, such  as   no   first   or   second  DNS server, just hit   
<Enter>  and  none will be used.  
   
What  is  your DHCP daemon major version number (2  or  3)? [3]:   
What  is  the  name   of  your DHCP daemon config file? [/etc/dhcpd.conf]:   
What  is  your domain  name ? [localdomain]:   
What  is  your network number? [192.168.1.0]: 172.16.0.0  
What  is  your netmask? [255.255.0.0]:   
What  is  the starting IP address  for  your dhcp range? [172.16.0.1]: 172.16.0.11  
What  is  the ending IP address  for  your dhcp range? [172.16.255.254]: 172.16.0.200  
What  is  the IP address  of  your  first  DNS server? []:   
What  is  the IP address  of  your  default  gateway? [172.16.255.254]: 172.16.0.1  
What  is  the IP address  of  your p_w_picpath server? [172.16.255.254]: 172.16.0.10  
What  is  the IP address  of  your boot server? [172.16.255.254]: 172.16.0.10  
What  is  the IP address  of  your log server? []:   
Use tmpfs staging  on  client?  (If unsure, choose  "n" ) [n]:   
Do you want  to  use Flamethrower (multicast)  to  install your clients? [n]:   
   
What...  is  the air-speed velocity  of  an unladen swallow? []:   
   
Wrong!!! ( with  a Monty Python(TM) accent...)  
   
Press <Enter>  to   continue ... 
(5下图中列出了你刚刚填写的信息,确认无误后,输入“y”完成配置。
 
    
Ahh, but seriously folks...  
Here are the  values  you have chosen:  
   
#######################################################################  
ISC DHCP daemon version:                  3  
ISC DHCP daemon config file:              /etc/dhcpd.conf  
DNS domain  name :                          localdomain  
Network number:                           172.16.0.0  
Netmask:                                  255.255.0.0  
Starting IP address  for  your DHCP range:  172.16.0.11  
Ending IP address  for  your DHCP range:    172.16.0.200  
First  DNS server:                           
Second  DNS server:                          
Third DNS server:                           
Default  gateway:                          []  
Image server:                             172.16.0.10  
Boot server:                              172.16.0.10  
Log server:                                 
Log server port:                            
Flamethrower directory port:                
Use tmpfs staging  on  client:              n  
SSH files download URL:                     
#######################################################################  
   
Are you satisfied? (y/[n]): y 
6)开始创建DHCP服务的配置文件,并提示使用si_mkdhcpserver命令修改该配置文件。输入“y”重新启动DHCP服务,至此,DHCP服务,pxe服务配置完成。
 
    
The dhcp server configuration file (/etc/dhcpd.conf) file has been   
created  for  you.  Please verify it  for  accuracy.  
   
If this file does  not  look satisfactory, you can run this command again  
to  re- create  it:  "si_mkdhcpserver"  
   
WARNING!:  If you have multiple physical network interfaces, be sure  to    
edit the init script that starts dhcpd  to  specify the interface that   
is  connected  to  your DHCP clients.  Here's an example:  
   
 Change  "/usr/sbin/dhcpd"   to   "/usr/sbin/dhcpd eth1" .  
   
Depending  on  your distribution, you may be able  to   set  this  with  the   
"INTERFACES"  variable  in   "/etc/default/dhcp""/etc/default/dhcp3-server" ,  
or  similar,  or   in  your dhcpd initialization script ( "/etc/init.d/dhcpd" ,   
"/etc/init.d/dhcp3-server"or  similar).  
   
Also, be sure  to  start  or  restart your dhcpd daemon.  This can usually  
be done  with  a command  like   "/etc/init.d/dhcpd restart"   or  similar.  
   
Would you  like  me  to  restart your DHCP server software now? (y/[n]): y  
Starting dhcpd:                                            [ok] 
7)如果镜像服务器中有多个镜像的话,就要告知哪一个节点安装哪一个镜像。si_addclients为镜像的安装脚本创建符号链接。si_addclients改写镜像服务器的/etc/hosts

/var/lib/systemp_w_picpathr/scripts/hosts文件。Hosts文件为自动安装客户端查阅他们的主机名提供默认的机制。

 
    
[root@localhost ~]# si_addclients   
Welcome  to  the SystemImager  "si_addclients"  utility    
--------------------------------------------------------------------------------  
   
This utility has 3 sections.    
   
"Section 1"  will ask you  for  your hostname information.  
   
"Section 2"  will allow you  to   create  softlinks  from  each client hostname  to  
your  "master"  script  in  the  "/var/lib/systemp_w_picpathr/scripts"  directory.    
   
  Example: www297.sh -> web_server_p_w_picpath_v1.master  
   
"Section 3"  will ask you  for  IP address information that will be combined   
with  the hostname information provided  in   Section  1  to   create  entries  in    
"/etc/hosts"   for  each  of  these same clients.  New entries will be appended   
to  the  end   of   "/etc/hosts" .  If you specify new hostnames  for  existing IP   
addresses, those entries will be re-written  in  place  to  reflect the new   
host names.  
   
Continue ? ([y]/n): y   #输入“y”,继续。
8)在si_addclients的第一个配置部分,需要指出自动安装节点的主机名称样式。一个主机范围的字段和一个域名用来定义我们要自动安装的节点的主机名;
 
    
si_addclients -- Section 1 (hostname information)  
--------------------------------------------------------------------------------  
   
The  next  series  of  questions will be used  to   create  a range  of  hostnames.    
You will be asked  for  your domain  name , the base host  name , a beginning   
number,  and  an ending number.  
   
For  example, if you answer:  
  domain  name      = systemp_w_picpathr.org  
  host range      = www7-www11,www20  
   
Then  the result will be a series  of  hostnames that looks  like  this:  
  www7.systemp_w_picpathr.org  
  www8.systemp_w_picpathr.org  
  www9.systemp_w_picpathr.org  
  www10.systemp_w_picpathr.org  
  www11.systemp_w_picpathr.org  
  www20.systemp_w_picpathr.org  
   
What  is  your domain  name ? []: vfast.com  
What  is  the hosts range that you want me  to  use? []: node11-node200  
   
I will  work   with  hostnames:  node11-node200  
              in  the domain:  vfast.com  
   
Are you satisfied? (y/[n]): y 
9)在第二个配置部分,将前一部分定义的节点映射到到镜像;
 
    
si_addclients -- Section 2 (soft links to master script)  
--------------------------------------------------------------------------------  
   
Would you  like  me  to   create  soft links  to  a  "master"  script so that hosts:  
   
  node11-node200  
   
can be autoinstalled  with  one  of  the available p_w_picpaths? ([y]/n): y  
   
Here  is  a list  of  available autoinstall scripts:  
   
vfast_backup   
   
Which script would you  like  these hosts  to  be installed  with ?  
[vfast_backup]:   
   
Your soft links have been created.  
   
Press <Enter>  to   continue ... 
10)在第三个配置部分,si_addclients命令请求IP地址范围,这个IP保存在/etc/hosts和/var/lib/systemp_w_picpathr/scripts/hosts文件中。当自动安装客户端启动时,它会从镜像服务器中检索后面的文件并应用它查找主机名。
 
    
si_addclients -- Section 3 (adding or modifying /etc/hosts entries)  
--------------------------------------------------------------------------------  
   
Your target machines need  to  be able  to  determine their host names  from  their  
IP addresses, unless their host  name   is  specified  in  a  local .cfg file.    
   
The preferred method  for  doing this  is   with  DNS.  If you have a working DNS   
that has IP address  to  hostname resolution properly configured  for  your   
target machines,  then  answer  "n"  here.  
   
If you don't have a working DNS,  or  you want  to  override the information  in  
DNS,  then  answer  "y"  here  to   add  entries  to  the  "/etc/hosts"  file  on  your  
p_w_picpath server.   After  adding these entries, the /etc/hosts file will be   
copied  to   "/var/lib/systemp_w_picpathr/scripts"   where  it can be retrieved  by  your   
target machines.  
   
I will ask you  for  your clients' IP addresses one subnet  at  a  time .  
   
   
Would you  like  me  to   continue ? (y/[n]): y  
   
si_addclients  -- Section 3 (adding or modifying /etc/hosts entries -- continued...)  
--------------------------------------------------------------------------------  
   
Hostnames range  is : node11-node200  
   
What  is  the IPs address range (e.g. 10.0.0.1-10.0.0.100,10.0.0.101)?  
[]: 172.16.0.11-172.16.0.200  
I will  work   with  IP addresses:  172.16.0.11-172.16.0.200  
                 and  hostnames:  node11-node200  
   
Are you satisfied? (y/[n]): y  
Use  of  uninitialized value  in  concatenation (.)  or  string  at  /usr/sbin/si_addclients line 552.  
   
These entries have been added  to  /etc/hosts,  and  /etc/hosts has been copied  
to  /var/lib/systemp_w_picpathr/scripts  for  use  by  your auto-install clients.  
   
Press <Enter>  to   continue ...  
   
si_addclients: successfully completed. 
11)执行si_mkclientnetboot 来制作多台要克隆机器通过网络安装的对应启动介质:
 
    
[root@localhost ~]# si_mkclientnetboot --netboot --clients node11-node200  
[netboot] using the kernel  and  initrd.img  for  architecture: i386  
[netboot] using the flavor: standard  
[root@localhost ~]# 
12)启动systemp_w_picpathr-server-rsyncd服务,使用rsync服务克隆系统。将以下服务设置重启自动启动。
 
    
[root@localhost ~]# /etc/init.d/systemp_w_picpathr-server-rsyncd start  
Starting rsync daemon  for  systemp_w_picpathr: already running.  
[root@localhost ~]# chkconfig systemp_w_picpathr-server-rsyncd  on  
[root@localhost ~]# chkconfig dhcpd  on  
[root@localhost ~]# chkconfig xinetd  on  
5、克隆操作系统

最后设置客户端BIOS选择从网卡启动。具体方法因BIOS版本不同而异。

秋日惜枫

网卡中的PXE代码会联系DHCP服务器来获取IP地址以及启动镜像,然后启动镜像被载入并运行。