本文主要是介绍PXE实现流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、ks配置文件详解:
# Kickstart file automatically generated by anaconda.
#version=DEVEL
install
指定开始安装
cdrom
安装树的位置,也就是软件包所在的位置,如果使用PXE时需要将此处修改为url,并指定url的路径。
lang en_US.UTF-8
设置语言。
keyboard us
设置键盘类型。
network --onboot yes --device eth0 --bootproto dhcp
设置网络相关属性,--device用于指定使用哪块网卡。
rootpw --iscrypted $6$OPbx5doxEEk9866q$3unsr/vErh4XRGufGcjIfMC7I6fHGOG29D6FSiAUKWdpVtba9snLbjoGQpD8OPQQbEKJ7gDQ88oNhCZs3BYOz/
设定root用户的密码,在安装过程中用户设定的密码加密运算后的结果。
openssl passwd -1 -salt `openssl rand -hex 4`
firewall --service=ssh
设置开启防火墙,并且允许ssh服务器通过。
authconfig --enableshadow --passalgo=sha512
设置用户认证时使用的文件未shadow文件,而加密算法为sha512的散列算法。
selinux --enforcing
设置SELINUX的模式为enforcing。
timezone --utc Asia/Shanghai
设置时区为Asia/Shanghai。
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
指定bootloader的安装位置为mbr中,bootloader安装到sda磁盘上,append用于指定安装时为启动的Linux的附加参数,crashkernel指定内核崩溃时的动作,rhgb为红帽自定义的安装时的背景界面,quit指定静默安装。
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
在该文件中#号以后有空格的为纯注释信息,而#号后面没有空格的为可启用的选项。
#clearpart --all --drives=sda
是否清除所有分区,如果需要安装双系统就应该注释此项,同时为了确保能够删除磁盘上的所有分区信息,建议使用zerombr删除原有磁盘上的数据。
part /boot --fstype=ext4 --size=500
指定分区的参数,如:挂载点、文件系统类型、分区大小。
part pv.008002 --grow --size=1
指定格式化为物理卷,如果当前系统上要设置多个物理卷,则应该对每个物理卷设置一个唯一的标识,而此处的标识仅在kickstart中使用,如果有多个pv只要保证各个pv的标识不重复即可,--grow用于通知逻辑卷最大可用空间,--size用于指定分区大小。
#volgroup vg_server --pesize=4096 pv.008002
指定卷组的属性信息,vg_server即为该卷组的名字,--pesize用于指定单个PE的大小为4096k,并且这个卷组的是有编号为008002的物理卷组成,如果此时由多个物理卷则在后面添加即可。
#logvol / --fstype=ext4 --name=lv_root --vgname=vg_server --grow --size=1024 --maxsize=51200
指定逻辑卷的参数,指定挂载点、格式化文件系统的类型、指定的逻辑卷的名称、该逻辑卷所处的卷组的名称、指定空间大小和最大空间的大小。
#logvol swap --name=lv_swap --vgname=vg_server --grow --size=1984 --maxsize=1984
指定交换分区的相关属性,显然所有的空间大小不应该超出卷组中所有物理卷的空间之和。
repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100
安装时使用的安装仓库,并通过baseurl指定仓库的路径,和开销,可以有多个。
%packages
指定程序安装开始。
@base
指定安装base包组,可以使用-software_name的方式在安装包组时不安装指定的软件包,但如果有其他的软件包依赖于这个软件包则这个程序就一定会安装。
@core
@debugging
@basic-desktop
@desktop-debugging
@desktop-platform
@directory-client
@fonts
@general-desktop
@graphical-admin-tools
@input-methods
@internet-applications
@internet-browser
@java-platform
@legacy-x
@network-file-system-client
@office-suite
@print-client
@remote-desktop-clients
@server-platform
@server-policy
@workstation-policy
@x11
mtools
pax
python-dmidecode
oddjob
wodim
sgpio
genisoimage
device-mapper-persistent-data
abrt-gui
samba-winbind
certmonger
pam_krb5
krb5-workstation
libXmu
%end
====================================================================================
2、启动安装时能够接受的参数
在启动安装时提供的菜单:
1、安装或升级现有的Linux操作系统。
2、使用基本的显卡驱动来安装操作系统,使用640*480的分辨率进行后续安装。
3、紧急救援模式。
4、从本地磁盘启动。
5、内存测试。
注意:在安装菜单的界面下键入Esc键可手动向iso提供参数。
isolinux 的传递参数(即 boot 提示符下所使用的指令):用于定义安装过程的特性,需要注意的是第一个命令一定为linux(因为在isolinux.cfg文件中定义了名为linux的相关参数,此处使用linux来调用相关的参数)。
linux:通过 label 的方式启动相对应的 kernel,该选项为默认选项。
text:使用文本界面的安装方式。
graphical:图形安装界面。
resolution=:如果要启动图形界面的分辨率,如1024*768。
ip=、netmask=、gateway=、dns=:设置 ip 地址、掩码、网关、dns 地址、网卡名称,通过对网卡的配置实现与网络上服务器的通信。
如:ip=192.168.1.10 netmask=255.255.255.0 gateway=192.168.1.1 dns=192.168.1.3
noipv6:不启动 ipv6 的设置。
ks=:指定一个安装过程所使用的 kickstart 文件,该文件可存放于光盘、磁盘或其他多种设备。
例如:
ks=cdrom:/directory/ks.cfg
将 ks 文件存放于光盘当中。
ks=hd:/device/directory/ks.cfg
ks=file:/device/directory/ks.cfg
ks 文件可直接存放于 initrd 文件中,需自行封装 initrd 文件。
ks=http://server.mydomain.com/directory/ks.cfg
ks=ftp://server.mydomain.com/directory/ks.cfg
ks=nfs:server.mydomain.com:/directory/ks.cfg
通过 nfs 将 ks.cfg 文件输出出来。
repo=:手动指定安装树的位置。
与 ks 相同,同时支持 ftp、http、nfs 等多个不同的网络位置 。
asknetwork:提示用户在安装过程中使用网络功能并提示用户可配置网络属性。
====================================================================================
3、光盘中与启动相关的文件
images:目录,存放启动时所需要的映像文件。
pxeboot:目录,用于存放启动时所需要的映像文件。
initrd.img:initial ramdisk,位于pxeboot目录下,网络启动时使用的一个内存虚拟磁盘。
vmlinuz:Virtual Memory,位于pxeboot目录下,用于网络引导启动的可引导的压缩内核文件。
TRANS.TBL:位于pxeboot目录下,是ISO9660文件系统上的一个文件,它被用于提供比ISO9660标准约定的基本文件名更加灵活的文件名。
efiboot.img:位于images目录下,efi格式的引导镜像。
efidisk.img:位于images目录下,efi格式的磁盘映像文件。
install.img:位于images目录下,内核映像文件。
isolinux:iso格式的linux,存放启动安装界面时所用到的内核、应用程序、图片等文件。
initrd.img:光盘启动时所需要的内存虚拟磁盘文件。
vmlinuz:光盘启动时所需要的可引导的压缩内核文件,功能类似于BootLoader,事实上是一个改装后的grub,由这个内核自动启动一个与这个内核相匹配的initrd文件,并启动一个提供安装界面的应用程序,这个应用程序所需要的文件都位于这个isolinux目录下。
boot.msg:提供安装界面时的菜单。
splash.jpg:安装界面时的背景图片,格式为640*480的jpg图片。
isolinux.bin:提供菜单中的各个实际的功能参数。
isolinux.cfg:提供上面软件的实际的配置,也就是菜单中各个选项的实际的功能。
vesamenu.c32:启动菜单外观绘制拓展工具,将grub.conf、splash.jpg、boot.msg文件整合并提供给用户。
memtest:内存测试工具。
grub.conf:安装光盘所提供的grub的配置文件,该文件中的内容为菜单中的项目,而实际上这个菜单中的各个项目即为传递给内核的参数。
====================================================================================
4、pxe实现流程
PXE 实现的前提:
Client:
1、网卡支持网络引导(支持自身通过网络获取 IP 并能够将获取的网络信息配置到网卡上);
2、通过 DHCP 服务器查找 bootloader、vmlinuz、ramdisk 等启动安装过程所依赖的文件的网络位置;
3、客户机通过 DHCP 所提供的服务器所提供的 PXE 的配置文件开始尝试获取 Bootloader、vmlinuz、ramdisk...(在安装光盘的 image 目录下有名为 pxeboot 的目录,该目录下有专用于提供网络启动的内核与镜像文件);
4、PXE 启动所需的文件:
安装光盘的 pxeboot 目录下的 vmlinuz、initrd.img;
安装光盘的 isolinux 目录下的 boot.msg、vesmenu.c32、splash.jpg、isolinux.cfg(该文件必须存放于 tftp 中的专用目录中,其目录名为 pxelinux.cfg,而该文件需重命名为 default);
安装软件 syslinux 提供的 pxelinux.0(相当于 Bootloader);
5、需要在 DHCP 服务器中指定 tftp 服务器的地址和文件名;
6、在服务器中提供安装软件所需要的安装树;
PXE依赖的文件:
1、安装光盘下images/pxeboot目录下的vmlinuz和initrd.img文件。
vmlinuz:实现内核功能。
2、安装光盘下的isolinux目录下的boot.msg、vesamenu.c32、splash.jpg文件。
boot.msg:提供选择安装、升级或救援的菜单。
splash.jpg:提供背景图片。
3、由syslinux软件包提供的/usr/share/syslinux/pxelinux.0文件。
pxelinux.0:当客户端第一次启动的时候除了从DHCP获取地址外还需要DHCP告知下一台服务器的位置,而客户端第一次向文件服务器获取资源时首先就需要取得pxelinux.0这个文件。
4、安装光盘下的isolinux/isolinux.cfg文件,作为pxelinux.0的配置文件。
需要在tftp目录下创建一个名为pxelinux.cfg的目录,并将isolinux.cfg文件复制到该目录下并重命名为default。
PXE的实现过程:
1、配置DHCP,通过DHCP指定TFTP的位置。
2、TFTP中存放用于启动系统的镜像文件,在这些文件中需要修改pxelinux.cfg/default文件的默认参数,需要给append的后面传递ks的位置。
3、配置kickstart的配置文件,并通过web的方式传递给客户端,同时需要注意在install之下需要使用url的方式指定安装位置,并且使用zerombr和text指定强制删除磁盘上的分区信息。
4、通过httpd传递软件包的位置,并将这个位置写入到kickstart的配置文件的url以及repo的位置。
配置 PXE 安装的详细过程:
1、配置DHCP服务器
# yum -y install dhcp
# vim /etc/dhcp/dhcpd.conf
自定义subnet:
subnet 192.168.2.0 255.255.255.0 {
range 192.168.2.100 192.168.2.150;
option domain-name-servers ks.example.com(设置域名)
option routers 192.168.2.1;
next-server 192.168.2.51;
filename "pxelinux.0";
}
注意:切记注释默认配置文件中的两个domain-name的配置。
# service dhcpd restart
# tail -f /var/log/messages
2、配置tftp-server
# yum -y install xinetd tftp-server tftp
# chkconfig xinetd on
# chkconfig tftp on
# service xinetd start
# ss -tunlp | grep xinetd
3、准备安装树
# mkdir /var/www/html/centos6
# mount --bind /media/cdrom /var/www/html/centos6
# service httpd start
4、准备tftpboot下的文件
# yum -y install syslinux
# cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
# cp /media/cdrom/isolinux/{boot.msg,vesamenu.c32,splash.jpg} /var/lib/tftpboot/
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
# mkdir /var/lib/tftpboot/pxelinux.cfg
# cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
5、第一次测试
不在/var/lib/tftpboot/pxelinux.cfg/default文件中添加ks文件的路径时测试本地机器能否通过网络启动,如果能够通过网络启动则说明dhcp和tftp的测试通过。
6、提供kickstart文件
注意:url及repo后的路径要修改为可用安装树的路径;
编辑好kickstart文件后保存至/var/www/html目录下;这里假设为ks.cfg
7、配置引导程序能自动加载此kickstart文件
编辑/var/lib/tftpboot/pxelinux.cfg/default
在label为linux项的append一行后附加:
ks=http://HTTP_SERVER_IP/ks.cfg
8、第二次测试
这篇关于PXE实现流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!