基于PXE方式的Linux系统维护工具箱
在安装RedHat Linux系统的过程中,我们知道可以通过PXE方式进行安装,从而解决了无光驱或无安装介质(光盘)来安装操作系统。但是当系统由于某种原因导致系统崩溃的问题,在这个时候首先要想到的是试图修复,而不是直接重装操作系统。因为在大多数的情况下,我们都可以通过系统维护工具来完成修复。本文主要介绍如何制作基于PXE方式的系统维护工具箱。
一、系统维护工具简介
作为一个网络管理员,我们会有许多的服务器密码,如果你没有有效的管理方法;最常见的就是你去维护一台服务器的时候忘记了管理员(root)密码,甚至没有管理员密码。对于这种情况,我们的解决方法是单用户维护模式下进行恢复口令。由于篇幅问题这里不详细介绍单用户模式的使用。
注意:使用单用户模式有一个前提,就是您的系统引导器(grub)能正常工作,否则要进行系统维护就要使用修复模式。
单用户模式下可以进行正常的系统维护(系统能够正常启动),而修复(rescue)模式,也可以称为救援模式,可以对不能从硬盘独立启动的 Linux 系统进行手工修复。
什么是救援模式?
救援模式是 Red Hat Enterprise Linux 的安装程序 Anaconda 所提供的一项功能,即利用安装用启动介质上的启动加载器进行开机,并执行启动介质上的 Linux 内核来启动计算机,从而取代硬盘中错误或故障的启动加载器或 Linux 内核,避开init 服务执行前所有发生的错误。如此一来,通过救援模式,可用来解决 init 服务前所有的错误。
一般情况下,可以使用RedHat Linux安装光盘启动救援模式,首先需要确认你的计算机BIOS中的首选启动项设置CDROM,接着使用第一张安装CD或DVD盘引导系统,过程类似安装过程,注意,在“boot:”提示符下输入“linux rescue”,就可以进入救援模式,最后按照提示配置即可。
Linux系统备份工具Clonezilla 介绍
Clonezilla是由台湾国网中心(NCHC) 的蕭志榥等人在一些开源项目基础上所开发的一款很优秀的系统克隆工具,它基于Partimage,吸取了Norton Ghost和Partition Image的优点。不仅支持对整个系统进行克隆,而且也可以克隆单个的分区,这种灵活性可能更能适应备份者的需要。支持GNU/Linux的文件系统ext2、ext3、reiserfs、xfs、jfs和Windows的FAT、FAT32、NTFS文件系统。Clonezilla支持使用PXEBoot来进行Multicast克隆。这对于需要克隆大量系统的用户极为有用。
Clonezilla(再生龙) 特点:
Ø 自由软体, 国网中心所开发。
Ø 可还原再生多种作业系统,包含Linux (ext2, ext3, reiserfs, xfs, jfs), 微软Windows (fat, ntfs)。
Ø 支持GNU/Linux下的LVM2 (尚未支援LVM1)。
Ø 支持群播(Multicast)。配合PXE网络开机,搭配DRBL的Clonezilla可以使用多播(multicast)的方式,适合用来大备份与还原。硬件设备功能足够时(用户端支持Wake on LAN与PXE),可以远端操作,人不需到现场。
Ø 不同于Partimage或是ntfsclone只能处理分区,Clonezilla包含其他程序的撰写与整合,因此可以备份与复制分区或是整块硬盘。
Ø 不同於G4U或是G4L ,Clonezilla环境中,支持的文件系统(ext2, ext3, reiserfs, xfs, jfs, fat, ntfs),只备份有存资料的硬盘空间,因此可以节省备份时间与硬盘空间。其他不支持的文件系统Clonezilla采用dd的方式处理。
Ø 通过本实验室开发的另外一套自由软件drbl-winroll可以指定还原后微软Windows的主机名称、工作组,还可写入随机的SID。
Ø 有单机版免安装的还原系统Clonezilla Live可以使用。
关于Clonezilla的更多信息请参考http://www.clonezilla.org/
二、系统维护工具箱的制作
首先,介绍一下本工具箱包含的功能:
1) 希望能够无人值守安装Red Hat AS 5.3和CentOS5.3
2) 救援模式和Clonezilla工具的使用
工具箱的菜单规划
基于上述功能,我将本工具箱的菜单规划为以下目录
n Boot local hard drive
n Operating System install Menu
u Return to Main Menu
u RHEL 5.3 i386
u CentOS 5.3 i386
n Setup ToolBox Menu
u Return to Main Menu
u RHEL5 Rescue Mode
u Clonezilla Live
配置基于PXE方式的工具箱
编辑本工具主要有以下步骤:
① 配置DHCP,用于给客户端提供IP地址及其它信息
② 配置TFTP服务器,用于提供客户端PXE引导所必须的文件
PXE原理以及第1-2步骤配置请参考《Linux Kickstart无人值守安装上》一文进行配置。
③ 安装配置NFS服务器
创建共享目录,分别将相关光盘内容拷贝到相应的共享目录中:
[root@qiuri Server]#mkdir /mnt/RHEL5.3
[root@qiuri Server]#mkdir /mnt/CentOS5.3
安装NFS并将共享目录发布出去,并重启服务使配置生效。
[root@qiuri Server]# vi /etc/exports
/mnt/RHEL5.3 *(ro,sync)
/mnt/CentOS5.3 *(ro,sync)
[root@qiuri Server]# service portmap restart
[root@qiuri Server]# service nfs start
PXE启动映像文件由syslinux软件包提供,RedHat Enterprise Linux光盘中已提供,如果没有此软件包可以到syslinux 主页:http://syslinux.zytor.com/下载rpm来安装。
注意:如果未安装,使用yum -y install syslinux进行安装。
我们只要安装了syslinux,就会生成一个pxelinux.0,将 pxelinux.0 和启动所需的文件复制到 '''/tftpboot'''
创建共享目录,分别将相关光盘内容拷贝到相应的共享目录中:
[root@qiuri Server]# rpm -ql syslinux |grep "pxelinux.0"
/usr/lib/syslinux/pxelinux.0
[root@qiuri Server]# cp /usr/lib/syslinux/pxelinux.0 /tftpboot/
[root@qiuri Server]#cp /usr/lib/syslinux/memdisk /tftpboot
[root@qiuri Server]#cp /usr/lib/syslinux/mboot.c32 /tftpboot
[root@qiuri Server]#cp /usr/lib/syslinux/chain.c32 /tftpboot
[root@qiuri Server]#cp /usr/lib/syslinux/menu.c32 /tftpboot
⑤ 配置网络启动的内核文件
创建内核及启动映像文件存放目录:
[root@qiuri Server]#mkdir -p /tftpboot/images/RHEL5.3
[root@qiuri Server]# mkdir -p /tftpboot/images/CentOS5.3
复制 RedHat和CentOS 的内核和启动映像文件。
[root@qiuri Server]#cd /tftpboot/images/RHEL5.3/
[root@qiuri RHEL5.3]#cp /mnt/RHEL5.3/images/pxeboot/{vmlinuz,initrd.img} .
[root@qiuri RHEL5.3]#cd ../CentOS5.3/
[root@qiuri CentOS5.3]# cp /mnt/ CentOS5.3/images/pxeboot/{vmlinuz,initrd.img} .
⑥ 编辑 PXE 菜单
1) 创建PXE菜单目录
[root@qiuri Server]# mkdir /tftpboot/pxelinux.cfg
2) 编辑PXE主菜单
[root@ qiuri Server]# vi /tftpboot/pxelinux.cfg/default
default menu.c32
prompt 0
timeout 300
ONTIMEOUT local
MENU TITLE Main Menu
MENU INCLUDE pxelinux.cfg/graphics.conf
MENU AUTOBOOT Starting Local System in 300 seconds
LABEL local
MENU LABEL ^Boot local hard drive
LOCALBOOT 0
LABEL os install
MENU LABEL ^Operating System install Menu
KERNEL menu.c32
APPEND pxelinux.cfg/install
LABEL tools
MENU LABEL ^Setup ToolBox Menu
KERNEL menu.c32
APPEND pxelinux.cfg/tools
编辑菜单图形:
[root@qiuri ~]# vi /tftpboot/pxelinux.cfg/graphics.conf
menu color tabmsg 37;40 #80ffffff #00000000
menu color hotsel 30;47 #40000000 #20ffffff
menu color sel 30;47 #40000000 #20ffffff
menu color scrollbar 30;47 #40000000 #20ffffff
MENU WIDTH 80
MENU MARGIN 22
MENU ROWS 6
MENU TABMSGROW 15
MENU CMDLINEROW 15
MENU ENDROW 24
MENU TIMEOUTROW 13
MENU VSHIFT 6
#MENU MASTER PASSWD yourpassword
#MENU PASSPROMPT Enter Password:
#MENU PASSWORDROW 12
#MENU PASSWORDMARGIN 26
NOESCAPE 0
ALLOWOPTIONS 0
~
"/tftpboot/pxelinux.cfg/graphics.conf"
3) 编辑 PXE 子菜单
编辑无人值守系统安装菜单:
[root@qiuri ~]# vi /tftpboot/pxelinux.cfg/install
MENU TITLE Operating System install Menu
LABEL Main Menu
MENU LABEL ^Return to Main Menu
KERNEL menu.c32
APPEND pxelinux.cfg/default
LABEL RHEL 5.3
MENU LABEL RHEL 5.3 ^i386
KERNEL images/RHEL5.3/vmlinuz
APPEND ks=nfs:192.168.18.1:/mnt/RHEL5.3/ks.cfg initrd=images/RHEL5.3/initrd.img
LABEL CentOS 5.3
MENU LABEL CentOS 5.3 ^i386
KERNEL images/CentOS5.3/vmlinuz
APPEND ks=nfs:192.168.18.1:/mnt/CentOS5.3/ks.cfg initrd=images/CentOS5.3/initrd.img
编辑工具菜单:
[root@qiuri ~]# vi /tftpboot/pxelinux.cfg/tools
MENU TITLE Setup ToolBox Menu
LABEL Main Menu
MENU LABEL ^Return to Main Menu
KERNEL menu.c32
APPEND pxelinux.cfg/default
LABEL rescue
MENU LABEL RHEL5 Rescue Mode
kernel images/RHEL5.3/vmlinuz
append ks=nfs:192.168.18.1:/mnt/RHEL5.3/rescue.cfg initrd=images/RHEL5.3/initrd.img text rescue
⑦ 配置Kickstart应答文件
详细配置请参考《Linux Kickstart无人值守安装下》中的“配置Kickstart安装”进行配置
⑧ 配置工具箱
1)配置救援模式的Kickstart应答文件:
[root@qiuri ~]# vi /mnt/RHEL5.3/rescue.cfg
lang zh_CN.UTF-8
langsupport --default=en_US.UTF-8 en_US.UTF-8
keyboard us
mouse none
nfs --server=192.168.18.1 --dir=/mnt/RHEL5.3
network --bootproto=dhcp
2)配置 Clonezilla live 的 PXE 启动
配置PXE启动文件
[root@qiuri ~]# mkdir -p /tftpboot/images/clonezilla
[root@qiuri ~]# unzip -j clonezilla-live-20090727-jaunty.zip \
> live/vmlinuz1 live/initrd1.img \
> -d /tftpboot/images/clonezilla/
Archive: clonezilla-live-20090727-jaunty.zip
extracting: /tftpboot/images/clonezilla/initrd1.img
extracting: /tftpboot/images/clonezilla/vmlinuz1
[root@qiuri ~]# ls /tftpboot/images/clonezilla/
initrd1.img vmlinuz1
[root@qiuri ~]# unzip -j clonezilla-live-20090727-jaunty.zip \
> live/filesystem.squashfs live/memtest \
> -d /tftpboot/
Archive: clonezilla-live-20090727-jaunty.zip
extracting: /tftpboot/filesystem.squashfs
extracting: /tftpboot/memtest
[root@qiuri ~]# unzip -j clonezilla-live-20090727-jaunty.zip \
> live/freedos.img \
> -d /tftpboot/images/
Archive: clonezilla-live-20090727-jaunty.zip
extracting: /tftpboot/images/freedos.img
[root@qiuri ~]#
在/tftpboot/pxelinux.cfg/tools中添加:
LABEL Clonezilla
MENU LABEL ^Clonezilla Live
KERNEL images/clonezilla/vmlinuz1
APPEND initrd=images/clonezilla/initrd1.img boot=live union=aufs noswap noprompt vga=788 ocs_live_keymap=NONE ocs_lang=zh_CN.UTF-8 fetch=tftp://192.168.18.1/filesystem.squashfs
三、配置后的功能验证
最后,我们在客户端上将BIOS设置为网卡启动,成功通过网卡启动后看到下图界面:
验证无人值守安装Linux
我们选择“Operating System install Menu”菜单,将进入其子菜单中,如下图所示:
例如:我们进行无人值守安装RHEL5.3,选择“RHEL 5.3 i386”菜单即可。以下的步骤和我们在无人值守安装过程中一样。
验证基于PXE的救援模式
我们只需要在主菜单中选择“Setup ToolBox Menu”菜单,即可进入其子菜单,之后选择“RHEL5 Rescue Mode”如下图所示:
稍后,几秒钟即可看到如下界面:
到该界面,熟悉救援模式的朋友,就知道如何去做了,如果不了解的朋友,根据提示也可以成功进入救援模式。
验证Clonezilla工具
如果我们选择主菜单中“Setup ToolBox Menu”菜单,即可进入其子菜单,之后选择“Clonezilla Live”如下图所示:
程序下载文件
成功进入Clonezilla工具界面:
关于该备份工具的使用,如果你使用过Ghost的话,按照软件的中文说明,即可完成使用。如果不熟悉的话可以参考网上相关文章,这里不做介绍。