PXE自动安装Linux系统

PXE简介

许多情况下我们手动安装操作系统是不现实的,尤其是当数量较多的时候。这个时候就要借助其他的技术 了。PXE就是其中的一种。
PXE全称是:Preboot Excution Environment 预启动执行环境是由Intel公司研发的基于Client/Server的网络模式,支持远程主机通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统 PXE可以引导和安装Windows,linux等多种操作系统,这里只说Linux不说Windows。
PXE的具体工作有些复杂,不过多介绍,有兴趣的可以自行百度,这里只说实现。以下全部基于虚拟机实现。VM14,Cent7.5

大体流程

1.环境准备
2.检查防火墙和SELinux的设置,确保都是关闭的 
3.安装所需的必要软件包并开启对应的服务
4.准备安装源
5.准备自动应答文件,并放到可以被访问到的地方
6.配置DHCP服务并启动
7.将必要的文件复制到相关目录
8.修改启动菜单,以及一些其他的配置文件
8.启动测试

安装过程

环境准备

首先准备至少两台虚拟机,其中一台作为服务器使用。(基本所有配置操作都是在服务器上客户端机器不需要配置。)还需要至少一个安装源(系统安装镜像文件)
1.将两台虚拟机网卡配置为仅主机模式(主要是和外网隔离,以面影响实体机的DHCP服务)
2.关闭VMware的DHCP服务
在VMware主界面点击“编辑→虚拟网络编辑器”
在打开的界面中选中仅主机类型的连接并勾掉下面的使用本地DHCP服务(如果勾选框灰色,点击更改设置给他管理员权限)

3.给服务器分配一个IP地址,地址建议为静态地址。配置文件如下:

TYPE=Ethernet

BOOTPROTO=staticI

PADDR=192.168.11.2

PREFIX=24

GATEWAY=192.168.11.1

NAME=ens33

DEVICE=ens3

ONBOOT=yes

4.编辑Win下的虚拟网卡配置以便和虚拟机可以通信
打开控制面板→网络和共享中心→更改适配器设置
通常仅主机的连接名称为VMnet1

检查服务器相关设置

确保SELinux和防火墙处于关闭状态。
将/etc/selinux/config文件中的SELINUX=xxx改为SELINUX=disabled并重启。
可以通过命令getenforce查看,如果是disabled或permissive即为关闭状态
执行以下两条命令确保关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

以上是Cent7,如果是6的话

service iptables stop

chkconfig iptables off

安装必要软件

出于方便,软件安装全部使用yum进行安装,如果没有yum源的请自行配置。
执行以下命令安装相关软件并启动服务,DHCP由于需要另外修改配置文件先跳过

yum install httpd dhcp syslinux tftp-server

systemctl start httpd tftp.socket

systemctl enable dhcpd tftp.socket httpd

使用ss -tan 确认TCP80端口已开启
使用ss -unl 确认UDP69端口已开启

准备安装源

此次实验我们通过HTTP作为安装源,所以,只要将我们准备好的安装镜像挂载到HTTP目录下可以访问即可。具体目录是/var/www/html/ 为了方便扩展还可以在此目录下建立几个文件夹,以存放不同版本的系统文件。
具体实现:
1.使用mkdir -p /var/www/html/Centos/7创建文件夹
2.将光盘挂载到/var/www/html/Centos/7目录下
3.在/etc/fstab文件中添加自动挂载信息,通常为
/etc/sr0 /var/www/html/Centos/7 iso9660 default 0 0
4.使用df -h确认挂载信息
5.在主机使用浏览器访问http://192.168.11.2/Centos/7 确认可以看到挂载的安装文件

准备自动应答文件

自动应答文件是整个环节相当重要的部分(其实每一部分都很很重要)自动应答文件的生成可以通过在图形界面下安装system-config-kickstart包使用这个工具在图形界面下生成,或者,系统安装完成后默认在root家目录有一个叫anaconda-ks.cfg的文件,也可以直接修改这个文件。由于图形界面比较简单,这里直接修改anaconda-ks.cfg文件。其中以#开头的行表示注释,如果你没有修改过此文件中的内容,那么应该内容如下(中文为后加):
注:最小化安装文件内容,如果是图形界面,内容会有些许不同

#platform=86, AMD64, or Intel EM64T

#version=DEVEL# System authorization information

auth --useshadow  --passalgo=sha512# Install OS instead of upgrade#选择升级还是安装,install是安装,upgrade是升级

install# Use CDROM installation media#安装介质,这里是需要修改的地方

cdrom# Use text mode install#使用图形安装还是文字界面,通常自动安装我们不需要图形

text# Firewall configuration#防火墙选项,通常选择关闭

firewall --disabled

firstboot --disable

ignoredisk --only-use=sda# Keyboard layouts# old format: keyboard us# new format:

keyboard --vckeymap=us --xlayouts=‘‘# System language

lang en_US.UTF-8

# Network information#安装后网络配置信息,可以将onboot改为on,也可以顺便指定一个hostname

network  --bootproto=dhcp --device=ens33 --onboot=off --ipv6=auto --no-activate

network  --hostname=localhost.localdomain# Reboot after installation#安装之后重启

reboot# Root password# root账号密码,此处的密码是加密后的密码

rootpw --iscrypted $1$HwDDpzbI$JcacPj2.QTbRQgNWUP8hr1# SELinux configuration#SELinux选项

selinux --disabled# System services

services --enabled="chronyd"# Do not configure the X Window System

skipx# System timezone# 时区

timezone Asia/Shanghai# System bootloader configuration

bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda#Clear the Master Boot Record#zerombr #清除MBR# Partition clearing information#clearpart --all --initlabel # 清空磁盘# Disk partitioning information#以下三行是分区信息,注意根据自己的情况进行修改。size单位是MB#part swap --fstype="swap" --size=2048#part / --fstype="xfs" --size=20480#part /boot --fstype="xfs" --size=1024

#要安装的包@开头的是包组,没有@的是单独的包%packages

@core

zsh

%end

%addon com_redhat_kdump --enable --reserve-mb=‘auto‘

%end

看起来很多内容,也有可能有很多不一样,不过没有关系,许多内容并不需要理解,需要改的地方并不多
大概以下几项修改就可以了:
1.安装介质即把cdrom改为以下内容

url --url="http://192.168.11.2/centos/7/"

2.防火墙和SELinux根据自己的需要选择开启或关闭
3.如果没有zerombr和clearpart --all --initlabel,手动添加如果前面有#,去掉
4.去掉分区信息前的#
5.根据自己的需要选择需要安装的包,最小化只有一个core即可
6.将文件保存之后放到可以被HTTP访问到的地方,如/var/www/html/,确保文件权限为644
7.在主机访问http://192.168.11.2/anaconda-ks.cfg 如果可以成功访问,说明此步骤OK

手动修改应答文件有时候可能并不是一个明智的选择,如果没有把握,使用图形工具是更好的选择
需要注意的是,注意应答文件和要安装系统的对应,比如安装6的系统请使用6生成应答文件

配置DHCP服务器

默认情况下DHCP服务在安装完成之后配置文件是空的,也因此DHCP服务必须进行一定的配置才可以启动,DHCP的服务配置文件路径是:/etc/dhcp/dhcpd.conf,通过一个示例来看一下配置文件的 格式
网段:服务器可以分配的地址的网段,可以指定多个
掩码:网段对应的掩码
默认租期:以秒为单位默认的IP地址的租期
最长租期:客户端可以请求一个租期,此项设定用于对此进行限制以秒为单位
地址池:服务器在可分配网段中可以分配的IP地址的范围
DNS:用于客户机从DHCP服务器获取的DNS地址
如下一个示例:

# 指定从DHCP服务器获取的DNS地址option domain-name-servers 114.114.114.114# 默认IP地址的租期

default-lease-time 600;# 最长租期

max-lease-time 7200;# subnet用来指定网段,netmask是掩码

subnet 192.168.11.0 netmask 255.255.255.0

{

# 使用range指定IP地址池

range 192.168.11.3 192.168.11.124;

}

对于一个DHCP服务器以上内容足够了,不过对于PXE还少了两个重要的选项,
next-server 192.168.11.2
filename "pxelinux.0"
next-server用来指定TFTP服务器的位置
filename用来指定要访问TFTP服务器上的哪个文件
也就是说在这里我们的DHCP服务器的配置文件是这样的

option domain-name-servers 114.114.114.114

default-lease-time 600;

max-lease-time 7200;

subnet 192.168.11.0 netmask 255.255.255.0

{

next-server 192.168.11.2;

filename "pxelinux.0";

range 192.168.11.3 192.168.11.124;

}

接下来使用systemctl start dhcpd启动dhcp服务,使用ss -unl查看67端口是会否已经开启

将相关文件复制到TFTP共享目录

TFTP的共享目录在/var/lib/tftpboot/下,考虑到灵活性依旧可以给不同版本的系统单独的目录
这里创建一个7的目录
复制光盘目录中isolinux下的initrd.img和vmlinuz到/var/lib/tftpboot/7目录下
在共享目录下创建一个名为pxelinux.cfg的文件夹并将光盘目录中isolinux下的isolinux.cfg复制到pxelinux.cfg目录下并且命名为default
将/usr/share/syslinux/menu.c32复制到/var/lib/tftpboot目录下,此文件是菜单背景文件
将/usr/share/syslinux/pxelinux.0复制到/var/lib/tftpboot目录下
如果只有一个系统,应该有5个文件两个目录,结构如下

[[email protected]_Svr]/var/lib/tftpboot# tree

.

├── 7

│   ├── initrd.img

│   └── vmlinuz

├── menu.c32

├── pxelinux.0

└── pxelinux.cfg

└── default

最后一步

修改default文件,从光盘复制过来的文件有很多内容,不够大部分我们并不需要,参考下面的内容就可以了

#就是刚才复制到菜单文件

default menu.c32#超时时间,就是菜单倒计时

timeout 600

display boot.msg

# 启动菜单的具体配置# menu label 用来指定菜单名称,可以自定义,^符号用来确定光标位置,# 同时其后的字母也是调到对应菜单的快捷键# kernel指定内核文件路径,由于我们放在了文件夹中所以路径是7/vmlinuz# 指定initrd的路径,以及ks应答文件文件的路径# 务必确保应答文件可以访问

label linux

menu label ^Install CentOS 7

kernel 7/vmlinuz

append initrd=7/initrd.img ks=http://192.168.11.2/anaconda-ks.cfg

# 本地硬盘启动# menu default表示此项菜单为默认菜单,由于自动安装的风险,建议将本地启动作为默认启动

label local

menu default

menu label Boot from ^local drive

localboot 0xffff

menu end

启动测试

将另一台虚拟机网卡同样配置为仅主机,网卡使用自动获取IP。
最后,确认安装源,以及应答文件可以访问,且default文件中路径配置正确。
确认防火墙以及SELinux处于关闭状态。
确认无误的话就可以开机进行测试了。

原文地址:https://www.cnblogs.com/balalabalala/p/11830316.html

时间: 2024-12-11 12:38:40

PXE自动安装Linux系统的相关文章

PXE自动安装Linux 系统

                 PXE自动安装Linux 系统 1.PXE简介2119731621 当需要安装的操作系统比较多时,手动安装是不现实的,这个时候就要借助PXE了. PXE全称是:Preboot Excution Environment 预启动执行环境是由Intel公司研发的基于Client/Server的网络模式,支持远程主机通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统 PXE可以引导和安装Windows,linux等多种操作系统. 2. 实验步骤 (1) 环境准

CentOS6.4搭建PXE自动安装linux系统

服务器IP地址:192.168.10.25 服务器需要安装的服务: DHCP服务,来提供客户端IP地址: tftp服务,提供必须要安装文件下载 具体步骤如下: 一.服务器搭建DHCP服务 1.安装dhcp服务端程序 # yum install  dhcp 2.复制dhcpd.conf模板文件 # cp  /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf 3.使用vim编辑dhcpd.conf配置文件 # vim /e

PXE全自动安装Linux系统

PXE自动安装Linux系统 PXE安装系统是基于网络的方式安装的,所以需要网卡支持PXE才可以. 本次实验环境: 虚拟机:VMware-10.0.1 build-1379776 服务器端:CentOS 6.6 安装的版本:CentOS 6.6 本次搭建所有安装域下载的服务程序都是基于YUM安装的,如果不能外网安装请自建光盘YUM仓库,参考:http://kmk0226.blog.51cto.com/5975994/1662522 配置文件修改都为vim,如果没有需要安装 yum -y inst

Kickstart&&pxe智能化安装Linux系统

Kickstart&&pxe智能化安装Linux系统

自动安装 linux 系统方法一:

基于图形软件生成应答文件,实现自动安装 linux 操作系统 1.yum install -y system-config-kickstart 安装生成自动化安装操作系统的应答文件 2.system-config-kickstart              执行生成应答文件的图形化工具 3.自动化安装基于网络方式安装,提前配置好 HTTP 服务器 4.安装 boot loader 5.清空 MBR.删除所有分区.初始化标签.创建分区 6.添加个网卡: eth0,提前搭建好 DHCP 服务器 7

linux 利用pxe自动安装预设系统

PXE工作原理  第一步:PXE Client向DHCP发送请求首先,将支持PXE的网络接口卡(NIC)的客户端的BIOS设置成为网络启动,通过PXE BootROM(自启动芯片)会以UDP(简单用户数据报协议)发送一个广播请求,向网络中的DHCP服务器索取IP地址等信息. 第二步:DHCP服务器提供信息DHCP服务器收到客户端的请求,验证是否来至合法的PXE Client的请求,验证通过它将给客户端一个"提供"响应,这个"提供"响应中包含了为客户端分配的IP地址.

PXE自动安装Linux

PXE简介 许多情况下我们手动安装操作系统是不现实的,尤其是当数量较多的时候.这个时候就要借助其他的技术 了.PXE就是其中的一种.PXE全称是:Preboot Excution Environment 预启动执行环境是由Intel公司研发的基于Client/Server的网络模式,支持远程主机通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统 PXE可以引导和安装Windows,linux等多种操作系统,这里只说Linux不说Windows.PXE的具体工作有些复杂,不过多介绍,有兴

pxe网络安装linux系统

网络启动安装详细步骤:(两种方式vsftp和nfs) 安装软件 yum install tftp tftp-server vsftpd dhcp xinetd syslinux -y 修改xinetd把tftp打开 vim /etc/xinetd.d/tftp disable = no----找到这一行,把yes修改为no 把安装介质挂载过来 由于我的安装介质放在物理机windows上面,我把介质设置成共享文件夹,然后使用下面命令就可以把windows的共享文件夹挂载到linux目录下. mou

基于 cobbler 实现自动安装 linux 系统

使用 cobbler 实现自动安装 centos 6.7系统 1.yum install cobbler -y 安装 cobbler ,有依赖关系,会自动把 TFTP .HTTP 服务安装上:cobbler 是基于 epel 源,需要连网 2.yum install dhcp -y 安装 DHCP 服务 3.systemctl start httpd tftp cobblerd 启动 HTTP .TFTP.cibbler ,DHCP 的配置文件不配置的话,是无法启动服务的 4.systemctl