第九野,DJ野,学习,休闲,生活,分享,社区,~~~,路人乙,很高兴你能来这里! SiteMap | About Us | Guest Book | Contact Us | Search | Tags | Rss
第九野(DJ野)~生活学习休闲情感分享社区~分享一切~All for me , All for you !
Search 
<< 80后经常说的60句话IBM新年摆出“Linux组合拳”迎击微软 >>

PXE、NFS启动Linux的试验 

字体大小:   
1.试验目的
熟悉Linux下通过PXE、NFS启动的原理



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.试验原理
请查阅PXE,NFS原理



4.试验过程
1).安装DHCP服务器dhcpd, 配置/etc/dhcpd.conf文件

dhcp服务器IP为10.151.11.168



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



PXE启动的客户端IP为10.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包,然后删去tftp的rpm包



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



(删除当前的tftp的rpm包 :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得到的IP为10: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目录启动。



该目录里应把标准的目录都建好,包括usr,root,bin等



下面是建立该目录的脚本



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



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 Configuration的DHCP协议,



NFS,NFS ROOT



客户端网卡驱动



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







6) 启动服务器的dhcp、nfs、tftp服务

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过程中已经被使用,如果在使用的时候,就会提示该错误。




<< 80后经常说的60句话IBM新年摆出“Linux组合拳”迎击微软 >>

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

网站地图 | 合作伙伴 | 隐私保护 | 版权声明 | 商业合作 | 联系我们