4.配置nfs服务,nfs服务是为了共享一个目录,里面放client将要用的系统文件,client启动后会chroot到这个目录里运行系统。
[root@localhost ~]# cat /etc/exports
/app/root *(rw,no_root_squash,no_all_squash) \\这个目录留着放client的系统文件,我这权限开的有点大,针对本项目我这还可以限制成这样:/app/root 192.168.17.0/24(rw,no_root_squash,no_all_squash),rw应该是需要的,不然可能在客户端操作系统会无法往系统里写东西,client系统运行起来可能也会有问题。
启动nfs服务:
[root@localhost ~]# service nfs restart
一样可以加到开机启动里:
[root@localhost ~]# chkconfig --level 345 nfs on
5.把相关启动配置文件拷贝到tftp的跟目录里好让pxe顺利启动和引导系统。
5.1我们用pxelinux引导pxe启动,pxelinux引导文件在这里:
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /app/tftpboot \\这就是syslinux的作用:提供pxelinux.0这个启动文件。rhel6和CentOS的貌似都是在/usr/share/syslinux/这个目录位置,/app/tftpboot这个目录就是tftp服务的根目录,clinet的pxe通过dhcp从server上获取到ip后就会还到这个server上访问tftp服务下载pxelinux.0(这个文件名在server的dhcpd的配置文件里指定过了,就是那个filename参数。)这个文件运行,pxelinux.0会让client继续到这个server的tftp服务器上去获取系统的引导文件(就是下面5.2的那个default文件)。
5.2我们用这个配置在client上引导内核:
[root@localhost ~]# cat /app/tftpboot/pxelinux.cfg/default
default rhel6
label rhel6
kernel vmlinuz-2.6.32.27
append initrd=initramfs-2.6.32.27.img selinux=0 rw root=nfs:192.168.17.7:/app/root ip=dhcp
注意这个目录,你需要在tftp服务的根目录(/app/tftpboot/,我们在tftp配置文件里配置过咯)里先建一个pxelinux.cfg文件夹(为什么叫这个名?这个是由5.1里面的那个pxelinux.0文件决定的,它会在这个目录去找系统引导文件,你会在后来的client的启动信息里看到pxelinux.0都在目录pxelinuc.cfg里找了哪些文件,这些文件里default文件虽然最后才找但是却是它必找的,其它的文件名好像都跟client网卡的mac有关,所以我们就用default),default文件里kernel参数后面的自然是内核(rhel6的,下面5.3里会说明)了,append参数里面:initrd就是指定initrd文件的(下面5.3里会有说明),selinux那个参数是关闭client系统的selinux(这个参数可以没有,根据个人需要),rw是指client挂载的系统是可写的(貌似默认就是可写的,但是不写这个参数的话client系统的chroot会有问题),root=这个参数就是告诉client内核起来后chroot到什么地方,注意2个冒号哦,那个目录/app/root在配nfs的时候已经共享过了,至于里面放什么文件会在5.4里面有说明,最后的参数ip=就是让client进入系统后获取ip是用dhcp获取的(前面我们在dhcp服务配置的时候还专门给它配了个ip就17.5那个)。
5.3在5.2里面default文件里我们用了系统启动所必须的vmlinuz和initrd文件,所以我们要把这两个文件也考到tftp根目录去:
[root@localhost ~]# cp /boot/vmlinuz-2.6.32.27 /app/tftpboot
上面这个内核文件vmlinuz-2.6.32.27就是新编译安装的内核,在/boot这个目录里就能找到(编译新内核时make install后拷贝过去的)。
复制initrd文件前请先检查安装的软件里有dracut和cracut-network,如下:
[root@localhost ~]# rpm -qa|grep dracut
dracut-004-32.el6.noarch
dracut-kernel-004-32.el6.noarch
dracut-network-004-32.el6.noarch
server系统里安装有了dracut和cracut-network后,这样生成initrd文件:
[root@localhost ~]# dracut initramfs-2.6.32.27.img 2.6.32.27
dracut命令后面2个参数,第一个就是要生成的initrd文件的名称(生成后会放在当前目录下),第二个则是新编译的内核的版本号。
复制新生成的initrd文件(即initramfs-2.6.32.27.img)到tftp服务的根目录里:
[root@localhost ~]# mv initramfs-2.6.32.27.img /app/tftpboot