micromax 发表于 2018-10-24 07:42:59

Linux 搭建PXE Server及Kickstart无人值守安装

  如何为一批服务器安装操作系统?
  因为测试需要,经常要安装新的操作系统?
  服务器本机没有光驱?
  如何实现无人值守,开机即可自动装机?
  下面我们就探讨一下如何实现以上这些需求
  PxeServer采用Red Hat Enterprise 5.9 来做实验:
  实验拓扑:
  -----PXE Server(vmnet1)-------------Client(vmnet1)------
  实验:搭建PXE Server
  服务器IP为192.168.8.253,可以给192.168.8.0/24安装RHEL5.9
  分别给每台客户端分配主机名,格式如下
  stationx.pengpeng.com192.168.8.x
  安装所需要的软件包存放在/data/iso/rhel5.9
  一、搭建Pxe Server
  1、首先配置服务端IP地址
  # vim /etc/sysconfig/network-scripts/ifcfg-eth0
  重启network
  #service network restart
  查看IP地址
  # ifconfig eth0| grep "inet addr:"
  inet addr:192.168.8.253Bcast:192.168.8.255Mask:255.255.255.0
  2、接下来配置DHCP(给需要安装系统的主机分配IP)
  先来看一下系统有没有安装dhcp,
  # rpm -q dhcp
  package dhcp is not installed
  发现没有安装,为避免软件包依赖关系,直接来配YUM安装吧
  # cd /etc/yum.repos.d/          (进入YUM的配置文件目录)
  # ls
  rhel-debuginfo.repo
  # cp rhel-debuginfo.repo rhel5.9.repo(拷贝下来作为模板)
  # ls
  rhel5.9.reporhel-debuginfo.repo
  # vim rhel5.9.repo   (修改一下YUM配置)
  
  name=Red Hat Enterprise Linux Server
  baseurl=file:///misc/cd/Server            (仓库就选系统盘了)
  enabled=1                                 (启用此YUM)
  gpgcheck=1
  gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
  查看一下YUM配置是否正确
  # yum clean all   (先清理一下缓存)
  # yum list | wc -l(查看一下软件包数量)
  3347
  配置好YUM 下面就好安装dhcp了:
  # yum -y install dhcp
  安装完毕,修改一下配置文件
  # vim /etc/dhcpd.conf
  保留有效配置的最终语句
  ddns-update-style interim;
  next-server 192.168.8.253;                     (TFTP服务器的IP地址)
  filename "pxelinux.0";                           (网卡引导文件名)
  subnet 192.168.8.0 netmask 255.255.255.0 {
  option subnet-mask            255.255.255.0;
  option domain-name            "pengpeng.com";
  option domain-name-servers      192.168.8.253;
  range dynamic-bootp 192.168.8.10 192.168.8.20;
  default-lease-time 21600;
  max-lease-time 43200;
  }
  重启一下dhcp服务
  # service dhcpd restart
  启动 dhcpd:                                             [确定]
  设置dhcp服务开机启动
  # chkconfig dhcpd on
  查看dhcp67端口是否被监听
  # netstat -tulnp | grep 67
  udp      0      0 0.0.0.0:67                  0.0.0.0:*             25545/dhcpd
  3.配置TFTP
  先查看是否安装tftp-server
  # rpm -q tftp-server
  tftp-server-0.49-2
  由于TFTP服务由xinetd服务管理,监听UDP69端口
  所以修改它的配置如下
  # vim /etc/xinetd.d/tftp
  ...
  server_args             = -s /tftpboot(服务根目录)
  disable               = no   (改为no以启用)
  ...
  重启一下xinetd服务
  # service xinetd restart
  停止 xinetd:                                              [确定]
  启动 xinetd:                                              [确定]
  确保该服务开机启动
  # chkconfig xinetd on
  查看端口是否被监听
  # netstat -tulnp | grep :69
  udp      0      0 0.0.0.0:69                  0.0.0.0:*            25782/xinetd
  4、部署linux内核、镜像
  从RHEL关盘中拷贝,复制到TFTP根目录
  # cd /misc/cd/images/pxeboot/
  # cp initrd.img vmlinuz /tftpboot/
  # cp /usr/share/syslinux/pxelinux.0 /tftpboot/ (拷贝网卡引导文件到tftp目录下)
  # mkdir /tftpboot/pxelinux.cfg    创建pxelinux.cfg文件夹
  # cp /misc/cd/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default (拷贝并改名为default)
  5、配置NFS共享
  # mkdir -p /data/iso/rhel5.9       (递归创建一个目录)
  # cp -rf /misc/cd/* /data/iso/rhel5.9/
  # vim /etc/exports (配置NFS)
  /data/iso/rhel5.9       *(ro)
  重启portmap、nfs服务
  # service portmap restart
  停止 portmap:                                             [确定]
  启动 portmap:                                             [确定]
  # service nfs restart
  关闭 NFS mountd:                                          [失败]
  关闭 NFS 守护进程:                                        [失败]
  关闭 NFS quotas:                                          [失败]
  启动 NFS 服务:                                          [确定]
  关掉 NFS 配额:                                          [确定]
  启动 NFS 守护进程:                                        [确定]
  启动 NFS mountd:                                          [确定]

  Stopping RPC>
  正在启动 RPC>  确保两个服务开机启动
  # chkconfig portmap on
  # chkconfig nfs on
  5、配置DNS (可选)
  先检查相关软件bind、bind-chroot、caching-nameserver是否安装
  # rpm -q bind bind-chroot caching-nameserver
  package bind is not installed
  package bind-chroot is not installed
  package caching-nameserver is not installed
  都没安装,利用YUM 进行安装
  # yum -y install bind bind-chroot caching-nameserver
  安装完毕,进入虚拟根环境目录:
  # cd /var/named/chroot/var/named/
  拷贝模板,用来配置控制文件
  # cp -p named.caching-nameserver.conf named.conf
  修改named.conf
  listen-on port 53 { 192.168.8.253; };
  ...
  allow-query   { any; };
  allow-query-cache { any; };
  ...
  match-clients      { any; };
  match-destinations { any; };
  定义正反向解析文件:
  # vim named.rfc1912.zones
  zone "pengpeng.com" IN {
  type master;
  file "pengpeng.com.zone";
  };
  zone "8.168.192.in-addr.arpa" IN {
  type master;
  file "pengpeng.com.arpa";
  };
  检查主控制文件有无语法错误:
  # named-checkconf named.conf
  #
  无反馈,则正常
  进入虚拟配置目录,拷贝模板配置文件,改名为之前定义的正反向解析文件名:
  # cd /var/named/chroot/var/named/
  # cp -p named.local pengpeng.com.zone
  # cp -p named.local pengpeng.com.arpa
  修改两个文件:
  # vim pengpeng.com.zone
  $TTL    86400
  @       IN      SOA   pengpeng.com. root.pengpeng.com.(
  2014090101 ; Serial
  28800      ; Refresh
  14400      ; Retry
  3600000    ; Expire
  86400 )    ; Minimum
  IN      NS      dns1.pengpeng.com.
  dns1       IN      A       192.168.8.253
  $GENERATE10-20 station$ IN A 192.168.8.$
  (分别给每台客户端分配主机名,格式如下 stationx.pengpeng.com192.168.8.x 在此实现)
  # vim pengpeng.com.arpa
  $TTL    86400
  @       IN      SOA   pengpeng.com. root.pengpeng.com.(
  2014090101 ; Serial
  28800      ; Refresh
  14400      ; Retry
  3600000    ; Expire
  86400 )    ; Minimum
  IN      NS      dns1.pengpeng.com.
  253       IN      PTR   dns1.pengpeng.com.
  $GENERATE 10-20 $ IN PTR station$.pengpeng.com
  分别检查配置是否正确
  # named-checkzone pengpeng.com pengpeng.com.zone
  zone pengpeng.com/IN: loaded serial 2014090101
  OK
  # named-checkzone pengpeng.com pengpeng.com.arpa
  zone pengpeng.com/IN: loaded serial 2014090101
  OK
  已通过
  重启服务,确保服务开机启动,并验证DNS解析情况
  # service named restart
  停止 named:                                             [确定]
  启动 named:                                             [确定]
  # chkconfig named on
  # host station10.pengpeng.com 192.168.8.253
  Using domain server:
  Name: 192.168.8.253
  Address: 192.168.8.253#53
  Aliases:
  station10.pengpeng.com has address 192.168.8.10
  # host 192.168.8.10 192.168.8.253
  Using domain server:
  Name: 192.168.8.253
  Address: 192.168.8.253#53
  Aliases:
  10.8.168.192.in-addr.arpa domain name pointer station10.pengpeng.com.8.168.192.in-addr.arpa.
  #
  以上配置完成,就可以在同一网络内,开启一台客户机;选择从网卡启动:
  客户机首先会获取到由PXE服务器DHCP服务分配的IP地址;
  其次获取到由PXE服务器TFTP提供的启动文件;
  最后再获取到PXE服务器nfs提供的操作系统镜像。
  接着就是根正常装机一样的步骤,一步一步往下装。
  但是这样装机,只不过是系统启动文件和镜像来源和我们通常的不同,也是需要一步一步往下安装。
  怎样才能不需要这种交互式的操作,客户机只要开机,就可以全自动的安装,一直到我们需要输入用户名、密码
  进入系统呢?
  二、Kickstart无人值守安装
  首先需要安装一个软件    system-config-kickstart
  检查系统有没有安装此软件
  # rpm -q system-config-kickstart
  package system-config-kickstart is not installed
  利用YUM进行安装:
  yum -y install system-config-kickstart
  安装完毕
  要实现客户机无人值守安装,服务端就需要提供给客户机相关的配置文件,
  配置文件放在服务端哪里? 为了更好的利用linux的网络服务,我们将安装由apache提供的web服务站点上
  安装httpd
  # yum -y install httpd
  创建无人值守配置文件ks.cfg
  启动system-config-kickstart
  # system-config-kickstart 回车即启动
  配置页面如下列图片:
  选择在文本模式中执行安装,速度将会非常快:
















  拷贝此文件到web默认存放位置
  # cp /root/ks.cfg /var/www/html/
  启动web服务
  # service httpd restart
  停止 httpd:                                             [失败]
  启动 httpd:                                             [确定]
  确保web服务开机启动
  # chkconfig httpd on
  为了防止自动安装时需输入序列号,而暂停安装,需要在配置文件中加一条语句:
  # vim /var/www/html/ks.cfg
  key --skip            (自动跳过输入序列号)
  最后还要在引导文件配置中加一条,引导文件改为ks.cfg
  # vim /tftpboot/pxelinux.cfg/default
  ...
  label linux
  kernel vmlinuz
  append ks=http://192.168.8.253/ks.cfg initrd=initrd.img
  ...
  下面开始验证无人值守安装:
  将客户机bios调整为从网卡启动,下边就不用管了,喝喝茶,玩玩游戏,等着输入用户名密码就可以了。。。
  可以在客户机这边看一下,安装速度非常快



  最后系统安装好了:输入用户名root及之前定义好的密码,进入系统:
  打开伪字符终端,查看机器名和IP地址的对应关系,即满足之前的实验要求
  如图
  本人初学linux,菜鸟一个,日后还会发表一些自己做的实验及学习心得, 望各位前辈多多指教,
  谢谢!

页: [1]
查看完整版本: Linux 搭建PXE Server及Kickstart无人值守安装