远程安装操作系统



    还在一次次拿着光盘u盘奔向数据中心,在一堆嘈杂的服务器旁安装服务器的操作系统吗?那真是勤快,相信懒惰的运维人员不会这么做了吧。如果我们的server在外地机房托管怎么办,想重新安装一下系统真是麻烦。其实懒惰的运维人员有着更好的办法,甚至他们都从来没有见过实际的服务器,服务器只不过是一个地址而已,这里就介绍一套偷懒的方法,也许不是最好的办法,但是在我实际使用中我认为是很方便的,配置也简单。



    首先所谓远程安装我们必然需要网络,待安装的机器需要支持pxe启动。



    其次我们需要准备3个server,分别是http(提供安装文件的下载),tftp(告诉待安装的机器去哪里取安装文件及相关配置,这里配置指网络ip等等你能够在服务器上配置的任何信息),dhcp(给待安装的机器分配一个地址,让他能够通信)



    我们对过程应该已经清晰了,总结一下就是待安装的sercer从pxe启动,dhcp-server给它分配一个地址,然后访问tftp-server,获取从什么地方获取安装文件,然后通过http进行下载安装。下边介绍一下我的相关配置,安装的操作系统为centos5.1.



 



dhcp-server



    先强调一下dhcp-server需要和待安装的机器在一个网段内,接收待安装的机器广播的mac地址,才能给它分配地址。



     1   安装: yum install dhcp  (如果还没有使用yum,建议看一下我之前的yum介绍)



     2   配置: /etc/dhcpd.conf,下边是一个例子



    ddns-update-style none;    
    authoritative;    
    ignore unknown-clients ;
    subnet 10.10.1.0 netmask 255.255.255.0 { 




             option routers                             10.10.1.1;
             option subnet-mask                     255.255.255.0;  
             option domain-name-servers          202.106.196.115;
             option ntp-servers                       time.nist.gov;
             default-lease-time 86400;
             max-lease-time 86400;



             host test{
                             hardware ethernet 00:1D:09:08:AB:15;    
                             fixed-address 10.10.1.254;
                             next-server 10.10.1.2;
                             filename "pxelinux.0"; 
             }
    }



简单说明一下这个配置吧,前三行就不解释了,网上有很多解释,说下我们需要在dhcp里写入的客户端的信息。



 



网络方面的设置:



subnet:子网



netmask:掩码



routers:网关



domain-name-servers:dns



ntp-servers:时间服务器



客户端方面的配置:



host test{}中包含里客户端的信息,这里test是个名称,随便起。



hardware ethernet:  待安装操作系统的服务器的mac地址



fixed-address: 分配给其的ip地址



next-server:指定tftp-server的地址



 



 



tftp-server



    1 安装:yum install tftp-server syslinux



    2 配置:tftp-server的ip就是上面配置文件中的10.10.1.2



编辑"/etc/xinetd.d/tftp" # enable the service "disable=no" ,然后可以 service xinetd restart 启动tftp服务,守69端口



cp /usr/share/syslinux/pxelinux.0 /tftpboot/ 这就是上面配置文件中pxelinux.0



use the CentOS iso's /images/pxeboot/{vmlinuz,initrd.img} 用CentOS的盘中的vmlinuz和initrd.img文件放到/tftpboot目录下



在/tftpboot/pxelinux.cfg/目录下放置对应机器IP的文件名,例如:10.10.1.254对应 0A0A01FE
在0A0A01FE文件中进行如下配置:



DEFAULT install    
    PROMPT 1    
    timeout 3
    
    LABEL install
    #CentOS5.2
    KERNEL vmlinuz                
    #指定kernel文件
    APPEND initrd=initrd.img devfs=nomount ramdisk_size=16384 text ksdevice=eth0 ks=http://10.10.1.2/centos/ks.cfg



这里ks=就是下边http-server的地址,ks.cfg是需要在http-server中放置的配置文件



 



http-server



    http不是必需的,可以使用任何提供文件下载的服务,例如ftp,nfs。



    1 安装: yum install httpd



    2 在http的服务路径下放置CentOS盘中的全部文件和我们要用到的配置文件--ks.cfg



       ks.cfg配置了我们需要安装完操作系统的配置信息,以下是一个例子:配置了分区信息及相关服务和ip地址



    lang en_US
    langsupport --default en_US
    keyboard us
    mouse generic3ps/2
    install
    timezone --utc Asia/Shanghai
    rootpw --iscrypted *********
    network --bootproto dhcp --device eth0
    url --url http://10.10.1.2/CentOS/
    clearpart --all --initlabel
    zerombr yes
    bootloader --location=mbr
    part /boot --fstype ext3 --size=200
    part /home --fstype ext3 --size=20000
    part /var --fstype ext3 --size=10000
    part /usr --fstype ext3 --size=8000
    part / --fstype ext3 --size=8000
    part /tmp --fstype ext3 --size=2048
    part /opt --fstype ext3 --size=1 --grow
    part swap --size 2048 --grow --maxsize 4096 --fstype swap
    firewall --disabled
    selinux --disabled
    firstboot --disable
    services --disabled iptables,ip6tables,smartd,yum-updatesd,restorecond,mcstrans,netfs,haldaemon,kudzu,lvm2-monitor,messagebus
    poweroff
    %packages --nobase --resolvedeps        #####要安装的软件包
    ##@core # will install by default
    ##@base # will install by default,--nobase will disable it
    ntp
    httpd
    OpenIPMI-tools
    perl
    wget
    lrzsz
    mailx
    nc
    net-snmp
    psacct
    rsync
    screen
    sendmail
    strace
    stunnel
    sudo
    sysstat
    tcpdump
    tcsh
    telnet
    traceroute
    device-mapper-multipath
    -sysreport
    %post        ##### 安装完系统后进行的操作
    /sbin/chkconfig ntpd .    
    /sbin/chkconfig sendmail .    
    /sbin/chkconfig psacct .
    echo "DEVICE=eth0:1" >> /etc/sysconfig/network-.s/ifcfg-eth0:1
    echo "ONBOOT=yes" >> /etc/sysconfig/network-.s/ifcfg-eth0:1
    echo "NETMASK=255.255.254.0" >> /etc/sysconfig/network-.s/ifcfg-eth0:1
    echo "IPADDR=192.168.3.254" >> /etc/sysconfig/network-.s/ifcfg-eth0:1
    echo "GATEWAY=192.168.2.1" >> /etc/sysconfig/network-.s/ifcfg-eth0:1
    echo "TYPE=Ethernet" >> /etc/sysconfig/network-.s/ifcfg-eth0:1
    echo "Kickstart-installed CentOS 5.1 x86_64 - Instalinux `/bin/date`" > /etc/motd



 



 



至此安装结束了,我这里设置的是安装完后自动关机,需要手动启动一下。回顾一下整个过程,我们还是需要和服务器进行物理接触的地方有2个:需要手动启动服务器选择pxe启动,安装完后需要开启机器,因此可以考虑一下更进一步,远程控制卡,ipmi等等是否可以解决,使我们和物理服务器绝对不接触。下次整理一下ipmi的实现过程再拿出来共享。