本文共 7159 字,大约阅读时间需要 23 分钟。
回顾:
dhcp包有两个:dhcpd和dhcrelaydhcpd的配置文件:/etc/dhcp/dhcpd.confoption routers GW;option domain-name-servers IP,IP,IP;default-lease-time;max-lease-time;subnet NET netmask MASK { range ; ...}host HOST_ID { hardware ethernet MAC; fixed-address IP;}分配信息库: /var/lib/dhcp/dhcpd.leases~客户端命令:dhclient -d:运行在前台;其他配置选项: filename:指明引导文件名称;可以理解为bootloader文件 next-server:指明引导所在的服务主机的IP地址;这个server一般为tftp server 示例: filename "pxelinux.0"; next-server 172.18.100.6; tftp:trivial ftp琐碎简单ftp 使用udp协议
pxe:
PXE:preboot excution environment,Intel牵头流程:没有安装操作系统的主机能够完成基于网络引导的安装或者启动操作1、客户端的网卡必须支持网络引导机制,并且调整为第一启动引导设备2、主机唤醒之后,开始加载网络引导应用时,网卡会在本地局域网络中广播一个rarp协议,获得一个IP地址,同时还会获得要加载的文件名称和文件serverIP2、文件会在内存中展开,基于此文件去加载一个内核文件(也是从server获取),内核还需要依赖于initrd这样的虚根来完成对真实根所在的设备的驱动的加载,内核文件通常是专为系统安装所设定的,因此如果给它配置了网络属性的话,接着这个内核文件还需要基于网络把自己扮演成某种协议的客户端,去启动能加载安装程序的程序包,在本地完成安装并启动应用程序,而此程序在另一个基于http、ftp、nfs提供的yum仓库服务器上,读取kickstart文件,基于kickstart解决依赖关系,基于基础镜像仓库完成后续的所有安装过程。网络引导安装会依赖于一个基础镜像仓库(可以理解为一个yum仓库)CentOS: dhcp(ip/netmask,gw,dns;filename,next-server) tftp server(bootloader,kernel,initrd) yum repository(ftp,http,nfs) kickstart文件:自动完成操作tftp server: centos6: chkconfig tftp on service xinetd restart centos7: systemctl start tftp.socket systemctl enable tftp.socket---设置为开机自动启动 默认的文件根目录:/var/lib/tftpboot/
配置PXE环境:
CentOS 7:yum -y install syslinuxcp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot cp /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,memdisk} /var/lib/tftpboot mkdir /var/lib/tftpboot/pxelinux.cfg/ vim /var/lib/tftpboot/pxelinux.cfg/default default menu.c32---以菜单方式显示安装界面或者引导界面 prompt 5---菜单界面显示给用户5秒钟 timeout 30---菜单界面显示超时,如果不选择就超时 MENU TITLE CentOS 7 PXE Menu---MENU TITLE是固定的,后边的字符串可以随便写,指定一个菜单项 LABEL linux---标签 MENU LABEL Install CentOS 7 x86_64---菜单中显示的是什么install后边的字符串随便写,这是菜单某一个条目的标题 KERNEL vmlinuz---这个菜单项的内核 APPEND initrd=initrd.img---向内核附加的参数 inst.repo=http://192.168.10.9/centos/7/x86_64 LABEL linux_autoinst---标签 MENU LABEL Install CentOS 7 x86_64 auto---菜单中显示的是什么install后边的字符串随便写,这是菜单某一个条目的标题 KERNEL vmlinuz---这个菜单项的内核 APPEND initrd=initrd.img---向内核附加的参数 inst.repo=http://192.168.10.9/centos/7/x86_64 ks=http://192.168.10.9/kickstarts/centos7.cfg---kickstart文件CentOS 6: yum -y install syslinux cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot cp /media/cdrom/isolinux/{boot.msg,vesamenu.c32,splash.png} /var/lib/tftpboot mkdir /var/lib/tftpboot/pxelinux.cfg/ cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default---编辑这个文件不需要指定inst.repo,只需要指定ks文件即可 内容如下所示: display boot.msg menu background splash.jpg menu title Welcom to CentOS 6.7! menu color border 0 #ffffffff #00000000 menu color sel 7 #ffffffff #ff000000 menu color title 0 #ffffffff #00000000 menu color tabmsg 0 #fffffff #00000000 menu color unsel 0 #ffffffff #00000000 menu color hotsel 0 #ff000000 #00000000 menu color hotkey 7 #ffffffff #ff000000 menu color scrollbar 0 #ffffffff #00000000 label zutoinst menu label ^Auto Install CentOS---^表示ctrl,表示一个控制符,表示按A快速定位 menu default kernel vmlinuz append initrd=initrd.img label linux menu label ^Install or upgrade an existing system kernel vmlinuz append initrd=initrd.img label vesa menu lebel Install system with ^basic video driver kernel vmlinuz append initrd=initrd.img nomodeset---不做模式设定,启动时使用600×480的基本显卡驱动 label rescue menu label ^Rescue installed system kernel vmlinuz append initrd=initrd.img rescue label local menu label Boot from ^local drive localboot 0xffff label memtest86 menu label ^Memory test kernel memtest append ~
然后把这台server配置成dhcp服务器,
vim /etc/dhcp/dhcpd.confoption domain-name "magedu.com";option routers 192.168.10.9;option domain-name-servers 172.18.0.1;default-lease-time 43200;
max-lease-time 86400;log-facility local7;
然后创建一个仓库:通过http协议来访问
mkdir -pv /var/www/html/centos/7/x86_64mount -r /dev/cdrom /var/ww/html/centos/7/x86_64---把cdrom中的文件挂载到http server中,当作yum仓库systemctl start httpd.service然后创建一个kickstart文件mkdir -pv /var/www/html/kickstartsvim /var/www/html/kickstarts/centos7.cfginstallxconfig --startxonbootkeyboard --vckeymap=cn --xlayouts='cn'rebootrootpw --iscrypted $HDHf2v4i$LMo.xGHfxQDOf8e043C.g/timezone Asia/Shanghaiurl --url=""lang zh_CNuser --groups=wheel --name=mageedu --password=$6$1eWr0etY$DfLZgqu... --isrypted --gecos="MageEdu"firewall --disablednetwork --bootproto=dhcp --device=eth0auth --useshadow --passalgo=sha512textfirstboot --disableselinux --permissiveignoredisk --only-use=sdabootloader --location=mbr --boot-drive=sdazerombrclearpart --all --initlabelpart /boot --asprimary --fstype="xfs" --size=512part swap --fstype="swap" --size=2048part /usr --fstype="xfs" --size=20480part / --fstype="xfs" --size=20480%packages
%end
kickstart文件准备好了以后,vim /etc/yum.repos.d/CentOS-Base.repo把baseurl替换为本地挂载的光盘文件路径baseurl=file:///var/www/html/centos/7/x86_64yum -y install syslinux
rpm -ql syslinux---可以看到有一个pxelinux.o文件cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/此时还需要内核文件(一定要与当前系统版本保持一致)和initrd文件在/var/www/html/centos/7/x86_64/images/pxeboot下有initrd.img文件和vmlinuz内核文件cp /var/www/html/centos/7/x86_64/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/cp /usr/share/syslinux/{chain.c32,memdisk,menu.c32,mboot.c32} /var/lib/tftpboot/---还需要一些启动菜单,centos7系统下选择这些:menu.c32字符界面用到,vesamenu.c32图形界面会用到,memdisk把内存当成磁盘,方便initrd需要cd /var/lib/tftpboot/mkdir pxelinux.cfgcd /pxelinux.cfgvim defaultdefault menu.c32---以菜单方式显示安装界面或者引导界面prompt 5---菜单界面显示给用户5秒钟timeout 30---菜单界面显示超时,如果不选择就超时MENU TITLE CentOS 7 PXE Menu---MENU TITLE是固定的,后边的字符串可以随便写,指定一个菜单项LABEL linux---标签MENU LABEL Install CentOS 7 x86_64---菜单中显示的是什么install后边的字符串随便写,这是菜单某一个条目的标题KERNEL vmlinuz---这个菜单项的内核APPEND initrd=initrd.img---向内核附加的参数 inst.repo=http://192.168.10.9/centos/7/x86_64LABEL linux_autoinst---标签MENU LABEL Install CentOS 7 x86_64 auto---菜单中显示的是什么install后边的字符串随便写,这是菜单某一个条目的标题KERNEL vmlinuz---这个菜单项的内核APPEND initrd=initrd.img---向内核附加的参数 inst.repo=http://192.168.10.9/centos/7/x86_64 ks=http://192.168.10.9/kickstarts/centos7.cfg---kickstart文件
systemctl start httpd.service
然后找一个客户端就可以用pxe网络引导了,但是只能到加载内核这一步,因为没有指定安装路径,安装程序,这里能看到IP只是网卡的IP,不是内核的IP,因为没有系统
在网络引导出现菜单的时候,按table键,指定参数vmlinuz initrd=initrd.img ip=192.168.10.11 netmask=255.255.255.0 inst.repo=
但是每次安装系统时指定IP等参数太麻烦了,所以可以在default配置文件中添加
客户端
tftp 192.168.10.9---就可以连接,出现tftp的命令行提示符,可以使用help显示帮助信息转载于:https://blog.51cto.com/13852573/2408166