基于网络的RedHat系统无人值守安装

      

      基于网络的RedHat系统无人值守安装

      打造REDHAT网络安装服务器

     本文介绍了 PC 平台上的一种快速 Red Hat Linux 安装方案。他具有非常高的自动化程度--用户只需手工启动机器并选择从网络启动,就能完成整个安装过程。在需要批量安装大量
Red Hat Linux 系统和需要技术人员 Red Hat Linux 安装支持的情况下,这种方案能节省大量的时间。
而且由于不必额外的软件和光驱和软驱等硬件设备,在成本上也有非常大优势。所有安装 Red Hat Linux 的研发/测试人员,和 IT 支持人员都能够从本文中获益。读者在阅读本文前需要有 Red Hat Linux 的安装经验。
  1. 引言
  一般情况下,安装Linux需要从光驱用安装光盘启动机器,然后进入交互式安装界面输入安装所需的各种设置完成安装。在下面这些情况下,这种安装方式就会暴露出缺点:
  1) 机器无光驱、光驱坏了(这种情况在现实中频繁发生) 或光盘坏了,无法从光驱安装Linux。
  2) 软件测试人员在搭建测试环境时,需要安装大量的Red Hat Linux测试机器时。这时采用手工安装方式逐台机器安装效率会非常低。
  3) 对IT支持人员来说,指导一个RedHat Linux生手安装Red Hat Linux系统会耗费非常多时间。日复一日重复这种工作会浪费宝贵的人力资源。
  从降低商业成本和提高安装系统效率的角度出发,本文向大家介绍一种方案--基于网络的Red Hat无人值守安装。该方案将非常多安装准备工作在服务器上一次性完成,这样在客户机上安装时就不必为每个客户机重复这些工作,节省了时间和成本,提高了效率。
  在一次性的环境设置工作完毕后,该套方案能达到非常高的自动化程度:用户只需要执行非常少的手工步骤即可完成安装。安装过程中的手工步骤和自动步骤如下:
  1) 手工步骤:开机,选择从网络启动。如果你的方案设置得比较负责复杂灵活,也许还需要你选择安装何种系统。总之,手工步骤非常少。
  2) 自动化步骤:剩余步骤,包括系统设置,硬盘分区,和程式包安装,将全部自动完成。
  2. 方案介绍
  这种方案需要首先设置一个启动服务器和一个安装服务器(能设置在同一台物理机上),然后通过网络启动存放在启动服务器上的安装程式。安装程式会自动访问存放在安装服务器上的安装设置文件和安装介质来完成安装。
  涉及到的技术
  该方案主要应用了三种技术:
  1) 在PC上从网络启动Red Hat Linux安装程式的PXE协议
  2) Red Hat Linux安装程式提供的网络安装功能(即指通过网络访问安装介质)
  3) Red Hat Linux 安装程式提供的无人值守安装功能(Red Hat称为kickstart)
  技术1)和2)在参考资料1和2里已有部分介绍。本文将重点描述参考资料中未涉及部分和无人值守安装功能。
  软硬件需求
  要按本文介绍的方法完成自动化安装,你需要如下软硬件资源:
  一台PC机器作为启动和安装服务器(其他架构机器也能)
  一台待安装的PC机器,他的网卡必须带有PXE支持
  一个建好的局域网,上述两台机器已连接入同一子网
  待安装的Red Hat Linux安装介质
  方案原理示意图
  图1是网络安装环境的一个原理示意图。整个安装环境由一个局域网,和连接到该局域网的三台机器组成:启动服务器(Boot Server),安装服务器(Installation Server),和待安装机器(Client)。其中启动服务器和安装服务器能部署在同一台物理机上。表1列出了对这些机器的软硬件需求,和其上负载的服务和数据。

图1 网络安装原理示意图

表1 网络安装环境里各机器上的软硬件设置
  该方案的实现步骤
  1) 设置启动服务器
  2) 设置安装服务器
  3) 从网络启动机器以完成安装
  步骤1)和2)只需做一次即可。对每一台需安装Red
Hat Linux的机器,都需要在启动服务器和安装服务器中部署相应的数据,并执行一次步骤3)。
  下面将带领你逐一执行这些步骤。为了简单,我将用示例来说明怎么在一台安装了
Red Hat Enterprise Linux AS 3 Update 5 的 PC 机上设置启动服务器和安装服务器,并在一台PC上安装 Red Hat Enterprise Linux AS 4 Update 2。
3. 步骤1:设置启动服务器
  启动服务器的目的是帮助在待安装机器上启动Red Hat Linux 安装程式。启动服务器上需要搭建一个DHCP 服务器和一个TFTP 服务器。前者是为了给待安装机器分配IP地址,后者则是提供了一个让待安装机器下载启动映像的途径。
  设置DHCP 服务器
  1) 安装DHCP服务器包(RPM包名:dhcpd)。
  2) 编辑DHCP服务器设置文件
/etc/dhcp.conf。这里是个示例:
   
  option domain-name "mydomain";
  ddns-update-style none;
   
  max-lease-time 7200;
  server-name "bootserver";
  default-lease-time 600;
   
  allow booting;
  allow bootp;
   
  subnet 192.168.138.0 netmask 255.255.255.0 {
      range
  192.168.138.1 192.168.138.254;
      deny
  unknown-clients;
  }
   
  group pxe {
      filename
  "pxelinux.0";
      host
  testserver { hardware ethernet 00:0C:29:70:24:5B;
  fixed-address
   192.168.138.30;
  } 
  在这个例子中,定义的子网是 192.168.138.0/255.255.255.0。主机定义项testserver指出 IP 地址 192.168.138.30 将分配给以太网卡00:0C:29:70:24:5B(待安装机器),文件 pxelinux.0(在 TFTP 服务器的根目录中)将作为启动映像被网卡ROM里的PXE客户端载入内存并运行。
  每增加一台需安装的机器,我们需在dhcpd.conf中增加一条host条目。
  3) 给启动服务器设置一个IP,这个IP必须在DHCP服务器定义的子网内。
  这里我们使用192.168.138.1。关于怎么为Red Hat Linux系统设置IP地址,请查阅参考资料3。
  4) 启动DHCP服务。 
     [root@bsvr] #service dhcpd restart
  设置TFTP服务器
  1) 安装TFTP服务器包(RPM包名:tftpd)。
  2) 编辑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
      disable         = no
  }
  

  这里选定了/tftpboot为TFTP 服务器的根目录位置。
  3) 将Linux安装程式的内核/根文件系统文件复制到 TFTP 服务器的根目录。对于每一个要被安装的Red Hat Linux版本,都需要执行一次该操作。
  Red Hat Linux第一张安装光盘/isolinux目录下会包含Linux安装程式的内核/根文件系统文件。下面一段命令将这些文件复制到TFTP服务器的根目录下,并按照版本重新命名。 
  [root@bsvr]#mkdir /mnt/iso
  [root@bsvr]#mount -o loop,ro
  RHEL4-U2-i386-AS-disc1.iso  /mnt/iso
  [root@bsvr]#cp /mnt/iso/isolinux/initrd.img /tftpboot
  [root@bsvr]#cp /mnt/iso/isolinux/vmlinuz /tftpboot
  [root@bsvr]#mv /tftpboot/initrd.img
  /tftpboot/initrd-rhel4u2-i386.img
  [root@bsvr]#mv /tftpboot/vmlinuz
  /tftpboot/vmlinuz-rhel4u2-i386


  4) 将启动映像文件pxelinux.0复制到TFTP服务器根目录。
  启动映像pxelinux.0能在syslinux安装包里获得。安装好syslinux安装包后,将pxelinux.0复制到TFTP服务器根目录。 

     [root@bsvr]#cp /usr/lib/syslinux/pxelinux.0 /tftpboot/


  5) 编辑pxelinux.0的设置文件,以使pxelinux能正确载入Red Hat Linux安装程式。对于每一个要被安装的Red Hat Linux版本,都需要执行一次该操作。
  启动映像pxelinux.0文件在执行过程中,会读取设置文件以确定他应该载入什么Linux内核文件来运行。所有的设置文件都放在启动服务器的 /tftpboot/pxelinux.cfg/目录下。pxelinux.0根据一定的规则来搜索合适的设置文件名。举例来说,对于前面为待安装机器分配的IP地址192.168.138.30(十六进制表示为C0A88A1E),pxelinux.0会按如下次序搜索设置文件: 
     C0A88A1E > C0A88A1 > … > C0 > C > default
  就是说,如果C0A88A1E 文件存在,他就是pxelinux.0将载入的设置文件。否则,继续往下找。如果C0A88A1文件存在,他就是 pxelinux.0将载入的设置文件。如果前面的以C开头的文件都不存在,那么pxelinux.0将试图从文件default中读取设置。对于一台需 要支持非常多安装机器的安装服务器来说,将设置写在和IP地址对应的文件里非常不灵活。把所有设置都集中在default文件中是个不错的主意,能减轻设置文件维护负担。
  能将能想到的Red Hat Linux版本的设置都写在default文件里,以便同时支持多种Red Hat Linux版本,如下所示(对于具体某个 Red Hat Linux版本,对应的行该怎么写,能参考他安装盘里的设置文件
/isolinux/isolinux.cfg): 
  DEFAULT rhel4u2-i386
  DISPLAY pxelinux.cfg/list
  PROMPT 1
   
  LABEL rhel3u6-i386
  KERNEL vmlinuz-rhel3u6-i386
  APPEND initrd=initrd-rhel3u6-i386.img
   
  LABEL rhel3u6-x86_64
  KERNEL vmlinuz-rhel3u6-x86_64
  APPEND initrd=initrd-rhel3u6-x86_64.img devfs=nomount
  ramdisk_size=9216
   
  LABEL rhel4u2-i386
  KERNEL vmlinuz-rhel4u2-i386
  APPEND initrd=initrd-rhel4u2-i386.img ramdisk_size=8192
  
  这样用户能通过输入某种版本的LABEL(例如,rhel4u2-i386)来选择具体的安装版本。为了能在安装时知道有哪些备选,能让 pxelinux.0提示要户选择之前显示一个列表。这通过在default里指定DISPLAY选项来实现。在上面的样例中,我们将所有备选Red Hat Linux版本列在文件pxelinux.cfg/list中,他的内容会被pxelinux.0显示出来。
  在我们的例子中,/tftpboot/pxelinux.cfg/list文件内容如下:

  
  Choose one of the following Linux distributions for
  your installation:
  Name         
  Distribution   Arch.   Installation media
  -------------------------------------------------------------------------
  rhel3u6-i386  
  RHEL 3 AS U6   i386
  192.168.138.1:/instsvr/i386/rhel3u6
  rhel3u6-x86_64 RHEL 3 AS U6 x86_64  192.168.138.1:/instsvr/x86_64/rhel3u6
  rhel4u2-i386   RHEL
  4 AS U2   i386    192.168.138.1:/instsvr/i386/rhel4u2
  
  6) 启动TFTP服务。 
     [root@bsvr]#service xinetd  restart
  4. 步骤2:设置安装服务器
  安装服务器在安装期间提供对 Linux 安装介质和无人值守安装设置文件的访问。安装介质存储在服务器上的一个目录中,能使用各种网络协议访问他,比如 HTTP,FTP,和NFS。使用NFS协议,Red Hat Linux安装程式能支持多种安装介质目录结构,尤其是支持ISO光盘映像文件。这里我们选择使用NFS协议来访问安装介质。
设置NFS服务器
  1) 准备ISO安装介质。将Red
Hat Linux安装介质的ISO文件都放置到/instsvr目录下。注意不要改动文件名。 
     [root@bsvr]#mkdir /instsvr
  [root@bsvr]#mv RHEL4-U2-i386-AS-disc1.iso
  /instsvr/i386/rhel4u2
  [root@bsvr]#mv RHEL4-U2-i386-AS-disc2.iso
  /instsvr/i386/rhel4u2
  [root@bsvr]#mv RHEL4-U2-i386-AS-disc3.iso
  /instsrv/i386/rhel4u2
  [root@bsvr]#mv RHEL4-U2-i386-AS-disc4.iso
  /instsrv/i386/rhel4u2
  2) 编辑NFS服务器设置文件
/etc/exports,以允许其他机器通过NFS访问目录/instsrv。/etc/exports 文件内容如下: 
     /instsvr   *(ro,no_root_squash,sync)
  其中:
  * 表示所有IP地址都能访问该目录。为了安全的考虑,也能指定具体的IP地址。
  ro 表示远程机器对该目录只有读权限。
  其他选项请参考NFS手册。
  3) 重新启动NFS服务以使新设置生效 
     [root@bsvr]# service nfs restart
  4) 检测目录/instsrv是否已被正确共享 
          [root@bsvr]#showmount -e localhost
          Export list for localhost: /instsrv *
  这样,我们就设置好了一个安装服务器。非常简单吧!
  设置kickstart安装
  自从 5.2 版开始, Red Hat Linux 开始支持一个称为 kickstart 的功能,其主要目的是为了减少安装过程中的人机交互,提高安装效率。使用这种方法,只需事先定义好一个设置文件(通常存放在安装服务器上),并让安装程式知道该设置文件的位置,在安装过程中安装程式就能自己从该文件中读取安装设置,这样就避免了繁琐的人机交互,实现无人值守的自动化安装。
  要使用 kickstart ,你必须:
  1) 创建 kickstart 设置文件。
  2) 部署kickstart设置文件,即将kickstart设置文件放置到安装服务器上,并在安装程式的kernel参数中指定kickstart设置文件的位置。
  创建kickstart设置文件
  kickstart 设置文件是个简单的文本文件,包含一个安装项目列表。每个项目对应于一个安装选择,都用关键字标明。
  有如下几种方法生成kickstart设置文件:
  Red Hat提供了一个样例文件。在Red Hat Linux 文件光盘中 RH-DOCS 目录里的 sample.ks 文件。你能基于该样例来创建你自己的设置kickstart文件。
  每当你安装好一台Red Hat Linux机器,Red Hat Linux 安装程式都会创建一个 kickstart 设置文件,记录你的真实安装设置。如果你希望实现和某系统类似的安装,能基于该系统的kickstart设置文件来生成你自己的kickstart设置 文件。
  Red Hat Linux提供了一个图像化的kickstart设置工具。在所有一个安装好的Red Hat Linux系统上运行该工具,就能非常容易地创建你自己的kickstart设置文件。kickstart设置工具命令为redhat-config- kickstart(RHEL3)或system-config-kickstart(RHEL4)
  阅读kickstart设置文件的手册。用所有一个文本编辑器都能创建你自己的kickstart设置文件。
  这里有一个kickstart设置文件样例: 
  01 # Kickstart file automatically generated by
  anaconda.
  02
  03 install
  04 nfs --server=192.168.138.1
  --dir=/instsvr/i386/rhel4u2
  05 lang en_US.UTF-8
  06 langsupport --default=en_US.UTF-8 en_US.UTF-8
  07 keyboard us
  08 xconfig --card "VMWare" --videoram 16384
  --hsync 31.5-37.9 --vsync 50-70
  --resolution 800x600 --depth 16
  09 network --device eth0 --bootproto DHCP
  10 rootpw -iscrypted
  
  11 firewall --disabled
  12 selinux --enforcing
  13 authconfig --enableshadow --enablemd5
  14 timezone Asia/Shanghai
  15 bootloader --location=mbr
  16 # The following is the partition information you
  requested
  17 # Note that any partitions you deleted are not
  expressed
  18 # here so unless you clear all partitions first,
  this is
  19 # not guaranteed to work
  20 clearpart --all
  21 part / --fstype ext2 --size=8000
  22 part swap --size=1000
  23
  24 %packages
  25 @ admin-tools
  26 @ editors
  27 @ emacs
  28 @ text-internet
  29 @ legacy-network-server
  30 @ dialup
  31 @ ftp-server
  32 @ compat-arch-support
  33 @ legacy-software-development
  34 @ smb-server
  35 @ base-x
  36 @ kde-desktop
  37 @ server-cfg
  38 @ development-tools
  39 kernel-smp
  40 system-config-samba
  41 rsh-server
  42 grub
  43 kernel-devel
  44 kernel-smp-devel
  45 e2fsprogs
  所有以"#"号开头的都是注释。
  文件中的nfs --server=192.168.138.1 --dir=/instsvr/i386/rhel4u2选项告诉安装程式:到服务器192.168.138.1的NFS共享目录 /instsvr/i386/rhel4u2下寻找安装介质。Red Hat Linux安装程式足够聪明,能识别该目录下应该被读取的ISO光盘映像文件名,所有这里你不必指定ISO文件名。
  关于kickstart设置文件支持的所有选项及其相信说明,请查阅参考资料3。
  部署kickstart设置文件
  首先我们需要把kickstart设置文件放在安装服务器上。我们把他放到/instsvr/ks目录下。即该文件的NFS访问路径为: 
     nfs:192.168.138.1:/instsvr/ks/ks.cfg
  其次,我们需要让安装程式知道我们希望他用kickstart方式安装,并告知他能从哪里获得kickstart设置文件。这能通过给内核
添加一个参数"ks=kickstart设置文件路径"来实现。我们只需对启动服务器上的default文件做一些小修改就能做到这点: 
  LABEL   
  rhel4u2-i386
  KERNEL vmlinuz-rhel4u2-i386
  APPEND ks=nfs:192.168.138.1:/instsvr/ks/ks.cfg
  initrd=initrd-rhel4u2-i386.img   
  ramdisk_size=8192
  这样在启动安装程式的时候,参数ks=nfs:192.168.138.1:/instsvr/ks/ks.cfg会被传递给他,告诉他使用这个文件作为kickstart设置文件来进行kickstart安装。
  5. 步骤3:从网络启动机器以完成安装
  前面的设置工作完成后,下面我们就在待安装机器上通过网络以无人值守的方式来安装Red Hat Enterprise Linux AS 4 Update 2。
  1. 启动待安装机器,选择从网卡启动。具体方法因BIOS版本不同而异。图2是从VMWare虚拟机上得到的选择网络启动的屏幕截图。


图2 从BIOS选择网络启动
  2. 网卡中的PXE代码会联系DHCP服务器来获取IP地址及启动映像,然后启动映像被载入并运行,你能看到你自己定义的一个Linux列表如图3,选择你需要安装的系统版本。

图3 网络启动后pxelinux.0的提示界面
  3. 安装程式内核被启动(图4)。

图4 安装程式anaconda开始运行
  4. 安装程式会读取kickstart设置文件开始无人值守安装。安装过程中他会根据kickstart设置文件中指定的安装介质地址,安装指定的软件包(图5)。

图5 安装程式在安装软件包
  5.
直到安装结束(图6),你都不必做所有工作。

图6 安装成功完成
    6. 安装完成后,安装程式会提示你重新启动机器。重新启动机器时切记要在BIOS里改成从硬盘启动。如果仍然从光盘启动机器,又会重复前面的自动安装步骤。
  6. 总结
  本文介绍了一种基于网络(网络启动+网络安装)的无人值守Red Hat Linux安装方法。在需要安装大量机器的情况下,及在需要提供自助安装服务的情况下,该方法能节约大量人力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值