LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2234|回复: 1

Linux┊PXE+Kickstart全自动无人值守安装Linux

[复制链接]
发表于 2009-4-9 19:45:23 | 显示全部楼层 |阅读模式
欢迎转载,请注明出处:http://www.mike.org.cn
  原文地址:http://www.mike.org.cn/blog/index.php?load=read&id=638
  Linux/Unix技术交流 qq群:19558533(欢迎加入讨论,本群侧重服务器方向)

一、原理和概念:

  什么是PXE

  严格来说,PXE 并不是一种安装方式,而是一种引导的方式。进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE (Pre-boot Execution Environment)协议使计算机可以通过网络启动。协议分为 client 和 server 端,PXE client 在网卡的 ROM 中,当计算机引导时,BIOS 把 PXE client 调入内存执行,由 PXE client 将放置在远端的文件通过网络下载到本地运行。运行 PXE 协议需要设置 DHCP 服务器和 TFTP 服务器。DHCP 服务器用来给 PXE client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。此外,在 PXE client 的 ROM 中,已经存在了 TFTP Client。PXE Client 通过 TFTP 协议到 TFTP Server 上下载所需的文件。

  什么是KickStart

  KickStart是一种无人职守安装方式。KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg的文件;在其后的安装过程中(不只局限于生成KickStart安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找KickStart生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。这样,如果KickStart文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装。

  二、安装的前提条件

  PXE+KickStart安装的条件,执行PXE+KickStart安装需要的设备为:

  DHCP 服务器;
  TFTP 服务器;
  KickStart所生成的ks.cfg配置文件
  一台存放系统安装文件的服务器,如 NFS、HTTP 或 FTP 服务器。
  带有一个 PXE 支持网卡的将安装的主机;

  三、安装的步骤

  (注:我这里是以Linux As4为蓝本写的文档,也许你的OS和软件和我的不同,如果你按这个文档来配置的时候请注意相应的变化)

  在开始安装之前提一下:

  A、软件包的获取:
  
  1、本地方式

  一般情况下一些常用的安装包都可以在你的安装光盘中找到。

  2、网络方式

  如果你无法在安装光盘中找到适合的安装包,你可以通过yum(什么是yum可参考本BLOG上另一篇网志:详细yum)这种方式去安装或者去http://rpmfind.net/找找看

  废话了这么多,开始进入安装的具体步骤吧,呵呵!

  B、 安装NFS

  所需的软件包:

  nfs-utils-lib-1.0.6-8.z1
  nfs-utils-1.0.6-87.EL4
  portmap-4.0-63

  这里简单说下这三个包作用:nsf*包的作用实现NFS服务, 由于NFS是一个RPC SERVRE所以portmap也是必不可少的一个包。如果还不知道什么是NFS,建议你先去了解下相关知识,在继续读下去才是个不错的主意。推荐去鸟哥的网站看看关于NFS的文章,不错的站。鸟哥LINUX私房菜:http://linux.vbrid.org/。很推 ... 558533),呵呵!

  安装

  yum -y install nfs*
  rpm -ivh nfs*
  rpm -ivh portmap*

  配置nfs

  mount /dev/cdrom /mnt   #这一步就是将要用到的安装文件共享,方法很多我是挂载CDROM
  echo "/tftpboot *(ro,sync)" > /etc/exports  
  echo "/mnt *(ro,sync)" > /etc/exports
  echo "/home *(ro,sync)" > /etc/exports  #此三步设置共享的目录。由于偷懒是直接mount的光驱,所以多共享一个目录用于存放ks.cfg文件
  exportfs –a   #使配置生效
  /etc/init.d/portmap start &&/etc/init.d/nfs start    #重启服务
  showmount –e localhost  #看查共享的目录,看到输出就OK了
  
  Export list for localhost:
  /mnt      *
  /tftpboot *
  /home   *

  C、安装tftp-server

  rpm -ivh tftp-server-0.39-3.el4.rpm

  修改配置文件

  /etc/xinetd.d/tftp
  
  # default: off
  # description: The tftp server serves files using the trivial file transfer \
  # protocol.  The tftp protocol is often used to boot diskless \
  # workstations, download configuration files to network-aware printers, \
  # and to start the installation process for some operating systems.

  service tftp
  {
  socket_type  = dgram
  protocol  = udp
  wait   = yes
  user   = root
  server   = /usr/sbin/in.tftpd
  server_args  = -s /tftpboot
  disable   = no
  per_source  = 11
  cps   = 100 2
  flags   = IPv4
  }

  service xinetd restart  #重启xinetd进程

  注:此步的目的是为了启用tftp服务。随带提一TTFTP协议和FTP协议并不相同。因为PXE client的ROM中,已经存在了 TFTP Client。所以这里的TFTP SERVER并不能用其它的FTP SERVER取代。

  D、安装dhcp服务

  rpm -ivh dhcp-3.0.1-62.EL4.rpm
  cp /usr/share/doc/dhcp-3.0.1/dhcpd.conf.sample /etc/dhcpd.conf  复制配置模板文件到指定的目录中,并重命名

  vi /etc/dhcpd.conf #配置dhcp
                                                                        
  ddns-update-style interim;
  ignore client-updates;

  subnet 10.185.2.0 netmask 255.255.255.0 {

  # --- default gateway
        option routers                  10.185.2.200;
        option subnet-mask              255.255.255.0;

        option nis-domain               "domain.org";
        option domain-name              "domain.org";
        option domain-name-servers      10.185.2.200;
        filename "/pxelinux.0";    #pxelinux loader文件位置
   next-server 192.168.1.14;   #pxe server位置(我没有写这行,也是可以的)
        option time-offset              -18000; # Eastern Standard Time
        range dynamic-bootp 10.185.2.10 10.185.2.100;
        default-lease-time 21600;
        max-lease-time 43200;
  }

  service dhcp start #启动dhcp服务

  E、 安装kicksttart

  rpm -ivh system-config-kickstart-2.5.16.1-1.rpm
  system-config-kickstart  #在gnome环境下启动kickstart,这一个图形化的工具,必要要在有XWINDOWS下的环境运行。图形下的配置就略了,很容易的。

  创建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配置文件。

  下面是一个我配置好的,给大家参考下:

  #Generated by Kickstart Configurator
  #platform=x86, AMD64, or Intel EM64T

  #System  language
  lang en_SG
  #Language modules to install
  langsupport en_SG
  #System keyboard
  keyboard us
  #System mouse
  mouse
  #Sytem timezone
  timezone America/New_York
  #Root password
  rootpw --iscrypted $1$e2/g2haR$omVFHuAItBrreeXz1AxTH.
  #Reboot after installation
  reboot
  #Install OS instead of upgrade
  install
  #Use NFS installation Media
  nfs --server=10.185.2.200  --dir=/mnt
  #System bootloader configuration
  bootloader --location=mbr
  #Clear the Master Boot Record
  zerombr yes
  #Partition clearing information
  clearpart --all --initlabel
  #Disk partitioning information
  part / --fstype ext3 --size 3000
  part swap --size 512
  #System authorization infomation
  auth  --useshadow  --enablemd5
  #Network information
  network --bootproto=dhcp --device=eth0
  #Firewall configuration
  firewall --disabled
  #Do not configure XWindows
  skipx
  #Package install information
  %packages --resolvedeps
  @ server-cfg
  @ development-tools
  @ admin-tools
  @ system-tools

  生成文件ks.cfg,保存到/home下

  四、配置支持PXE启动

  mount /dev/cdrom /mnt #挂载光盘到/mnt
  cd /tftpboot/             #tfp-server指定的根目录位置(若该文件夹已经存在则不用建立,通常重启tftp服务后会自动建立)
  cp /usr/lib/syslinux/pxelinux.0 /tftpboot  #pxelinux.0是pxe方式的boot loader,如果你发现没有这个目录,不要紧张。找到syslinux这个软件包就OK了(缺省安装时好像没有装这个软件包)
  cp /mnt/images/pxeboot/vmlinuz /tftpboot/              #把Linux第一张安装光盘上/image/pxeboot/initrd.img和vmlinux复制到/tftpboot/中
  cp /mnt/images/pxeboot/initrd.img /tftpboot/
  mkdir pxelinux.cfg    #在tftpboot中新建一个pxelinux.cfg目录
  cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default #复制第一张安装光盘上isolinux/isolinux.cfg拷贝到 /tftpboot/pxelinux.cfg/目录下,并同时更改文件名称为default

  详细说说这步,由于启动镜像pxelinux.0文件在执行过程中,会读取配置文件以确定它应该载入什么Linux内核文件来运行。所有的配置文件都放在启动服务器的 /tftpboot/pxelinux.cfg/目录下。pxelinux.0根据一定的规则来搜索合适的配置文件名。C0A88A1E > C0A88A1 > … > C0 > C > default
就是说,如果C0A88A1E文件存在,它就是pxelinux.0将载入的配置文件。否则,继续往下找。如果C0A88A1文件存在,它就是 pxelinux.0将载入的配置文件。如果前面的以C开头的文件都不存在,那么pxelinux.0将试图从文件default中读取配置。对于一台需要支持很多安装机器的安装服务器来说,将配置写在与IP地址对应的文件里很不灵活。把所有配置都集中在default文件中是个不错的主意,可以减轻配置文件维护负担。 这里也是为什么要更名为default和建立pxelinux.cfg的一个重要原因

  五、 修改/tftpboot/pxelinux.cfg/default文件

  default linux
  prompt 1
  timeout 600
  display boot.msg
  F1 boot.msg
  F2 options.msg
  F3 general.msg
  F4 param.msg
  F5 rescue.msg
  label linux
  kernel vmlinuz
  append ks=nfs:10.185.2.200:/home/ks.cfg initrd=initrd.img  #指定读取ks.cfg的方法。这样在启动安装程序的时候,参数ks=nfs:10.185.2.200:/home/ks.cfg会被传递给它,告诉它使用这个文件作为kickstart配置文件来进行kickstart安装。
  label text
  kernel vmlinuz
  append initrd=initrd.img text
  label ks
  kernel vmlinuz
  append ks initrd=initrd.img
  label local
  localboot 1
  label memtest86
  kernel memtest
  append -

  六、测试

  启动服务器,一般是按F12选择进入PXE网络启动。这时就会自动获取IP并进入Boot: 界面。按enter就可以自动安装系统了。
 楼主| 发表于 2009-4-9 19:54:15 | 显示全部楼层
怎么显示不完?。。。。。。。。。。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表