用Linux 搭建 PXE 网络引导环境
本例子中使用了CentOS7.4 minimal 系统,并且关闭了防火墙和selinux,并使用了dhcp、tftp、http和samba服务。
假设PXE服务器是192.168.4.104 ,tftp的根目录在/var/lib/tftpboot下面,以后参数配置,均按此配置。
关闭防火墙和selinux的步骤略。
1、安装DHCP服务
yum -y install dhcp #安装dhcp服务器
vi /etc/dhcp/dhcpd.conf #修改dhcp配置文件
option domain-name "pxe-os.org"; #按你的规划指定一个域名
option domain-name-servers 192.168.1.2; #按你的规划指定一个域名服务器
default-lease-time 600;
max-lease-time 7200;
authoritative;
subnet 192.168.4.0 netmask 255.255.255.0 { #定义一个可供分配的IP地址段
range dynamic-bootp 192.168.4.200 192.168.4.250;
option broadcast-address 192.168.4.255;
option routers 192.168.4.1;
filename "pxelinux.0"; #linux 的pxe引导文件
next-server 192.168.4.104; #指定192.168.4.104为PXE服务器,从这里找PXE启动文件。
}
#编辑完成,启动dhcp服务
systemctl enable dhcpd
systemctl start dhcpd
2、安装tftp服务
yum -y install syslinux xinetd tftp-server #安装tftp所需的组件,tftp的根目录会在:/var/lib/tftpboot目录下。
mkdir /var/lib/tftpboot/pxelinux.cfg #建一个目录放pxe引导脚本
#复制syslinux中引导系统经常用到的几个软件:
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /usr/share/syslinux/memdisk /var/lib/tftpboot/
cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
vi /etc/xinetd.d/tftp #修改守护进程中的tftp-server配置文件
disable = no #把disable =yes改为no
#启动tftp服务
systemctl enable xinetd
systemctl start xinetd
3、安装http服务,这个服务在安装linux系统时使用
yum -y install httpd #安装httpd
rm -f /etc/httpd/conf.d/welcome.conf #删除欢迎页面
vi /etc/httpd/conf/httpd.conf #修改http配置文件,更改下列几项:
ServerAdmin root@srv.pxe-os.org #修改管理员的email地址
ServerName srv.pxe-os.org:80 #按照你的规划修改web server 名称
AllowOverride ALL
DirectoryIndex index.html index.cgi index.php #增加主页文件名
ServerTokens Prod #在文件末尾增加这两行
KeepAlive ON
#结束http配置文件的编辑
vi /var/www/html/index.html #编辑一下页面,主要是验证一下是否正常启动webserver。
<html>
<title> you are wellcom! </title>
<body> this is srv.PXE-OS.org</body>
</html>
vi /etc/httpd/conf.d/pxeboot.conf #把/var/lib/tftpboot设为一个可在http访问的目录,让http可以访问下面的文件:
Alias /tftpboot /var/lib/tftpboot/
<Directory /var/lib/tftpboot/>
Options Indexes FollowSymLinks
# IP address you allow to access
Require ip 127.0.0.1 192.168.4.0/24
</Directory>
#完成编辑,启动http服务
systemctl enable httpd
systemctl restart httpd
#测试一下 http://192.168.4.104看你写的主页能不能正常显示
#测试一下 http://192.168.4.104/tftpboot能不能显示tftp根目录下的文件
4、安装samba服务,这在windows环境中用得上,重点是不用输入用户、口令,任何人都能直接只读打开共享目录。
yum install samba samba-common samba-winbind -y #安装相关组件
mv /etc/samba/smb.conf /etc/samba/smb.conf.backup #备份一下原来的配置文件
vi /etc/samba/smb.conf #创建新的配置文件,请按你的规划修改,内容如下:
[global]
workgroup = pxe-os.org
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
max log size = 50
idmap config * : backend = tdb
cups options = raw
netbios name = pxe-os
map to guest = bad user
dns proxy = no
public = yes
## For multiple installations the same time - not lock kernel
kernel oplocks = no
nt acl support = no
security = user
guest account = nobody
[tftpboot]
comment = Windows 7 Image
path = /var/lib/tftpboot
read only = no
browseable = yes
public = yes
printable = no
guest ok = yes
oplocks = no
level2 oplocks = no
locking = no
#完成编辑,测试参数有没有问题:
testparm
#启动samba服务
systemctl enable samba
systemctl restart samba
5、准备CentOS7.4 minimal 安装文件,就是把ISO文件mount起来,然后把所有文件复制到tftpboot根目录下
mount -o loop /centos7_minical.iso /media
mkdir /var/lib/tftpboot/centos7
cp -R /media/* /var/lib/tftpboot/centos7/
6、准备winpe文件,以及windwos 安装文件,windows的安装方法是先启动winpe,然后在winpe环境下安装你想要的windows系统
mount -o loop /win7u.iso /media #这里我以win7旗舰版为例
mkdir /var/lib/tftpboot/win7u
cp -R /media/* /var/lib/tftpboot/win7u/
mkdir /var/lib/tftpboot/winpe
cp winpe.iso /var/lib/tftpboot/winpe #winpe的ISO文件,使用你信得过的、干净的,一般我是用windows automated Installation Kit(在官网上免费下载)自建一个,此处不展开叙述
#修改权限,将这两个文件夹的所有人和组改为nobody,以便所有人都能访问
7、写PXE启动脚本,如果你想脚本只对某台电脑有效,就用它的mac以01-mac-address的格式命名脚本,如果找不到自己mac地址命名的脚本pxe会跑default脚本,也可以用ip地址的十六进制格式命名脚本,此处略。
vi /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32 #指定默认的选单界面
timeout 50 #在选单界面停留5秒,如果没有输入执行选单中的第一项
menu title ######### PXE Boot Menu ##########
label 1 #第一项,本地硬盘引导,注意这只是通用方法,取决于你硬盘上操作系统的引导器,可能有时候会引导不起来,此处略
menu label ^1) Boot from local drive
localboot
label 2 #第二项,引导CentOS7的安装程序,如果你要做无盘站请参考其他资料
menu label ^2) Install CentOS 7
kernel centos7/images/pxeboot/vmlinuz
append initrd=centos7/images/pxeboot/initrd.img method=http://192.168.4.104/tftpboot/centos7 devfs=nomount
label 3 #第三项,引导一个winpe无盘系统,然后你需要在winpe界面下 net use y: \\192.168.4.104\tftpboot\win7u 再从y:上面setup来安装
menu label ^3) Install win7u
kernel memdisk
INITRD winpe/winpe_amd64.iso
append iso raw
#编辑完成,打开你主板上pxe引导选项,来试下pxe引导吧。
用Linux 搭建 PXE 网络引导环境的更多相关文章
- 2019.03.03 - Linux搭建go语言交叉环境
编译GO 1.6版本以上的需要依赖GO 1.4版本的二进制,并且需要把GOROOT_BOOTSTRAP的路径设置为1.4版本GO的根目录,这样它的bin目录就可以直接使用到1.4版本的GO 搭建go语 ...
- Linux下smokeping网络监控环境部署记录
smokeping是一款监控网络状态和稳定性的开源软件(它是rrdtool的作者开发的),通过它可以监控到公司IDC的网络状况,如延时,丢包率,是否BGP多线等:smokeping会向目标设备和系统发 ...
- win10下用Linux搭建python&nodejs开发环境
Win10下用自带Linux系统搭建开发环境 Win10下用自带Linux系统搭建开发环境启用Linux老版本(win10 1709之前):新版本(win10 1709之后)卸载linux老版本新版本 ...
- Linux 搭建Nginx+uWSGI+Django环境
安装环境 sudo apt-get install nginx sudo apt install python3 sudo apt install python3-pip 使用 sudo pip3 i ...
- linux搭建ARM可调式环境
0x00 前言 本文中所介绍的方法目前只测试了单个的demo,并没有拿大型的项目做测试,但是应该是大同小异.这里介绍两种方法,一种是有独立的ARM硬件,另一种是依靠qemu实现的模拟化,其实其本质都是 ...
- Linux搭建PHP+MySQL+Apache环境
环境: CentOS 6.4 MySQL详细安装可参考:http://www.cnblogs.com/yangxia-test/archive/2012/11/12/2766237.html Apac ...
- 如何在linux搭建airtest+chromeweb测试环境--(用命令行运行.air脚本)
大前堤: 如果你需要airtest提供的可视化测试报告,那你的操作系统,一定要有图形化界面. 否则运行你的airtest脚本 会遇到这样的问题 Xlib.error.DisplayNameError: ...
- Linux 搭建批量网络装机
- linux搭建gtk的开发环境
1:在终端中运行以下命令: sudo apt-get install libgtk2.0-dev 2:用以下指令查看是否安装成功: pkg-config --cflags --libs gtk+-2. ...
随机推荐
- spring-第四篇之让bean获取所在的spring容器
1.如上一篇文章所述,有时候bean想发布一些容器事件,就需要先获取spring容器,然后将Event交由spring容器将事件发布出去. 为了让bean获取它所在的spring容器,可以让该bean ...
- web开发jsp页面遇到的一系列问题
一:web总结 1.jsp页面知识点巩固 1.1字符串数字格式化转换 <%@ taglib prefix="fmt" uri="http://java.sun.co ...
- Spring cloud 注册服务小结
服务注册中心:Eureka.Zookeeper.Cousul.Nacos 使用RestTemplate.openFeign做服务调用,底层使用的是Ribbon. Ribbon做了负载均衡,也可以做一个 ...
- 虚拟机VMware,安装中标麒麟系统,64位的,版本6.0,并安装qt
为了使用qt开发,安装中标麒麟系统. 虚拟机中安装,本来安装的是32位麒麟系统,结果发现qt无法安装(官网提供的是64位的run程序). qt安装的是qt-opensource-linux-x64-5 ...
- codeforces 448CPainting Fence
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/y990041769/article/details/37935237 题目:codeforces 4 ...
- Java-技术专区-设计模式-reactor模式
模型: 反应器模式做法是:汽车是乘客访问的主体(Reactor),乘客上车后,到售票员(acceptor)处登记,之后乘客便可以休息睡觉去了,当到达乘客所要到达的目的地后,售票员将其唤 ...
- 实例之跑马灯,函数创建、通过ID获取标签及内部的值,字符串的获取与拼接、定时器的使用
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- CSS-06 外部JS,CSS文件的寻址问题
如果js.css外部文件有使用到相对路径,其相对路径的基准是不一样的 当一个index.html中引入外部的JS和CSS文件时: 在index.css文件中,相对路径的写法是以css文件相对于img图 ...
- C# DataTable、实体相互转换
public static T GetEntity<T>(DataTable table) where T : new() { T entity = new T(); foreach (D ...
- Android 线程池概念及使用
一:使用线程池的原因 在android开发中经常会使用多线程异步来处理相关任务,而如果用传统的newThread来创建一个子线程进行处理,会造成一些严重的问题: 在任务众多的情况下,系统要为每一个任务 ...