PXE引导的步骤:

1、开机后选择网络启动,client端向server端的dhcpd发起获取IP地址的dhcp请求。

2、server端分配IP后,dhcpd会同时根据其配置文件,通过TFTP协议发送引导文件给client端,即bootloader。

3、对于传统Legacy
BIOS,一般使用syslinux提供的pxelinux.0来引导。对于EFI
BIOS,需要使用efi文件引导,一般可使用Grub2。为实现UEFI
SecureBoot,大多数Linux使用shim.efi嵌套调用grub.efi来引导。

4、传统Legacy
BIOS引导,在pxelinux.0引导后,它会请求并加载server端tftpboot目录中,与pxelinux.0同目录下的pxelinux.cfg目录里的default文件,这个文件就是syslinux的引导配置文件,相当于grub2的grub.cfg。

5、EFI
BIOS引导,在shim.efi嵌套引导了grubx64.efi之后,它会请求grubx64.efi同目录下的grub.cfg配置文件,同时加载显示引导菜单。而对于RHEL6来说,它并不支持SecureBoot,所以必须要使用grub-efi
0.97来引导,一般是BOOTX64.efi,同时它会请求同目录下的efidefault配置文件,加载并显示引导菜单。

6、在pxelinux.0/grub加载了引导配置之后,就可以选择引导项安装了,引导项必须要包含内核以及initrd,还可以包含其它的一些引导选项,比如键盘、语言、远程repo、kickstart配置文件等等。

7、内核和initrd加载之后,就可以进到安装界面正常安装了。


——————————————————————————————————————


RHEL6/7 PXE安装测试步骤
(Legacy/EFI)

说明:
RHEL6对EFI支持并不好,所以RHEL6推荐使用Legacy而不是EFI模式来安装。
RHEL7的grubx64.efi无法引导RHEL6的内核。
VMWare虚拟机在EFI模式下PXE
TFTP传输速度比Legacy模式慢很多。
本文测试Server端使用RHEL7.3,第二块网卡ens34用作dhcpd,IP为192.168.3.3。


1、Server端安装如下软件包:
yum install xinetd tftp tftp-server dhcpd syslinux

2、配置好本地网卡的IP地址,网段即DHCP服务器的网段,建议使用一张单独的网卡单独的网段用作dhcpd服务。

3、编辑/etc/dhcp/dhcpd.conf文件,参考如下:
option architecture-type code 93 = unsigned integer 16;

subnet 192.168.3.0 netmask 255.255.255.0
{
    range
192.168.3.10 192.168.3.20;
    option
routers 192.168.3.3;
    next-server
192.168.3.3;

    class
"pxeclients" {
        match
if substring
            (option
vendor-class-identifier, 0, 9) =
            "PXEClient";
        if
option architecture-type = 00:07 or
            option
architecture-type = 00:09 {
                #
EFI BIOS
                filename
"images/shim.efi";
                #
filename "images/BOOTX64.efi";
            }
else {
                #
Legacy non-EFI BIOS
                filename
"pxelinux.0";
            }
    }
}

4、挂载RHEL7安装光盘
RHEL-server-7.3-x86_64-dvd.iso 到
/mnt/rhel7,挂载RHEL6安装光盘 RHEL-server-6.8-x86_64-dvd.iso
到 /mnt/rhel6。

5、准备tftp引导的文件:
mkdir -p /var/lib/tftpboot/pxelinux.cfg
mkdir -p /var/lib/tftpboot/images/rhel7
mkdir -p /var/lib/tftpboot/images/rhel6

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /mnt/rhel7/isolinux/isolinux.cfg
/var/lib/tftpboot/pxelinux.cfg/default
cp /mnt/rhel7/isolinux/boot.msg
/mnt/rhel7/isolinux/vesamenu.c32 /var/lib/tftpboot/

cp /mnt/rhel7/isolinux/vmlinuz
/mnt/rhel7/isolinux/initrd.img
/var/lib/tftpboot/images/rhel7/
cp /mnt/rhel6/isolinux/vmlinuz
/mnt/rhel6/isolinux/initrd.img
/var/lib/tftpboot/images/rhel6/

touch /var/lib/tftpboot/images/grub.cfg
touch /var/lib/tftpboot/images/efidefault
cp /boot/efi/EFI/redhat/shim.efi
/var/lib/tftpboot/images/
cp /boot/efi/EFI/redhat/grubx64.efi
/var/lib/tftpboot/images/
cp /mnt/rhel6/EFI/BOOT/BOOTX64.efi
/var/lib/tftpboot/images/

如果当前server不是RHEL7的EFI模式安装的,则需要从RHEL7光盘中提取shim.efi和grubx64.efi:
cp
/mnt/rhel7/Packages/grub2-efi-2.02-0.44.el7.x86_64.rpm  /tmp/
cp
/mnt/rhel7/Packages/shim-0.9-2.el7.x86_64.rpm  /tmp/
rpm2cpio /tmp/grub2-efi-2.02-0.44.el7.x86_64.rpm | cpio
-dimv
rpm2cpio /tmp/shim-0.9-2.el7.x86_64.rpm | cpio -dimv
cp /tmp/boot/efi/EFI/redhat/shim.efi
/var/lib/tftpboot/images/
cp /tmp/boot/efi/EFI/redhat/grubx64.efi
/var/lib/tftpboot/images/

Server端的tftpboot目录结构参考如下:
[root@RHEL73 /]# tree /var/lib/tftpboot/
/var/lib/tftpboot/
├── boot.msg
├── images
│   ├── BOOTX64.efi
│   ├── efidefault
│   ├── grub.cfg
│   ├── grubx64.efi
│   ├── rhel6
│  
│   ├── initrd.img
│  
│   └── vmlinuz
│   ├── rhel7
│  
│   ├── initrd.img
│  
│   └── vmlinuz
│   └── shim.efi
├── pxelinux.0
├── pxelinux.cfg
│   └── default
└── vesamenu.c32

4 directories, 13 files

6、编辑xinetd的tftp配置文件,使tftp
server生效。
vim /etc/xinetd.d/tftp
将disable = yes 改成 disable = no,保存退出

7、将RHEL安装光盘的挂载目录使用NFS
export出去。
vim /etc/exports 
/mnt/rhel6      *(ro)
/mnt/rhel7      *(ro)
/mnt/           *(ro)

8、重启必须的服务。
systemctl restart dhcpd
systemctl restart xinetd
systemctl restart nfs

9、对于Legacy
BIOS模式PXE引导安装,client端通过DHCP获取到地址之后,会通过TFTP协议 get
pxelinux.0这个引导文件,然后会继续get
pxelinux.cfg目录下的default文件,加载之后显示引导菜单。下面给出pxelinux.cfg/default引导配置文件的样例。

如果只是想通过把光盘挂载在远程NFS,通过PXE启动到安装界面手动配置安装,可参考如下:
label rhel7+pxe
  menu label ^Install RHEL
7.3 via PXE+Kickstart
  menu default
  kernel
images/rhel7/vmlinuz
  append
initrd=images/rhel7/initrd.img inst.repo=nfs:192.168.3.3:/mnt/rhel7/

label rhel6+pxe
  menu label ^Install RHEL
6.8 via PXE+Kickstart
  # menu default
  kernel
images/rhel6/vmlinuz
  append
initrd=images/rhel6/initrd.img repo=nfs:192.168.3.3:/mnt/rhel6/ ip=dhcp lang=en
keymap=us

在实现了上面的PXE+NFS引导手动安装之后,如果想使用Kickstart全自动安装,则需要对上面的配置稍作修改:
label rhel7+pxe
  ...
  append
initrd=images/rhel7/initrd.img inst.ks=nfs:192.168.3.3:/mnt/ks7.cfg

label rhel6+pxe
  ...
  append
initrd=images/rhel6/initrd.img ks=nfs:192.168.3.3:/mnt/ks6.cfg
 


/mnt/ks7.cfg和ks6.cfg就是Kickstart的配置文件,由于Kickstart配置比较复杂,不在本文讨论范围内。

10、对于EFI模式PXE引导安装,RHEL6和RHEL7是不一样的,这里不推荐RHEL6使用EFI方式安装。

11、对于EFI模式下的RHEL7
PXE引导,需要dhcpd.conf指定filename "images/shim.efi",以支持UEFI
SecureBoot。通过TFTP把shim.efi加载后会继续嵌套加载引导同目录下的grubx64.efi,然后grub会获取同目录下的grub.cfg以显示引导菜单。下面给出grub.cfg引导配置文件的样例:

如果只是想通过把光盘挂载在远程NFS,通过PXE启动到安装界面手动配置安装RHEL7,可参考如下:
menuentry 'Install RHEL 7.3 via [UEFI] PXE+Kickstart' {
    linuxefi
images/rhel7/vmlinuz inst.repo=nfs:192.168.3.3:/mnt/rhel7/
    initrdefi
images/rhel7/initrd.img
}

在实现了上面的PXE+NFS引导手动安装之后,如果想使用Kickstart全自动安装RHEL7,可参考如下:
menuentry 'Install RHEL 7.3 via [UEFI] PXE+Kickstart' {
    linuxefi
images/rhel7/vmlinuz inst.ks=nfs:192.168.3.3:/mnt/ks7.cfg
    initrdefi
images/rhel7/initrd.img
}

12、对于EFI模式下RHEL6
PXE引导,需要dhcpd.conf指定filename "images/BOOTX64.efi",它其实是grub
0.97。通过TFTP加载了BOOTX64.efi之后它会继续加载同目录下的efidefault引导配置文件,并显示引导菜单。下面给出efidefault引导配置文件的样例:
如果只是想通过把光盘挂载在远程NFS,通过PXE启动到安装界面手动配置安装RHEL6,可参考如下:
default=0
timeout=3
title Install RHEL 6.8 via [UEFI] PXE+Kickstart
root (nd)
kernel /rhel6/vmlinuz repo=nfs:192.168.3.3:/mnt/rhel6/ ip=dhcp lang=en
keymap=us
initrd /rhel6/initrd.img

在实现了上面的PXE+NFS引导手动安装之后,如果想使用Kickstart全自动安装RHEL6,可参考如下:
default=0
timeout=3
title Install RHEL 6.8 via [UEFI] PXE+Kickstart
root (nd)
kernel /rhel6/vmlinuz ks=nfs:192.168.3.3:/mnt/ks6.cfg
initrd /rhel6/initrd.img

13、启动client端机器,使之和server端网络能通。正常情况下,client端应该能获取到IP地址,并根据TFTP获取到的相应的引导文件,引导到RHEL默认的安装界面,或通过kickstart自动开始安装了。

14、如果整个过程中有问题,可以查看server端的日志,/var/log/messages,dhcpd每次给PXE分配地址、tftp发送文件给client端,以及client端挂载NFS的目录,都会在这个文件里面有记录,一般来说看messages这个文件,大概就能判断出来问题出在什么地方。


——————————————————————————————————————


Kickstart配置文件相关

RHEL提供了一个图形化的配置工具system-config-kickstart,默认没有安装,需要手动安装。但是这个工具在编辑硬盘分区时,不支持使用LVM,这个比较麻烦,而对于服务器使用的Linux来说LVM管理磁盘是必不可少的。

不过好在RHEL6/7的kickstart都提供了自动LVM分区,实测同时能在Legacy和EFI模式下正常分区。实际上这个自动分区,跟图形安装界面中默认的自动分区方式是完全一样的。下面是ks文件的引导和自动分区部分的样例:
# Use NFS installation media
nfs --server=192.168.3.3 --dir=/mnt/rhel7
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
autopart

如果想生成当前系统的配置,可以使用命令
system-config-kickstart --generate
ks.cfg,这会在当前目录生成一个ks.cfg的配置,当然生成的这个基本上是没法直接用的,还是需要用图形界面的system-config-kickstart根据具体需求修改刚生成的ks.cfg。

不管用哪种方式安装完成RHEL后,其安装程序anaconda都会自动生成一个kickstart的配置文件,位于/root/anaconda-ks.cfg。


使用PXE+NFS EFI引导安装RHEL6/7以及Kickstart安装的更多相关文章

  1. 使用EFI引导从硬盘(U盘)安装Win7的图文教程

    目前仅支持vista后的64位系统 大部分使用EFI引导安装Win7的教程都是采用光盘启动安装,虽然光盘安装比较简单,但是对于没有光驱的朋友来说还是相当不便,更不用说光盘安装的两大缺点了,一速度慢,二 ...

  2. Centos安装TFTP/NFS/PXE服务器网络引导安装系统

    客户端网卡要求支持以PXE启动,配置都在服务端进行,通过PXE网络启动安装系统流程: 客户端以PXE启动发送DHCP请求: 服务器DHCP应答,包括客户端的IP地址,引导文件所在TFTP服务器: 客户 ...

  3. Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4

    PXE简介 PXE,全名Pre-boot Execution Environment,预启动执行环境:通过网络接口启动计算机,不依赖本地存储设备(如硬盘)或本地已安装的操作系统:由Intel和Syst ...

  4. RHEL7下PXE+NFS+Kickstart无人值守安装操作系统

    RHEL7下PXE+NFS+Kickstart无人值守安装操作系统 1.配置yum源 vim /etc/yum.repos.d/development.repo [development] name= ...

  5. 手把手VirtualBox虚拟机下安装rhel6.4 linux 64位系统详细文档

    下面演示安装的是在VirtualBox里安装rhel 6.4 linux 64位系统. 一.VirtualBOX 版本. 二.虚拟机的配置. 1.现在开始演示安装,一起从零开始.点击“新建”,创建新的 ...

  6. mini2440 uboot使用nfs方式引导内核,文件系统

    mini2440 uboot使用nfs方式引导内核,文件系统 成于坚持,败于止步 看了一段时间的u-boot了,到今天才真正完全实现u-boot引导内核和文件系统,顺利开机,在此记录完整过程 1.首先 ...

  7. 手把手VirtualBox虚拟机下安装rhel6.4 linux位系统详细文档

    使用Virtual Box,感觉跟Vmware差不多,我的本子的系统是win7 64位. 下面演示安装的是在VirtualBox里安装rhel 6.4 linux 32位系统.32位系统安装和 64位 ...

  8. 一次修复linux的efi引导的集中方法总结记录

    本文通过MetaWeblog自动发布,原文及更新链接:https://extendswind.top/posts/technical/grub_uefi_repair 起因:EFI分区被删除导致引导问 ...

  9. 在VMware中安装RHEL6.2(下)—— RHEL系统安装

    一. 打开安装好的虚拟机,因为上一篇我们未设置任何RHEL的安装源,所以它会如下图提示: 二. 图上标识为两种更改光盘设置的方法,物理或虚拟光盘皆可. 1. 选择①: 2. 选择②,点击设置...: ...

随机推荐

  1. 简述Sql Server中常用的数据库对象(面试题)

    1.表(Table ) 数据库中的表与我们日常生活中使用的表格类似,它也是由行(Row) 和列(Column)组成的.列由同类的信息组成,每列又称为一个字段,每列的标题称为字段名.行包括了若干列信息项 ...

  2. HDU 1394 Minimum Inversion Number【 树状数组 】

    题意:给出n个数,每次可以把第一个数挪到最后一个位置去,问这n种排列里面的最小逆序对数 先把最开始的逆序对数求出来 然后对于一个数a[i],比它小的数有a[i] - 1个,比它大的数有n - a[i] ...

  3. 洛谷P1494 [国家集训队]小Z的袜子

    Code: #include<cstdio> #include<iostream> #include<algorithm> #include<cstring& ...

  4. Spring jar包功能

    1.spring.jar 是包含有完整发布模块的单个jar 包. 2. org.springframework.aop 包含在应用中使用Spring的AOP特性时所需的类. 3. org.spring ...

  5. luogu P1586 四方定理(背包)

    题意 题解 首先吐槽一下体面的第一句话.反正我不知道(可能是因为我太菜了) 可能没有睡醒,没看出来是个背包. 但告诉是个背包了应该就好做了. #include<iostream> #inc ...

  6. [CTSC2007][APIO2007]数据备份Backup

    题目:BZOJ1150.codevs1615.洛谷P3620 题目大意:有n个点,k条链,每个点离原点有一定的距离.要你用k条链连接2k个点,使得k条链的长度最短. 解题思路:毕竟是CTSC级别的题目 ...

  7. 【Computer Vision】图像单应性变换/投影/仿射/透视

    一.基础概念 1. projective transformation  = homography = collineation. 2. 齐次坐标:使用N+1维坐标来表示N维坐标,例如在2D笛卡尔坐标 ...

  8. URAL 2027 2028 两个有趣的题

    这两个题,讲的是有一种奇怪的语言,代码是一种二维的矩阵. 前一个题,是根据所给的要求,写一个简单的解释器. 后一个题,是用那种语言写一个简单的小程序. 挺有意思的,所以在这里纪念一下.顺便那个语言的原 ...

  9. FS,FT,DFT,DFS和DTFT的关系

    对于初学数字信号(Digital Signal Processing,DSP)的人来说,这几种变换是最为头疼的,它们是数字信号处理的理论基础,贯穿整个信号的处理. FS:时域上任意连续的周期信号可以分 ...

  10. VT-x is disabled in the BIOS. (VERR_VMX_MSR_VMXON_DISABLED)

    参考以下文章: http://94it.net/a/jingxuanboke/2014/0717/368367.html