PXE实现流程

来源:互联网 发布:mac移动文件到文件夹 编辑:程序博客网 时间:2024/06/06 01:39


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、第二次测试

0 0
原创粉丝点击