基于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
注意:如果未安装,使用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的话,按照软件的中文说明,即可完成使用。如果不熟悉的话可以参考网上相关文章,这里不做介绍。
- GRUB与Linux系统修复(第二版)
GRUB配置解析 配置文件保存在 /boot/grub/grub.conf[/boot分区最好应该单独划分出来] 软链接保存在 /etc/grub.conf 1.grub.conf文件分析 defau ...
- linux单用户模式
linux单用户模式 2014年11月11日 17:18 在grub上相应要启动的内核上按“e”. 进入下一界面,继续按“e”. 在进入文本界面后,输入“single”回车. 进入grub界面后,按“ ...
- 第14章 Linux启动管理(3)_系统修复模式
3. 系统修复模式 3.1 单用户模式 (1)在grub界面中选择第2项,并按"e键"进入编辑.并在"-quiet"后面加入" 1",即&q ...
- 【Linux 运维】 Centos7.x 系统修复模式
一.linux的运行级别: 运行级别就是来确定系统启动时到底启动那个服务. linux默认有7个运行级别: 0 关机 1 单用户模式,用于系统修复 2 不完全的命令模式,不含NFS服务 3 完全的命令 ...
- 『学了就忘』Linux启动引导与修复 — 72、Linux系统的修复模式(单用户模式)
目录 1.单用户模式常见的错误修复 2.通过单用户模式修改系统密码 (1)进入grub启动引导程序中 (2)编辑相应的系统启动内容 (3)编辑grub配置文件内容 (4)启动系统 (5)修改root用 ...
- 『学了就忘』Linux启动引导与修复 — 74、Linux系统的修复模式(光盘修复模式)
目录 1.光盘修复模式概念 2.光盘修复模式修复系统问题 (1)准备系统光盘 (2)进入BIOS (3)修改BIOS的启动顺序 (4)进入光盘修复模式 (5)修复系统 (6)修复系统实操 (7)总结 ...
- CentOS6.3修复模式/单用户模式修改fstab文件
今天修改LVM逻辑卷的名称时候,忘记更改fstab配置文件了,导致机器重启后找不到盘,进不了系统!立即用光盘进入修复模式进行修复! 1.修复模式操作方法: 用光盘进入Linux修复模式,插入cent ...
- linux磁盘分区模式
linux磁盘分区模式 模式一:MBR 1)主分区不超过四个 2)单个分区容量最大2TB 模式二:GPT 1)主分区个数"几乎"没有限制(原因:在GPT的分区表中最多可以支持128 ...
- VMware Workstation虚拟机中的Linux通过NAT模式共享上网配置教程
VMware Workstation虚拟机中的Linux通过NAT模式共享上网配置教程 在VMware Workstation虚拟机下面,Linux虚机要上网,一般是桥接模式,但我自己的电脑上网的环境 ...
随机推荐
- cygwin安装与使用
cygwin安装很简单,下载运行setup.exe程序,一步一步就可以了. 具体安装细节参考:http://www.33lc.com/article/7276.html 安装完成后有如下问题: 在cm ...
- Hessian和Burlap入门教程
一.简介 Hessian和Burlap是由Caucho Technology提供的基于HTTP协议的轻量级远程服务解决方案.他们都致力于借助尽可能简单那的API和通信协议来简化Web服务. He ...
- pyqt listview基础学习01
from decimal import * from PyQt4.QtGui import * from PyQt4.Qt import * from PyQt4.QtCore import * im ...
- python学习之路-2 初识python数据类型
数字 int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位系统上,整数的位数为64位,取值范围为-2** ...
- hdu4506小明系列故事——师兄帮帮忙 (用二进制,大数高速取余)
Problem Description 小明自从告别了ACM/ICPC之后,就開始潜心研究数学问题了,一则能够为接下来的考研做准备,再者能够借此机会帮助一些同学,尤其是美丽的师妹.这不,班里唯一的女生 ...
- 该如何关闭thinkphp的缓存呢?有下面几种方法可参考:
该如何关闭thinkphp的缓存呢?有下面几种方法可参考: (1)在配置文件中关闭缓存 在你的配置文件config.php文件中加上如下两句: 复制代码代码如下: 'TMPL_CACHE_ON' ...
- Android应用切换皮肤功能实现
原文地址:http://www.eoeandroid.com/thread-318159-1-1.html 现在大多数android应用都支持切换皮肤的功能.比如千千静听,墨迹天气等等.本文介绍两种切 ...
- Asp.net 网站出现Service Unavailable 问题剖析
网站出现这样的情况,而且刷新一下又重新正常. 个人分析认为造成原因如下: 1.应用程序池配置存在问题. 2.程序中存在没有关闭的连接数据库对象,或者含有死循环. 3.程序中产生的内存数据量太多,导致网 ...
- wxPython缩放图片控件的一个小例子
前几天写程序的时候,想有个自适应的图片控件,但是一直没有找到合适的解决方案.今天终于解决了这个问题,发在这里,以供参考. 程序截图: 文件下载地址: http://files.cnblogs.com/ ...
- C++程序设计实践指导1.12数组中数据线性变换改写要求实现
改写要求1:分别用指针pa.pb代替数组 改写要求2:从键盘输入data元素 元素个数任意,输入0结束 #include <cstdlib> #include <iostream&g ...