简单的网络引导安装CentOS7
实验室有几台电脑,里边装有windows,因为实验需求要给其装入CentOS7。但是这几个电脑无法用U盘引导系统的安装,虽然带有光驱,但是又不想麻烦去买碟片,所以便想到用网络引导系统的安装。
1. 软件需求
dhcpd: 动态分配IP
xinetd: 对服务访问进行控制,这里主要时控制tftp
tftp: 从服务器端下载pxelinux.0、default文件
syslinux: 用于网络引导
httpd: 在网络上提供安装源,也就是镜像文件中的内容
yum install dhcp xinetd syslinux tftp-server httpd

2. 配置
2.1 配置IP
将服务器的IP配置为192.168.100.1,以便与DHCP能够正常启动,后边的TFTP,HTTP都是运行在这个IP上。
[root@Amei tftpboot]# ip addr add 192.168.100.1/ brd + dev p4p1
[root@Amei tftpboot]# ip addr show dev p4p1

2.2 配置DHCP
如果要了解以下DHCP的工作原理以及简单的配置,可以参考前一篇随笔《CentOS7中DHCP配置》,这里在其基础之上增加了:
next-server 192.168.100.1; # tftp server的ip
filename "pxelinux.0";
dhcp的配置文件/etc/dhcp/dhcpd.conf的内容:
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf() man page
#
# . 整体的环境设定
ddns-update-style none;
ignore client-updates;
default-lease-time ;
max-lease-time ;
option domain-name-servers 192.168.100.1;
# 上面是 DNS 的 IP 设定,这个设定值会修改客户端的 /etc/resolv.conf
# . 关于动态分配的 IP
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.101 192.168.100.200;
option routers 192.168.100.1;
option subnet-mask 255.255.255.0;
next-server 192.168.100.1;
# the configuration file for pxe boot
filename "pxelinux.0";
}
启动dhcpd,查看是否有问题,如果没有成功启动需要仔细查看配置是否正确
systemctl start dhcpd.service
2.3 配置TFTP
tftp是由xinetd管理的,所以在需要配置 /etc/xinetd.d/tftp文件,这个文件中只需要改一个参数即可
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
#将此值改为no,表明开启此服务
disable = no
per_source =
cps =
flags = IPv4
}
开启xinetd和tftp服务:
tftp的端口为69,同时xinetd接管了此端口
[root@Amei tftpboot]# systemctl start xinetd
[root@Amei tftpboot]# systemctl start tftp

2.4 文件准备
首先将已经下载好的CentOS的镜像文件挂载到一个目录中,然后复制可引导的、压缩的内核文件vmlinuz,以及包含一些模块和安装文件系统的initrd。因为安装过程中以http的方式提供镜像源,所以这里直接将镜像文件挂在到httpd访问目录中(/var/www/html)。
[root@Amei ~]#mkdir /var/www/html/centos7
[root@Amei ~]# mount -o loop CentOS7..iso /var/www/html/centos7/
复制vmlinuz,和 initrd.img 到TFTP访问目录的centos7子目录中,因为以后会引导其它的系统,所以这里通过子目录将不同的系统区分开。
[root@Amei ~]# mkdir /var/lib/tftpboot/centos7
[root@Amei ~]# cp /var/www/html/centos7/images/pxeboot/initrd.img /var/lib/tftpboot/centos7/
[root@Amei ~]# cp /var/www/html/centos7/images/pxeboot/vmlinuz /var/lib/tftpboot/centos7/
2.5 设置syslinux加载器
vesamenu.c32和menu.c32是syslinux所拥有众多模块中的两个,它们的功能是制定启动器使用什么模式的背景。Vesamenu.c32图形模式,menu.c32文本模式。我选择的时menu.c32。
同时还需要pxelinux.0文件,它对整个引导器的作用就如同内核对系统的作用一般,它可以解释default文件(配置引导菜单的文件)中的每个配置项,并根据配置项做出不同的反应。如等待的时间、启动器背景、启动菜单、内核引导等等。
所以我们需要将这两个文件复制到tftp的访问目录中:
cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
接着就是pxelinux.cfg目录,pxelinux被执行后,它会扫描该目录下是否存在指定的配置文件,如果存在,则引用被制定的配置文件。
default文件存放于pxelinux.cfg目录中,pxelinux程序最后扫描的配置文件名就是default。所以,我们经常把启动器配置项都写入该文件中。
所以我们就要建立pxelinux.cfg,并在此目录下建立default文件,编辑引导菜单。
[root@Amei ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@Amei ~]# emacs /var/lib/tftpboot/pxelinux.cfg/default
default文件内容为:
default menu.c32
prompt
timeout
ONTIMEOUT local menu title ########## PXE Boot Menu ########## label
menu label ^) Install CentOS x64 with HTTP
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=http://192.168.100.1/centos7 devfs=nomount
2.5 检查文件以及服务
此时/var/lib/tftp文件夹的结构应该是这样的:

确保开启dhcpd,xinetd,tftp,http这些服务,在开启的时候没有发生错误,说明配置没问题。
[root@Amei tftpboot]# systemctl start dhcpd.service
[root@Amei tftpboot]# systemctl start xinetd.service
[root@Amei tftpboot]# systemctl start tftp.service
[root@Amei tftpboot]# systemctl start httpd.service
验证httpd是否运行正常:

同时为了防止意外的发生我们需要关闭防火墙和selinux。
[root@Amei tftpboot]# systemctl stop firewalld.service
[root@Amei tftpboot]# setenforce
3. 测试
pxe服务器配置完成后,就可以在此子网中用网络引导安装了,此时和普通的安装系统差别不大,但是要选择从网络引导。

default中定义的菜单

熟悉的安装界面

简单的网络引导安装CentOS7的更多相关文章
- 利用PXE引导安装centos7
# 利用PXE引导安装centos7 # ###简介### > PXE (Pre-boot Execution Environment,PXE client 在网卡的 ROM 中,当计算机引导时 ...
- Centos安装TFTP/NFS/PXE服务器网络引导安装系统
客户端网卡要求支持以PXE启动,配置都在服务端进行,通过PXE网络启动安装系统流程: 客户端以PXE启动发送DHCP请求: 服务器DHCP应答,包括客户端的IP地址,引导文件所在TFTP服务器: 客户 ...
- mac book air 与 virtual box 网络互访 安装centos7 mini
Host-only Adapter 主机模式 虚拟机之间可以访问...主机可以访问虚拟机 NAT 网络地址转换模式(Network A ...
- 折腾一天安装Centos7,以及后面恢复Win7引导的曲折历程
一.下载centos 7 livecd iso 访问镜像网站,http://mirrors.aliyun.com/centos/7.0.1406/isos/x86_64/ 或者直接下载:http:// ...
- VMware中安装CentOS7网络配置静态IP地址,常用配置和工具安装
VMware中安装CentOS7网络配置静态IP地址,常用配置和工具安装在阿里云开源镜像地址下载镜像Index of /centos/7.2.1511/isos/x86_64/http://mirro ...
- 定制kickstart重建CentOS7.5镜像用于U盘引导安装
有什么问题或者疑惑,可以留言,全力解答. ISO 镜像制作 U 盘安装盘 U盘安装CentOS7.4 U盘实现CentOS7.3全自动安装系统 https://www.cnblogs.com/pany ...
- VirtualBox安装CentOS7的网络配置
VirtualBox安装CentOS7的网络配置 这几天在本机VirtualBox安装CentOS时遇到了网络的坑... VirtualBox的下载地址:https://www.virtualbox. ...
- virtualbox安装centos7使用nat+hostonly的网络模式
win环境下的virtualbox下载地址:http://download.virtualbox.org/virtualbox/5.2.0/VirtualBox-5.2.0-118431-Win.ex ...
- U盘安装centos7.1出现dracut问题的超简单解决方法
恰好今天有空,于是抽空回忆一下之前U盘安装CENTOS7时遇到的一个大坑.U盘装系统习惯了,就顺手用大白菜工具刻了一个CentOS 7.1的minimun ISO镜像到U盘,于是噩梦开始了.如果有人像 ...
随机推荐
- Java排序算法——桶排序
文字部分为转载:http://hxraid.iteye.com/blog/647759 对N个关键字进行桶排序的时间复杂度分为两个部分: (1) 循环计算每个关键字的桶映射函数,这个时间复杂度是O(N ...
- 小白搭建一个网站(DouPHP)
1)安装phpStudy_2014_setup.1413444920.exe 并启动数据库 2)将软件自带的WWW实例替换成我发的这个模板(DouPHP),网上也可以下载. 能找到更好模板的也可以不用 ...
- 将javascript函数写在Html标签里
有些时候不想把函数写在script标签里了,想直接在html标签里直接加上js代码,可以这样写: <body onload="javascript:{window.location.h ...
- nyoj 776 删除元素
删除元素 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 题意很简单,给一个长度为n的序列,问至少删除序列中多少个数,使得删除后的序列中的最大值<= 2*最小值 输 ...
- 微信公众平台可通过UnionID机制在多公众号间帐号互通
微信公众平台越来越注重开发者的反馈信息了,这不,微信开放平台提供了UnionID机制,通过获取用户基本信息接口,开发者可通过OpenID来获取用户基本信息,而如果开发者拥有多个公众号,可使用以下办法通 ...
- 【荐】使用eval()、new Function()将JSON字符串转换为JSON对象
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 第一种解析方式:使用eval函数来解析,并且使用j ...
- 《征服 C 指针》摘录5:函数形参 和 空的下标运算符[]
一.函数的形参的声明 C 语言可以像下面这样声明函数的形参: void func(int a[]) { // ... } 对于这种写法,无论怎么看都好像要向函数的参数传递数组. 可是,在 C ...
- sqlserver实现数据库读写分离介绍
对于负载均衡,笔者经常接触的当属Oracle的负载均衡机制.下面我们重点介绍Sql Server 2005是如何实现负载均衡的,感兴趣的朋友可以参考下哈 Internet的规模每一百天就会增长一倍,客 ...
- C#高级编程笔记 2016年10月8日运算符和类型强制转换
1.checked和unchecked 运算符 C#提供了checked 和uncheckde 运算符.如果把一个代码块标记为checked, CLR就会执行溢出检查,如果发生溢出,就抛出overfl ...
- java9
1:StringBuffer(掌握) (1)用字符串做拼接,比较耗时并且也耗内存,而这种拼接操作又是比较常见的,为了解决这个问题,Java就提供了 一个字符串缓冲区类.StringBuffer供我们使 ...