linux的网络安装和自动化安装

预备知识

软件需求

硬件需求

系统流程

手动安装操作步骤

自动化安装Linux

FAQ

 

预备知识

PXE

PXE(Preboot eXecution Environment ) 是由 Intel 设计的协议,它可以使计算机通过网络启动。协议分为 client server 两端, PXE client 在网卡的 ROM 中,当计算机引导时, BIOS PXE client 调入内存执行,并显示出命令菜单,经用户选择后, PXE client 将放置在远端的操作系统通过网络下载到本地运行。

DHCP

DHCP(Dynamic Host Configuration Protocol, 动态主机配置协议 )

TFTP

TFTP(Trivial File Transfer Protocol, 简单文件传输协议 )

网络安装 Linux

区别于光盘安装和本地磁盘的模式,安装介质位于网络上。常见的网络安装方式有 NFS image FTP HTTP 等。如下图:

linux的网络安装和自动化安装_第1张图片

kickstart 无人值守安装

RHEL 的某个版本 开始支持 其主要目的是为了减少安装过程中的人机交互,提高安装效率。

使用这种方法,只需事先定义好一个配置文件(通常存放在安装服务器上),安装程序从该文件中读取安装配置,自动化安装。

样例见linux /root/anaconda-ks.cfg 文件

 

软件需求

以下软件除 PXE 外,其它均可在 RHRL5 发行版光盘镜像中找到。
可以使用 yum 安装。如:

# yum install dhcp

PXE

PXE

DHCP

dhcp

TFTP

tftp-server

tftp (客户端,非必须,对tftp-server 的验证和排错方便点)

syslinux

Syslinux (安装过程需要用到其中名为pxelinux.0 的文件)

pykickstat , system-config-kickstart

这两个软件非必须,但 system-config-kickstart 依赖于 pykickstat

某一linux 发行版

理论上所有linux 发行版都能通过这种方式来安装,细微差异应该能在各发行版的手册中找到。

NFS, FTP, HTTP

至少要安装其中的一种软件,不然就没法网络安装了。

 

硬件需求

客户机

带有 PXE 支持 ,可以从网络启动

服务器

无特殊要求

 

网络

交换机——客户机与服务器在连接在一个交换机上,能接受对方的广播包

 

 

系统流程

如图

  1. 客户机的BIOS 设置为从网络启动

  2. 客户机从DHCP 服务器获取IP 地址

  3. 客户机从DHCP 服务器指定的TFTP 加载引导镜像

  4. 根据TFTP 服务器中的配置文件开始自动化安装。如果配置文件给的信息太少,将会进入交互的安装模式。交互安装模式中,可以选择安装介质在网络上的位置及访问方式。
    linux的网络安装和自动化安装_第2张图片

手动安装操作步骤

准备安装介质

M ount 光盘镜像文件

# mkdir -p /media/owlinux36

# mount -t iso9660 /root/OWLinux-3.6-U1.iso /media/owlinux36 -o loop

验证是否mount 成功

# cd /media/owlinux36 && ls

配置TFTP 服务器并验证

编辑配置文件

# vi /etc/xinetd.d/tftp

 

# default: off

# description: The tftp server serves files using the trivial file transfer /

# protocol. The tftp protocol is often used to boot diskless /

# workstations, download configuration files to network-aware printers, /

# and to start the installation process for some operating systems.

service tftp

{

disable = no

socket_type = dgram

protocol = udp

wait = yes

user = root

server = /usr/sbin/in.tftpd

server_args = -s /tftpboot

per_source = 11

cps = 100 2

flags = IPv4

}

 

启动tftp 服务

# chkconfig tftp on

# service xinetd re start

 

验证tftp 服务

查看tftp 是否在网络上侦听

# netstat --listen | grep tftp

linux windows 的命令行模式下运行 tftp 命令并下载 /tftpboot 里面的文件 , 以测试 tftp 服务是否正常。

# /tftpboot 中新建一个文件
# touch /tftpboot/file4test

# linux 下命令
# tftp 192.168.95.1 -c get file4test

# windows 下命令

# tftp 192.168.95.1 get file4test

 

配置DHCP 服务器并验证

编辑配置文件

# vi /etc/dhcpd.conf

 

增加 红色 的配置项

修改 红色 蓝色 的配置项

注释掉 黄色 的配置项(在自动安装 linux 系统时,如果长时间(约 10 分钟)停留在“ Determining host name and domain”, 可以把这些项注释掉。)

 

ddns-update-style interim;

ignore client-updates;

# allow boot from network use PXE
allow booting;
allow bootp;

subnet 192.168.95.0 netmask 255.255.255.0 {

# --- default gateway

option routers 192.168.95.1;

option subnet-mask 255.255.255.0;

option nis-domain "alrise.org";

option domain-name "alrise.org";

option domain-name-servers 192.168.95.1;

option time-offset -18000; # Eastern Standard Time

# option ntp-servers 192.168.1.1;

# option netbios-name-servers 192.168.1.1;

# --- Selects point-to-point node (default is hybrid). Don't change this unless

# -- you understand Netbios very well

# option netbios-node-type 2;

range dynamic-bootp 192.168.95.192 192.168.95.254;

default-lease-time 21600;

max-lease-time 43200;

# next-server is the tftp server.
# filename is boot image file under tftp root

next-server 192.168.95.1;

filename "pxelinux.0";

# we want the nameserver to appear at a fixed address

host ns {

next-server marvin.redhat.com;

hardware ethernet 12:34:56:78:AB:CD;

fixed-address 207.175.42.254;

}

}

 

启动dhcpd 服务

#chkconfig dhcpd on

#service dhcpd restart

验证dhcpd 服务

 

# tail -f /var/log/messages


# more /var/lib/dhcpd/dhcpd.leases

 

复制文件到TFTP 服务器

复制 /usr/lib/syslinux 下的 pxelinux.0 这个文件到 tftp 服务器的根目录下

# cp /usr/lib/syslinux/pxelinux.0 /tftpboot

 

在该目录下创建 pxelinux.cfg 目录。 复制 i mages/pxeboot 目录下的 initrd.img vmlinux 复制到 tftp 服务器的根目录下

# mkdir /tftpboot / pxelinux.cfg

 

进入 mount 的光盘的目录

# cd /media/owlinux36

# cp images/pxeboot/{initrd.img,vmlinuz} /tftpboot

 

isolinux 目录中的 isolinux.cfg 文件复制到 /tftpboot/pxelinux.cfg 目录中,然后将该文件重命名为 default

# cp isolinux/isolinux.cfg /tftpboot/ pxelinux.cfg/default

 

isolinux 目录下的所有扩展名为 .msg 的文件复制到 /tftpboot

# cp isolinux/*.msg /tftpboot

 

配置FTP HTTP 服务器并验证

这两种服务的配置各位应该是轻车熟路了,不再多说,按照最简原则来做。

FTP 服务器的配置为例:

先前我们已将安装镜像mount /media/owlinux ,

现在只需修改默认ftp 用户的主目录到/media/owlinux 就可以了

# usermod -d /media/owlinux ftp

# chconfig vsftpd on

# service vsftpd restart

在浏览器中输入ftp://192.168.95.1 ,看看有没有文件列表

开始 手动 安装吧

 

等等,怎么还是手动安装呢?不是可以自动化安装的吗?

是的,到目前为止,我们一直都是做的手动的操作——安装程序、修改配置、复制文件,连喝杯茶的时间都没有。

那么,就先喝杯茶吧!

顺便看看 linux 的安装画面。

 

从网络启动

linux的网络安装和自动化安装_第3张图片

 

这里的选项在 /tftpboot/ pxelinux.cfg/default 中定义了的(源文件是发行版光盘镜像里的 isolinux/isolinux. c fg

linux的网络安装和自动化安装_第4张图片

 

Next……next…… 选择安装介质,就是开篇的那幅图了。

 

 

选择从 FTP 安装,这里还是要我们来输入 FTP 站点名、目录之类的。在这里站点填 192.168.95.1 ,目录填 / ,按下 OK ,就会进行下一步的安装了。

linux的网络安装和自动化安装_第5张图片

 

完全的手动安装。

休息好了吗?

开始配置自动安装吧!

 

自动化安装Linux

规划

为什么还要规划呢?不过是装几台服务器。

可是,如果我们要装几十台或者更多的服务器呢?或者你有些机器装RHEL ,有些装SLES ,有些装CentOS…… 还有两台要装Fedora !稍微有一点差错,我们就不得不重装每台机器。

从哪里开始

客户机获取到IP 地址之后,会到TFTP 服务器的/tftpboot/pxelinux.cfg 目录下寻找配置文件。

某台机器的 MAC 地址是 `88:99:AA:BB:CC:DD` ,获取到的 IP 192.0.2.91 (对应的 16 进制数是 C000025B ),那么它会按照下面的顺序去查找它的配置文件:

/tftpboot/pxelinux.cfg/01-88-99-aa-bb-cc-dd

/tftpboot/pxelinux.cfg/C000025B

/tftpboot/pxelinux.cfg/C000025

/tftpboot/pxelinux.cfg/C00002

/tftpboot/pxelinux.cfg/C0000

/tftpboot/pxelinux.cfg/C000

/tftpboot/pxelinux.cfg/C00

/tftpboot/pxelinux.cfg/C0

/tftpboot/pxelinux.cfg/C

/tftpboot/pxelinux.cfg/default

 

可以看到它的顺序是先查找有没有和它的 MAC 地址对应的配置文件,然后是 IP 地址,再到某个可能是它的子网,最后就是 default

那么,就很好分配了,例如:

192.0.2.0/24 这个网段的机器都装 SLES ,那么就修改对应的配置文件 /tftpboot/pxelinux.cfg/C00002

192.168.95.240/28 这个网段的机器都装 RHEL ,那么就修改对应的配置文件 /tftpboot/pxelinux.cfg/C0A85FF

 

这些配置文件可以复制 default 再略作修改 :

# cp /tftpboot/pxelinux.cfg/default /tftpboot/pxelinux.cfg/C00002

# vi /tftpboot/pxelinux.cfg/C00002

 

客户机的IP 地址如何分配

根据上面的原理好好计算一下如何划分子网吧,然后编辑DHCP 服务器的配置文件

# vi /etc/dhcpd.conf

 

如果要用到多个TFTP 服务器,记得修改next-server 这个参数的值。

 

需要多少台DHCP TFTP 及文件服务器

根据上面的原理和服务器的规模,就可以大概计算出来了。DHCP 服务器一两台足够了。TFTP 的性能不太好,大约每80 台客户机就需要一台TFTP 服务器。文件服务器的数量根据安装镜像的大小及客户机数量计算吧,要保证每台客户机有足够的带宽。

 

 

 

修改/tftpboot/pxelinux.cfg/default 文件

下面是一个 Linux 发行版的配置文件, 红色 的配置项是我增加的,在实际环境中请删除。

default text

prompt 1

# 600 (单位位置,这个时间大于 6 秒小于 6 分钟)之内没有选择安装模式,就自动加载上面 default 定义的那个模式 text

timeout 600

serial 0 9600 0

display boot.msg

F1 boot.msg

F2 options.msg

F3 general.msg

F4 param.msg

F5 rescue.msg

F7 snake.msg

label serial

kernel vmlinuz

append initrd=initrd.img text ramdisk_size=8192 ks=cdrom:ks.cfg console=ttyS0,9600n8

label linux

kernel vmlinuz

append initrd=initrd.img ramdisk_size=8192 ks=cdrom:ks.cfg console=tty0

label i586

kernel vmlzi586

append initrd=initi586.img ramdisk_size=8192 ks=cdrom:ks.cfg console=tty0

label text

kernel vmlinuz

# 这里配置的是客户机从哪里获取自动安装的配置(ks kickstart 的简写),如果ks.cfg FTP 服务器 192.168.95.1 的根目录,那么将 cdrom:ks. c fg 替换成 ftp://192.168.95.1/ ks.cfg

append initrd=initrd.img text ramdisk_size=8192 ks= cdrom:ks.cfg console=tty0

label expert

kernel vmlinuz

append expert initrd=initrd.img ramdisk_size=8192 console=tty0

label lowres

kernel vmlinuz

append initrd=initrd.img lowres ramdisk_size=8192 console=tty0

label local

localboot 1

label memtest86

kernel memtest

append -

 

使用kickstart 生成配置文件

使用RHEL kickstart 工具生成配置文件

# system-config-kickstart

打开的程序界面如下:

linux的网络安装和自动化安装_第6张图片

不过有一个问题是读取某些Linux ks.cfg 文件时总会出错,而且这里配置的“分区信息”无法写入ks.cfg 中。

 

以下是ks.cfg 的部分配置,可以和/root/anaconda-ks.cfg 比较一下:

 

install

# 这里配置安装文件的位置,cdrom 为光驱,从网络安装就修改成如下格式

# url --url http://192.168.95.1/release 等等

url --url ftp://192.168.95.1/

lang en

langsupport --default=en en_US.UTF-8 zh_CN.UTF-8 zh_HK.UTF-8 zh_CN.UTF-8 zh_SG.UTF-8 zh_TW.UTF-8

keyboard us

#Do not configure XWindows

skipx

network --device eth0 --bootproto static --ip 192.168.95.75 --netmask 255.255.255.0 --gateway 192.168.95.1 --nameserver=192.168.95.1 --hostname OWLinux.alrise.org

rootpw --iscrypted $1$5WB1itub$rIvx/ZrB9tRUm7bWj3vGz/

firewall --disabled

selinux --disabled

authconfig --enableshadow --enablemd5

timezone Asia/Shanghai

# 引导装载程序选项

bootloader --location=mbr #--append="console=ttyS0,9600n8"

# 删除所有现存磁盘分区

clearpart --all

# 新分区表

part /boot --fstype ext3 --size=100

part swap --size=1024

part / --fstype ext3 --size=100 --grow

# 安装完成后重新启动

reboot

 

根据 /tftpboot/pxelinux.cfg/ 下配置文件中 ks.cfg 的路径,把生成的 ks.cfg 文件保存到这个路径。

开始自动化安装

所有的配置都完成了?

泡上一杯茶,再好好检查一下配置吧!

我得去启动每台机器来开始自动化安装了。

什么?还要自己去启动每台机器来安装?这也叫自动化?

……

如果服务器配置了IPMI 模块,启动机器这一步就可以省了,前提是机器都接通电源,插上网线。

什么?接电源和插网线也想自动化?

FAQ

 

 

 

 

你可能感兴趣的:(Linux)