PXE启动服务器及客户端镜像制作

PXE启动服务器及客户端镜像制作基于CentOS6的PXE无盘系统制作,包含服务器端必要服务的设置开启,客户端镜像文件系统,根文件系统的制作,PXE选单的制作.

大家好,又见面了,我是你们的朋友全栈君。

说明: 本文基于CENTOS6_x86_64操作系统, 所需的软件安装推荐使用yum以简化安装流程.关于YUM源的设定请参照本文最后一章的说明. 如使用7.0以上版本的RHEL/CentOS制作,服务的开启等通过systemctl命令管理,请自行查找使用方法.

切记不要将DHCP Server网口连到非本地测试网络外的其他网络,会导致其他网络IP分配异常.


所需软件和服务:

服务器端

DHCP:为客户端分配IP

TFTP:Tiny FTP, 传送PXE Menu, Kernel, Initrd等文件

NFS-utils:网络文件系统,可供Client挂载,存储文件等

Rpcbind:NFS的守护进程

Syslinux:提供PXE启动引导文件pxelinux.0


客户端

需要先在本机硬盘内完整安装一遍Linux操作系统,然后将该操作系统的镜像稍作修改后拷贝到nfs服务的启动目录内,以后相同硬件平台的客户端机器都可以从该目录启动和挂载根文件系统,实现PXE无盘操作.

客户端需安装dracut和dracut-network,用于制作initrd启动镜像文件,dracut-network会为镜像内添加nfs等网络支持,如不安装会出现PXE启动过程中无法识别nfs的问题.


以下为正文,所有操作均使用root用户权限完成.

第1章 服务器端软件的安装,配置及启动

1.1 设定本机固定IP:

 将要提供PXE启动服务的网口设定为固定IP 192.168.1.5,并重新启动网络, 查看IP是否生效. 此为Linux基本操作,不再详述.

 
1.2 DHCP

 1.2.1DHCP安装

yum install -y dhcp


1.2.2修改DHCP配置文件

vi /etc/dhcp/dhcpd.conf


内容如下,注意分号一定不能少

ddns-update-style none;

ignore client-updates;

default-lease-time -1;

max-lease-time -1;

authritative;


subnet 192.168.1.0 netmask 255.255.255.0 {

range 192.168.1.100 192.168.1.200;

next-server 192.168.1.5;               

filename “pxelinux.0”;

}



1.2.3重启DHCP,并加入开机自动启动: 

service dhcpd restart

chkconfig dhcpd on


1.2.4关闭防火墙,并确认防火墙是否关闭成功

service iptables stop 

chkconfig iptables off

service iptables status


彻底关闭防火墙的方法: 

vi /etc/selinux/config


将 SELINUX=enforcing 改成:

SELINUX=disabled

重启系统后生效


1.2.5检查DHCP server是否工作:可使用个人工作电脑连接到该server,若能正确分到192.168.1.100~192.168.1.200之间的IP,则说明DHCP工作正常.

 
 
 1.3 TFTP

 1.3.1建立文件夹

mkdir -p /pxeserver/tftpboot

mkdir -p /pxeserver/models


1.3.2TFTP安装

yum install -y tftp-server


1.3.3修改TFTP配置文件

vi /etc/xinetd.d/tftp


只需修改如下两处

server_args = -s /pxeserver/tftpboot #改成刚刚新建的地址

disable = no                         #disable改为no


1.3.4 重启TFTP,并加入开机自动启动

service xinetd restart

chkconfig xinetd on

1.4 NFS

1.4.1NFS安装

yum install -y nfs-utils rpcbind


1.4.2修改NFS配置文件

vi /etc/exports


添加如下内容:

/pxeserver/models               192.168.1.0/24(rw,async,no_root_squash)


1.4.3重启rpcbind,nfs,并加入开机自动启动

service rpcbind restart

chkconfig rpcbind on

service rpcbind restart

chkconfig nfs on


1.4.4检查nfs文件夹是否发布成功

exportfs


应该可以看到如下内容:

/pxeserver/models

                             192.168.1.0/24


1.5 syslinux

1.5.1syslinux安装

yum install -y syslinux


1.5.2 拷贝PXE引导文件pxelinux.0到tftpboot

cp /usr/share/syslinux/pxelinux.0  /pxeserver/tftpboot


1.5.3拷贝内核vmlinuz和启动镜像initrd到/pxeserver/tftpboot

从客户端的本地镜像/boot下拷贝过来,initrd会在客户端用dracut生成后再拷贝,后面2.6.2节有详细介绍


1.5.4创建配置文件,即PXE启动时看到的菜单相关的文件  

mkdir -p /pxeserver/tftpboot/pxelinux.cfg

vi /pxeserver/tftpboot/pxelinux.cfg/default


添加如下内容:

default auto

label auto

prompt 0

kernel vmlinuz-xxx  

append initrd=initrd-xxx.img root=nfs:192.168.1.5:/pxeserver/models/xxx selinux=0 ip=dhcp rw vga=0x314


#以上kernel file和initrd的文件名中xxx的最好与/pxeserver/models/xxx路径中一致,

#取决于客户端建立镜像时使用的名称,建议以机器型号命名,如本文第2部分使用DL360G9代替xxx

1.6 /pxeserver路径下的结构如下

PXE启动服务器及客户端镜像制作



1.7 服务器端配置完成后重启一遍,再用service指令查看一下dhcp xinetd nfs是否正常启动,防火墙是否关闭.


  
  


 第2章 客户端制作文件系统镜像及启动文件镜像


 2.1 建立/pxeserver/models/xxx路径 

 mkdir -p /pxeserver/models/DL360G9       #此处以DL360G9为例建立路径

 mkdir -p /pxeserver/tftpboot


 
2.2 使用rsync保存整个系统的文件镜像,注意此时不要挂载CD, U盘的大容量存储设备,会被一并添加到镜像,增加镜像的容量.也可用自行添加–exclude=’挂载目录’的方式排除外部存储设备

  rsync -av –exclude=’/proc’ –exclude=’/sys’ –exclude=’/tmp’ –exclude=’/var/tmp’ –exclude=’/etc/mtab’ \

 –exclude=’/pxeserver’ /* /pxeserver/models/DL360G9

 

 #如果客户端系统中有自建路径或文件不想加入镜像的可用 –exclude参数排除

 
  

2.3 在DL360G9路径下自行建立上一步排除的路径,应该注意到这几个路径是fstab内的非本地硬盘挂载点.

 cd /pxeserver/models/DL360G9

 mkdir -p proc sys tmp var/tmp

 cd

 
2.4 删除以太网络配置文件,因为该配置内通常会含有MAC信息,后续其他机器启动时会自动建立该文件,如不删除有可能会造成客户端网卡启动异常.

 rm -f /pxeserver/models/DL360G9/etc/sysconfig/network-script/ifcfg-eth*

 
2.5 修改文件系统挂载点设定文件 etc/fstab

vi /pxeserver/models/DL360G9/etc/fstab

 

 删除其中本地文件系统相关的条目,换成nfs挂载点.

 例如删除如下3条(取决于安装操作系统时的分区layout),CENTOS6的本地文件系统一般是ext4

 

 /dev/mapper/VolGroup-lv_root              /        ext4    defaults        1 1

 UUID=b9db4c59-5da9-49d5-a99d-20629aac803c /boot    ext4    defaults        1 2

 /dev/mapper/VolGroup-lv_home     /home    ext4    defaults        1 2

 

 换成如下一条

 192.168.1.5:/pxeserver/models/DL360G9        /       nfs        defaults      0 0

 


2.6 制作initrd-DL360G9.img 

2.6.1安装dracut和dracut-network

yum install -y dracut dracut-network


2.6.2制作initrd镜像,拷贝kernel文件

dracut initrd-`uname -r`.img `uname -r`

chmod 644 initrd-`uname -r`.img

mv initrd-`uname -r`.img /pxeserver/tftpboot/initrd-DL360G9.img

cp /boot/vmlinuz-`uname -r` /pxeserver/tftpboot/vmlinuz-DL360G9


2.7 打包压缩/pxeserver路径

 cd /      #确认当前路径不在/pxeserver内

 tar -zcvf DL360G9.tar.gz /pxeserver

 
2.8 将生成的压缩文件通过优盘,移动硬盘或者通过nfs上传到服务器端 
  
  



第3章 在服务器端解压缩镜像并配置

3.1 将DL360G9.tar.gz 拷贝到/根目录并用cd / 切换到根目录下
  
3.2 解压缩,会在原有的/pxeserver下将新打包过来的文件和路径都解压出来而不覆盖原来的文件或路径

 [root@localhost /]#tar -zxvf DL360G9.tar.gz 

 
3.3 将vmlinuz-DL360G9和initrd-DL360G9.img 拷贝到/pxeserver/tftpboot路径下
  
3.4 连接测试

 客户端与服务器连接,重启客户端并设定从网络启动,正常启动到登录界面后使用原来在客户端设定的用户名和密码即可登录.

 


 
 第4章 其他

 4.1 PXE启动过程中常见错误及排除方法
  

 网卡报Check cable: 检查服务器端网络是否启动或网线

 DHCP进度条一直转分不到IP: 检查DHCP Server是否正常启动

 TFTP超时: 检查TFTP服务是否启动,防火墙是否关闭,/etc/xinetd.d/tftp内设置是否修改正确

 找不到kernel或启动镜像: 检查pxelinux.cfg/default文件配置是否有错误 或者kernel initrd文件是否正确的放在了

/pxeserver/tftpboot下,initrd要有644属性

 启动过程中无法挂载nfs:检查nfs是否启动正常, pxelinux.cfg/default文件中nfs地址是否有错误

 
4.2 服务器端高级pxelinux.cfg/default选单配置

 使用安装盘中的高级选单:

 将安装光盘中 isolinux路径下的splash.jpg vesamenu.c32 memtest 拷贝到/pxeserver/tftpboot路径下,

 将相同路径下的 isolinux.cfg拷贝到/pxeserver/tftpboot/pxelinux.cfg路径下并改名为default

 

 修改default文件内容如下,主要改动在每一个Label下的Kernel file, initrd file的名称,地址, root挂载点等. Modelname1,2为其他型号机器的范例,依照本文第2,3两部分完成客户端操作系统镜像制作后,Model1,2改为对应的型号名即可.splash.jpg为PXE启动菜单选择界面的背景图片,可以根据尺寸要求(640*480像素)个性化定制.

 

 default vesamenu.c32

 #prompt 1

 timeout 600

 

 display boot.msg

 

 menu background splash.jpg

 menu title Please select corresponding boot image-CentOS6.8

 menu color border 0 #ffffffff #00000000

 menu color sel 7 #ffffffff #ff000000

 menu color title 0 #ffffffff #00000000

 menu color tabmsg 0 #ffffffff #00000000

 menu color unsel 0 #ffffffff #00000000

 menu color hotsel 0 #ff000000 #ffffffff

 menu color hotkey 7 #ffffffff #ff000000

 menu color scrollbar 0 #ffffffff #00000000

 

 label DL360G9 

menu label ^DL360G9 PXE boot

menu default

kernel vmlinuz-DL360

append initrd=initrd-DL360G9.img root=nfs:192.168.1.5:/pxeserver/models/DL360G9 selinux=0 ip=dhcp rw nomodeset vga=0x0314


 label Modelname1

menu label Modelname^1 PXE boot

menu default

kernel vmlinuz-Modelname1

append initrd=initrd-Modelname1.img root=nfs:192.168.1.5:/pxeserver/models/Modelname1 selinux=0 ip=dhcp rw nomodeset vga=0x0314


label Modelname2

menu label Modelname^2 PXE boot

menu default

kernel vmlinuz-Modelname2

append initrd=initrd-Modelname2.img root=nfs:192.168.1.5:/pxeserver/models/Modelname2 selinux=0 ip=dhcp rw nomodeset vga=0x0314

 label local

menu label Boot from ^local drive

localboot 0xffff


 label memtest86

menu label ^Memory test

kernel memtest

append –


4.3 服务器端的设定可以在虚拟机中完成,易于备份和转移.
  
  
4.4 关于YUM源的设定

4.4.1 通过网络YUM源安装

如果服务器能够直接连接到互联网,那么直接联网使用yum是最简便的方式,有时第一次使用yum时会遇到域名不能解析的问题,在/etc/resolv.conf中添加有效的DNS server地址即可,如加入以下一条

nameserver 114.114.114.114


4.4.2使用本地CDROM或安装U盘做YUM源

无法连接到互联网时,用CDROM或U盘做YUM源也是很方便的. 如下以使用安装U盘做YUM源为例介绍如何修改media YUM源.


首先挂载U盘,建议直接挂载到/media :

mount /dev/sdxx /media    #sdxx 为安装U盘所在的分区,建议使用FAT32格式,CENTOS6需要额外安装软件才能支持NTFS


然后修改/etc/yum.repos.d/下的主配置文件CentOS-Base.repo,将其改名以屏蔽使用主配置:

mv CentOS-Base.repo CentOS-Base.repo.bak


最后修改/etc/yum.repos.d/下的CentOS-Media.repo,以使用本地媒体做YUM源:

baseurl=file:///media/xxx

file:///media/xxx

file:///media/xxx

只需将上述三条中的任意一条映射到正确的挂载点即可,可修改第一条,并修改gpgcheck,enabled以开启media YUM源.

baseurl=file:///media

file:///media/xxx

file:///media/xxx

gpgcheck=0

enabled=1

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/149693.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(2)
blank

相关推荐

  • python替换文件的某个字符串_用Python替换文件中的字符串

    python替换文件的某个字符串_用Python替换文件中的字符串将所有这些代码放入一个名为mass_replace的文件中.在Linux或MacOSX下,您可以执行chmodxmass_replace,然后运行此操作.在Windows下,您可以使用pythonmass_replace后跟相应的参数来运行它.#!/usr/bin/pythonimportosimportreimportsys#listofextensionstorepl…

  • nessus安装使用教程_kali linux全部功能教程

    nessus安装使用教程_kali linux全部功能教程一、Nessus介绍Nessus是目前全世界最多人使用的系统漏洞扫描与分析软件。总共有超过75,000个机构使用Nessus作为扫描该机构电脑系统的软件。提供完整的电脑漏洞扫描服务,并随时更新其漏洞数据库。Nessus专业版非免费的;家庭版是免费的,但单次任务只可以扫16个IP,这里注册的是家庭版,注册成功后会给邮箱发送一个激活码。二、安装下载家庭版https://www…

    2022年10月18日
  • Socket编程原理(1)「建议收藏」

    Socket编程原理(1)「建议收藏」[精华]socket编程原理socket编程原理 socket编程原理 1 问题的引入 UNIX系统的I/O命令集,是从Maltics和早期系统中的命令演变出来的,其模式为打开一读/写一关闭(open-write-read-close)。在一个用户进程进行I/O操作时,它首先调用“打开”获得对指定文件或设备的使用权,并返回称为文件描述符的整型数,以描述用户在打开的文件或设备上进行I/O

    2022年10月17日
  • jvm的垃圾回收算法_jvm默认的垃圾回收器

    jvm的垃圾回收算法_jvm默认的垃圾回收器前言相比C语言,JVM虚拟机一个优势体现在对对象的垃圾回收上,JVM有一套完整的垃圾回收算法,可以对程序运行时产生的垃圾对象进行及时的回收,以便释放JVM相应区域的内存空间,确保程序稳定高效的运行,但在真正了解垃圾回收算法之前,有必要对JVM的对象的引用做一个简单的铺垫JVM对象可达性分析算法Java虚拟机中的垃圾回收器采用可达性分析来探索所有存活的对象扫描堆中的对象,看是否能够沿着GCRoot对象为起点的引用链找到该对象,找不到表示可以被回收想象一下,对象在什么情况下会被认为是垃圾对象呢?

    2022年10月25日
  • mac键盘快捷键使用大全_苹果电脑shift是哪个键

    mac键盘快捷键使用大全_苹果电脑shift是哪个键为了让初次用Mac的新手和小白们更快地上手,小编整理了一份Mac常用快捷键列表,虽然都是比较基础的入门知识,但也能帮助到大家更快地学习和查找macOS的键盘快捷键,以此提高电脑的操作效率。Mac与Windows的几个不同按键一切开始前,我们先来认识一下苹果Mac键盘上几个陌生的按键,比如⌘(Command/Cmd)、⌥“Option”、⌃“Ctrl”、⇧“Shift”等等。其中最为独特的就是Mac键盘专有的按键⌘,它叫做“Command”键(缩写叫Cmd,

  • tail命令用法举例

    tail命令用法举例tail命令从指定点开始将文件写到标准输出.tail-ffilename可以方便的查阅正在改变的日志文件,会把filename里最新的内容显示在屏幕上1.命令格式:tail[必要参数][选择参数][文件]  2.命令功能:用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。3.命令参数:-f 循环读取-q 不显示文件名-v 显示文件…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号