zoukankan      html  css  js  c++  java
  • 【转】CentOS下配置PXE+Kickstart无人值守安装(Howto install CentOS through PXE+KickStart)

    CentOS下配置PXE+Kickstart无人值守安装(Howto install CentOS through PXE+KickStart)

    环境:CentOS 5.1 最小安装。

    理论

    来源:http://coolerfeng.blog.51cto.com/133059/48801

    什么是PXE
    PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动。协议分为client和server两端,PXE client在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行。

    PXE协议的成功运行需要解决以下两个问题:
    1. 既然是通过网络传输,那么计算机在启动时,它的IP地址由谁来配置;
    2. 通过什么协议下载Linux内核和根文件系统

    对于第一个问题,可以通过DHCP Server解决,由DHCP server来给PXE client分配一个IP地址,DHCP Server是用来给DHCP Client动态分配IP地址的协议,不过由于这里是给PXE Client分配IP地址,所以在配置DHCP Server时,需要增加相应的PXE特有配置。
    至于第二个问题,在PXE client所在的ROM中,已经存在了TFTP Client。PXE Client使用TFTP Client,通过TFTP协议到TFTP Server上下载所需的文件。

    这样,PXE协议运行的条件就具备了,下面我们就来看看PXE协议的工作过程。

    工作过程
    200711031194023885260.gif

    在上图中,PXE client是需要安装Linux的计算机,TFTP Server和DHCP Server运行在另外一台Linux Server上。Bootstrap文件、配置文件、Linux内核以及Linux根文件系统都放置在Linux Server上TFTP服务器的根目录下。
    PXE client在工作过程中,需要三个二进制文件:bootstrap、Linux 内核和Linux根文件系统。Bootstrap文件是可执行程序,它向用户提供简单的控制界面,并根据用户的选择,下载合适的Linux内核以及Linux根文件系统。

    实践

    要实现一个PXE+Kickstart无人值守安装,从上面的理论解说中,我们知道,至少需要DHCP与TFTP服务来完成引导。要进行网络安装的 话,我们则需要NFS或者HTTP或者FTP服务。这里,我们选择NFS。TFTP要工作的话,我们又要安装xinetd。加上要生成bootstrap 文件要安装的syslinux。我们要安装的软件包一共如下:

    • dhcp
    • tftp-server
    • xinetd
    • syslinux
    • nfs-utils

    DCHP

    安装dhcp:

    yum install -y dhcp

    安装完成之后,把dhcp.conf.sample文件拷贝到/etc下面

    cp /usr/share/doc/dhcp-3.0.5/dhcp.conf-sample /etc/dhcp.conf

    编辑/etc/dhcp.conf。

    找到:

    ignore client-updates;

    在后面添加上:

    next-server 192.168.0.1;
    filename "pxelinux.0";

    找到:

    option nis-domain "domain.org";
    option domain-name "domain.org";
    option domain-name-server 192.168.1.1;

    将其注释

    配置你的网卡,将其IP改为192.168.0.1
    编辑/etc/sysconfig/network-scripts/ifcfg-eth0

    找到:

    BOOTPROTO=dhcp

    改为:

    BOOTPROTO=static

    并在其下加上两行:

    IPADDR=192.168.0.1
    NETMASK=255.255.255.0

    重启网络并启动dhcp

    /etc/init.d/network restart
    /etc/ini.d/dhcpd start

    tftp-server
    安装tftp-server服务(tftp-server与xinetd的关系,请自己找资料):

    yum install -y xinetd tftp-server

    配置tftp-server
    编辑/etc/xinetd.d/tftp

    找到:

    disable = yes

    将其改为

    disable = no

    启动tftp-server

    /etc/init.d/xinetd start

    pxelinux.0
    pxelinux.0,我们在配置dhcp的时候,就已经用到了,其实,就是上面提到的bootstrap。在CentOS中,它是由syslinux来 生成的。我们只要安装了syslinux,就会生成一个pxelinux.0,我们只需要将其拷贝到/tftpboot下面即可。

    yum install -y syslinux
    cp /usr/lib/syslinux/pxelinux.0 /tftpboot/

    启动文件
    找到CentOS 5.1的DVD安装盘或者ISO镜像(我这里就直接用镜像了),将其mount到/mnt下面。

    mount -o loop /root/CentOS-5.1-i386-bin-DVD.iso /mnt

    拷贝内核文件vmlinuz以及根文件系统initrd.img到/tftpboot

    cp /mnt/images/pxeboot/vmlinuz /mnt/images/pxeboot/initrd.img /tftpboot

    创建/tftpboot/pxelinux.cfg目录

    mkdir /tftpboot/pxelinux.cfg

    创建/tftpboot/pxelinux.cfg/default文件

    touch /tftpboot/pxelinux.cfg/default

    文件内容如下:

    default linux
    prompt 0
    label linux
    kernel vmlinuz
    append ks=nfs:192.168.0.1:/netinstall/ks.cfg initrd=initrd.img

    配置nfs网络安装
    拷贝整个安装光盘到/netinstall

    mkdir /netinstall
    cp -r /mnt/* /netinstall

    安装nfs服务,并将/netinstall发布出去

    yum install -y nfs-utils
    /etc/init.d/portmap start
    /etc/init.d/nfs start
    exportfs *:/netinstall

    关于ks.cfg文件

    这个文件要配置起来很是麻烦,因为参数实在太多,有兴趣的,可以看看CentOS的官方文档:http://www.centos.org/docs/5/html/Installation_Guide-en-US/s1-kickstart2-options.html

    没兴趣的,可以跟我一直做一个最简单的ks.cfg。

    拷贝本机安装时的ks文件到/netinstall并重命名为ks.cfg

    cp /root/anaconda-ks.cfg /netinstall/ks.cfg
    chmod a+r /netinstall/ks.cfg

    然后,做一点小小的修改,
    找到第一行的install,将其改为text
    第二行的cdrom,改为

    nfs --server=192.168.0.1 --dir=/netinstall/

    找到,

    clearpart --linux --drives=sda

    改为:

    clearpart --all --drives=sda --initlabel

    并在其上添加一行:

    autopart

    OK,到这里,所有的配置就可以结束了。最后,大家把防火墙关闭,就可以直接测试了。
    当然,这里有一个前提就是,CentOS 5.1要能认得你的网卡,不然,安装会提示找不ks文件而失败。

  • 相关阅读:
    禁止微信内置浏览器调整字体大小
    常用EXE文件反编译工具【转】
    C++发送HTTP请求---亲测可行(转)
    Cesium简介 [转]
    WebGL可视化地球和地图引擎:Cesium.js
    HTML5 canvas图形库 RGraph【转】
    [GitHub开源]基于HTML5实现的轻量级Google Earth三维地图引擎,带你畅游世界 【转】
    OpenGL实现多层绘制(Layered Rendering) [转]
    深度剖析OpenGL ES中的多线程和多窗口渲染技术
    OOP几大原则【转】
  • 原文地址:https://www.cnblogs.com/zhyg6516/p/2350200.html
Copyright © 2011-2022 走看看