预备知识软件需求硬件需求系统流程手动安装操作步骤自动化安装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
人性最可怜的就是:我们总是梦想着天边的一座奇妙的玫瑰园,