5、 PXE引导配置
要配置TFTP所要传输的bootstrap,首先要准备好引导文件、内核镜像文件、跟文件系统文件。
1. bootstrap文件:pxelinux.0
文件位置在/usr/lib/syslinux目录中。将其拷贝到/tftpboot目录中
#cp /usr/lib/syslinux /pxelinux.0 /tftpboot
2 .内核镜像文件(用于网络启动的内核文件):vmlinuz
vmlinuz文件在RH5镜像文件下的/images/pxeboot目录中,将vmlinuz拷贝到/tftpboot目录中[假定光盘加载到/mnt/cdrom]
#cp/mnt/cdrom/images/pxeboot/vmlinuz /tftpboot
3.根文件系统文件(用于网络启动的内核文件):initrd.img
initrd.img文件在RHEL5光盘下的/images/pxeboot目录中,将initrd.img拷贝到/tftpboot目录中[假定光盘加载到/mnt/cdrom]
#cp/mnt/cdrom/images/pxeboot/initrd.img /tftpboot
由于多个客户端可以从一个PXE服务器引导,PXE引导映像使用了一个复杂的配置文件搜索方式来查找针对客户机的配置文件。如果客户机的网卡的MAC地址为'''88:99:AA:BB:CC:DD''',对应的IP地址为192.168.1.195,那么客户机首先尝试以MAC地址为文件名匹配的配置文件,如果不存在就以IP地址来查找。根据上述环境针对这台主机要查找的以一个配置文件就是/tftpboot/pxelinux.cfg/01-88-99-aa-bb-cc-dd。如果该文件不存在,就会根据IP地址来查找配置文件了,这个算法更复杂些,PXE映像查找会根据IP地址16进制命名的客户机配置文件。例如:192.168.1.195对应的16进制的形式为C0A801C3。(可以通过syslinux软件包提供的gethostip命令将10进制的IP转换为16进制)
如果C0A801C3文件不存在,就尝试查找C0A801C文件,如果C0A801C也不存在,那么就尝试C0A801文件,依次类推,直到查找C文件,如果C也不存在的话,那么最后尝试default文件。
总体来说,pxelinux 搜索的文件的顺序是:
/tftpboot/pxelinux.cfg/01-88-99-aa-bb-cc-dd
/tftpboot/pxelinux.cfg/C0A801C3
/tftpboot/pxelinux.cfg/C0A801C
/tftpboot/pxelinux.cfg/C0A801
/tftpboot/pxelinux.cfg/C0A80
/tftpboot/pxelinux.cfg/C0A8
/tftpboot/pxelinux.cfg/C0A
/tftpboot/pxelinux.cfg/C0
/tftpboot/pxelinux.cfg/C
/tftpboot/pxelinux.cfg/default
对于一台需要支持很多安装机器的安装服务器来说,将配置写在与 IP 地址对应的文件里很不灵活。把所有配置都集中在 default 文件中是个不错的主意,可以减轻配置文件维护负担。4.创建pxelinux.cfg目录与default文件
pxelinux.cfg为远程安装客户端配置文件所在目录,您可以为不同的计算机制定不同的安装方式或者方法。但是基本上我们都可以用default配置文件来进行为所有的计算机进行配置。
#cd /tftpboot #mkdir pxelinux.cfg [root@localhost tftpboot]# cp *.msg /tftpboot/pxelinux.cfg/ ——将.msg的文件拷到目录 [root@localhost tftpboot]# cp isolinux.cfg pxelinux.cfg/ ——这个isolinux.cfg就是default文件的前身。 [root@localhost tftpboot]# cd pxelinux.cfg/ [root@localhost pxelinux.cfg]# mv isolinux.cfg default (重命名) #vi default default内容如下:
default linux # 默认启动的是 'label linux' 中标记的启动内核
prompt 1 # 显示 'boot: ' 提示符。为 '0' 时则不提示,将会直接启动 'default' 参数中指定的内容。
timeout 600 # 在用户输入之前的超时时间,单位为 1/10 秒。
display boot.msg #显示某个文件的内容,注意文件的路径。默认是在 /tftpboot 目录下。也可以指定位类似 'install/rhel4.4-inst/boot.msg'这样的,路径+文件名。
F1 boot.msg #按下 'F1' 这样的键后显示的文件。注意路径。默认是 /tftpboot。注:syslinux 官方网站上说目前只能使用 F1-F10。
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
label linux # 'label' 指定你在 'boot:' 提示符下输入的关键字。 比如:boot: linux[ENTER]这个会启动 'label linux' 下标记的 kernel 和 initrd.img 文件。
kernel vmlinuz #kernel 参数指定要启动的内核。同样要注意路径,默认是 /tftpboot 目录。
append ks=nfs:192.168.0.7:/pub/ks.cfg initrd=initrd.img # append 指定追加给内核的参数,能够在 gurb 里使用的追加给内核的参数,在这里也都可以使用。# 使用 kickstart 安装。可以在 ks 参数后直接指定 kickstart 文件的位置。我在用自己笔记本安装的时候把黄色部分删除了,手动安装成功。哈哈
#启动参数包括启动内核时所需要mount的挂载点和ramdisk大小。一般16384都可以满足了。
label text
kernel vmlinuz #指定kernel文件
append initrd=initrd.img textdevfs=nomountramdisk_size=9216
label ks
kernel vmlinuz #指定kernel文件
append ks initrd=initrd.imgdevfs=nomountramdisk_size=9216
label local
localboot 0
修改default文件如下:
#vi /tftpboot/pxelinux.cfg/default(修改第3行,第12行.)
3行: timeout 10 //时间调小点
12行: append ks=nfs:192.168.0.7:/mnt/cdrom/ks.cfg initrd=initrd.img ——本机的ip加上。
5.nfs网络文件传系统配置:
[root@localhost /]# vi /etc/exports
/mnt/cdrom *(ro) (企5光盘挂载的目录作为nfs共享目录)
/pub *(ro)
~
——————————————————————————
重启服务使配置生效。[root@qiuri Server]#service portmap restart 停止 portmap: [确定] 启动 portmap: [确定] [root@qiuri Server]#service nfs start 关掉 NFS 配额: [确定] 启动 NFS 守护进程: [确定] 启动 NFS mountd: [确定] 检查目录/mnt/install是否被正确共享: [root@qiuri Server]#showmount –e localhost Export list forlocalhost: /mnt/install * [root@qiuri Server]#chkconfig --level 35 nfs on启动 NFS 服务: [确定]
到此nfs就配置好了,跟多参考:http://blog.csdn.net/changyanmanman/article/details/7646760
6.安装kickstart 配置ks.cfg
通常,我们在安装操作系统的过程需要大量的人机交互过程,减少交互过程,为了提高安装效率Red Hat Linux 开始支持一个称为 kickstart 的功能。使用这种方法,只需事先定义好一个Kickstart自动应答配置文件(通常存放在安装服务器上),并让安装程序知道该配置文件的位置,在安装过程中安装程序就可以自己从该文件中读取安装配置,这样就避免了繁琐的人机交互,实现无人值守的自动化安装。
我们可以通过多种方法生成Kickstart配置文件,无论使用哪种方法无非就是创建一个应答文件,当你安装好一台Red Hat Linux机器,Red Hat Linux 安装程序都会创建一个kickstart 配置文件,记录你的真实安装配置。如果你希望实现和某系统类似的安装,可以基于该系统的kickstart配置文件来生成你自己的kickstart配置文件。该文件位于/root/anaconda-ks.cfg。
这里我直接使用该文件,拷贝本文件到/mnt/cdrom下。
[root@qiuri Server]# cp /root/anaconda-ks.cfg /pub/ks.cfg
[root@qiuri Server]# chmod a+rx /pub/ks.cfg # 修改ks.cfg权限
内容如下:
# Kickstart file automatically generated byanaconda.
install
nfs --server=192.168.0.7--dir=/mnt/cdrom #这个选项告诉安装程序:到服务器192.168.0.7的NFS共享目录/mnt/cdrom下寻找安装介质
key --skip
lang zh_CN.UTF-8
keyboard us:
xconfig --startxonboot
network --device eth0 --bootproto dhcp
rootpw --iscrypted $1$3xvzZgwz$1jYjrh/XtXLblT00Mn3Ys0
firewall --enabled --port=22:tcp
authconfig --enableshadow --enablemd5
selinux --enforcing
timezone --utc Asia/Shanghai
bootloader --location=mbr --driveorder=sda--append="rhgb quiet"
… …
clearpart --all --drives=sda --initabel
part / --fstype ext3 --size=130000
part swap --fstype swap --size=2048
part /backup --fstype ext3 --size=100 --grow
%packages
@office
@admin-tools
… …
emacs
gcc43-c++
libgfortran43
注意:关闭服务器端防火墙和SELINUX
手动修改ks.cfg bootloader --location=mbr key --skip //跳过安装序列号,需要手动修改添加 (最后加入) %packages --resolvedeps @ base-x //最小化安装 (如果用kickstart不能选择安装包时需要手动添加)
5.最后检查一下/tftpboot目录中是否存在如下文件:
1) pxelinux.0 #bootstrap文件
2) vmlinuz #内核镜像文件
3) initrd.img #根文件系统文件
4) pxelinux.cfg #为远程客户端使用的配置文件目录,该文件夹下包含一个文件:default
5) default #为远程客户端使用的配置文件
6) boot.msg #初始引导文件
如果全部存在。那么现在可以启动dhcp,tftp,ftp三项服务,找个机器测试一下吧!
http://www.cnblogs.com/JemBai/archive/2011/12/27/2303747.html
故障排除:
kickstart服务器排除
1、关闭防火墙,系统自带的和IPTABLES都要关闭
2、 从网卡启动,获取不到IP地址检查你的DHCP服务器是否开机,使用#netstat -tulnp | grep dhcpd ,来查看是否在监听67号端口
。
3、获取IP后,在TFTP那步卡住了。检查你的DHCP配置文件,next-server 是不是指的正确的tftp服务器。TFTP服务器是否开启,是否运
行正常。 可以在linux里面使用这个方法来测试
#tftp 您的服务器IP 登陆进入后
tftp>get pxelinux.0
tftp>quit
查看当前目录是否有pxelinux.0这个文件,有的话,证明你的tftp服务器是正常的最后检查你的网络中是不是还有其他dhcp服务器
3、内核成功加载后,系统有完成自动安装,需要人工介入,那就证明你的kickstart脚本文件出问题了,需要重新生成一个
4、监控服务器的/var/log/message文件,寻找故障原因