zoukankan      html  css  js  c++  java
  • 用PXE引导调用kickstart安装CentOS 5.txt

    用PXE引导调用kickstart安装CentOS 5.txt


    http://songxj.blog.51cto.com/620981/139255

    用PXE引导调用kickstart安装CentOS 5

    PXE引导启动优点:
    客户端不需要任何外设支持,无需光驱和U盘,只要网卡支持PXE启动就行。
    合适多种自动应答的安装,如有A,B,C三种配置,只需PXE引导后指定A或B或C配置就行。实现了无外设的全自动无人值守安装。
    安装机器的台数无限制,可以同时进行多台机器的基于不同配置的安装。
     
    工作流程:
    客户端设置从PXE引导后,从DHCP服务器上获取到IP和下一跳TFTP服务器地址,然后从TFTP上加载initr.img 和vmlinuz引导文件引导系统,最后指定从HTTP或者FTP上获取安装文件进行安装。


     
    服务器端配置:

    服务器端要配置DHCP,TFTP,HTTP/FTP三种服务
    DHCP为PXE客户端分发IP地址,TFTP为客户端提供引导文件,HTTP/FTP为客户端提供安装源文件。
    需要安装的包:
    dhcp.i386 tftp-server.i386 syslinux.i386 httpd.i386
     
    配置DHCP服务器:
     
    在/etc目录下新建dhcpd.conf 文件,或者从/usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample CP一份到/etc目录中。
    主要参数:
    range dynamic-bootp 是PXE启动后获得的IP地址。
    next-server 是PXE启动获得IP后下一跳的地址,也就是TFTP服务器地址。
    filename 是启动文件。
    内容如下:
    -------------------------------------内容--------------------------------------------
    ddns-update-style interim;
    ignore client-updates;
    allow booting;
    allow bootp;
    subnet 192.168.6.0 netmask 255.255.255.0 {
    # --- default gateway
    option routers 192.168.6.1;
    option subnet-mask 255.255.255.0;
    # option nis-domain "domain.org";
    # option domain-name "domain.org";
    # option domain-name-servers 192.168.6.254;
    option time-offset -18000; # Eastern Standard Time
    # option ntp-servers 192.168.1.1;
    # option netbios-name-servers 192.168.1.1;
    # --- Selects point-to-point node (default is hybrid). Don't change this unless
    # -- you understand Netbios very well
    # option netbios-node-type 2;
    range dynamic-bootp 192.168.6.50 192.168.6.100;
    default-lease-time 21600;
    max-lease-time 43200;
    next-server 192.168.6.222;
    filename "pxelinux.0";
    # we want the nameserver to appear at a fixed address
    # host ns {
    # next-server marvin.redhat.com;
    # hardware ethernet 12:34:56:78:AB:CD;
    # fixed-address 207.175.42.254;
    # }
    }



    KickStart文件可以通过system-config-kickstart程序(一般需要单独安装)生成。另外附一个本次安装所使用ks.cfg文件:
    install
    url --url ftp://92.168.6.222/pub
    lang en_US.UTF-8
    keyboard us


     
    配置tftp服务器:

    vi /etc/xinetd.d/tftp
    disable = no 将disable项改为NO。
    复制内核启动文件到tftp目录:
    cp /usr/lib/syslinux/pxelinux.0   /tftpboot/
    将CentOS5.2光盘 /media/image/pxeboot/ 目录中的initr.img 和vmlinuz 两个文件复制到/tftpboot/目录中。
    将 CentOS5.2光盘 /media/isolinux/ 下*.msg 文件复制到/tftpboot/ 目录中
    在/tftpboot/目录中新建pxelinux.cfg 目录。将光盘/media/isolinux/isolinux.cfg 文件复制到/tftpboot/pxelinux.cfg目录中并改名为default.cfg
    命令如下:
    #cp /usr/lib/syslinux/pxelinux.0   /tftpboot/
    #cp /media/image/pxeboot/initr.img  /tftpboot/
    #cp /media/image/pxeboot/vmlinuz    /tftpboot/
    #cp /media/isolinux/*.msg       /tftpboot/
    #mkdir /tftpboot/pxelinux.cfg
    #cp /media/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default

    配置无人值守安装:
     
    1编辑boot启动界面,加入自定义安装项。
    [root@PXE /]# vi /tftpboot/boot.msg

    - To install or upgrade in graphical mode, press the key.
    - To install or upgrade in text mode, type: linux text .

    - To Auto Install CentOS5.2 Linux, type:linux autoinstall .
    - To Auto Install CentOS5.2 sn01, type:linux sn01 .
    - To Auto Install CentOS5.2 sn02, type:linux sn02 .
    - To Auto Install CentOS5.2 sn03, type:linux sn03 .

    - Use the function keys listed below for more information.
    [F1-Main] [F2-Options] [F3-General] [F4-Kernel] [F5-Rescue]
    红颜色的是我加入的自定义安装项,autoinstall sn01 sn02 sn03

    2编辑启动配置文件:添加自定义安装项标签和命令。
    [root@PXE /]# vim /tftpboot/pxelinux.cfg/default
    F3 general.msg
    F4 param.msg
    F5 rescue.msg

    label linux
    kernel vmlinuz
    append initrd=initrd.img

    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 -

    label autoinstall
    kernel vmlinuz
    append ks=http://192.168.6.163/ks/ks228.cfg initrd=initrd.img devfs=nomount ramdisk_size=9216 nofb

    label sn01
    kernel vmlinuz
    append ks=http://192.168.6.163/ks/ks01.cfg initrd=initrd.img devfs=nomount ramdisk_size=9216 nofb

    label sn02
    kernel vmlinuz
    append ks=http://192.168.6.163/ks/ks02.cfg initrd=initrd.img devfs=nomount ramdisk_size=9216 nofb

    label sn03
    kernel vmlinuz
    append ks=http://192.168.6.163/ks/ks03.cfg initrd=initrd.img devfs=nomount ramdisk_size=9216 nofb

    红颜色的是我自己加的自定义项,分别指向的是HTTP服务器上的自动应答文件,
    当在BOOT界面中输入自定义安装项时,会自动调用HTTP上的自动应答文件,实现了全自动的无人值守安装。




    客户端配置:

    启动机器设置成PXE启动,然后指定要使用的安装项就可以了。
    最好不要将PXE设置成第一启动,要不然每次启动都装一次系统, 应该是启动时手动指定一下从PXE启动就行了,DELL服务器PXE启动为F12键 。
    首先客户端会向DHCP申请IP。

    DHCP回应,客户端连接到TFTP服务器上读取启动文件,加载/tftpboot/boot.msg 和 /tftpboot/pxelinux.cfg/default 文件,可以看到写进去的自定义安装项。
    比如要使用服务器上KS02.cfg这个自动应答文件,
    只需在BOOT:输入SN03 回车就开始自动安装了。




    +++++++++++++++++++++++++++++++++++++++++

    http://hi.baidu.com/suping/blog/item/b83f75f05c22f6a7a40f5231.html




    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文件而失败。


    +++++++++++++++++++++++++++++++++++++++++++++++++++++

    default

    default linux
    prompt 1
    label linux
      kernel vmlinuz
      append initrd=initrd.img
    label linux-ks
      kernel vmlinuz
      append initrd=initrd.img ks=ftp://192.168.6.222/pub/ks.cfg


    +++++++++++++++++++++++++++++++++++++++++++++++++++++

    dhcpd.conf

    ddns-update-style interim;
    ignore client-updates;
    allow booting;
    allow bootp;

    subnet 192.168.6.0 netmask 255.255.255.0 {

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

    #    option nis-domain        "domain.org";
    #    option domain-name        "domain.org";
    #    option domain-name-servers    192.168.1.1;

        option time-offset        -18000;    # Eastern Standard Time
    #    option ntp-servers        192.168.1.1;
    #    option netbios-name-servers    192.168.1.1;
    # --- Selects point-to-point node (default is hybrid). Don't change this unless
    # -- you understand Netbios very well
    #    option netbios-node-type 2;

        range dynamic-bootp 192.168.6.50 192.168.6.100;
        default-lease-time 21600;
        max-lease-time 43200;

        next-server 192.168.6.222;
        filename "pxelinux.0";
        # we want the nameserver to appear at a fixed address
    #    host ns {
    #        next-server marvin.redhat.com;
    #        hardware ethernet 12:34:56:78:AB:CD;
    #        fixed-address 207.175.42.254;
    #    }
    }


    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    ks.cfg

    # Kickstart file automatically generated by anaconda.

    install
    url --url ftp://192.168.6.222/pub
    lang zh_CN.UTF-8
    keyboard us
    xconfig --startxonboot
    network --device eth0 --onboot no --bootproto dhcp
    rootpw --iscrypted $1$ehQqf8IR$fJUPbDVuLgX8KnWEQ4F.P1
    firewall --enabled --port=22:tcp
    authconfig --enableshadow --enablemd5
    selinux --enforcing
    timezone Asia/Shanghai
    bootloader --location=partition --driveorder=sda --append="rhgb quiet"
    # The following is the partition information you requested
    # Note that any partitions you deleted are not expressed
    # here so unless you clear all partitions first, this is
    # not guaranteed to work
    #clearpart --linux
    part / --fstype ext3 --onpart sda1
    part swap --onpart sda2

    %packages
    @cluster-storage
    @office
    @engineering-and-scientific
    @mysql
    @development-libs
    @editors
    @system-tools
    @gnome-software-development
    @text-internet
    @x-software-development
    @virtualization
    @legacy-network-server
    @dns-server
    @gnome-desktop
    @dialup
    @core
    @authoring-and-publishing
    @base
    @ftp-server
    @network-server
    @games
    @clustering
    @java
    @java-development
    @emacs
    @base-x
    @chinese-support
    @graphics
    @web-server
    @smb-server
    @printing
    @mail-server
    @server-cfg
    @sound-and-video
    @sql-server
    @admin-tools
    @news-server
    @development-tools
    @graphical-internet
    kmod-gnbd-xen
    kmod-gfs-xen
    isns-utils
    mod_auth_mysql
    mysql-devel
    php-mysql
    perl-XML-SAX
    perl-Convert-ASN1
    perl-XML-NamespaceSupport
    emacs
    vim-X11
    arpwatch
    avahi-tools
    rdesktop
    uucp
    festival
    tsclient
    arptables_jf
    wireshark-gnome
    audit
    net-snmp-utils
    sysstat
    gnome-nettool
    tftp
    epic
    lynx
    mesa-libGLU-devel
    Virtualization-en-US
    tftp-server
    kexec-tools
    bridge-utils
    device-mapper-multipath
    ypserv
    openldap-servers
    amanda-server
    vnc-server
    quagga
    dhcpv6
    radvd
    privoxy
    dhcp
    krb5-server
    freeradius
    xorg-x11-server-Xnest
    xorg-x11-server-Xvfb
    libsane-hpaio
    mod_auth_mysql
    php-mysql
    bluez-utils-cups
    mailman
    postfix
    exim-doc
    exim
    squirrelmail
    cyrus-imapd
    system-config-bind
    system-switch-mail-gnome
    system-config-boot
    system-config-kickstart
    system-config-netboot
    system-config-netboot-cmd
    pexpect
    imake
    gftp
    thunderbird
    xchat



     
  • 相关阅读:
    C+= concurrent_queue 线程安全测试
    c++ 枚举 在函数中的应用
    shell脚本积累
    hibernate+spring整合增删改事务错误
    checkbox批量删除功能
    html全选和取消全选JS
    hibernate+pageBean实现分页dao层功能代码
    table样式
    WebStorm 11 Lisence server
    Kb,KB,Kbps,Mb,Mbps等一些列概念
  • 原文地址:https://www.cnblogs.com/ztguang/p/12647926.html
Copyright © 2011-2022 走看看