linux网络安装(PXE + DHCP+TFTP+ Kickstart+ FTP)


需要使用到的服务:PXE + DHCP+TFTP+ Kickstart+ FTP

运行原理如下图:

wKioL1eliw2jWtJhAACiLfTKxO4196.jpg

 


 

原理和概念: 

1、前言

       首先,简单谈谈为什么要采用无人值守网络安装linux操作系统。一方面是运维管理的需要,因各种需要,安装操作系统在实验室内时有发生,有时候更出现批量安装某一型号操作系统的情形,这时候如果用光盘挨个安装将变得异常繁琐,并且需要人工值守。此外,因操作系统种类较多(主要是针对linux),内部人员使用频繁,也会带来管理上的问题。另一方面是当前MPX项目开发的需要,为打造一个精简、适用、高效、安全的网络存储平台,需要对当前的系统精雕细琢,在实验阶段,我很难为每一版本系统刻录一个光盘再进行系统安装,但通过网络安装的方式,可以避免频繁刻录光盘带来的不利。

2、PXE

       PXE(prebootexecute environment)是由Intel公司开发的最新技术,工作于Client/Server网络模式,支持工作站通过网络从远端服务器下载镜像,并由此支持来自网络的操作系统的启动过程。PXE Client存在于网卡的ROM中,当计算机引导时,BIOS把PXE Client调入内存中执行,并显示出命令菜单,经用户选择后,再将存放在远端服务器上的操作系统通过网络下载到本地运行。其启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial filetransfer protocol)协议下载一个启动软件包(一组文件)到本机内存中执行,由这个启动软件包完成终端基本软件设置,进而引导预先安置在服务器中的终端操作系统。

       简单说来,客户机通过支持PXE的网卡向网络中发送请求DHCP信息的广播,请求分配IP地址等信息,DHCP服务器给客户机提供IP地址和其它网络信息的同时还将提供网络安装操作系统中所需要的信息,如TFTP服务器、启动文件等,之后客户机请求并下载启动所需要的文件。在这个过程中需要一台服务器来提供启动文件、安装文件、以及安装过程中的自动应答文件等。

注:TFTP是TCP/IP协议族中一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务,端口号为69。在利用网络安装操作系统的过程中,它只负责从服务器下载最初的启动软件包到本机去执行,而终端操作系统的传输将由其它传输协议来完成(如:FTP、NFS、HTTP),具体设置参加后面章节的说明。

3、KickStart

       KickStart是一种无人职守安装方式。KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg的文件;在其后的安装过程中(不只局限于生成KickStart安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找KickStart生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。这样,如果KickStart文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装。

设置BIOS引导顺序为:  硬盘,网络

 

模式: C/S 模式

 

实验环境: 

服务端:abiao1   IP:192.168.138.1   网卡模式: vmnet4

客户端:abiao2   IP:192.168.138.10   网卡模式: vmnet4

 

 

执行 PXE + KickStart安装需要准备内容:

·FTP 服务器用来存放系统安装文件; 

 TFTP 服务器用来存放PXE的相关文件,比如:系统引导文件;

 DHCP 服务器用来给客户机分配IP; 

 KickStart所生成的ks.cfg配置文件; 

·配置基于FTP的yum源,用于客户端安装软件;

 带有一个 PXE 支持网卡的将安装的主机;

 

 

一、配置基本环境

安装所需要的服务及修改相应配置文件:

1.搭建本地yum源或者网络yum源(其中之一就好)

本地yum源

[root@abiao1 ~]# mount /dev/cdrom /mnt

在/etc/yum.repos.d目录下创建一个以.repo结尾的文件:

[root@abiao1 ~]# cd /etc/yum.repos.d/

[root@abiao1 yum.repos.d]# vim pxe.repo

配置内容如下:

[rhel-source]

name=abiao1

baseurl=file:///mnt/

enabled=1

gpgcheck=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

 

网络yum源

首先保证机器可以连接公网

[root@abiao1~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

[root@abiao1~]# sed -i 's/$releasever/6/g' /etc/yum.repos.d/ CentOS-Base.repo

[root@abiao1~]# yum makecache

[root@abiao1~]# yum list all

 

2.安装ftp服务以及开启服务,设置为开机自动启动。

[root@abiao1 ~]# yum -y install vsftpd

[root@abiao1 ~]# chkconfig vsftpd on

[root@abiao1 ~]# service vsftpd start

为 vsftpd 启动vsftpd:                                    [确定]

 

3.安装TFTP,修改tftp配置文件及开启服务

[root@abiao1 /]# yum-y install tftp tftp-server xinetd

配置tftp服务器:

[root@abiao1 /]# chkconfig tftp on/yes   启用tftp/禁用tftp

[root@abiao1 /]# vim /etc/xinetd.d/tftp

修改配置文件里面的13,14行。改成以下内容:

 


 

接着启动xinetd服务,然后查看服务端口是否打开。

[root@abiao1 /]#service xinetd start

停止xinetd:                                              [确定]

正在启动xinetd:                                          [确定]

[root@abiao1 ~]# lsof -i:69    #查看69端口正在被哪个进程使用

COMMAND PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

xinetd 5646 root    5u  IPv4 25888      0t0  UDP *:tftp

[root@abiao1 ~]# netstat -anptu | grep 69     #这种方法,只能看到xinetd进程

udp       0      0 0.0.0.0:69                  0.0.0.0:*                               5646/xinetd

 

 

server_args = -s /tftpboot  # 表示服务器默认的目录是 /tftpboot

 

其中,server_args = -s/tftpboot是tftp服务器运行时的参数。-s/tftpboot表示服务器默认的目录是 /tftpboot,当你执行put a.txt时,文件会被放到服务器的/tftpboot/a.txt,省去你敲put a /tftpboot/的麻烦。你也可以加其它服务器运行参数到这,具体可以执行mantftpd命令查阅。

 

-c : 上传文件时,服务器上没有。就自动创建这个文件。

默认tftp客户端,只能上传tftp服务器已经有的文件。也就是只能传上去并覆盖服务器上的原文件。如果想上传原来目录中没有的文件,需要修改tftp服务器的配置文件并重起服务。需要修改如下:

打开/etc/xinetd.d/tftp文件,在 server_args 增加-c参数,如下所示:

server_args = -s /tftpboot -c

 

TFTP (Trivial File Transfer Protocol),中译简单文件传输协议或小型文件传输协议. 大家一定记得在2003年8月12日全球爆发冲击波(Worm.Blaster)病毒,这种病毒会监听端口69,模拟出一个TFTP服务器,并启动一个攻 击传播线程,不断地随机生成攻击地址,进行入侵。另外tftp被认为是一种不安全的协议而将其关闭,同时也是防火墙打击的对象,这也是有道理的。tftp 在嵌入式linux还是有用武之地的。需要打开防火墙,允许tftp访问网络。

 

 

4.安装dhcp,修改配置文件及开启服务:

[root@abiao1 ~]# yum -y install dhcp

配置DHCP服务器:

[root@abiao1 ~]# cp/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf

cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y  #生成配置文件

[root@abiao1 ~]# vim/etc/dhcp/dhcpd.conf  #只保留一个subnet {。。。} ,取掉其它subnet,改成如下内容:

 

subnet 192.168.138.0 netmask 255.255.255.0 {

 range 192.168.138.10 192.168.138.20;

 option domain-name-servers 8.8.8.8;

 option domain-name "abiao.cn";

 option routers 192.168.138.1;

 option broadcast-address 192.168.138.255;

 default-lease-time 600;

 max-lease-time 7200;

 next-server 192.168.138.1;  #指定TFTP服务器地址

 filename "pxelinux.0";   #指定PXE引导程序的文件名

}

 

接着启动DHCP,设置为开机启动

[root@abiao1 ~]# service dhcpd start

正在启动 dhcpd:                                           [确定]

[root@abiao1 ~]# chkconfig dhcpd on

 

准备工作完成

 

二、配置使用PXE启动所需的相关文件

 

准备tftp需要共享出去的文件

#因为tftp是提供启动文件,内核文件,引导文件,启动菜单的 要把这些文件复制到根目录下

[root@abiao1 /]# mount /dev/sr0 /mnt

mount: block device /dev/sr0 iswrite-protected, mounting read-only

[root@abiao1 /]# mkdir /tftpboot           #创建tftp根目录

[root@abiao1 /]# mkdir /tftpboot/pxelinux.cfg   #创建启动文件夹(启动菜单存放位置)

[root@abiao1 /]# cp -a/usr/share/syslinux/pxelinux.0 /tftpboot/   #注,只有安装了system-config-kickstart软件包,才会有/usr/share/syslinux/目录及目录中的文件。

# pxelinux.0  PXE网络安装的引导程序

[root@abiao1 /]# cp -a /mnt/images/pxeboot/initrd.img/tftpboot/   #linux内核

[root@abiao1 /]# cp -a/mnt/images/pxeboot/vmlinuz tftpboot/   #初始化镜像文件

[root@abiao1 /]# cp -a/mnt/isolinux/isolinux.cfg tftpboot/pxelinux.cfg/default  #加载内核文件和初始化文件

[root@abiao1 /]# chmod 644 /tftpboot/pxelinux.cfg/default

 

三、修改default,指定安装操作系统的方式和ks.cfg文件路径

[root@abiao1 /]# vim/tftpboot/pxelinux.cfg/default

然后修改/tftpboot/pxelinux.cfg/default的配置文件。

改:default

为 :default  linux

#修改第1行,后面的linux意思是寻找下面18行的label linux 。如下:

wKiom1elix7SH4A2AAAwCLogT6w100.png-wh_50然后修改下22行(即在后面添加ks=ftp://192.168.138.1/ks.cfg)。第22行的意思是使安装程序通过FTP服务器访问kickstart文件。

 

wKioL1eliy-R13vFAAAbp2k2LnM052.png

 

以上有关default配置文件的修改就是通过ftp服务器方式来访问kickstart文件。

 

其中第1行:default linux表示指定默认入口名称;

第2行:prompt 1中prompt用来设置是否等待用户选择,1表示等待用户控制;

第18、23、27、31行label linux表示定义的引导入口,表示系统的不同安装方式,如第18行定义的入口表示图形安装。

配置文件修改完了,要开始自动安装,安装程序必须能访问kickstart文件。

有多种方法可访问kickstart文件,其中最常用的一种方法是通过网络服务器进行,

例如:ftp服务器、WEB服务器或NFS服务器,这种方法非常易于部署,并且也使管理更改变得十分简单。也可以通过USB磁盘、CD-ROM或本地硬盘。如果USB或CD-ROM中的kickstart文件非常便于访问,只需将kickstart文件放置在用来开始安装的引导介质中。而使用DHCP服务器和TFTP及PXE配置起来更为复杂。

使安装程序指向kickstart文件的书写格式如下:

ks=ftp://server/dir/file 如:ks=ftp://ftp服务器IP/ks.cfg

ks=http://server/dir/file 如:ks=http://http服务器IP/ks.cfg

ks=nfs:server:/dir/file 如:ks=nfs:nfs服务器IP:/var/ftp/pub/ks.cfg

ks=hd:device:/dir/file 如:ks=hd:sdb1:/kickstar-files/ks.cfg

ks=cdrom:/dir/file 如:ks=cdrom:/kickstart-files/ks.cfg

以上有关default配置文件的修改就是通过ftp服务器方式来访问kickstart文件。

 

接下来我们制作kickstart的无人值守安装文件。

 

安装system-config-kickstart软件包:

 [root@abiao1 ~]# yum -y install  system-config-kickstart  #安装此包时,会把syslinux软件包也安装上。

 

如果想在英文界面下打开一个软件,让它以中文界面显示,修改字符集:

[root@abiao1 /]# echo $LANG

en_US.UTF-8

[root@abiao1 /]#LANG="zh_CN.UTF-8"

[root@abiao1 /]# echo $LANG

zh_CN.UTF-8

[root@abiao1 /]# system-config-kickstart  #执行system-config-kickstart弹出来界面。

设置自己后期无人执守安装需要配置的参数:


我们设置下默认安装的语言,时区,根口令,然后勾选下面的安装后重新引导。然后选择安装方法。

 

wKiom1eli6LDr5Q2AAEOQF_wuhQ645.png-wh_50

我们配置ftp服务器的安装方法。选择执行新安装。然后点击引导装载程序选项。

 

 wKioL1eli7GhGtNOAADrCdMluKo727.png-wh_50

配置grub相关选项,不需要可以不配置

 

wKiom1eli7rwO6mnAAEHU2thd0w616.png-wh_50

设置分区大小。

 

wKiom1eli8OAxXCEAAEZJ-3dTwU382.png-wh_50

配置网络,默认没有网络设置,点击添加网络,设备名称为eth0,网络类型为dhcp

 

wKioL1eli8uxBwWuAAER4ivBh4M769.png-wh_50

验证,默认就可以了。

 

wKiom1eli9iDDT6mAAEB-e995X8802.png-wh_50

防火墙和selinux根据自己需求选择开启或者禁用。

 

wKioL1eli-KAEgR2AADabWZ7g4U684.png-wh_50

安装图形环境

 

wKiom1eli-yjrJFBAADRfri3IyY825.png-wh_50

自定义软件包。默认可能没有勾选桌面。根据自己需求勾选。 我们为了快速度安装,不选择安装桌面。

 wKiom1eli_zibHPiAAE_NQ9m1Q0257.png-wh_50

安装脚本:在"预安装脚本","安装后脚本"对话框中,可以分别添加在安装前、安装后自动动行的可执行语句。此项设置可以使服务器自动化配置变得更加容易。

例如:配置客户机在完成安装后自动设置YUM仓库。

wKioL1eljBTxAj6PAAE1jeOW7yk706.png-wh_50

写入以下脚本内容:

rm -rf/etc/yum.repos.d/*

echo '[rhel-source]

name=abiao

baseurl=file:///mnt/

enabled=1

gpgcheck=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release'> /etc/yum.repos.d/rhel6.repo

 

 

到此所有关于安装的配置已经配置完毕,保存:

点击左上角的文件选择保存,选择下保存的路径

wKioL1eljCjCzEeZAAFjBxwjEZM123.png-wh_50

 

[root@abiao1 ~]# cp ks.cfg /var/ftp/  #复制ks.cfg文件到/var/ftp目录下

注:ks.cfg就是无人值守安装时要用的Kickstart文件。

要对应:/tftpboot/pxelinux.cfg/default文件中设置过ks=ftp://192.168.138.1/ks.cfg

 

配置基于ftp的yum源,用于客户端安装时,读取软件包用:

[root@abiao1 ~]# mount /dev/sr0/var/ftp/pub/  #挂载RHEL6安装光盘到/var/ftp/pub目录下

mount: block device /dev/sr0 iswrite-protected, mounting read-only

或者将之前挂载的镜像内容复制到/var/ftp/pub下

[root@abiao1 ~]# cp /mnt/* /var/ftp/pub/ 

 

建议关闭防火墙和selinux

如果没有关闭的话,tftp服务会有问题。

[root@abiao1 ~]# getenforce

Disabled

设置防火墙:

[root@abiao1 ~]# iptables

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。

Linux基础之sed流编辑器详解 - 2016-08-29 17:08:59

之前介绍了三大文本编辑器的grep,这里介绍比grep功能更强的sed流编辑器 sed是什么? sed是Stream EDitor的缩写,man中对sed的简介为 sed - stream editor for filtering and transforming text 它的主要功能是对文本的过滤与替换。 sed的工作原理 sed的工作过程 :sed是一个流编辑器,所谓流编辑器是指sed每次只从文件或stdin中读入一行,将读入的行保存至模式空间然后根据指定的要求对其进行处理,并将处理后的结果输出至屏

OpenVPN应用案例 - 2016-08-29 17:08:58

OpenVPN服务器的搭建: http://qicheng0211.blog.51cto.com/3958621/1575273 CentOS下OpenVPN客户端配置: http://qicheng0211.blog.51cto.com/3958621/1840055 应用一 、点对点安全通道 工作中可能会遇到这样的场景:由于业务需要,异地两台服务器需要安全的相互访问,除了拉专线,比较经济的方法就是通过公网建立加密隧道,openvpn是一个很好的选择。 服务端:内网IP192.168.20.220,vp
前段时间做了个项目,是关于父子域合并的,其实无非就是使用ADMT把域用户,计算机等从子域迁移到父域上,看似迁移用户很简单。But……生产环境啊,Exchange,TFS,Sharepoint,还有其余乱七八糟的东西,都使用了域账号,牵一发动全身的节奏,迁移账号出点儿问题相关用户就可以坐在那打酱油了,迁移前在他们生产环境中新建测试账号迁移,但是这种测试账号相对理想的环境,测试过程中很多问题不容易发现,很多问题是迁移了客户生产用户账号时出现了问题,但是于对于TFS一窍不通,sharepoint大多不懂的我来说
上一篇博客讲解了nginx相关的数据结构。 这一篇主要交接如何将自己的模块编译进nginx; 一种常用的简单方法: 1)首先把源代码文件全部放大一个目录下,然后在改目录中编写一个config用于通知Nginx如何编译本模块,这个文件名必须为config。 在configure脚本执行时加入参数--add-module=PATH(上面源码,config的保存目录) 执行正常安装流程是完成Nginx的编译工作。 ps:还有一种复杂方式,就是修改configure脚本执行后生成的obj/Makefile和obj

OpenLDAP 客户端部署 - 2016-08-29 17:08:32

有关服务端的安装请点击 一、账号登录系统流程讲解 当在客户端输入账号登录系统时,系统根据/etc/nsswitch.conf配置文件获取账号查找顺序,然后再根据PAM配置文件调用相关模块,对账号(/etc/passwd)及密码(/etc/shadow)进行查找并进行匹配。当本地匹配不成功时,会通过后端认证服务器(OpenLDAP服务器)进行验证。 二、配置文件功能介绍 下面介绍几个配置文件再后面我们会进行修改,我这里简单介绍一下。 /etc/nsswitch.conf 该文件主要用于名称转换服务,用于系统
1. root下进入其他用户主目录 cd ~USERNAME 2. touch的另外的一种作用 常用的是touch创建一个不存在的文件 而touch一个存在的文件时候,touch会修改文件的三个时间(使用stat可以查看),其中access表示最后一个访问时间,modify表示最后一次修改文件的时间,change表示最后修改文件属性的时间 3. file查看文件类型 镜像文件(iso)的文件类型为iso9660 4./etc/passwd中各字段对应解释 1 用户名:2密码:3uid:4gid:5备注:6
谁说Lync Server 前端不可以使用Windows网络负载平衡实现高可用的?(仅限测试环境) 本章内容有: 1.两台Lync Server安装Windows功能---网络负载平衡 2.配置网络负载平衡 3.DNS记录修改 4.测试故障切换(模拟两种故障,网络故障和服务故障) 5.开始的时候别忘了上一章中的提示,将两台前端Server都进行重启 = = 安装网络负载平衡 两台服务器都需要进行安装 = = 配置网络负载平衡 1)新建群集 2)将LyncFE01先添加到群集中 3)群集IP自己随便填写 4

深入剖析linux磁盘管理 - 2016-08-29 17:08:26

一、linux中常见的磁盘: 无论什么操作系统,归根还是要落实与磁盘上的,对于磁盘的管理也是linux管理必备的一项技能。在linux中“一切皆文件”的思想贯彻整个linux的学习中,包括像是磁盘等的硬件也是在linux的/dev/目录下类似于文件形式的存放,常见的SATA口USB优盘或是SCSI口的硬盘在linux中是以/dev/sd[a-p]开头的文件,早期的IDE硬盘现在已经很少见了,这种硬盘在linux中是以/dev/hd[a-d],CDROM是以/dev/cdrom开头的文件,磁带机/dev/s

linux实战题 - 2016-08-29 17:08:10

在配置Apache时,执行了./configure --prefix=/application/apache2.2.17来编译Apache,在make install完成后,需要用户的访问路径更加简单 ,需要给/application/apache2.2.17目录做一个软链接/application/apache,是得内部人员可以通过/application/apache就可以访问到Apache的安装目录/application/apache2.2.17下的内容 ,请给出实现命令。(安装时有版本号,后面使
一 VNC简介 VNC 是在基于Linux 操作系统的免费的开源软件,远程控制能力强大,高效实用,其性能可以和 Windows 和 MAC 中的任何远程控制软件媲美。 在 Linux 中,VNC 包括以下四个命令:vncserver,vncviewer,vncpasswd,和 vncconnect。大多数情况下用户只需要其中的两个命令:vncserver 和 vncviewer VNC基本上是由两部分组成:一部分是 客户端的应用程序(vncviewer) ;另外一部分是 服务器端的应用程序(vncserv