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

预备知识软件需求硬件需求系统流程手动安装操作步骤自动化安装LinuxFAQ

预备知识PXE

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

DHCP

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

TFTP

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

网络安装Linux

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

kickstart无人值守安装

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

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

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

软件需求

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

# yum installdhcp

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支持,可以从网络启动

服务器

无特殊要求

网络

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

系统流程如图

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

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

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

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

手动安装操作步骤准备安装介质

Mount光盘镜像文件

#mkdir -p /media/owlinux36

# mount -tiso9660 /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 filetransfer /

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

# workstations, download configuration files to network-awareprinters, /

# and to start the installation process for some operatingsystems.

servicetftp

{

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服务

#chkconfigtftpon

#service xinetdrestart

验证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分钟)停留在“Determininghost name and domain”,可以把这些项注释掉。)

ddns-update-styleinterim;

ignoreclient-updates;

#allowboot from network use PXEallowbooting;allowbootp;

subnet192.168.95.0netmask255.255.255.0{

#— default gateway

optionrouters 192.168.95.1;

optionsubnet-mask 255.255.255.0;

optionnis-domain "alrise.org";

optiondomain-name "alrise.org";

optiondomain-name-servers 192.168.95.1;

optiontime-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 changethis unless

#– you understand Netbios very well

# option netbios-node-type 2;

rangedynamic-bootp192.168.95.192192.168.95.254;

default-lease-time21600;

max-lease-time43200;

#next-serveris the tftp server. #filenameis 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

hostns {

next-servermarvin.redhat.com;

hardwareethernet 12:34:56:78:AB:CD;

fixed-address207.175.42.254;

}

}

启动dhcpd服务

#chkconfigdhcpd on

#servicedhcpd 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目录。复制images/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的安装画面。

从网络启动

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

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

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

完全的手动安装。

休息好了吗?

开始配置自动安装吧!

自动化安装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发行版的配置文件,红色的配置项是我增加的,在实际环境中请删除。

defaulttext

prompt 1

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

timeout600

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

kernelvmlinuz

appendinitrd=initrd.img text ramdisk_size=8192 ks=cdrom:ks.cfgconsole=ttyS0,9600n8

label linux

kernelvmlinuz

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

label i586

kernelvmlzi586

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

label text

kernelvmlinuz

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

appendinitrd=initrd.img text ramdisk_size=8192 ks=cdrom:ks.cfgconsole=tty0

label expert

kernelvmlinuz

appendexpert initrd=initrd.img ramdisk_size=8192 console=tty0

label lowres

kernelvmlinuz

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

label local

localboot1

label memtest86

kernelmemtest

append-

使用kickstart生成配置文件

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

#system-config-kickstart

打开的程序界面如下:

不过有一个问题是读取某些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/

langen

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

keyboardus

#Donot configure XWindows

skipx

network–device eth0 –bootproto static –ip 192.168.95.75 –netmask255.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

timezoneAsia/Shanghai

#引导装载程序选项

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

#删除所有现存磁盘分区

clearpart–all

#新分区表

part/boot –fstype ext3 –size=100

partswap –size=1024

part/ –fstype ext3 –size=100 –grow

#安装完成后重新启动

reboot

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

开始自动化安装

所有的配置都完成了?

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

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

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

……

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

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

FAQ

人性最可怜的就是:我们总是梦想着天边的一座奇妙的玫瑰园,

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

相关文章:

你感兴趣的文章:

标签云: