基于网络的Linux系统无人职守安装

基于网络的Linux系统无人职守安装

一、项目需求

在生产环境中我们有时候需要部署大量系统相同的服务器,当数量达到一定程度的时候,给每台服务器专门单独安装是非常耗时且枯燥的重复劳动,所以网络引导自动安装是我们解决问题的重要方法。

二、项目分析

想要实现网络无人职守的安装,首先需要这些计算机之间网络没有故障并且都能从网络引导,接下来我们需要一台放置安装源文件的服务器,由它提供DHCPPXETFTP、NFSKickstartHTTP(可选)、DNS(可选)这些服务。

下面列出每个服务在这个项目中发挥的作用:

  1. PXE:工作于C/S的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持来自网络的操作系统的启动过程。(这里默认由我们客户机的网卡提供了该服务)

  2. DHCP:由于客户使用了PXE是基于TCP/IP协议的,所以必须分配IP地址给客户机,而且这里还告诉了客户机TFTP Server的位置。

  3. TFTPPXE引导的过程需要使用TFTP协议下载我们的kernelinitrd文件以及相关的启动选择配置文件菜单等,我们的服务器TFTP 服务提供了这两个文件。有了这两个文件,我们就能引导起系统来,通过网络安装(FTP,NFS等方式)

  4. Kickstartlinux的系统安装配置文件,当我们手动安装的时候,每一步的配置最终会保存为一个ks文件,里面记录了整个系统安装需要的一些设置,其中包括安装的包以及分区等等大量信息,当客户机安装系统的时候有了这个配置文件我们就能不必每次手动配置来完成安装了。

  5. NFS:当系统引导起来开始安装后,我们是使用了NFS作为安装来源(配置方便并且容易使用),只需要选择在服务器上用NFS共享出安装文件目录即可。

  6. DNS:如果我们想要每台客户机装好以后都自动设置好了它的hostname,我们可以利用DNS的反向解析让客户机获取自己的hostname

  7. HTTP:这里为了多练习我们这里是使用了HTTP方式来提供了客户机ks文件的获取,如果你觉得麻烦,可以就使用NFS的方式。

三、 拓扑图



四、实现过程

  1. 配置DHCP
    首先保证你的DHCP服务已经安装,我们vim打开/etc/dhcpd.conf,在里面加入以下内容:
    allow bootp;
    allow booting;
    #
    其实这里不加也没有关系,默认就有

    option domain-name "lenovo.cn";
    option domain-name-servers ns.lenovo.cn;
    default-lease-time 600; #
    默认租约时间
    max-lease-time 7200; #
    最大租约时间
    next-server 192.168.0.32 ; #TFTP
    服务器地址,这里还是指定为本机
    filename "pxelinux.0"; #
    网卡ROM加载的一个配置文件

    subnet 192.168.0.0 netmask 255.255.255.0 {

    range 192.168.0.100 192.168.0.110; #分配IP的范围

    option domain-name-servers 192.168.0.32; #DNS服务器地址

    option routers 192.168.0.1; #网关地址

    }

  2. 配置TFTP
    首先必须安装TFTP服务:
    tftp.i386 0:0.49-1.fc10 tftp-server-0.49-1.fc10.i386
    由于会默认去到/tftpboot下找文件,所以我们发现没有该目录则创建之。
    首先我们复制一个文件:/usr/lib/syslinux/pxelinux.0 /tftpboot下面。
    接下来,我们将光盘目录下isolinux内的文件全部都复制到/ftpboot目录下,并且修改两个文件名(为了以后拓展功能,改名把各个系统内核区分开)
    mv initrd.img initrd.fc10.img
    mv vmlinuz vmlinuz.fc10

然后,创建/tftpboot/pexlinux.cfg目录,在下面创建default文件并编辑之:
default bootlocal #默认从本地启动

prompt 1
timeout 60 #
超时时间
label bootlocal
localboot 0
label fedora
kernel vmlinuz.fc10
内核以及初始化镜像

append initrd=initrd.fc10.img ramdisk_size=65536 ks=http://192.168.0.32/fc10Install.ks
#指定
ks文件获取路径
这里我做了个简单的配置,具体写法可以去参照网上的wiki
最后,我们需要让
TFTP服务启动,去修改/etc/xinetd.d/tftp这个文件,修改其中两 项:
disable = no #打开TFTP服务的启用
server_args = -s /tftpboot #
服务器的根目录设为
/tftpboot

  1. 配置NFS
    NFS
    在这里负责共享安装需要的文件,需要共享下安装文件的目录(拷贝光盘下所有文件到那个目录),配置如下:
    /FC10Install 192.168.0.0/24(ro,sync)

  2. 配置DNS(可选)
    DNS里面对DHCP分配出去那个网段进行反向解析,具体内容参见DNS服务搭建部分。

  3. 制作ks文件
    在我们的系统安装好以后在root的家目录下有个anaconda-ks.cfg,我们安装个配置工具system-config-kickstart
    使用这个工具打开我们现有的anaconda-ks.cfg这个文件,进去后注意选中文字安装界面和安装好后自动重启。
    另外,如果安装好后需要运行一些脚本可以修改Post-Installation部分。
    修改完后我们另存为一个文件,这里如果使用HTTP提供给客户可保存到
    /var/www/html/
    目录下,注意权限修改为644
    这里是我的一个ks文件示例:

    6.配置apache(可选)

    如果以前做过虚拟主机或者改过默认网站主目录,改回去成默认状态即可。

   7.启动各类服务:

  1. service dhcpd restart
    service xinetd restart
    service nfs restart
    service named restart
    service httpd restart

四、测试

将客户机重启并设置BIOS从网络启动,观察启动过程。

五、总结

本文描述了如何搭建一个基于网络的linux自动安装过程,在实际生产环境下比较使用而且能节省大量的人力资源,并且还能拓展开来搭建网络的系统救援模式,甚至搭建从网络启动的linux无盘工作站。

六、参考文档

基于网络的 Red Hat 无人值守安装

http://www.ibm.com/developerworks/cn/linux/l-autoinstl/
pxelinux.cfg
文件配置
http://syslinux.zytor.com/wiki/index.php/PXELINUX



posted @ 2009-05-10 22:57  Hello! Linux 博客  Views(633)  Comments(0Edit  收藏  举报