本例子中使用了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,以便所有人都能访问

chown -R nobody:nobody /var/lib/tftp/win7u
chown -R nobody:nobody /var/lib/tftp/winpe

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 网络引导环境的更多相关文章

  1. 2019.03.03 - Linux搭建go语言交叉环境

    编译GO 1.6版本以上的需要依赖GO 1.4版本的二进制,并且需要把GOROOT_BOOTSTRAP的路径设置为1.4版本GO的根目录,这样它的bin目录就可以直接使用到1.4版本的GO 搭建go语 ...

  2. Linux下smokeping网络监控环境部署记录

    smokeping是一款监控网络状态和稳定性的开源软件(它是rrdtool的作者开发的),通过它可以监控到公司IDC的网络状况,如延时,丢包率,是否BGP多线等:smokeping会向目标设备和系统发 ...

  3. win10下用Linux搭建python&nodejs开发环境

    Win10下用自带Linux系统搭建开发环境 Win10下用自带Linux系统搭建开发环境启用Linux老版本(win10 1709之前):新版本(win10 1709之后)卸载linux老版本新版本 ...

  4. Linux 搭建Nginx+uWSGI+Django环境

    安装环境 sudo apt-get install nginx sudo apt install python3 sudo apt install python3-pip 使用 sudo pip3 i ...

  5. linux搭建ARM可调式环境

    0x00 前言 本文中所介绍的方法目前只测试了单个的demo,并没有拿大型的项目做测试,但是应该是大同小异.这里介绍两种方法,一种是有独立的ARM硬件,另一种是依靠qemu实现的模拟化,其实其本质都是 ...

  6. Linux搭建PHP+MySQL+Apache环境

    环境: CentOS 6.4 MySQL详细安装可参考:http://www.cnblogs.com/yangxia-test/archive/2012/11/12/2766237.html Apac ...

  7. 如何在linux搭建airtest+chromeweb测试环境--(用命令行运行.air脚本)

    大前堤: 如果你需要airtest提供的可视化测试报告,那你的操作系统,一定要有图形化界面. 否则运行你的airtest脚本 会遇到这样的问题 Xlib.error.DisplayNameError: ...

  8. Linux 搭建批量网络装机

  9. linux搭建gtk的开发环境

    1:在终端中运行以下命令: sudo apt-get install libgtk2.0-dev 2:用以下指令查看是否安装成功: pkg-config --cflags --libs gtk+-2. ...

随机推荐

  1. HttpUrlConnection工具类

    package com.ligotop.core.utils; import com.ligotop.core.exceptions.BusinessException; import java.io ...

  2. Cnblogs 的 MetaWeblog 的接口发生了变化

    Cnblogs 的 MetaWeblog 的接口发生了变化 */--> Cnblogs 的 MetaWeblog 的接口发生了变化 最近把 emacs 重新配置了一下,把 cnblogs 包也重 ...

  3. python学习第六天--匿名函数、过滤、映射

    匿名函数 lambda表达式 过滤器 filter(判断函数,可迭代对象) 会根据提供的函数对指定序列做过滤 映射 map(判断函数,可迭代对象) 会根据提供的函数对指定序列做映射

  4. yum安装时出现No more mirrors to try.

    可能原因:可能是不正常删除造成的 解决方法: yum clean allyum makecacheyum -y update 然后重新安装

  5. 04 volatile关键字实现原理

    volatile关键字实现原理 1.volatile关键字的语义分析 作用:让其他线程能够马上感知到某个线程多某个变量的修改 保证可见性 对共享变量的修改,其他线程能够马上感知到 保证有序性 在重排序 ...

  6. 录制rtsp音视频

    1.使用ffmpeg来录制rtsp视频 视频 ffmpeg -y -i rtsp://172.16.23.66:554/h264major -vcodec copy -f mp4 record.mp4 ...

  7. protocols - 协议定义文件

    描述 该文件为普通 ASCII 文件,它描述了 TCP/IP 子系统中各类 DARPA internet 协议族.你应该参考这个文件, 而不是使用 ARPA 的 include 文件中的号码, 更不必 ...

  8. raw, SOCK_RAW - Linux IPv4 raw socket.

    总 览 #include <sys/socket.h> #include <netinet/in.h> raw_socket = socket(PF_INET, SOCK_RA ...

  9. zabbix入门之监控MySQL

    zabbix入门之监控MySQL 这里使用的是zabbix官方自带的MySQL监控模板. 首先确保在被监控主机安装zabbix-agent.zabbix-sender,并且将主机加入监控节点.具体操作 ...

  10. 【LeetCode】队列 queue(共8题)

    [346]Moving Average from Data Stream [353]Design Snake Game [363]Max Sum of Rectangle No Larger Than ...