基於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引導所必須的文件
③ 安裝配置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應答文件
⑧ 配置工具箱
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的話,按照軟件的中文說明,即可完成使用。如果不熟悉的話可以參考網上相關文章,這裏不做介紹。