《kickstart无人值守自动安装Linux系统.pdf》由会员分享,可在线阅读,更多相关《kickstart无人值守自动安装Linux系统.pdf(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、KickStartKickStart 无人值守批量安装无人值守批量安装 LinuxLinux 系统系统一:需求分析一:需求分析不适合本地安装的情况如下:(1)无软驱和光驱:如果计算机不带光驱或软驱,则无法通过本地安装。(2)非标准的软驱和光驱:虽然笔记本电脑都会配置光驱。但是并不一定都是标准的 IDE 设备,有些通过 USB 接口或 1394 接口(例如 Samsung 的Q10)连接。在 Linux 安装时所引导的Linux 内核一般都不会带这些接口的驱动,所以也无法通过本地安装。(3)在一些场合,如机房中有大量的计算机需要同时安装Linux。如果通过光驱的方式逐台安装,不仅效率低,也不利于
2、维护。(4)光驱或安装光盘故障。基于以上所属情况,kickstart 服务就可以解决这些问题。二:方案设计二:方案设计什么是什么是 PXEPXE:所有系统的网络安装和无人职守安装都是基于PXE,PXE 技术与 RPL 技术不同之处为RPL 是静态路由,PXE 是动态路由。RPL 是根据网卡上的ID号加上其他记录组成的一个Frame(帧)向服务器发出请求。而服务器中已有这个 ID 数据,匹配成功则进行远程启动。PXE 则是根据服务器端收到的工件站 MAC 地址,使用 DHCP 服务为这个 MAC 地址指定个 IP 地址。每次启动可能同一台工作站有与上次启动有不同的IP,即动态分配地址。下以客户端
3、引导过程说明PXE 的原理。(1)客户端开机后,PXE BootROM(自启动芯片)获得控制权之前执行自我测试,然后以广播形式发出一个请求FIND 帧。(2)如果服务器收到客户端所送出的要求,就会送回DHCP 回应,包括用户端的 IP 地址、预设通信通道,以及开机映像文件;否则服务器会忽略这个要求。(3)客户端收到服务器发回的响应后则会回应一个帧,以请求传送启动所需文件,并把自己的MAC 地址写到服务器端的Netnames.db 文件中。(4)将有更多的消息在客户端与服务器之间应答,用于决定启动参数。BootROM 由 TFTP 通信协议从服务器下载开机映像文档。客户端使用TFTP协议接收启动
4、文件后,将控制权转交启动块以引导操作系统,完成远程启动。PXEPXE 工安装流程:工安装流程:PXE 协议的成功运行需要解决以下的两个问题(1)既然是通过网络传输,那么计算机在启动时其IP 地址如何配置?(2)通过何种下载Linux 内核和根文件系统?第一个问题可以通过DHCP Server 解决,由 DHCP Server 来为 PXE Client分配一个 IP 地址,DHCP Server 是用来为 DHCP Client 动态分配 IP 地址的协议。不过由于这里是为PXE Client 分配 IP 地址,所以在配置DHCP Server时需要增加相应的PXE 特有配置;至于第2 个问题
5、,在 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 个二进制文件是
6、PXE Client 在工件过程中所必需的文件,即bootstrap、Linux 内核和 Linux 根文件系统。Bootstrap 文件是可执行程序,它为用户提供简单的控制界面,并根据用户的选择下载合适的Linux 内核以及Linux 根文件系统。三:环境准备三:环境准备1、一台 server 担任启动服务器和安装服务器2、一台 client,需要能从网卡启动3、两台机器在同一局域网4、服务器要有安装所需的所有包软件包5、我们用 10.1.24.0/24 网段来试验(网段可随意,本人学号为 24)四:实施步骤四:实施步骤配置配置 IPIP 地址地址(1)在终端里输入setupsetup 打开
7、 IP 配置图形界面。然后重启网卡service network restart安装安装 rpmrpm 软件包软件包配置该服务器需要安装dhcp,tftp,nfs,等相关软件包。首先需要检查本机上是否已经安装了这些包,输入rpm qa|grep+包名。首先需要检查本机上是否已经安装了这些包,输入rpm qa|grep+包名。图 7 检查 RPM 包如果没有安装这些包则需要通过rpm ivh+包名 安装。首先需要用mountmount/dev/hdc/dev/hdc/mnt/mnt来将系统光盘挂载到/mnt/mnt 目录下。然后安装需要的rpm 包。配置配置 dhcpdhcp 服务服务需要的软件
8、包都安装好之后,使用vim 编辑器编辑 dhcp 服务的配置文件/etc/dhcp.conf/etc/dhcp.conf由于是第一次编辑dhcp.conf 所以里面的内容是空的,那么我们就需要将/usr/shar/doc/dhcp-3.0.5/dhcp.conf.sample复制到/etc 下并改名为 dhcp.conf复制之后,再进入配置文件可以看到以下内容,然后就可以进行相应的修改了。修改后的内容如下:ddns-update-style interim;ignore client-updates;next-server 10.1.24.1;filename pxelinux.0;subne
9、t 10.1.24.0 netmask 255.255.255.0#-default gatewayoption routers10.1.24.254;option subnet-mask255.255.255.0;default-lease-time 21600;max-lease-time 43200;range10.1.24.2010.1.24.200;filename/linuxinstall/ks.cfg;next-server 10.1.24.10;default-lease-time 21600;max-lease-time 43200;option space PXE;clas
10、s 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 0 x1;filename pxelinux.0;option tftp-server-name 10.1.24.10;option vendor-class-identifier PXEClient;vendor-option-space PXE;需要注意的是字段range 是给待安装的机器分配的的IP 地址
11、池,filename字段是 ks.cfg 的位置,即待安装机器所需要的安装配置文件,next-server是 tftp 服务器的位置。和下面的tftp-server-name字段是对应的。配置配置 tftptftp 服务服务tftp 是为了给待安装的机器发送文件的简单的文件传输服务。这个配置还是比较简单的,只需要把这个服务给启用就可以了。使用 vim 编辑器打开/etc/xinetd.d/tftp文件图 17 tftp配置文件位置将里面的 disable 字段值改为 no,保存退出就可以了。配置配置 nfsnfs 服务服务nfs 服务是将安装过程所需要的一些文件共享出来,这个也是比较简单的。使
12、用 vim 编辑器打开/etc/exports 文件,只要将你想共享的文件夹写入其中就可以了,我们这里需要把/mnt/tftpboot/linuxinstall给共享出来就可以了,其中/linuxinstall目录是我们自己建立的,将在后面建立。而/tftpboot目录是在安装 tftp-server 的 rpm 包时候自动建立的。配置如下:保存退出其中*表示任何主机都可以访问,ro 表示 read only,只读权限,sync 表示与服务器同步。通过输入 service nfs restart 重启 nfs 服务,然后我们输入exportfs 可以看见我们共享的文件。配置配置 ks.cfgk
13、s.cfg 文件文件ks.cfg 是待安装机器的所有的配置文件,每台机器在安装过linux 系统以后都会自动生成一个ks.cfg 文件里面记录了在安装系统的时候所做的所有操作,文件的位置位于/root 目录下名为 anaconda-ks.cfg。图 22 anaconda-ks.cfg文件下面是我自己的anaconda-ks.cfg文件。这个文件也可以通过system-config-kickstart的图形界面来编辑。前提需要安装这个 rpm 包,系统光盘自带这个包。下面的是kickstartconfigurator图形界面。本次实验用的本次实验用的 ks.cfgks.cfg 文件内容如下文件
14、内容如下#/linuxinstall/ks.cfg的配置内容installtextnfs-server=10.1.24.10-dir=/mntkey-skiplang zh_CN.UTF-8keyboard usnetwork-device eth0-bootproto dhcp-onboot=onrootpw 123456firewall-disabledauthconfig-enableshadow-enablemd5selinux-disabledtimezone Asia/Shanghaibootloader-location=mbr-driveorder=sda-append=rhg
15、b quietzerombrclearpart-all-drives=sda-initlabelpart/-fstype ext3-size=1-growpart/var-fstype ext3-size=2000part swap-size=1000reboot%packagesbasecoreeditors#text-internet#web-server#mysql#dns-server#sysstat%post/usr/sbin/useradd admin/bin/echo 888888|/usr/bin/passwd admin-stdin/bin/touch/home/admin/
16、HelloWorld/sbin/chkconfig auditd off/sbin/chkconfig autofs off/sbin/chkconfig avahi-daemon off/sbin/chkconfig bluetooth off/sbin/chkconfig cups off/sbin/chkconfig firstboot off/sbin/chkconfig gpm off/sbin/chkconfig haldaemon off/sbin/chkconfig hidd off/sbin/chkconfig ip6tables off/sbin/chkconfig kud
17、zu off/sbin/chkconfig lvm2-monitor off/sbin/chkconfig mcstrans off/sbin/chkconfig netfs off/sbin/chkconfig nfslock off/sbin/chkconfig pcscd off/sbin/chkconfig portmap off/sbin/chkconfig restorecond off/sbin/chkconfig rhnsd off/sbin/chkconfig rpcgssd off/sbin/chkconfig rpcidmapd off/sbin/chkconfig sm
18、artd off/sbin/chkconfig xfs off/sbin/chkconfig yum-updatesd off创建所需文件夹创建所需文件夹上 面 我 们 共 享 出 了/mnt和/linuxinstall目 录,但 是 系 统 上 并 没 有/linuxinstall这个目录,所以就需要我们来建立,使用 mkdir 命令来执行新建操作。mkdir/linuxinstallmkdir/linuxinstall然后将上步创建的ks.cfg 文件保存到/linuxinstall目录中,需要注意的是在配置 dhcp.conf 文件中,我们就指定了 filename“/linuxinst
19、all/ks.cfg”所以路径一定不能搞错。你在 dhcp.conf 中写的路径是什么你就需要把你的ks.cfg放在什么样的路径。并且要通过nfs 给共享出来。配置支持配置支持 PXEPXE 启动启动这步需要将 linux 内核复制到 tftpboot 文件夹内。mount/dev/hdc/mntmount/dev/hdc/mnt#把第一张光盘挂载到/mnt/mntcd/tftpboot/#tfp-server指定的根目录位置(若该文件夹已经存在则不用建立,通常重启tftp 服务后会自动建立)cp/usr/lib/syslinux/pxelinux.0/tftpbootcp/usr/lib/s
20、yslinux/pxelinux.0/tftpboot#pxelinux.0 是 pxe 方式的 boot loader,如果你发现没有这个目录,不要紧张。找到 syslinux 这个软件包就 OK 了cp/mnt/images/pxeboot/vmlinuz/tftpboot/cp/mnt/images/pxeboot/vmlinuz/tftpboot/#把 Linux 第一张安装光盘上/image/pxeboot/initrd.img和 vmlinux 复制到/tftpboot/中cp/mnt/images/pxeboot/initrd.img/tftpboot/cp/mnt/images
21、/pxeboot/initrd.img/tftpboot/mkdir/tftpboot/pxelinux.cfgmkdir/tftpboot/pxelinux.cfg#在 tftpboot 中新建一个 pxelinux.cfg 目录复制好之后,/tftpboot/tftpboot/目录下应该有以下内容才对:由于启动镜像 pxelinux.0 文件在执行过程中,会读取配置文件以确定它应该载入什么 Linux 内核文件来运行。所有的配置文件都放在启动服务器的/tftpboot/pxelinux.cfg/目录下。pxelinux.0 根据一定的规则来搜索合适的配置文件名。比如说C0A88A1E C0
22、A88A1 C0 C default 就是说,如果 C0A88A1E 文件存在,它就是pxelinux.0 将载入的配置文件。否则,继续往下找。如果C0A88A1 文件存在,它就是pxelinux.0 将载入的配置文件。如果前面的以C 开头的文件都不存在,那么pxelinux.0 将试图从文件 default 中读取配置。对于一台需要支持很多安装机器的安装服务器来说,将配置写在与IP 地址对应的文件里很不灵活。把所有配置都集中在default 文件中是个不错的主意,可以减轻配置文件维护负担。这里也是为什么要建立pxelinux.cfg文件夹。所以接下来就要在pxelinux.cfg里建立 de
23、fault文件,系统盘里也有这个文件,位于系统盘的isolinux下的isolinux.cfg但是我这里不借用它的default 文件,所以这是我们使用vim编辑器在 pxelinux.cfg 中直接建立一个default 文件。图 27 创建 default 文件直接在里面写入一句话就可以了default linuxprompt 0labellinuxkernelvmlinuzappend ks=nfs:10.1.24.10:/linuxinstall/ks.cfg initrd=initrd.img这样写的好处在于不用在待安装机器启动的时候做一些别的操作。接下来是要使用mount/dev/
24、hdc/mnt把系统光盘给挂载到/mnt 中。启动服务器启动服务器到这里我们的服务器可以说是配置的差不多了,剩下的就只要将这些服务给启动起来就可以了。service dhcpd restart#启动 dhcpd 服务 chkconfig dhcpd on#dhcpd 服务开机自动启动service nfs restart#重启 nfs 服务 chkconfig nfs on#nfs 服务开机自动启动 service xinetd restart#启动 xinetd 服务 chkconfig xinetd on#xinetd 服务开机自动启动五:测试五:测试将待安装机器启动起来,进入bios 界
25、面,将启动方式改为从网络启动,保存退出重启即可,有的机器则不用进入bios 就可以直接进入安装界面。主要过程如下:通过 DHCP 获取 IP 地址通过 tftp 服务器下载配置文件发送 IP 信息请求检查软件包依赖关系开始安装安装完成,重启系统六、常见故障排除六、常见故障排除6.16.1 无法分配到无法分配到 IPIP 地址地址如果安装开始的时候无法分配到IP 地址,则说明你服务器的dhcp.conf 配置的有问题,有可能你的语法有问题,比如说少了个分号(;),又或者单词写的有问题,这些语法错误会导致dhcp 服务启动失败。6.2 tftp6.2 tftp 无法连接无法连接导致这个错误的主要原
26、因是在你的 dhcp.conf文件的 next-server和tftp-server-name两个字段上,如果这两个字段没有正确的指出tftp 服务器的地址的话,一般就会出现这样的问题。或者是tftp 服务没有启动,这类问题一般都出现在dhcp 服务器的配置上面,因为当待安装机器在局域网内广播需要分配IP 地址的时候,服务器会将IP 地址和一些安装文件的地址返回给待安装机器上,如果dhcp 出现了问题则无法将这些地址返回回来,这就导致了待安装机器不知道从何处来获取安装文件。返回修改好 tftp指定 IP 地址,再把/etc/xinetd.d/tftp里面 disable 字段值改为 no,即可
27、。6.36.3 无法获取无法获取 ks.cfgks.cfg 文件文件可以获取到 dhcp 服务器分配的 IP 地址,也可以从 tftp 服务器上获取内核文件,并加载,但是在读取ks.cfg 文件的时候出现了错误。如下图。图 37 无法获取 ks.cfg 文件出现了这样的问题则说明你的default 文件指定的 nfs 服务器的地址错误,如上图,IP 应该为 10.1.24.10 即可6.46.4 在指定目录无法获取安装信息在指定目录无法获取安装信息出现这种情况,是因为光盘没有挂载上来,或者是挂错了光盘,正确的解决办重新把第一张光盘挂载到/mnt/mnt目录六:总结六:总结如果只是完成一个 kickstart 服务,不是很难,因为如今的网络资源可以说是应有尽有,但是,要真正明白其中的原理,就要花一定的时间去研究研究。比如说,kickstart 服务的工作流程,及其用到的哪些技术。像这些知识如果没有掌握好,实施起来就会出现很多问题。运气好第一次测试就成功,但是出现错误的时候,你怎么知道它错在哪里,而如果你把服务的流程和工作原理都了解透彻的话,这些问题就会很容易解决。通过这样一篇论文,使自己在Linux 方面有更深一层的认识,为以后自己在学习和工作中积累更多的经验。
限制150内