环境准备中遇到的问题
首先需要将系统镜像挂载到 /mnt:
#mount /dev/sdd2 /mnt/usb_disk 将U盘挂载
#cp rhel-server-7.6-x86_64-dvd.iso /home 系统镜像拷到本地
#mount -o loop rhel-server-7.6-x86_64-dvd.iso /mnt
问题:ifconfig命令未找到
解决:#cd /sbin 查看此目录下是否有ifconfig,若没有,则需要安装
安装:#sudo yum install net-tools
问题:vim命令未找到
解决:#rpm -qa |grep vim
vim-enhanced-7.0.109-7.el5
vim-minimal-7.0.109-7.el5
vim-common-7.0.109-7.el5
若缺少上面任意一条(如vim-enhanced-7.0.109-7.el5),则执行
#yum -y install vim-enhanced来安装
若三条都没返回,则执行
#yum -y install vim*
问题:如何根据ifconfig显示网口名定位服务器上网口位置
#ethtool -p enp24s0
问题:解决yum源配置
#cd /etc/yum.repos.d
#vim base.repo
[base]
name=redhat
gpgcheck=0
enabled=1
:wq
#yum clean all
#yum makecache
#yum -y install
若有Python版本问题,查看解释器路径:
#whereis python
#/usr/lib/python2.6 /usr/lib64/python2.7
#vim /usr/bin/yum
#! /usr/bin/python 改为 #! /usr/bin/python2.7
#yum -y install
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加载之后,就可以进到安装界面正常安装了。
一、[首先将]找两台服务器,将两台服务器的IPMI端口同时连接到同一交换机,方便PC端管理:
1、将IPMI的IP adress改为动态分配,目的是让三台机器的IP在同一网段;
2、进入BIOS,Server Mgmt——Configuration address source [DHCP]
Server Mgmt——Configuration address source [DynamicBmcDhcp]
保存重启,进入BIOS,BMC Network Configuration下的Station IP adress为交换机分配的IP;
PC端登录Client 和Server的BMC IP,管理界面。
二、开始搭建,Server端使用redhat7.3系统:rhel-server-7.3-x86_64-dvd.iso,通过Legacy模式安装
1、首先找一块Server端的网卡,用作dhcpd,给Client分配IP;
#cd /etc/sysconfig/network-scripts
#vim ifcfg-enp24s0
TYPE=Ehernet
DEVICE=enp24s0
BOOTPROTO=static
IPADDR=1.1.1.2
NETMASK=255.255.255.0
ONBOOT=yes
实际操作图:
2、关闭防火墙及清空策略
#systemctl stop firewalld.service
#systemctl disable firewalld.service
#iptables -F
#iptables -L -n
3、为防止操作过程中缺少相应的安装包,将redhat7.3系统镜像拷贝到系统下,并挂载到本机
#cp rhel-server-7.3-x86_64-dvd.iso /mnt
#mkdir /mnt/rhel7
#mount -o loop rhel-server-7.3-x86_64-dvd.iso /mnt/rhel7
4、Server端安装软件包
#yum install xinetd tftp tftp-server dhcp syslinux
#rpm -qa xinetd tftp tftp-server dhcp syslinux
#yum install xinetd tftp tftp-server dhcp syslinux
5、配置好Server网卡的IP,网段即DHCP服务器的网段,编辑dhcpd.conf文件
#cd /etc/dhcp/
#vim 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";
}
}
}
实际操作图:
6、dhcp根据配置文件,通过tftp发送引导文件给Client,将引导文件全部放入tftpboot文件包下:
pxelinux启动(tftp):配置文件
#mkdir -p /var/lib/tftpboot/pxelinux.cfg #用于存放系统镜像里的default引导文件
#mkdir -p /var/lib/tftpboot/images/rhel7 #用于存放系统镜像里的initrd.img和vmlinuz文件
#cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot #对于传统的LegacyBIOS一般用syslinux提供的pxelinux.0引导
#cp /mnt/rhel7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default #pxelinux.0引导后,请求加载server端tftpboot目录中,与pxelinux.0同目录下的pxelinux.cfg目录里的default文件,这个文件就是syslinux的引导配置文件,相当于grub2的grub.cfg。
#cp /mnt/rhel7/isolinux/boot.msg /mnt/rhel7/isolinux/vesamenu.c32 /var/lib/tftpboot #pxelinux.0/grub加载了引导配置后,就可以选择引导项安装,引导项必须要包含内核以及initrd等
#cp /mnt/rhel7/isolinux/vmlinuz /mnt/rhel7/isolinux/initrd.img /var/lib/tftpboot/images/rhel7/
#touch /var/lib/tftpboot/images/gurb.cfg #为实现UEFI Secureboot,大多数Linux使用shim.efi嵌套调用gurb.cfg来引导
#touch /var/lib/tftpboot/images/efidefault #BOOTX64.efi引导的同时会请求同目录下的efidefault配置文件,加载并显示引导菜单
#cp /mnt/rhel7/EFI/BOOT/BOOTX64.EFI /var/lib/tftpboot/images/ #RHEL6来说,它不支持SecureBoot,所以必须要使用gurb-efi 0.97来引导,一般是BOOTX64.efi
#cp /boot/efi/EFI/redhat/shim.efi /var/lib/tftpboot/images/ #为实现UEFI SecureBoot,大多数Linux使用shim.efi嵌套调用gurb.efi来引导
#cp /boot/efi/EFI/redhat/grubx64.efi /var/lib/tftpboot/images/ #EFI BIOS引导,在shim.efi嵌套引导了grubx64.efi之后,它会请求grubx64.efi同目录下的grub.cfg配置文件,同时加载显示引导菜单
若当前server不是RHEL7的EFI模式安装,则需从RHEL7光盘中提取shim.efi和gurbx64.cfg
#cp /mnt/rhel7/Packages/gurb2-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/gurb2-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/gurbx64.efi /var/lib/tftpboot/images/
#tree /var/lib/tftpboot
实际操作图:
7、编辑xinted的tftp配置文件,使tftp server生效
#vim /etc/xinted.d/tftp
将disable = yes 改成disable = no,保存并退出
实际操作图:
8、将RHEL安装光盘的挂载目录使用NFS export出去
#vim /etc/exports
/mnt/rhel7 *(ro)
/mnt/ *(ro)
实际操作图:
9、重启必须的服务
#systemctl restart dhcpd
#systemctl restart xinetd
#systemctl restart nfs
#systemctl status dhcpd #同时查看xinetd和nfs,是否为active
10、对于Legacy BIOS模式PXE引导安装,client端通过DHCP获取到地址后,会通过TFTP协议get pxelinux.0这个引导文件,然后继续get pxelinux.cfg目录下的default文件,加载之后显示引导菜单,下面为/pxelinux.cfg/default引导配置文件的详例,原配置基础上在 menu end前添加下面label即可:
#vim /var/lib/tftpboot/pxelinux.cfg/default
label rhel7+pxe
menu label ^Install RHEL7.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/
实际操作图:
上述为PXE+NFS引导手动安装,若想使用Kickstart全自动安装,则需对上述配置做修改:
#vim /var/lib/tftpboot/pxelinux.cfg/default
label rhel7+pxe
menu label ^Install RHEL7.3 via PXE+Kickstart
menu default
kernel images/rhel7/vmlinuz
append initrd=images/rhel7/initrd.img inst.ks=nfs:192.168.3.3:/mnt/rhel7/
11、对于EFI模式下的RHEL7 PXE引导,需dhcpd.conf指定filename "images/shim.efi",以支持UEFI SecureBoot。通过TFTP把shim.efi加载后会继续嵌套加载引导通目录下的gurbx64.efi,然后gurb会获取同目录下的grub.cfg以显示引导菜单。下面为/var/lib/tftpboot/images/gurb.cfg配置详例:
#vim /var/lib/tftpboot/images/gurb.cfg
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
}
实际操作图:
若想使用Kickstart全自动安装RHEL7,可参考
#vim /var/lib/tftpboot/images/gurb.cfg
menuentry 'Install RHEL 7.3 via [UEFI] PXE+Kickstart' {
linuxefi images/rhel7/vmlinuz inst.ks=nfs:192.168.3.3:/mnt/rhel7/
initrdefi images/rhel7/initrd.img
}
对于redhat6的系统安装,需要
12、对于EFI模式下RHEL6 PXE引导,需要dhcpd.conf指定filename "image/BOOTX64.efi",它其实是grub 0.97。通过TFTP加载了BOOTX64.efi之后它会继续加载同目录下的efidefault引导配置文件,并显示引导菜单。下面为/var/lib/tftpboot/images/efidefault配置详例:
#vim /var/lib/tftpboot/images/efidefault
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
实际操作图:
若想使用Kickstart全自动安装RHEL7,可参考
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/rhel6/ ip=dhcp lang=en keymap=us
initrd /rhel6/initrd.img
13、启动Client端机器,使之和server端网络能通。正常情况下,Client端应该能获取到IP地址,并根据TFTP获取到相应的引导文件,引导到RHEL默认的安装界面,或通过kickstart自动开始安装。
14、若整个过程中有问题,可查看server端的日志,/var/log/messages,dhcpd每次给PXE分配地址、tftp发送文件给Client端,以及Client端挂载NFS的目录,都会在这个文件里有记录。