一、不适合本地安装的情况
不适合本地安装的情况如下:
(1)无软驱和光驱:如果计算机不带光驱或软驱,则无法通过本地安装。
(2)非标准的软驱和光驱:虽然笔记本电脑都会配置光驱。但是并不一定都是标准的IDE设备,有些通过USB接口或1394接口(例如Samsung的Q10)连接。在Linux安装时所引导的Linux内核一般都不会带这些接口的驱动,所以也无法通过本地安装。
(3)在一些场合,如机房中有大量的计算机需要同时安装Linux。如果通过光驱的方式逐台安装,不仅效率低,也不利于维护。
(4)光驱或安装光盘故障。
二、原理和概念
2.1 什么是PXE
PXE技术与RPL技术不同之处为RPL是静态路由,PXE是动态路由。RPL是根据网卡上的ID号加上其他记录组成的一个Frame(帧)向服务器发出请求。而服务器中已有这个ID数据,匹配成功则进行远程启动。PXE则是根据服务器端收到的工件站MAC地址,使用DHCP服务为这个MAC地址指定个IP地址。每次启动可能同一台工作站有与上次启动有不同的IP,即动态分配地址。下以客户端引导过程说明PXE的原理。
(1)客户端开机后,PXE BootROM(自启动芯片)获得控制权之前执行自我测试,然后以广播形式发出一个请求FIND帧。
(2)如果服务器收到客户端所送出的要求,就会送回DHCP回应,包括用户端的IP地址、预设通信通道,以及开机映像文件;否则服务器会忽略这个要求。
(3)客户端收到服务器发回的响应后则会回应一个帧,以请求传送启动所需文件,并把自己的MAC地址写到服务器端的Netnames.db文件中。
(4)将有更多的消息在客户端与服务器之间应答,用于决定启动参数。BootROM由TFTP通信协议从服务器下载开机映像文档。客户端使用TFTP协议接收启动文件后,将控制权转交启动块以引导操作系统,完成远程启动。
PXE协议的成功运行需要解决以下的两个问题
(1)既然是通过网络传输,那么计算机在启动时其IP地址如何配置?
(2)通过何种下载Linux内核和根文件系统?
第一个问题可以通过DHCP Server解决,由DHCP Server来为PXE Client分配一个IP地址,DHCP Server是用来为DHCP Client动态分配IP地址的协议。不过由于这里是为PXE Client分配IP地址,所以在配置DHCP Server时需要增加相应的PXE特有配置;至于第2个问题,在PXE Client所在的ROM中,已经存在了TFTP Client。PXE Client使用TFTP Client,通过TFTP协议到TFTP Server上下载所需的文件。这样,PXE协议运行的条件就具备了,PXE的安装流程如图所示。
在图中,PXE Client是需要安装Linux的计算机,TFTP Server和DHCP Server运行在另外一台Linux Server上,Bootstrap文件、配置文件、Linux内核,以及Linux根文件系统都放置在Linux Server上TFTP服务器的根目录下。除了配置文件,这3个二进制文件是PXE Client在工件过程中所必需的文件,即bootstrap、Linux内核和Linux根文件系统。Bootstrap文件是可执行程序,它为用户提供简单的控制界面,并根据用户的选择下载合适的Linux内核以及Linux根文件系统。
图1 PXE的基本原理
KickStart是一种无人职守安装方式。KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg的文件;在其后的安装过程中(不只局限于生成KickStart安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找KickStart生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。这样,如果KickStart文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装。
如图为网络安装环境的一个原理示意,安装环境由一个局域网和连接到该局域网的启动服务器、安装服务器和待安装客户端,其中启动服务器和安装服务器可以部署在同一台物理机上。
图2 网络结构
下表列出了对这些机器的软硬件要求及其负载的服务与数据。
系统名称 | 安装和启动服务器 | 待安装计算机 |
操作系统 | Red HatEnterpriseLinux 5 | 无 |
硬件 | 普通X86体系 | 普通X86体系,网卡必须带有PXE 支持 |
网络 | 同一子网 | |
服务类型 | DHCP、TFTP及NFS | 无 |
数据 | PXE Linux启动镜像,kickstart配置文件、RedHat Enterprise Linux 5安装介质和Red Hat Enterprise Linux 5安装程序启动 镜像 | 无 |
表1 基本的软硬件要求
执行PXE+KickStart安装需要的设备为:
DHCP 服务器;
TFTP 服务器;
KickStart所生成的ks.cfg配置文件
一台存放系统安装文件的服务器,如 NFS、HTTP 或 FTP 服务器。
带有一个 PXE 支持网卡的将安装的主机;
nfs-utils-lib-*
nfs-utils- *
xinetd-*
tftp-server-*
dhcp-*
dhcp-devel-*
system-config-kickstart-*
1、本地方式
一般情况下一些常用的安装包都可以在你的安装光盘中找到。
2、网络方式
如果你无法在安装光盘中找到适合的安装包,你可以通过yum这种方式安装。
操作要求:有一个100台机器的机房,要求需要批量安装Red Hat Linux操作系统,服务器地址为192.168.0.1,子网掩码为255.255.255.0,使待安装的机器做的操作仅仅是开机就可以自动安装操作系统。
(1)在终端里输入system-config-network-tui,打开IP配置图形界面。
图3 IP配置命令
图4 IP配置界面(1)
图5 IP配置界面(2)
(2)重启网卡,service network restart
图6 重启网卡及IP的配置情况
配置该服务器需要安装dhcpd,tftp-server,nfs,system-config-kickstart,等包。首先需要检查本机上是否已经安装了这些包,输入rpm –qa | grep +包名。
图7检查RPM包
如果没有安装这些包则需要通过rpm –ivh +包名一安装。
首先需要用mount –t iso9660 /dev/cdrom /mnt/cdrom(/mnt/cdrom必需存在)来将系统光盘挂载到/mnt/cdrom目录下。然后安装需要的rpm包。
图8 挂载光盘
图9 安装RPM包
图10 检查NFS包
图11 安装tftp-server包
图12 检查所有包的安装
使用vim编辑器编辑/etc/dhcp.conf文件。
图13 dhcp配置文件位置
由于是第一次编辑dhcp.conf所以里面的内容是空的,那么我们就需要将/usr/shar/doc/dhcp-3.0.5/dhcp.conf.sample 复制到/etc下并改名为dhcp.conf
图14 copy dhcp示例配置文件
现在使用vim打开/etc/dhcp.conf就可以看见系统自带的dhcp示例配置了。
图15 dhcp示例配置文件内容
我们需要对它进行修改,我这里把它修改的尽量简单了。
ddns-update-style none;
ignore client-updates;
subnet 192.168.0.0 netmask 255.255.255.0 {
option routers 192.168.0.1;
option subnet-mask 255.255.255.0;
# option domain-name “example.com”;
# option domain-name-servers 192.168.0.1;
default-lease-time 21600;
max-lease-time 43200;
range 192.168.0.100 192.168.0.200;
filename “/kickstart/ks.cfg”;
next-server 192.168.0.1;
}
option space PXE;
class “PXE” {
match if substring(option vendor-class-identifier, 0, 9) = “PXEClient”;
option vendor-encapsulated-options 01:04:00:00:00:00:ff;
option boot-size 0x1;
filename “pxelinux.0”;
option tftp-server-name “192.168.0.1”;
option vendor-class-identifier “PXEClient”;
vendor-option-space PXE;
}
红色部分都是要特别注意的地方,出错了就会导致服务器配置失败。
图16 修改后的dhcp文件
需要注意的是字段range是给待安装的机器分配的的IP地址池,filename字段是ks.cfg的位置,即待安装机器所需要的安装配置文件,next-server是tftp服务器的位置。和下面的tftp-server-name字段是对应的。
tftp是为了给待安装的机器发送文件的简单的文件传输服务。
这个配置还是比较简单的,只需要把这个服务给启用就可以了。
使用vim编辑器打开/etc/xinetd.d/tftp文件
图17 tftp配置文件位置
将里面的disable字段值改为no,保存退出就可以了。
图18 tftp配置情况
nfs服务是将安装过程所需要的一些文件共享出来,这个也是比较简单的。
使用vim编辑器打开/etc/exports文件,只要将你想共享的文件夹写入其中就可以了,我们这里需要把/kickstart /tftpboot /linuxinstall 给共享出来就可以了,其中/kickstart文件,linuxinstall文件都是我们自己建立的,将在后面建立。而/tftpboot文件夹是在安装tftp-server的rpm包时候自动建立的。
图19 nfs配置文件位置
图20 nfs配置
其中*表示任何主机都可以访问,ro表示read only,只读权限,sync表示与服务器同步。
通过输入service nfs restart重启nfs服务,然后我们输入exportfs可以看见我们共享的文件。
图21 exportfs命令
ks.cfg是待安装机器的所有的配置文件,每台机器在安装过linux系统以后都会自动生成一个ks.cfg文件里面记录了在安装系统的时候所做的所有操作,文件的位置位于/root目录下的anaconda-ks.cfg。
图22 anaconda-ks.cfg文件
下面是我自己的anaconda-ks.cfg文件。
我是通过pxe从网络自动安装的系统,所以和光盘安装有所不同。
图23 anaconda-ks.cfg内容
这个文件也可以通过system-config-kickstart的图形界面来编辑。前提需要安装这个rpm包,系统光盘自带这个包。下面的是kickstart configurator图形界面。
图24 kickstart configurator窗口
下面是笔者的ks.cfg配置内容。
Text
key –skip
keyboard us
lang en_US
langsupport –default en_US en_US
network –bootproto dhcp
nfs –server=192.168.0.1 –dir=/linuxinstall
zerombr yes
clearpart –all
part swap –size 512
part /boot –size 100
part pv.01 –size 14000
volgroup vol0 pv.01
logvol / --vgname=vol0 –size=8192 –name=root
logvol /home –vgname=vol0 –size=500 –name=home
timezone Asia/Shanghai –utc
xconfig –resolution=1024x768 –depth=16 –startxonboot
rootpw redhat
authconfig –useshadow –enablemd5
firewall –disabled
bootloader
reboot
%packages
@ GNOME Desktop Environment
@ X Window System
@ Printing Support
@ Development Tools
elinks
openssh
openssh-server
openssh-clients
vim-enhanced
samba-common
samba-client
gimp
gimp-data-extras
enscript
libcap
ntp
coreutils
elfutils
elfutils-libelf
gimp-print-plugin
gnome-icon-theme
gstreamer
gstreamer-tools
libgnomeprint22
libgnomeprintui22
libgsf
libIDL
libraw1394
nautilus-cd-burner
openmotif
pyorbit
startup-notification
ttmkfdir
firefox
mutt
%post
# Set the time, then set the hardware clock
ntpdate –b 192.168.0.1
hwclock –systohc –utc
# These accounts should be consolidated
useradd student
echo “student” | passwd –stdin student
useradd visitor
echo “password” | passwd –stdin visitor
umount 192.168.0.1:/kickstart
其中第一句text表示以字符界面安装,%packages表示需要安装的包,%post表示系统安装过后所执行的脚本。红色部分一定要注意,指定系统是通过nfs来安装的,安装路径是/linuxinstall
配置好以后保存为ks.cfg,放在后面我们建立了/kickstart目录下。
上面我们共享出了kickstart和linuxinstall文件夹,但是系统上并没有这两个文件夹,所以就需要我们来建立这两个文件夹,使用mkdir命令来执行新建操作。
图25 创建文件夹
然后将上步创建的ks.cfg保存到/kickstart中,需要注意的是在配置dhcp.conf文件中,我们就指定了filename “/kickstart/ks.cfg”所以路径一定不能搞错。你在dhcp.conf中写的路径是什么你就需要把你的ks.cfg 放在什么样的路径。并且要通过nfs给共享出来。
而/linuxinstall文件夹放的系统安装文件。
这步需要将linux内核复制到tftpboot文件夹内。
mount –t iso9660 /dev/cdrom /mnt/cdrom
#挂载光盘到/mnt/cdrom
cd /tftpboot/
#tfp-server指定的根目录位置(若该文件夹已经存在则不用建立,通常重启tftp服务后会自动建立)
cp /usr/lib/syslinux/pxelinux.0 /tftpboot
#pxelinux.0是pxe方式的boot loader,如果你发现没有这个目录,不要紧张。找到syslinux这个软件包就OK了
cp /mnt/cdrom/images/pxeboot/vmlinuz /tftpboot/
#把Linux第一张安装光盘上/image/pxeboot/initrd.img和vmlinux复制到/tftpboot/中
cp /mnt/cdrom/images/pxeboot/initrd.img /tftpboot/
mkdir /tftpboot/pxelinux.cfg
#在tftpboot中新建一个pxelinux.cfg目录
图26 pxelinux.cfg文件目录
由于启动镜像pxelinux.0文件在执行过程中,会读取配置文件以确定它应该载入什么Linux内核文件来运行。所有的配置文件都放在启动服务器的/tftpboot/pxelinux.cfg/目录下。pxelinux.0根据一定的规则来搜索合适的配置文件名。比如说C0A88A1E > C0A88A1 > … > C0 > C > default就是说,如果C0A88A1E文件存在,它就是pxelinux.0将载入的配置文件。否则,继续往下找。如果C0A88A1文件存在,它就是 pxelinux.0将载入的配置文件。如果前面的以C开头的文件都不存在,那么pxelinux.0将试图从文件default中读取配置。对于一台需要支持很多安装机器的安装服务器来说,将配置写在与IP地址对应的文件里很不灵活。把所有配置都集中在default文件中是个不错的主意,可以减轻配置文件维护负担。 这里也是为什么要建立pxelinux.cfg文件夹。所以接下来就要在pxelinux.cfg里建立default 文件,系统盘里也有这个文件,位于系统盘的isolinux下的isolinux.cfg但是我这里不借用它的default文件,所以这是我们使用vim编辑器在pxelinux.cfg中直接建立一个default文件。
图27 创建default文件
直接在里面写入一句话就可以了
default linux
label linux
kernel vmlinuz
append ksdevice=eth0 load_ramdisk=1 initrd=initrd.img network ks noipv6
图28 default文件内容
这样写的好处在于不用在待安装机器启动的时候做一些别的操作。
接下来是要在/linuxinstall文件夹中放入系统盘内的文件,你在挂载光盘后可以直接使用cp –r /mnt/cdrom /linuxinstall将文件复制到/linuxinstall中,不过这样做还是比较麻烦的,我直接使用mount –t iso9660 /dev/cdrom /linuxinstall把系统光盘给挂载到/linuxinstall中。
到这里我们的服务器可以说是配置的差不多了,剩下的就只要将这些服务给启动起来就可以了。
service dhcpd start
#启动dhcpd服务
chkconfig dhcpd on
#dhcpd服务开机自动启动
service nfs restart
#重启nfs服务
chkconfig nfs on
#nfs服务开机自动启动
service xinetd start
#启动xinetd服务
chkconfig xinetd on
#xinetd服务开机自动启动
将待安装机器启动起来,进入bios界面,将启动方式改为从网络启动,保存退出重启即可,有的机器则不用进入bios就可以直接进入安装界面。主要过程如下:
正在获取IP地址
图29 获取IP地址
获取到IP地址后,从tftp服务器上读取内核及default配置文件并执行安装
图30获取内核文件
图31 执行安装
从nfs上加载文件
图32 加载文件
格式化磁盘
图33 格式化磁盘
安装操作系统
图34 正在安装系统
安装完成,并重新启动计算机
图35安装完成并重启
重新启动后,系统已经安装成功。
如果安装开始的时候无法分配到IP地址,则说明你服务器的dhcp.conf配置的有问题,有可能你的语法有问题,比如说少了个分号(;),又或者单词写的有问题,这些语法错误会导致dhcp服务启动失败。
图36 tftp无法连接
上面也指出了错误的所在了,表示了无法连接到tftp服务器,导致这个错误的主要原因是在你的dhcp.conf文件的next-server和tftp-server-name两个字段上,如果这两个字段没有正确的指出tftp服务器的地址的话,一般就会出现这样的问题。这类问题一般都出现在dhcp服务器的配置上面,因为当待安装机器在局域网内广播需要分配IP地址的时候,服务器会将IP地址和一些安装文件的地址返回给待安装机器上,如果dhcp出现了问题则无法将这些地址返回回来,这就导致了待安装机器不知道从何处来获取安装文件。
可以获取到dhcp服务器分配的IP地址,也可以从tftp服务器上获取内核文件,并加载,但是在读取ks.cfg文件的时候出现了错误。如下图。
图37 无法获取ks.cfg文件
出现了这样的问题则说明你的客户端是知道ks.cfg的位置的,但是就是无法读取,所以我们看看服务器的ks.cfg的权限,一般都是客户端的权限不够,所以只要更改一下ks.cfg文件的权限这样的问题一般都是可以解决的。使用chmod命令来更改权限。
图38 更改ks.cfg文件权限
基本上到此服务器已经配置好了,可以执行批量的安装Red Hat Linux操作系统了。
本论文通过搭建kickstart无人值守服务器,介绍了一些基本Linux服务器的简单搭建,例如dhcp,nfs,tftp服务器的搭建,具体的步骤也都比较明确的写出来了。由于接触Linux还是比较迟,所以或许没有那么的完善,在写的过程中遇到很多古怪的问题,不过在老师的帮助下以及在网络和书本上查找大量资料才最终将他们一一的克服了
通过这样一篇论文使自己在Linux方面有了更深一层的认识,为以后自己在学习和工作中多出了一定的经验。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14293828/viewspace-1418500/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/14293828/viewspace-1418500/