Dhcp+nfs+tftp+ks 完全无人值守安装linux操作系统(最强版)

Dhcp+nfs+tftp+ks 完全无人值守安装 linux 操作系统
作者: leon       2009-3-12       Bluefox.blog.51cto.com
 
声明:所有文字和图片初注明的外全为本人亲手写作,力求思路清晰,真实和通俗易懂,所有文字全部是在本人做试验的同时所记录,然后整理所得。绝非网上抄袭,如需转载,请注明作者和原文地址。
一:过程思路: (建议先跳过文字按照安装步骤边安装边看思路)
1 :客户端网卡在主机启动初始化时通过网卡内置的PXE芯片启动DHCP进程向server获取ip地址,网卡获取到ip地址后,server会提供给client一个下载bootloader的指令,就是dhcp服务器中dhcpd.conf配置文件中filename这个选项。
 
     2 :网卡PXE芯片中已经包含了tftp client程序,获取到ip地址后,网卡会启动tftp服务去向tftp server请求传输这个bootloader文件PXElinux.0 。当Bootloader加载后 我们可以看到主机屏幕上有信息显示,而这个画面就是我们在用光驱装linux的时候看到的第一个画面。画面提示选择图形界面安装还是linux text字符界面安装等信息。如果在server端的tftpboot目录下只有这个文件,那么客户机会一直停留在boot这个地方,因为没有default这个bootloader配置文件告诉机器下一步加载哪个系统内核,default配置文件的作用是告诉主机从哪里去加载操作系统内核,这个时候如果我们按照正常光碟装机时会看到提示:输入回车或者linux text等信息。Bootloader会去调用default配置文件中的操作系统内核文件。
 
      3 default 文件配置好之后,接着就是指定内核文件,这个在default文件最后。就是vmlinuzinitrd.img  *.msg  这几个文件。
 
     4 :到这一步加载成功后,系统就按照我们平常光碟装系统看到的过程一模一样了,选择语言,鼠标,键盘等,但因为有了KS这个自动安装脚步,这些都不要我们手工去指定,全部会自动完成。
 
    5 :到这里为止,也许有人会问,那我们从哪里去加载安装的镜像。且慢,不是有个ks安装脚本吗,就是这个脚本里面我们可以指定安装镜像在哪里。
 
    6 :现在就考虑系统镜像的传输,这里我们选用linux特有的NFS网络文件系统进行镜像的传输。当然也可以用HTTPftp等方式。但为什么我们直接使用tftp呢,因为这个协议在传输大文件的时候效率非常低。
二:具体安装过程:
说明:server IP:192.168.9.20  linux版本:centos 5.2
 
1 :安装tftp 服务器 和dhcp服务器:
            [root@centos CentOS]# rpm -qa |grep tftp
             tftp-server-0.42-3.1.el5.centos
             [root@centos CentOS]# rpm -qa |grep dhcp
             dhcpv6-client- 1.0.10 -4.el5
             dhcp- 3.0.5 -13.el5
目的是确保客户端能够正常获取到ip地址和pxelinux.0文件。
 
2 :修改tftp参数:
           [root@centos CentOS]# vi /etc/xinetd.d/tftp
……………………………………………………………………………………
          service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /tftpboot
        disable                 = yes             / 改成 no /
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
       }
…………………………………………………………………………………………
tftpboot 这个参数主要是指定tftp client 客户端从服务器的哪个目录去加载bootloaderpxelinux.0文件。
 
 3 :启动 tftp
        [root@centos CentOS]# service xinetd restart
               Stopping xinetd:                            [FAILED]
               Starting xinetd:                             [  OK  ]
 
4 :安装 dhcpd 服务并配置启动:
[root@centos ~]# vi /etc/dhcpd.conf
        ddns-update-style interim;
        ignore client-updates;
   boot bootp;
   subnet 192.168.9.0 netmask 255.255.255.0
 {                                            / 分配给 client 端的 ip 地址 /
        option routers                  192.168.9.1;
        option subnet-mask              255.255.255.0;
        option domain-name             "domain.org";
        option domain-name-servers     202.96.128.66;
        option time-offset              -18000;
        range dynamic-bootp 192.168.99.2 192.168.9.100;
        filename "/pxelinux.0";     / 用来指定 tftp 根目录的启动文件实际是在/ tftpboot 目录下。 /
       default-lease-time 21600;
        max-lease-time 43200;
        next-server 192.168.9.20;   / 这一句是告诉 client 从哪里加载 bootloade/r
}
5 创建文件夹并拷贝 pxelinux.0 至/ tftpboot 目录:
     mkdir /tftpboot
     cp /usr/lib/syslinux/pxelinux.0 /tftpboot    /pxelinux.0server 已经有 /
midir /tftpboot/pxelinux.cfg
touch /tftpboot/pxelinux.cfg/default
default 内容可以修改成如下:
…………………………………………………………………………
        default autoinstall        / 缺省引导 autoinstall 这个 label/
        prompt 1
        timeout 30               / 缺省自动加载的时间 30s/
      ………………………………
        label  autoinstall
        kernel vmlinuz                  / 内核文件名字 /
        append ks=nfs:192.168.9.20:/tftpboot/ks
initrd=initrd.img devfs=nomount ramdisk_size=16384 nofb
……………………………………………………………………………………
       append 这个选项是指定从哪个地方去读取这个配置文件,用什么方式加载。这里使用nfs方式获取KS这个文件,当然也可以用FTPHTTP等方式。ks 文件,也就是linux自动加载安装中各项参数, 平常我们用光盘安装的时候需要选择相应的语言,字体,键盘,鼠标,分区,安装的软件包等待信息,KS文件就是让这些选择自动化进行。
 
6 ks  文件内容如下:可以根据自己实际环境进行更改。
…………………………………………………………………………
    lang en_US
    langsupport zh_CN en_US --default=en_US
    keyboard us
    mouse
    timezone Asia/Shanghai
    rootpw password                      / 新装系统的 root 密码 /
    reboot
    #upgrade
    install
    #harddrive --partition=sdb1 --dir=rhas
     nfs --server=192.168.9.20 --dir=/media/cdrom     / 指定镜像的位置 /
    text
    bootloader --location=mbr
    zerombr yes
    clearpart --drives hda �Cinitlabe            / 硬盘名字,根据实际环境更改 /
    part / --fstype ext3 --size 3072 --asprimary --ondisk had   
    part swap --size 256 --asprimary --ondisk hda
    part /tmp --fstype ext2 --size 256 --ondisk hda
    part /home --fstype ext3 --size 1 --grow --ondisk hda
    auth  --useshadow  --enablemd5
    #network --bootproto=dhcp --device=eth0
    network --device=eth0 --bootproto=static --
ip=192.168.9.210  --netmask=255.255.255.0 --
 gateway=192.168.9.244 --nameserver=202.96.128.68 --
hostname=test.com                  / 指定新装系统的主机名和 ip/
    firewall --disabled
    skipx
    %packages �Cresolvedeps        / 指定新装系统所需的包 /
    @ development-tools
    @ admin-tools
    @ system-tools
………………………………………………………………………………
Kickstart 具体内容的研究可以参考redhat官方网站,根据实际环境修改KS的内容以适合自己的要求。
 
7 NFS 服务器的创建:
a :先确认 NFS 文件系统在服务器端已经安装好。
 
[root@centos ~]# rpm -qa |grep nfs
nfs-utils-lib- 1.0.8 -7.2.z2
nfs-utils- 1.0.9 -33.el5
 
b 修改nfs参数文件
 
[root@centos ~]# vi /etc/exports   
………………………………………………………………
/media/cdrom      *(ro,sync)
…………………………………………………………………
  这个的配置很简单:/media/cdrom 将服务器上这个目录共享出去,这个目录中就是安装光盘中的内容。
                   * ro,sync*指定所有的用户(rosync)具有只读权限,并且数据同步写入硬盘。
 
c: 启动nfs服务:
root@centos ~]# service portmap start
[root@centos ~]# service nfs start
 
Starting NFS services:                                     [  OK  ]
Starting NFS quotas:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
Starting NFS mountd:                                       [  OK  ]
 
 [root@centos ~]# exportfs        / 确认nfs共享正常/
/media/cdrom    <world>
……………………………………………………
 
8 client机器手动加电后,这是唯一需要手动的地方,呵呵,连接上网线与server在同一个网段,享受自动安装几十几百台linux主机的过程吧。

你可能感兴趣的:(linux,TFTP,nfs,DHCP,ks)