PXE、NFS启动LINUX的试验

来源:互联网 发布:帝国cms添加统计代码 编辑:程序博客网 时间:2024/05/16 04:31

PXENFS启动Linux的试验

1.试验目的

        熟悉Linux下通过PXENFS启动的原理

2.试验环境

     浪潮NF420服务器2台,配置如下:Linux操作系统为EL-3.0

2块网卡(只有1块有网线),内核版本号linux-2.4.21-15

   使用的软件包:tftp-hpa-0.40.tar.gz(证明linux9自带的可以用),内核linux-2.4.28

3.试验原理

     请查阅PXENFS原理

4.试验过程

1).安装DHCP服务器dhcpd, 配置/etc/dhcpd.conf文件

dhcp服务器IP10.151.11.168

PXE启动的客户端mac地址为00:02:B3:55:84:D2

PXE启动的客户端IP10.151.11.176

配置如下(红色标识为关键修改部分)

####################################

deny unknown-clients;

option subnet-mask 255.255.0.0;

option broadcast-address 10.151.255.255;

option domain-name "langchao";

option routers 10.151.11.168;

ddns-update-style none;

subnet 10.151.0.0 netmask 255.255.0.0 {

      group{

         host node{

                   hardware ethernet 00:02:B3:55:84:D2;

                   fixed-address 10.151.11.176;

                   filename "pxelinux.0";

                }

           }

}

####################################

2).配置tftp server

      该实验中,使用pxelinux作引导工具需要支持TSIZE参数的tftp server,故先找到默认的tftp rpm,然后删去tftprpm

(查找到当前的tftprpm包 :rpm–q tftp

(删除当前的tftprpm   rpm–e tftp

 tar xzvf tftp-hpa-0.40.tar.gz

 cd tftp-hpa-0.40后,执行make install

   至此,Tftp server 安装完毕.

 

通过xinetd来使用tftp服务,我的/etc/xinetd.conf文件如下

####################################

service tftp

{

        socket_type             = dgram

        proctocol               = udp

        wait                    = yes

        user                    = root

        server                  =/usr/sbin/in.tftpd

}

####################################

配置完毕后,使用service xinetd start 启动tftp服务。

 

3).配置客户端启动文件

在服务器上建立目录 /tftpboot , /usr/bin/syslinux/pxelinux.0(如没有syslinux,则需要先安装)拷贝到/tftpboot/, pxelinux.0为启动文件,同时在/tftpboot下新建一个pxelinux.cfg目录,客户端启动时会在此目录下找与其IP相应的配置文件,该文件的名称规则为IP地址的16进制的输出(比如客户端通过dhcp得到的IP10:151:11:176,则启动配置文件名为0A970BB0),文件格式为

########################

            DEFAULT linux

            PROMPT 0

            LABEL linux

            KERNEL vmlinuz

            append ip=dhcp root=/dev/node nfsroot=10.151.11.168:/remote/node

            vga=normal

##########################

4).配置NFS

  建立目录/remote/node,作为该客户启动的文件系统,在tftpboot/pxelinux.cfg的配置文件0A970BB0里指定了从这个nfs export/remote/node目录启动。

该目录里应把标准的目录都建好,包括usrrootbin

下面是建立该目录的脚本

#######################

cd /remote/node

echo -n "Copy directory bin ..."

            cp -a /bin . 

            echo " OK"

            echo -n "Copy directory dev ..."

            cp -a /dev . 

            echo " OK"

            echo -n "Make a node nd0 ..."

            mknod dev/node b 43 0 

            chmod 600 dev/node 

            echo " OK"

            echo -n "Copy directory etc ..."

            cp -a /etc . 

            echo " OK"

            echo -n "create directory home ..."

            mkdir home

            echo " OK"

            echo -n "Copy directory lib ..."

            cp -a /lib . 

            echo " OK"

            echo -n "clean  modules of directory lib  ..."

            rm -rf lib/modules 

            echo " OK"

            echo -n "create directory root  ..."

            mkdir root

            echo " OK"

            echo -n "copy directory sbin  ..."

            cp -a /sbin .

            echo " OK"

            #echo -n "link directory usr  ..."

            #ln -s /usr usr 

            #echo "OK"

            echo -n "create directory var  ..."

            mkdir var 

            cd var

            echo "Entering directory var "

            echo -n "copy  lib"

            cp -a /var/lib . 

            echo -n " cache"

            cp -a /var/cache . 

            echo -n " log"

            cp -a /var/log . 

            echo -n " tmp"

            cp -a /var/tmp . 

            echo -n " spool"

            cp -a /var/spool . 

            echo -n " yp"

            cp -a /var/yp . 

            cd ../

            echo -n "leaving directory var"

            echo " OK"

            echo -n "create directory proc usr tmp ..."

            mkdir proc  usr tmp 

            echo " OK"

            echo  -n "change attribute of tmp ..."

            chmod 777 tmp 

            echo " OK"

            echo  -n "create file fastboot and add +i attribute ... "

            touch fastboot 

            chattr +i fastboot 

            echo " OK"

            #######################

编辑/etc/exports文件:使服务器提供该nfs的文件系统目录

#######################

/remote/node *(rw,async,no_root_squash)

#######################

 

编辑/remote/node/etc/fstab

    #######################

 none    /proc   proc  defaults,intr  0 1

10.151.11.168:/remote/node / nfs rw 0 0

#10.151.11.168:/remote/root /root nfs rw 0 1

#10.151.11.168:/remote/home /home nfs rw 0 1

#10.151.11.168:/bin /bin nfs rw 0 1

10.151.11.168:/usr /usr nfs rw 0 0

#10.151.11.168:/lib /lib nfs rw 0 1

#10.151.11.168:/sbin /sbin nfs rw 0 1

#10.151.11.168:/etc /etc nfs rw 0 1

#######################

使用service nfs start启动nfs

 

 

5 编译内核

#######################

     make menuconfig

       make dep

       make bzImage

#######################

客户端通过NFS启动的内核,应该支持

Kernel Level Auto ConfigurationDHCP协议,

NFSNFS ROOT

客户端网卡驱动

将编译好的内核/usr/src/arch/i386/boot下的bzImage拷贝到/tftpboot/目录下,改名vmlinuz

 

6 启动服务器的dhcpnfstftp服务

   Service dhcpd start

   Service nfs start

   Service xinetd start

7 启动客户端

将客户端设置为从网卡启动

 

5.试验总结

   试验过程中,出现了如下问题:

1.              有时候客户端启动时发现得到的IP并不是该服务器配置的IP,导致无法找到启动启动配置文件(根据IP规则得到的文件)

分析:由于该网段内还存在其他的dhcp服务器,所以出现此类问题

解决:用双绞线将两台机子对连,或者断开外部的网络,使局域网内只有server作为dhcp的服务器

2                     客户端通过pxe启动后,会有少部分文件提示找不到,并不影响继续启动的执行

分析:服务器提供的NFS并不是干净的linux操作系统

解决:并不影响启动的执行,可以忽略

3                     客户端通过pxe启动后,发现已经mount上了NFS,但启动过程中配置网卡时出现错误,提示“Network is unreachable

分析:可能是由于网卡没有驱动(但实际不是这个原因)

解决:修改/remote/node/etc/sysconfig/network-scripts/ifcfg-eth0

/remote/node/etc/sysconfig/network-scripts/ifcfg-eth1,将其中的ONBOOT选项设置为NO,本人理解为启动时不需要配置网卡,因为网卡在pxe过程中已经被使用,如果在使用的时候,就会提示该错误。

原创粉丝点击