Chinaunix首页 | 论坛 | 博客
  • 博客访问: 739025
  • 博文数量: 124
  • 博客积分: 3156
  • 博客等级: 中校
  • 技术积分: 1584
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-02 10:29
文章分类

全部博文(124)

文章存档

2012年(3)

2011年(2)

2010年(61)

2009年(34)

2008年(24)

我的朋友

分类: LINUX

2010-07-07 13:26:05

利用TFTP、DHCP和PXE自架Linux网络(自动)安装服务器
——自动获取IP网络(自动)安装Red Hat Enterprise Linux 4.0的服务器架设实例
   实现自动获取IP网络安装linux是这样的:客启端PXE网卡启动——>通过Bootp协议——>DHCP服务器——>获得IP ——>从TFTP上下载 pxelinux.0以及系统内核文件vmlinuz、initrd.img——>启动系统——>(到指定地点去下载ks.cfg文件—— >根据ks.cfg文件去NFS/HTTP/FTP服务器自动)下载RPM包及安装系统——>完成安装。
注意:以下的所有试验都是在WinXP SP2下的VMWare5.5.1中完全安装的RHEL AS4中实现的。实现基本步骤如下:      
         步骤1:
1)把ISO文件或系统安装光盘挂载到一个目录
[root@rhel]#mkdir /media/rhel4
[root@rhel]#mount -o loop,ro /root/RHEL4.iso /media/rhel4    #挂载ISO文件
[root@rhel]#mount -o loop,ro /dev/cdrom /media/rhel4        #挂载光盘
    2)8. 如果在开机时自动加载,可在/etc/fstab加一行:
[root@rhel]#vi /etc/fstab
/root/RHEL4.iso   /media/rhel4 nfs intr
3)挂载ISO后,把isolinux目录下的initrd.img、vmlinuz都复制到/tftpboot/linux-install/下:
[root@rhel]#cp /media/rhel4/isolinux/initrd.img /tftpboot/linux-install/
[root@rhel]#cp /media/rhel4/isolinux/vmlinuz /tftpboot/linux-install/
4)如果没有RHEL AS 4的ISO文件,可以建立一个共享目录(如:rhel)把RHEL的第一张光盘所有内容复制到这个目录下,然后把第二、三、四张光盘的RPMS目录下的 rpm包都复制到/rhel/RedHat/RPMS目录下,并开启NFS服务。把上面的的挂载目录/media/rhel4/改为建立的rhel目录即 可,其他操作同上。
   步骤2:
1)安装DHCP服务器包(使用RPM包安装DHCP)。
[root@rhel]#cd /rhel/RedHat/RPMS/
[root@rhel]#rpm –ivh dhcp-3.0p12-6.14.i386.rpm
[root@rhel]#rpm –ivh dhcp-devel-3.0p12-6.14.i386.rpm
[root@rhel]#rpm –ivh dhclient -3.0p12-6.14.i386.rpm
2) 配置DHCP服务器,。/etc/dhcpd.conf通常包括三部分:parameters、declarations 、option。
DHCP配置文件中的parameters(参数):
ddns-update-style 配置DHCP-DNS 互动更新模式。
default-lease-time 指定确省租赁时间的长度,单位是秒。
max-lease-time 指定最大租赁时间长度,单位是秒。
hardware 指定网卡接口类型和MAC地址。
server-name 通知DHCP客户服务器名称。
get-lease-hostnames flag 检查客户端使用的IP地址。
fixed-address ip 分配给客户端一个固定的地址。
authritative 拒绝不正确的IP地址的要求。
    DHCP配置文件中的declarations (声明):
shared-network 用来告知是否一些子网络分享相同网络。
subnet 描述一个IP地址是否属于该子网。
range 起始IP 终止IP 提供动态分配IP 的范围。
host 主机名称 参考特别的主机。
group 为一组参数提供声明。
allow unknown-clients ﹔deny unknown-client 是否动态分配IP给未知的使用者。
allow bootp;deny bootp 是否响应激活查询。
allow booting﹔deny booting 是否响应使用者查询。
filename 开始启动文件的名称,应用于无盘工作站。
next-server 设置服务器从引导文件中装如主机名,应用于无盘工作站。
    DHCP配置文件中的option(选项):
subnet-mask 为客户端设定子网掩码。
domain-name 为客户端指明DNS名字。
domain-name-servers 为客户端指明DNS服务器IP地址。
host-name 为客户端指定主机名称。
routers 为客户端设定默认网关。
broadcast-address 为客户端设定广播地址。
ntp-server 为客户端设定网络时间服务器IP地址。
time-offset 为客户端设定和格林威治时间的偏移时间,单位是秒。
注意:如果客户端使用的是视窗操作系统,不要选择“host-name”选项,即不要为其指定主机名称。
    运行DHCP服务器还需要一个名为 dhcpd.leases 的文件,保持所有已经分发出去的 IP 地址。在Redhat Linux 发行版本中,该文件位于 /var/lib/dhcp/ 目录中。如果您通过 RPM 安装 ISC DHCP,那么该目录应该已经存在。dhcpd.leases的文件格式为:
Leases address {statement}
    典型的文件内容如下:
lease 192.168.1.255 { #DHCP服务器分配的IP地址#
starts 1 2005/05/02 03:02:26; # lease 开始租约时间#
ends 1 2005/05/02 09:02:26; # lease 结束租约时间#
binding state active;
next binding state free;
hardware ethernet 00:00:e8:a0:25:86; #客户机网卡MAC地址#
uid "\001\000\000\350\240%\206"; #用来验证客户机的UID标示#
client-hostname "cjh1"; #客户机名称#
}
    注意lease 开始租约时间和lease 结束租约时间是格林威治标准时间(GMT),不是本地时间。
    第一次运行DHCP服务器时dhcpd.leases是一个空文件,也不用手工建立。如果不是通过 RPM 安装 ISC DHCP,或者 dhcpd 已经安装,那么您应该试着确定 dhcpd 将其 lease 文件写到何处,并确保该文件存在。也可以手工建立一个空文件:
[root@rhel]#touch /var/lib/dhcp/dhcpd.leases
编辑DHCP服务器配置文件,这里是一个示例:
[root@rhel]#vi /etc/dhcp.conf
#全局配置
                  ddns-update-style interim;
                   ignore client-updates;
                   allow booting;
                   allow bootp;
#子网的(多)作用域
                   subnet 192.168.1.0 netmask 255.255.255.0 {
                        option routers                  192.168.1.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;
                        filename "/linux-install/pxelinux.0";
                        range dynamic-bootp 192.168.1.50 192.168.1.100;
                       default-lease-time 21600;
                            max-lease-time 43200;
                            subnet 192.168.1.0 netmask 255.255.255.0 {
                        option routers                  192.168.1.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;
                        filename "/linux-install/pxelinux.0";
                        range dynamic-bootp 192.168.1.150 192.168.1.200;
                       default-lease-time 21600;
                  max-lease-time 43200;
                    }
3) 配置DHCP的客户端,设置为自动启动联网,则要修改你的网络配置文件,添加,或用ntsysv配置也可以:
[root@rhel]#vi /etc/sysconfig/network
NETWORKING=yes
让引导的时候启动联网,或者使用:
[root@rhel]#echo “NETWORKING=yes”>/etc/sysconfig/network
然后再修改你的网卡配置文件:
[root@rhel]#vi /etc/sysconfig/network-scriptes/ifcfg-eth0
应该包含这几行
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
4) 修改/etc/sysconfig/dhcpd文件,配置DHCP服务器在哪个设备上启动,这样对于带有两张网卡的DHCP服务器更安全:
[root@rhel]#vi /etc/sysconfig/dhcpd
DHCPDARGS=eth0
5)开机自动在所有正常的运行级别中启动DHCP服务
[root@rhel]#chkconfig --list dhcpd
[root@rhel]#chkconfig dhcpd on
    6)启动DHCP服务:启动服务器的目的是帮助在待安装机器上启动Red Hat Linux 安装程序。启动服务器上需要搭建一个DHCP 服务器和一个TFTP 服务器。前者是为了给待安装机器分配IP地址,后者则是提供了一个让待安装机器下载启动镜像的途径。
启动方法一:
[root@rhel]#service dhcpd restart
启动方法二:
[root@rhel]#/etc/rc.d/ini.d/dhcpd restart
7)配置DHCP中继代理,编辑/etc/sysconfig/dhcrelay
[root@rhel]#vi /etc/sysconfig/dhcrelay
INTERFACES=”eth0”
DHCPSERVERS=”192.168.1.65”
启动DHCP中继代理:
[root@rhel]#service dhcrelay restart
    步骤3:
这个TFTP服务可以不用配置,因为大都是相同的!可以默认。
1)编辑TFTP 服务器的配置文件,配置文件如下:
[root@rhel]#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           = no
}
2)启动TFTP服务的话要启动xinetd这个守护服务:
[root@rhel]#server xinetd.d restart
  步骤4:
1) 将/usr/lib/syslinux/下的启动镜像文件pxelinux.0拷到TFTP服务器/tftpboot/linux-install/下:
[root@rhel]#cp /usr/lib/syslinux/pxelinux.0 /tftpboot/linux-install/
2) 将/isolinux/下的isolinux.cfg复制到TFTP服务/tftpboot/linux-install/pxelinux.cfg/下:
[root@rhel]#cp /media/rhel4/isolinux/isolinux.cfg /tftpboot/linux-install/pxelinux.cfg/default
3) 将/isolinux/下的所有名为.msg文件拷到TFTP服务器/tftpboot/linux-install/下:[root@rhel]#cp /media/rhel4/isolinux/*.msg /tftpboot/linux-install/
4)配置客户端显示的目录,修改/tftpboot/linux-install/boot.msg,如下:
[root@rhel]#vi /tftpboot/linux-install/boot.msg
-  To install or upgrade in graphical mode, press linux.
-  To install or upgrade in text mode, press test.
-  To install or upgrade in rescue mode, press rescue.
-  To install or upgrade in auto_ks install mode, press ks.
-  Use the function keys listed below for more information.
[F1-Main] [F2-Options] [F3-General] [F4-Kernel] [F5-Rescue]^O07
5)/tftpboot/linux-install/pxelinux.cfg/default此文件可以默认不用配置,但也可以修改:
[root@rhel]#vi /tftpboot/linux-install/pxelinux.cfg/default
default linux
prompt 1
timeout 600
display boot.msg
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
F7 snake.msg
label linux
kernel vmlinuz
append initrd=initrd.img ramdisk_size=8192
label test
kernel vmlinuz
append initrd=initrd.img text ramdisk_size=8192
label rescue
kernel vmlinuz
append rescue initrd=initrd.img ramdisk_size=8192
label ks
kernel vmlinuz
append ks=nfs:192.168.1.65:/tftpboot/linux-install/huang-ks.cfg initrd=initrd.img ramdisk_size=8192
label expert
kernel vmlinuz
append expert initrd=initrd.img ramdisk_size=8192
label lowres
kernel vmlinuz
append initrd=initrd.img lowres ramdisk_size=8192
    步骤5:
配置NFS服务器
1) 编辑NFS服务器配置文件 /etc/exports,以允许其它机器通过NFS访问目录/madia/rhel4,文件内容如下:
[root@rhel]#vi /etc/exports
/media/rhel4/         *(ro,sync)
/tftpboot/linux-install/  *(ro,sync)
2) 重新启动NFS服务以使新配置生效
[root@rhel]# service nfs restart
    步骤6:
复制/root下的anaconda-ks.cfg文件到/tftpboot/linux-install/并改名为huang-ks.cfg
[root@rhel]#cp /root/anaconda-ks.cfg /tftpboot/linux-install/huang-ks.cfg
2)配置自动安装参数,修改/tftpboot/linux-install/huang-ks.cfg,如下:
[root@rhel]#vi /tftpboot/linux-install/huang-ks.cfg
#Generated by Kickstart Configurator
#platform=x86, AMD64, 或 Intel EM64T
#System  language
lang zh_CN
#Language modules to install
langsupport en_US --default=zh_CN
#System keyboard
keyboard us
#System mouse
mouse
#Sytem timezone
clearpart --all
part /boot --fstype ext3 --seze=128
part / --fstype ext3 --size=4000
part /home --fstype ext3 --size=256
part swap --seze=512
timezone Asia/Shanghai
#Root password
rootpw --iscrypted $1$cNKZCOfZ$1g1p9Q4x0x6x2sHHZYinK1
#Reboot after installation
reboot
#Install OS instead of upgrade
install
#Use NFS installation Media
nfs --server=10.0.2.202  --dir=/media/rhel4
#System bootloader configuration
bootloader --location=mbr
#Clear the Master Boot Record
zerombr yes
#Partition clearing information
clearpart --linux --initlabel
#System authorization infomation
auth  --useshadow  --enablemd5
#Network information
network --bootproto=dhcp --device=eth0
#Firewall configuration
firewall --disabled
#Do not configure XWindows
skipx
#Package install information
%packages --resolvedeps
@everything
kernel
grub
kernel-devel
e2fsprogs
    步骤7:
让DHCP服务器在chroot jail(chroot“监牢”)中运行:
dhcpd运行在jail需要几个库文件,可以使用ldd(library Dependency Display缩写)命令,ldd作用是显示一个可执行程序必须使用的共享库。
[root@rhel]#ldd dhcpd
[root@rhel]#ln –s libc.so.6 => /lib/tls/libc.so.6 (0x42000000)
[root@rhel]#ln –s /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
    在“监牢”中创建lib目录,并将库文件复制到其中。手工完成比较麻烦的,此时可以用jail软件包来帮助简化chroot“监牢”建立的过程:
1)Jail软件的编译和安装
Jail官方网站是:

,最新版本:1.9a。
[root@rhel]#Wget

#下载jail软件
[root@rhel]#tar xzvf jail.tar.gz  #解压缩到当前目录
[root@rhel]#vi jail/READEM;vi jail/doc/INSTALL  #查看安装文档说明
[root@rhel]# cd jail/src/Makefiles; #把安装路径/tmp/jail为/usr/local
[root@rhel]#make; make install
2)用jail创建监牢
jail软件包提供mkjailenv、addjailuser和addjailsw三个Perl脚本作为其核心命令。
mkjailenv:创建chroot“监牢”目录,并且从真实文件系统中拷贝基本的软件环境。addjailsw:从真实文件系统中拷贝二进制可执行文 件及其相关的其它文件(包括库文件、辅助性文件和设备文件)到该“监牢”中。addjailuser:创建新的chroot“监牢”用户。
    停止当前dhcpd服务,然后建立chroot目录:
[root@rhel]#/sbin/service dhcpd start
[root@rhel]#mkjailenv /chroot/
[root@rhel]#mkjailenv  
    为“监牢”添加dhcpd程序的过程:
[root@rhel]# addjailsw /var/chroot/ -P /usr/sbin/dhcpd
[root@rhel]# addjailsw  
    将dhcpd的相关文件拷贝到“监牢”中(可做可不做):
[root@rhel]# mkdir -p /chroot/dhcp/etc
[root@rhel]# cp /etc/dhcpd.conf /chroot/dhcp/etc/
[root@rhel]# mkdir -p /chroot/dhcp/var/state/dhcp
[root@rhel]# touch /chroot/dhcp/var/state/dhcp/dhcp.leases
    重新启动dhcpd服务器:
[root@rhel]#  /chroot/usr/sbin/dhcpd
    使用ps命令检查dhcpd进程:
[root@rhel]# ps -ef | grep dhcpd
    root 2402 1 0 14:25 ? 00:00:00 /chroot/usr/sbin/dhcpd
    root 2764 2725 0 14:29 pts/2 00:00:00 grep dhcpd
    注意此时进程名称已经改变,使用检查dhcpd运行的端口:
[root@rhel]# netstat -nutap | grep dhcpd
    udp 0 0 0.0.0.0:67 0.0.0.0:* 2402/dhcpd
端口号没有改变。现在dhcpd已经成功运行在“监牢”中。
    步骤8:
启动客户机进行测试,可以在WinXP SP2下的VMWare5.5.1中新建一个虚拟机,从网络启动安装来测试是否配置成功。
对服务器而言,要确保网卡正常工作,并具备广播功能。对客户机而言,还要确保客户机的网卡正常工作。如果dhcpd进程没有启动,那么可以浏览消息文件/var/log/messages。
    网络中的客户机却没办法取得IP地址一般是Linux DHCP服务器的网卡没有设置具有MULTICAST功能。为了让dhcpd(dhcp程序的守护进程)能够正常的和DHCP客户机沟通,需要修改路由表以激活MULTICAST功能;
[root@rhel]# route add -host 255.255.255.255 dev eth0
    如果报错:255.255.255.255:Unkown host
[root@rhel]# vi /etc/hosts#加入一行:
    255.255.255.255 dhcp
    DHCP客户端程序和DHCP服务器不兼容,不同版本使用DHCP客户端程序和DHCP服务器也不相同。Linux提供了四种DHCP客户端程 序:pump, dhclient, dhcpxd, 和dhcpcd。了解不同Linux发行版本的服务器端和客户端程序对于常见错误排除是必要的。脚本 附加配置文件
Red Hat Linux 9.0的dhclient 无 /sbin/ifup /etc/sysconfig/network,/etc/sysconfig/network-scripts/ifcfg-eth0

参考上面的方法,大家可以尝试配出完美的服务器来。

  原贴:



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/25799/showart_195654.html
阅读(1310) | 评论(0) | 转发(0) |
0

上一篇:嵌入式工具

下一篇:SSH安装

给主人留下些什么吧!~~