基于网络的linux无人值守安装的配置
1.
方案介绍
这种方案需要首先设置一个启动服务器和一个安装服务器(可以配置在同一台物理机上),然后通过网络启动存放在启动服务器上的安装程序。安装程序会自动访问存放在安装服务器上的安装配置文件和安装介质来完成安装。
涉及到的技术
该方案主要应用了三种技术:
1)
在
PC
上从网络启动
Red Hat Linux
安装程序的
PXE
协议
2) Red Hat Linux
安装程序提供的网络安装功能(即指通过网络访问安装介质)
3) Red Hat Linux
安装程序提供的无人值守安装功能(
Red Hat
称为
kickstart
)
技术
1)
和
2)
在参考资料
1
和
2
里已有部分介绍。本文将重点描述参考资料中未涉及部分和无人值守安装功能。
软硬件需求
要按本文介绍的方法完成自动化安装,你需要如下软硬件资源:
一台
PC
机器作为启动和安装服务器(其它架构机器也可以)
一台待安装的
PC
机器,它的网卡必须带有
PXE
支持
一个建好的局域网,上述两台机器已经连接入同一子网
待安装的
Red Hat Linux
安装介质
该方案的实现步骤
1)
配置启动服务器
2)
配置安装服务器
3)
从网络启动机器以完成安装
步骤
1)
和
2)
只需做一次即可。对每一台需安装
Red Hat Linux
的机器,都需要在启动服务器和安装服务器中部署相应的数据,并执行一次步骤
3)
。
下面将带领您逐一执行这些步骤。为了简单,我将用示例来说明如何在一台安装了
Red Hat Enterprise Linux AS 3 Update 5
的
PC
机上设置启动服务器和安装服务器,并在一台
PC
上安装
Red Hat Enterprise Linux AS 4 Update 2
。
2.
配置启动服务器
启动服务器的目的是帮助在待安装机器上启动
Red Hat Linux
安装程序。启动服务器上需要搭建一个
DHCP
服务器和一个
TFTP
服务器。前者是为了给待安装机器分配
IP
地址,后者则是提供了一个让待安装机器下载启动镜像的途径。
2.1
配置
DHCP
服务器
1)
安装
DHCP
服务器包(
RPM
包名:
dhcpd
)。
2)
编辑
DHCP
服务器配置文件
/etc/dhcp.conf
。
这里是一个示例:
ddns-update-style none;
max-lease-time 7200;
server-name "bootserver";
default-lease-time 600;
allow booting;
allow bootp;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.1 192.168.1.254;
}
group pxe {
filename "/pxelinux.0"; //
放在
tftp
的根目录下
host testserver { hardware ethernet 00:0C:29:70:24:5B; fixed-address
192.168.1.248; } //
可以绑定也可以不绑定
}
//00:0C:29:70:24:5B
这个物理地址是预安装机器的
MAC
地址
//192.168.1.248
这个是给上面物理地址的机器分配的
IP
在这个例子中,定义的子网是
192.168.1.0/255.255.255.0
。主机定义项
testserver
指出
IP
地址
192.168.1.248
将分配给以太网卡
00:0C:29:70:24:5B
(待安装机器),文件
pxelinux.0
(在
TFTP
服务器的根目录中)将作为启动映像被网卡
ROM
里的
PXE
客户端载入内存并运行。
每增加一台需安装的机器,我们需在
dhcpd.conf
中增加一条
host
条目。
3)
给启动服务器配置一个
IP,
这个
IP
必须在
DHCP
服务器定义的子网内。
这里我们使用
192.168.1.240
4)
启动
DHCP
服务。
[root@bsvr] #service dhcpd restart
2.2
配置
tftp
服务器
1)
安装
TFTP
服务器包(
RPM
包名:
tftpd
)。
2)
编辑
TFTP
服务器的配置文件
/etc/xinetd.d/tftp
。
配置文件如下:
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = no //
这里必须是
NO
}
这里选定了/tftpboot为TFTP 服务器的根目录位置。
3)
将
Linux
安装程序的内核
/
根文件系统文件复制到
TFTP
服务器的根目录。对于每一个要被安装的
Red Hat Linux
版本,都需要执行一次该操作。
Red Hat Linux
第一张安装光盘
/isolinux
目录下会包含
Linux
安装程序的内核
/
根文件系统文件。
下面一段命令将这些文件复制到
TFTP
服务器的根目录下,并按照版本重新命名。
[root@bsvr]#mkdir /mnt/iso
[root@bsvr]#mount -o loop,ro RHEL4-U2-i386-AS-disc1.iso /mnt/iso
[root@bsvr]#cp /mnt/iso/isolinux/initrd.img /tftpboot
[root@bsvr]#cp /mnt/iso/isolinux/vmlinuz /tftpboot
[root@bsvr]#mv /tftpboot/initrd.img /tftpboot/initrd-rhel4u2-i386.img //
根据版本进行重新命名
[root@bsvr]#mv /tftpboot/vmlinuz /tftpboot/vmlinuz-rhel4u2-i386
4)
将启动镜像文件
pxelinux.0
复制到
TFTP
服务器根目录。
启动镜像
pxelinux.0
可以在
syslinux
安装包里获得。安装好
syslinux
安装包后,将
pxelinux.0
复制到
TFTP
服务器根目录。
[root@bsvr]#cp /usr/lib/syslinux/pxelinux.0 /tftpboot/
5)
编辑
pxelinux.0
的配置文件,以使
pxelinux
可以正确载入
Red Hat Linux
安装程序。
启动镜像
pxelinux.0
文件在执行过程中,会读取配置文件以确定它应该载入什么
Linux
内核文件来运行。所有的配置文件都放在启动服务器的
/tftpboot/pxelinux.cfg/
目录下。
pxelinux.0
根据一定的规则来搜索合适的配置文件名。举例来说,对于前面为待安装机器分配的
IP
地址
192.168.138.30
(十六进制表示为
C0A88A1E
),
pxelinux.0
会按如下次序搜索配置文件:
C0A88A1E > C0A88A1 > … > C0 > C > default
就是说,如果
C0A88A1E
文件存在,它就是
pxelinux.0
将载入的配置文件。否则,继续往下找。如果
C0A88A1
文件存在,它就是
pxelinux.0
将载入的配置文件。如果前面的以
C
开头的文件都不存在,那么
pxelinux.0
将试图从文件
default
中读取配置。对于一台需要支持很多安装机器的安装服务器来说,将配置写在与
IP
地址对应的文件里很不灵活。把所有配置都集中在
default
文件中是个不错的主意,可以减轻配置文件维护负担。
可以将能想到的
Red Hat Linux
版本的配置都写在
default
文件里,以便同时支持多种
Red Hat Linux
版本,如下所示
(
对于具体某个
Red Hat Linux
版本,对应的行该如何写,可以参考它安装盘里的配置文件
/isolinux/isolinux.cfg)
:
DEFAULT rhel4u2-i386
DISPLAY pxelinux.cfg/list
PROMPT 1
LABEL rhel3u6-i386
KERNEL vmlinuz-rhel3u6-i386
APPEND initrd=initrd-rhel3u6-i386.img
LABEL rhel3u6-x86_64
KERNEL vmlinuz-rhel3u6-x86_64
APPEND initrd=initrd-rhel3u6-x86_64.img devfs=nomount ramdisk_size=9216
LABEL rhel4u2-i386
KERNEL vmlinuz-rhel4u2-i386
APPEND initrd=initrd-rhel4u2-i386.img ramdisk_size=8192
这样用户可以通过输入某种版本的
LABEL
(例如,
rhel4u2-i386
)来选择具体的安装版本。为了能在安装时知道有哪些备选,可以让
pxelinux.0
提示要户选择之前显示一个列表。这通过在
default
里指定
DISPLAY
选项来实现。在上面的样例中,我们将所有备选
Red Hat Linux
版本列在文件
pxelinux.cfg/list
中,它的内容会被
pxelinux.0
显示出来。
在我们的例子中,
/tftpboot/pxelinux.cfg/list
文件内容如下:
Choose one of the following Linux distributions for your installation:
Name Distribution Arch. Installation media
-------------------------------------------------------------------------
rhel3u6-i386 RHEL 3 AS U6 i386 192.168.1.240: /instsvr/x86_64/rhel3u6 //
系统镜像文件路径
rhel3u6-x86_64 RHEL 3 AS U6 x86_64 192.168.1.240:/instsvr/x86_64/rhel3u6
rhel4u2-i386 RHEL 4 AS U2 i386 192.168.1.240:/instsvr/i386/rhel4u2
这里的系统版本名字要与
default
文件里面的
LABEL
的名字要一样
6)
启动
TFTP
服务。
[root@bsvr]#service xinetd restart
3.
配置安装服务器
安装服务器在安装期间提供对
Linux
安装介质和无人值守安装配置文件的访问。安装介质存储在服务器上的一个目录中,可以使用各种网络协议访问它,比如
HTTP
,
FTP
,和
NFS
。使用
NFS
协议,
Red Hat Linux
安装程序可以支持多种安装介质目录结构,尤其是支持
ISO
光盘镜像文件。这里我们选择使用
NFS
协议来访问安装介质。
3.1
配置
NFS
服务器
1)
准备
ISO
安装介质。将
Red Hat Linux
安装介质的
ISO
文件都放置到
/instsvr
目录下。注意不要改变文件名。
[root@bsvr]#mkdir /instsvr
[root@bsvr]#mv RHEL4-U2-i386-AS-disc1.iso /instsvr/i386/rhel4u2 //
把镜像文件移动到相应的目录
[root@bsvr]#mv RHEL4-U2-i386-AS-disc2.iso /instsvr/i386/rhel4u2
[root@bsvr]#mv RHEL4-U2-i386-AS-disc3.iso /instsrv/i386/rhel4u2
[root@bsvr]#mv RHEL4-U2-i386-AS-disc4.iso /instsrv/i386/rhel4u2
2)
编辑
NFS
服务器配置文件
/etc/exports
,以允许其它机器通过
NFS
访问目录
/instsrv
。
/etc/exports
文件内容如下
:
/instsvr *(ro,no_root_squash,sync) //
系统镜像文件的路径共享
/instsvr/ks *(ro,sync) //kickstart
共享
其中:
*
表示任何
IP
地址都可以访问该目录。为了安全的考虑,也可以指定具体的
IP
地址。
ro
表示远程机器对该目录只有读权限。
其它选项请参考
NFS
手册。
3)
重新启动
NFS
服务以使新配置生效
[root@bsvr]# service portmap restart; service nfs restart
4)
检测目录
/instsrv
是否已被正确共享
[root@bsvr]#showmount -e
Export list for localhost:
/instsrv *
这样,我们就设置好了一个安装服务器。很简单吧!