dhcp服务器是pxe自动化安装的必要条件,因此先搞定dhcp服务器,yum -y install dhcp, rpm -ql dhcp查看安装了哪些包,less /etc/dhcp/dhcpd.conf 打开dhcp的主配置文件,如下图:
没有任何配置,但提示了去哪找主配置文件,cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf 覆盖
主配置文件,vim /etc/dhcp/dhcpd.conf 再次打开,default-lease-time 600; (默认租约时长)这个参数为600秒感觉短了一点,
改为3600。为了避免其他参数的干扰,把鼠标移动到29行,然后执行:.,$s@^[^#]@#&@命令(把当前行到最后一行以非#开头的
非空白行在行首加上#),接下来在subnet中定义要分配的网段,定义如下图所示:
保存退出! service dhcpd start 启动服务 ss -unl 查看67号服务器端口是否监听。
把网卡配置为172.16.0.199/16 的地址,作为客户端的默认网关。
启动另外一台客户端,使用dhclient -d命令 查看如何获取地址如图:
这样一台dhcp服务器就启动起来了,给客户端分配了172.16.100.29地址。
但有时我们需要固定分配一地址给某台客户端,vim /etc/dhcp/dhcpd.conf 如图:
添加一段配置,只需把该客户端的物理网卡地址写上就可以。
看下面这图:
多添加了filename,和next-server两个参数,filename表示告诉客户端获取了地址之后,去加载pxelinux.0文件,去哪加载,next-
server中指定的地址,此处为172.16.100.13。pxelinux.0是基于网卡引导时要加载的initial boot file 的文件名。而filename处指
定的文件必须放在tftp-server上。
第二个必要条件,另外启动一台虚拟机,搞定tftp-server,yum -y install tftp-server, yum -y install syslinux。
syslinux 是一堆引导加载器,pxe 网络引导需要用到它。在/usr/share/syslinux/目录下就有pxelinux.0文件。
tftp-server是由xinetd这个超级守护进程管理的。因此vim /etc/xinetd.d/tftp 把disable=yes 改为 no, service xinetd restart。
ss -unl 查看是否69号端口已监听。
tftp服务器默认文件存储路径为/var/lib/tftpboot目录下。 cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
放入光盘挂载光盘,mkdir /media/cdrom mount -r /dev/cdrom /media/cdrom 还得创建一个yum仓库放置光盘里面的文件,
我把它放在httpd上。安装httpd服务器,yum -y installl httpd, mkdir /var/www/html/centos6 创建目录硬链接 mount --
bind /media/cdrom /var/www/html/centos6 ls /var/www/html/centos6 如图:
制作一个kickstart文件来定制如何安装系统,yum -y install system-config-kickstart, system-config-kickstart 如图:
为了方便下面几项无需去配置。 可以使用ksvalidator命令检查是否有语法错误 ksvalidator centos6.cfg。 cp /root/centos6.cfg /var/www/html/
service httpd start
接下来复制几个必要的文件:cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
cp /media/cdrom/isolinux/{boot.msg,splash.jpg,vesamenu.c32} /var/lib/tftpboot/
mkdir /var/lib/tftpboot/pxelinux.cfg cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
ls /var/lib/tftpboot 如图:
vim /var/lib/tftpboot/pxelinux.cfg/default
加上 ks=http://172.16.100.10/centos6.cfg
启动一台虚拟机从网卡引导:
把centos6.cfg文件中的#Use graphic install 下的graphic 两行改为 #Use text install text,引导就不需要你点next选项:
全搞定!!!
补充:initrd.img是一个小的映象,包含一个最小的linux系统
vmlinux是未压缩的内核,vmlinuz是vmlinux的压缩文件,“vm”代表 “Virtual Memory”。Linux 支持虚拟内存,能够使用硬盘空间
作为虚拟内存,因此得名“vm”
系统内核vmlinuz被加载到内存后开始提供底层支持,在内核的支持下各种模块,服务等被加载运行。这样当然是大家最容易接受的方
式,曾经的linux就是这样的运行的。假设你的硬盘是scsi 接口而你的内核又不支持这种接口时,你的内核就没有办法访问硬盘,当然
也没法加载硬盘上的文件系统,怎么办?把内核加入scsi驱动源码然后重新编译出一个新的内核文件替换原来vmlinuz
initrd.img文件就是个ram disk的映像文件,内核加载这个ram disk作为伪根文件系统并开始执行其中的"某个文件"(2.6内核是 init
文件)来加载各种模块,服务等(这个ram disk包含各种驱动,比如包含真正根文件系统所在磁盘的驱动)。经过一些配置和运行后,
就可以去物理磁盘加载真正的root分区了,然后又是一些配置等,最后启动成功。也就是你只需要定制适合自己的 initrd.img 文件就
可以了。这要比重编内核简单多了