zoukankan      html  css  js  c++  java
  • 搭建UEFI PXE 基于linux相关资料

    https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/chap-anaconda-boot-options.html#sect-boot-options-installer

    https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/chap-anaconda-boot-options.html#sect-boot-options-installer

    查看apache的版本信息,如果是通过yum,或者是rpm安装的,可以使用rpm -qa |gerp httpd 来查看;

    Grub相关资料:

    http://forum.ubuntu.org.cn/viewtopic.php?f=139&t=229387

    http://forum.ubuntu.org.cn/viewtopic.php?f=139&t=229387

    http://forum.ubuntu.org.cn/viewtopic.php?t=290405

    http://www.xiyang-liu.com/2014/11/16/auto-install-linux-by-pxelinux/

    配置PXE环境自动安装Linux

    前言

    一般情况下,新服务器上架。都需要系统管理员手工安装系统,配置IP地址,然后远程登陆服务器进行软件安装、配置之类的管理。这种方式,在服务器数量还不多的情况下,是正常的。试想,如果一次上架上百台服务器,再依次安装操作系统,将是一种灾难。很难在规定的时间内将服务器顺利上架并配置完毕。

    这就需要在大型机房中,以DHCP+DNS模式管理服务器IP地址和主机名。服务器上架前,以其MAC地址为依据,在DHCP中配置主机保留并分配主机名。DHCP结合TFTP提供的PXE服务,提供PXE引导Linux内核和启动镜像,通过自动应答文件来实现操作系统的自动安装和配置。就Linux来说,安装后启动saltstack客户端salt-minion服务即可实现新服务器的自动受控。其余的安装服务便可以通过saltstack来完成。自始至终,将不用通过ssh形式登陆新服务器,且可以实现软件包的自动化安装和配置管理。

    理论描述

    自动启动安装过程

    服务器从第一次加电到连接到salt-master主机,受其集中管理,将经过以下一系列过程:

    1. 系统管理员在DHCP服务器中将其MAC地址绑定到特定IP地址和主机名,并指定PXE启动文件。
    2. 服务器加电启动,通过PXE获取IP地址并加载PXEClient,以TFTP的形式获取Linux内核和初始化启动映像。
    3. 服务器加载自动应答脚本,通过网络获取软件包,来自动安装Linux系统。安装并开机启动salt-minion服务。
    4. 服务器安装完成并重新启动后,自动获取IP地址,连接salt-master请求受控。
    5. salt-master控制新服务器后,以管理员配置模板自动安装软件包配置服务,管理新主机。

    以上过程我们需要架设的服务有DNS、DHCP、TFTP、HTTP/FTP服务。其中,DHCP和DNS提供地址和主机名分配,TFTP提供PXE启动映像,HTTP/FTP作为Linux软件仓库提供安装过程中需要的软件包。

    DHCP Option 60

    DHCP Option 60 Vendor class identifier为厂商类标识符。这个选项作用于客户端可选地识别客户端厂商类型和配置。这个信息是N个8位编码,由DHCP服务端解析。厂商可能会为客户端选择定义特殊的厂商类标识符信息,以便表达特殊的配置或者其他关于客户端的信息。比如:这个标识符可能编码了客户端的硬件配置。客户端发送过来的服务器不能解析的类规范信息必须被忽略(尽管可能会有报告)。服务器响应厂商规范信息到客户端应该仅仅通过Option 43来完成。

    此信息需要在DHCP服务器上定义,DHCP服务器通过其判断客户端是不是PXEClient。并通过其Arch代码来判断其平台,以此为依据提供不同的PXE引导程序给客户端。

    PXE和gPXE

    PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统。在启动过程中,BIOS把PXEClient调入内存中执行,然后由PXEClient向DHCP服务器请求分配IP地址,再用TFTP或MTFTP协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。

    gPXE是一个开源的网络启动器。它提供了一个直接的PXE替代方案,并且提供DNS、HTTP、iSCSI等多种额外功能。另外,由于gPXE存在商业收购风险。其开发者又启动了一个名为iPXE的开源项目。作为gPXE的一个分支。iPXE支持HTTP、ISCSI、FCoE、Wi-Fi、InfiniBand等多种启动方式。且支持通过脚本来控制启动过程。

    BIOS和UEFI

    BIOS(Basic Input/Output System的缩写、中文:基本输入输出系统),在IBM PC兼容机上,是一种业界标准的固件接口。BIOS这个字眼是在1975第一次由CP/M操作系统中出现。BIOS是个人电脑启动时加载的第一个软件。

    BIOS用于计算机开机时执行系统各部分的的自检,并启动引导程序或装载在内存的操作系统。此外,BIOS还向操作系统提供一些系统参数。系统硬件的变化是由BIOS隐藏,程序使用BIOS服务而不是直接访问硬件。现代操作系统会忽略BIOS提供的抽象层并直接访问硬件组件。

    UEFI,全称“统一的可扩展固件接口”(Unified Extensible Firmware Interface),是一种详细描述类型接口的标准。这种接口用于操作系统自动从预启动操作环境,加载到一种操作系统上。

    可扩展固件接口(Extensible Firmware Interface,EFI)是 Intel 为 PC 固件的体系结构、接口和服务提出的建议标准。其主要目的是为了提供一组在 OS 加载之前(启动前)在所有平台上一致的、正确指定的启动服务,被看作是有近20多年历史的 BIOS 的继任者。

    另外,由于UEFI不支持32位,所以UEFI部分只讨论x64平台。由于没有实验环境,不支持安腾架构。

    操作步骤

    预安装配置环境

    以下操作以CentOS为平台,配置过程中涉及到的HTTP/FTP,DNS,DHCP等基础服务,这里不再讨论他们的安装配置方法。只要能满足如下功能即可:

    • HTTP/FTP服务:提供软件仓库,包括内核、启动映像、cfg等相关文件的下载
    • DNS服务:提供xiyang-liu.com、salt-master.xiyang-liu.com等内部主机名的解析
    • DHCP服务器:为客户及分配IP地址。

    在开始接下来的配置之前,确保客户机能够正常使用以上三类服务,且DHCP服务器可以正常使用HTTP/FTP服务。如果在所有的配置中都使用IP地址,而不是主机名,则可以忽略DNS服务要求。

    DHCP初始配置文件内容如下:

    authoritative;
    ddns-update-style none;
    ignore client-updates;
    one-lease-per-client true;
    shared-network main {
    subnet 10.17.25.0 netmask 255.255.255.0 {
      option routers 10.17.25.254;
      option subnet-mask 255.255.255.0;
      option domain-name "xiyang-liu.com";
      pool {
        range 10.17.25.200 10.17.25.210;
        host nagios-test {
          hardware ethernet 00:0d:56:66:82:c3;
          fixed-address 10.17.25.200;
        }
      }
    }
    }
    shared-network xxzx {
    subnet 10.17.15.0 netmask 255.255.255.0 {
      option routers 10.17.15.254;
      option subnet-mask 255.255.255.0;
      option domain-name "xiyang-liu.com";
      option domain-name-servers 10.17.26.88, 8.8.8.8;
      default-lease-time 86400;
      max-lease-time 172800;
      pool {
        range 10.17.15.1 10.17.15.20;
      }
    }
    }

    配置TFTP服务

    这里选择在DHCP服务器上配置和安装TFTP服务,以提供PXE引导程序的下载。

    通过以下命令安装TFTP服务

    yum install tftp-server xinetd -y

    修改TFTP服务配置如下所示:

    [root@dhcp ~]# sed '/^#/d' /etc/xinetd.d/tftp
    service tftp
    {
        socket_type = dgram
        protocol  = udp
        wait = yes
        user = root
        server= /usr/sbin/in.tftpd
        server_args = -v -s /var/lib/tftpboot  #启用调试输出
        disable   = no  #启用服务
        per_source = 11
        cps  = 100 2
        flags = IPv4
    }

    启动TFTP服务,并修改其防火墙设置,使其有如下所示的输出:

    [root@dhcp ~]# chkconfig xinetd on
    [root@dhcp ~]# grep 69 /etc/sysconfig/iptables
    -A INPUT -m state --state NEW -m udp -p udp --dport 69 -j ACCEPT

    验证TFTP服务

    安装完成TFTP服务器后,先对其正常工作与否进行验证,否则后面除了问题不好排错。

    运行TFTP服务后,在/var/lib/tftpboot/目录中创建测试文件

    cp /root/install.log /var/lib/tftpboot/

    使用Windows 7/8的TFTP命令,来下载服务器端的install.log文件,以确保TFTP服务可用。如出现未找到TFTP命令,请在Windows控制面板—程序—启用或禁用Windows功能中,勾选TFTP客户端,点击确定。来为Windows 7安装TFTP客户端。

    禁用Windows防火墙,或者在控制面板—高级安全Windows防火墙界面—入站规则中,启用专用网络和公用网络的“普通文件传输协议应用”。或者直接添加C:windowssystem32tftp.exe的例外。以允许TFTP文件传入。

    以上设置完成后,执行如下命令并有如下所示结果,则说明TFTP服务可正常使用。

    C:Usersxiyang>tftp 10.17.25.17 get /install.log install.log
    传输成功: 1  9090 字节,9090 字节/秒

    安装PXELINUX

    这里我们使用syslinux的一个组件pxelinux.0作为BIOS平台的引导程序。同时syslinux还提供gpxelinux.0来实现gPXE功能。通过它可以使用快速的HTTP协议,而非较慢的TFTP协议来下载Linux镜像,以加速安装。不过有些硬件对gPXE支持不好。例如,IBM X3650 M4。

    yum install syslinux syslinux-tftpboot -y

    以下是安装完成的syslinux版本信息

    [root@dhcp~]# rpm -q syslinux syslinux-tftpboot
    syslinux-4.04-3.el6.i686
    syslinux-tftpboot-4.04-3.el6.noarch

    安装完成后,可以看到/var/lib/tftpboot目录下(部分用到)的文件列表如下所示:

    [root@dhcp ~]# ll /var/lib/tftpboot/
    total 1432
    -rw-r--r--. 1 root root 89376 Oct 16 02:09 gpxelinux.0
    -rw-r--r--. 1 root root 26268 Oct 16 02:09 memdisk
    -rw-r--r--. 1 root root 26759 Oct 16 02:09 pxelinux.0
    -rw-r--r--. 1 root root 163728 Oct 16 02:09 vesamenu.c32

    以上文件中,pxelinux.0即为PXE启动引导程序,gpxelinux为gPXE引导程序。memdisk用来引导ISO文件,vasamenu.c32用来在绘制PXE菜单。

    配置PXELINUX

    pxelinux.0默认使用pxelinux.cfg文件夹作为其配置文件夹。其配置文件的格式与isolinux相同。pxelinux通过以下步骤查找其配置文件:

    首先,若其PXE协议栈提供了固件的UUID,则查找其UUID为文件名的配置文件。如果BIOS没有提供可用的UUID,则使用ffffffff-ffff-ffff-ffff-ffffffffffff。UUID为标准的小写十六进制字母格式。例如,b8945908-d6a6-41a9-611d-74a6ab80b83d。

    其次,寻找其短划线分割的小写十六进制MAC地址为文件名的配置文件。例如,如果其MAC地址为88:99:AA:BB:CC:DD,则寻找文件名为01-88-99-aa-bb-cc-dd的配置文件。

    再次,查找以大写十六进制格式的IP地址为文件名的配置文件。例如192.0.2.91的大写十六进制IP为C000025B。可用gethostip命令来获取一个IP地址的不同格式,如下所示:

    [root@dhcp ~]# gethostip -x 10.17.25.209
    0A0111D1

    最后,如果配置文件依旧没找到,则会删除IP地址的一个末位十六进制数字,再次重试。最终会查找一个文件名为小写default的配置文件。

    例如,如果启动文件路径为/var/lib/tftpboot/pxelinux.0(/var/lib/tftpboot/为TFTP根目录),UUID为b8945908-d6a6-41a9-611d-74a6ab80b83d,MAC地址为88:99:AA:BB:CC:DD,IP地址为192.0.2.91,则pxelinux会依次尝试如下文件:

    /pxelinux.cfg/b8945908-d6a6-41a9-611d-74a6ab80b83d
    /pxelinux.cfg/01-88-99-aa-bb-cc-dd
    /pxelinux.cfg/C000025B
    /pxelinux.cfg/C000025
    /pxelinux.cfg/C00002
    /pxelinux.cfg/C0000
    /pxelinux.cfg/C000
    /pxelinux.cfg/C00
    /pxelinux.cfg/C0
    /pxelinux.cfg/C
    /pxelinux.cfg/default

    接下来仅讨论其默认配置文件default。default配置文件的格式与isolinux一样。可以照搬isolinux的配置文件

    创建pxelinux.0使用的配置文件夹pxelinux.cfg,并下载其依赖的其他配置文件。

    mkdir -p /var/lib/tftpboot/pxelinux.cfg/{5,6,7}/{i386,x86_64}
    rmdir /var/lib/tftpboot/pxelinux.cfg/7/i386
    cd /var/lib/tftpboot/pxelinux.cfg
    #下载Linux引导镜像
    #CentOS 7只支持64位系统,无i386版本。
    wget http://fakeftp.xiyang-liu.com/linux/centos/5/os/i386/images/pxeboot/{vmlinuz,initrd.img} -P 5/i386/
    wget http://fakeftp.xiyang-liu.com/linux/centos/5/os/x86_64/images/pxeboot/{vmlinuz,initrd.img} -P 5/x86_64/
    wget http://fakeftp.xiyang-liu.com/linux/centos/6/os/i386/images/pxeboot/{vmlinuz,initrd.img} -P 6/i386/
    wget http://fakeftp.xiyang-liu.com/linux/centos/6/os/x86_64/images/pxeboot/{vmlinuz,initrd.img} -P 6/x86_64/
    wget http://fakeftp.xiyang-liu.com/linux/centos/7/os/x86_64/images/pxeboot/{vmlinuz,initrd.img} -P 7/x86_64/
    #下载公用的菜单依赖文件
    wget http://fakeftp.xiyang-liu.com/linux/centos/6/os/x86_64/isolinux/{splash.jpg,memtest,boot.msg}

    下载并重命名pxelinux配置文件

    wget http://fakeftp.xiyang-liu.com/linux/centos/6/os/x86_64/isolinux/isolinux.cfg -P /var/lib/tftpboot/pxelinux.cfg
    mv /var/lib/tftpboot/pxelinux.cfg/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

    编辑default文件,使其如下所示:

    default pxelinux.cfg/vesamenu.c32
    #prompt 1
    timeout 60
    display pxelinux.cfg/boot.msg
    menu background pxelinux.cfg/splash.jpg
    menu title Welcome to CentOS 6!
    menu color border 0 #ffffffff #00000000
    menu color sel 7 #ffffffff #ff000000
    menu color title 0 #ffffffff #00000000
    menu color tabmsg 0 #ffffffff #00000000
    menu color unsel 0 #ffffffff #00000000
    menu color hotsel 0 #ff000000 #ffffffff
    menu color hotkey 7 #ffffffff #ff000000
    menu color scrollbar 0 #ffffffff #00000000
    #以上为菜单配置部分,仅需修改相关文件的路径即可
    #所有相对路径都是相对于pxelinux.0的位置
    #通过PXELinux以KS形式自动安装64位CentOS 6
    label auto64centos6 #标签
        menu label *PXE:CentOS 6 x86_64 100GB+LVM New AutoInstall #菜单描述
        menu default #设置为默认项目
        kernel pxelinux.cfg/6/x86_64/vmlinuz #指定内核文件
        append ks=http://10.17.26.68/linux/ks/CentOS-6-x86_64-100GLVM-New-AutoInstall-ks.cfg ksdevice=link initrd=pxelinux.cfg/6/x86_64/initrd.img
    #指定初始化镜像路径和ks.cfg文件
    #通过GPXELinux以KS形式自动安装64位CentOS 6
    label gpxe-auto64centos6
        menu label GPXE:CentOS 6 x86_64 100GB+LVM New AutoInstall
        kernel http://10.17.26.68/linux/centos/6/os/x86_64/images/pxeboot/vmlinuz
        append ks=http://10.17.26.68/linux/ks/CentOS-6-x86_64-100GLVM-New-AutoInstall-ks.cfg  ksdevice=link initrd=http://10.17.26.68/linux/centos/6/os/x86_64/images/pxeboot/initrd.img
    #通过GPXE加载一个Windows PE镜像文件
    label gpxe-lmtpe
        menu label GPXE:Load a LMT PE image
        linux memdisk
        initrd http://10.17.26.68/windows/tools/LMT.ISO
        append raw iso
    #通过对上面标签版本号、ks文件、位数等内容的修改 
    #可生成CentOS 6 32bitCentOS 5 32bitCentOS 5 64bitCentOS 7 64bit的配置
    #为防止DNS解析出现问题,这里直接使用HTTP/FTP服务器的IP地址。
    #从本地磁盘启动
    label local
        menu label Boot from local drive
        localboot 0xffff
    #内存测试
    label memtest86
        menu label Memory test
        kernel pxelinux.cfg/memtest
        append -

    安装BOOTX64.EFI

    UEFI模式下,无法用pxelinux进行引导,因其不包含相关硬件抽象层的驱动。以CentOS考虑, UEFI引导程序可以从其x86_64的安装镜像里获取。

    cd /var/lib/tftpboot/
    wget http://10.17.26.68/linux/centos/6/os/x86_64/EFI/BOOT/{BOOTX64.efi,BOOTX64.conf,splash.xpm.gz}

    配置BOOTX64.EFI

    bootx64.efi使用默认配置文件efidefault,其格式与grub配置文件格式类似。修改其配置文件如下:

    [root@dhcp ~]# cd /var/lib/tftpboot/
    [root@dhcp ~]# mv BOOTX64.conf efidefault
    [root@dhcp ~]# cat efidefault
    #debug --graphics
    default=0
    splashimage=(nd)/splash.xpm.gz
    timeout 10
    hiddenmenu
    title Auto Install 64bit CentOS System
        root (nd)
        kernel pxelinux.cfg/6/x86_64/vmlinuz ks=http://10.17.26.68/linux/ks/CentOS-6-x86_64-UEFI-100GLVM-New-AutoInstall-ks.cfg
        initrd pxelinux.cfg/6/x86_64/initrd.img
    title rescue
        root (nd)
        kernel pxelinux.cfg/6/x86_64/vmlinuz rescue askmethod
        initrd pxelinux.cfg/6/x86_64/initrd.img

    至此,所有需要准备的引导程序和及其配置文件都已经准备完毕,此时/var/lib/tftpboot目录的结构如下所示:

    [root@dhcp ~]# tree /var/lib/tftpboot/
    /var/lib/tftpboot/
    ├── BOOTX64.efi
    ├── efidefault
    ├── gpxelinux.0
    ├── memdisk
    ├── pxelinux.0
    ├── pxelinux.cfg
      ├── 5
        ├── i386
          ├── initrd.img
          └── vmlinuz
        └── x86_64
          ├── initrd.img
          └── vmlinuz
      ├── 6
        ├── i386
          ├── initrd.img
          └── vmlinuz
        └── x86_64
          ├── initrd.img
          └── vmlinuz
      ├── 7
        └── x86_64
          ├── initrd.img
          └── vmlinuz
      ├── boot.msg
      ├── default
      ├── memtest
      ├── splash.jpg
      └── vesamenu.c32
    └── splash.xpm.gz
    
    9 directories, 21 files

    配置DHCP启用PXE

    准备好PXE所需要的各个文件后,只需要让DHCP服务器支持PXE,就可以在客户端获取到IP地址后,进入PXE引导过程。DHCP服务器通过bootp选项来启用PXE支持,且通过Option 60扩展来根据客户端的架构自动选择使用BIOS引导程序还是UEFI引导程序。

    首先,全局启用bootp功能,并设置Option 60相关配置。此处配置为红帽官方配置,具体什么意思,我也不知道。

    option space PXE;
    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 arch code 93 = unsigned integer 16; # RFC4578
    allow booting;
    allow bootp;

    在地址池中,创建一个pxeclients的类,匹配Option 60选项中包含PXEClient字符的主机。为他们指定下一步请求pxelinux.0程序的TFTP服务器的地址和文件名。此处根据不同的架构通过if语句设置不同的启动引导程序。也可以在host预留中,直接通过filename选项指定引导程序

    class "pxeclients" {
      match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
      next-server 10.17.25.17;
    
      if option arch = 00:07 {
        filename "/BOOTX64.efi";
      } else {
        filename "/pxelinux.0";
      }
    }
    host gpxelinux {
      option host-name "gpxelinux.xiyang-liu.com";
      hardware ethernet 00:50:56:24:0B:30;
      fixed-address 10.17.15.8;
      filename "/gpxelinux.0"
    }

    详细安装配置方法,可参考REDHAT官方文档: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/ap-install-server.html https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/chap-installation-server-setup.html

    整合完成后的DHCP配置文件如下所示:

    #PXE定义命名空间
    option space PXE;
    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 arch code 93 = unsigned integer 16; # RFC4578
    #启用PXE支持
    allow booting;
    allow bootp;
    authoritative;
    ddns-update-style none;
    ignore client-updates;
    one-lease-per-client true;
    shared-network main {
    subnet 10.17.25.0 netmask 255.255.255.0 {
      option routers 10.17.25.254;
      option subnet-mask 255.255.255.0;
      option domain-name "xiyang-liu.com";
      #在此网络关闭PXE支持
      deny bootp;
      pool {
        range 10.17.25.200 10.17.25.210;
        host nagios-test {
        hardware ethernet 00:0d:56:66:82:c3;
        fixed-address 10.17.25.200;
        }
      }
    }
    }
    shared-network xxzx {
    subnet 10.17.15.0 netmask 255.255.255.0 {
      option routers 10.17.15.254;
      option subnet-mask 255.255.255.0;
      option domain-name "xiyang-liu.com";
      option domain-name-servers 10.17.26.88, 8.8.8.8;
      default-lease-time 86400;
      max-lease-time 172800;
      pool {
        range 10.17.15.1 10.17.15.20;
        class "pxeclients" {
        match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
        next-server 10.17.25.17;
        if option arch = 00:07 {
          filename "/BOOTX64.efi";
        } else {
          filename "/pxelinux.0";
        }
        }
      host gpxelinux {
        option host-name "gpxelinux.xiyang-liu.com";
        hardware ethernet 00:50:56:24:0B:30;
        fixed-address 10.17.15.8;
        filename "/gpxelinux.0"
        }
      }
    }
    }

    编写KS.CFG文件

    至此,BIOS和UEFI两种架构的PXE引导都已经配置完成。如不需要自动安装操作系统,则可以直接删除配置文件中的ks部分,即可测试引导。

    然而,正如前言中所述,我们最终目的是实现完全自动化的安装。以此为前提,CentOS自动安装用的ks.cfg文件必不可少。我们设定CentOS的安装策略如下:

    • 网络全新安装CentOS 6最新版本;
    • 英语安装,美国键盘,上海时区
    • LVM分区,500M boot分区、推荐大小的swap, 100G根分区;
    • UEFI安装时,设置200MB引导分区;
    • 启用防火墙,SElinux,本地账户授权;
    • 启用本地软件仓库,重置root密码为3e3ae9d0a;
    • 安装并启用saltstack客户端;

    则设置内容如下的ks启动应答文件即可:

    #platform=CentOS 6 X86_64
    # 启用防火墙,并允许SSH服务
    firewall --enabled --ssh
    # 安装,而非更新
    install
    # 通过网络安装
    url --url="http://10.17.26.68/linux/centos/6/os/x86_64/"
    # 设置root密码为centos
    rootpw --iscrypted $1$SCDJzPts$c4VuKhKKUcXfg9aAt0tgu1
    # 使用本地授权模式
    auth --useshadow --passalgo=sha512
    # 使用文本安装
    text
    # 使用美国键盘
    keyboard us
    # 语言设置为英语
    lang en_US
    # 启用SElinux
    selinux --enforcing
    # 跳过X window 配置
    skipx
    #安装过程日志级别为info
    logging --level=info
    # 安装完成后重启
    reboot
    # 设置时区为亚洲上海,使用UTC时间
    timezone --isUtc Asia/Shanghai
    # 启用DHCP网络
    network --onboot yes --bootproto dhcp --noipv6
    #------------BIOS模式------------
    # 安装bootloader到MBR
    bootloader --location=mbr
    # 清除MBR
    zerombr
    #------------BIOS模式------------
    #------------UEFI模式------------
    #安装bootloader到efi启动分区
    bootloader --location=partition
    #------------UEFI模式------------
    # 清楚所有分区,并初始化
    clearpart --all --initlabel
    #------------BIOS模式------------
    # 分区,并启用LVM
    part /boot --fstype=ext4 --size=500
    part pv.008002 --grow --size=1
    volgroup VolGroup --pesize=4096 pv.008002
    logvol / --fstype=ext4 --name=lv_root --vgname=VolGroup --size=102400
    logvol swap --fstype=swap --name=lv_swap --vgname=VolGroup --recommended
    #------------BIOS模式------------
    #------------UEFI模式------------
    part /boot/efi --fstype=efi --size=200 --asprimary
    part /boot --fstype=ext4 --size=500
    part pv.008002 --grow --size=1
    volgroup VolGroup --pesize=4096 pv.008002
    logvol / --fstype=ext4 --name=lv_root --vgname=VolGroup --size=102400
    logvol swap --name=lv_swap --vgname=VolGroup --recommended
    #------------UEFI模式------------
    #启用网络epel软件库
    repo --name="CentOS-epel" --baseurl=http://10.17.26.68/linux/fedora/epel/6/x86_64
    #要安装的软件,忽略更新
    %packages --ignoremissing
    @core
    @base
    salt-minion
    #安装后执行的脚本,记录日志到/root/ks-post.log
    %post --log=/root/ks-post.log
    mkdir /etc/yum.repos.d/bak/
    mv -f /etc/yum.repos.d/CentOS-*.repo /etc/yum.repos.d/bak/
    wget http://10.17.26.68/linux/fakeftp.xiyang-liu.com-centos.repo -P /etc/yum.repos.d/
    wget http://10.17.26.68/linux/fedora/epel/RPM-GPG-KEY-EPEL-6 -P /etc/pki/rpm-gpg/
    wget http://10.17.26.68/linux/fakeftp.xiyang-liu.com-epel.release.6.repo -P /etc/yum.repos.d/
    sed -i -e's/^#master: salt/master: salt-master.xiyang-liu.com/g' /etc/salt/minion
    chkconfig salt-minion on
    rootpasswd=`echo centos2014 | md5sum | md5sum | cut -c 8-16`
    echo $rootpasswd | passwd --stdin root
    echo $rootpasswd >/root/.rootpasswd
    %end

    上述配置文件中,根据不同架构的服务器,选择BIOS模式或者UEFI模式配置,创建不同的配置文件。另外,不同的发行版的配置文件也不尽相同。例如,CentOS 5 的文件系统为ext3,CentOS 7 则默认使用JFS。最好根据各自发行版的system-config-kickstart工具创建配置文件后,再稍作修改。

    以下是我创建的配置文件列表:

    • CentOS-5-i386-100GLVM-New-AutoInstall-ks.cfg
    • CentOS-5-x86_64-100GLVM-New-AutoInstall-ks.cfg
    • CentOS-6-i386-100GLVM-New-AutoInstall-ks.cfg
    • CentOS-6-i386-ASKPART-New-NetInstall-ks.cfg
    • CentOS-6-x86_64-100GLVM-New-AutoInstall-ks.cfg
    • CentOS-6-x86_64-ASKPART-New-NetInstall-ks.cfg
    • CentOS-6-x86_64-UEFI-100GLVM-New-AutoInstall-ks.cfg
    • CentOS-7-x86_64-100GLVM-New-AutoInstall-ks.cfg
    • CentOS-7-x86_64-UEFI-100GLVM-New-AutoInstall-ks.cfg

    详细的ks.cfg选项,参见RedHat官方文档 https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/ch-kickstart2.html https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/chap-kickstart-installations.html

    测试PXE启动

    推荐使用VMware Workstation来测试上述配置的正确性。对于UEFI部分配置,用记事本打开WMware的主机配置文件,在文件末尾添加如下参数即可启用UEFI支持

    firmware = "efi"

    结语

    本文档讲述了如何使用PXE自动安装CentOS。包含PXE和gPXE两种规范实现的引导程序的配置方法。对BIOS和UEFI两种引导模式,分别进行了独立详尽的分析。

    参考链接

    http://www.syslinux.org/wiki/index.php/PXELINUX https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/ap-install-server.html https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/chap-installation-server-setup.html https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/ch-kickstart2.html https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/chap-kickstart-installations.html

  • 相关阅读:
    FC网络学习笔记02 -网络配置方法 分类: 网络基础 2013-10-10 09:43 765人阅读 评论(0) 收藏
    FC网络学习笔记01 分类: 网络基础 2013-10-10 09:42 865人阅读 评论(0) 收藏
    CPLD/FPGA厂商概述 . 分类: 硬件开发_FPGA 2013-10-09 16:54 539人阅读 评论(0) 收藏
    @property用法总结
    python的目录
    su
    os.path.join路径拼接
    python的类变量和对象变量[转]
    python的mutable变量与immutable变量
    dataframe操作
  • 原文地址:https://www.cnblogs.com/boowii/p/6475921.html
Copyright © 2011-2022 走看看