基于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引导配置(bootstrap)

       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的话,按照软件的中文说明,即可完成使用。如果不熟悉的话可以参考网上相关文章,这里不做介绍。

Linux系统维护修复模式的更多相关文章

  1. GRUB与Linux系统修复(第二版)

    GRUB配置解析 配置文件保存在 /boot/grub/grub.conf[/boot分区最好应该单独划分出来] 软链接保存在 /etc/grub.conf 1.grub.conf文件分析 defau ...

  2. linux单用户模式

    linux单用户模式 2014年11月11日 17:18 在grub上相应要启动的内核上按“e”. 进入下一界面,继续按“e”. 在进入文本界面后,输入“single”回车. 进入grub界面后,按“ ...

  3. 第14章 Linux启动管理(3)_系统修复模式

    3. 系统修复模式 3.1 单用户模式 (1)在grub界面中选择第2项,并按"e键"进入编辑.并在"-quiet"后面加入" 1",即&q ...

  4. 【Linux 运维】 Centos7.x 系统修复模式

    一.linux的运行级别: 运行级别就是来确定系统启动时到底启动那个服务. linux默认有7个运行级别: 0 关机 1 单用户模式,用于系统修复 2 不完全的命令模式,不含NFS服务 3 完全的命令 ...

  5. 『学了就忘』Linux启动引导与修复 — 72、Linux系统的修复模式(单用户模式)

    目录 1.单用户模式常见的错误修复 2.通过单用户模式修改系统密码 (1)进入grub启动引导程序中 (2)编辑相应的系统启动内容 (3)编辑grub配置文件内容 (4)启动系统 (5)修改root用 ...

  6. 『学了就忘』Linux启动引导与修复 — 74、Linux系统的修复模式(光盘修复模式)

    目录 1.光盘修复模式概念 2.光盘修复模式修复系统问题 (1)准备系统光盘 (2)进入BIOS (3)修改BIOS的启动顺序 (4)进入光盘修复模式 (5)修复系统 (6)修复系统实操 (7)总结 ...

  7. CentOS6.3修复模式/单用户模式修改fstab文件

    今天修改LVM逻辑卷的名称时候,忘记更改fstab配置文件了,导致机器重启后找不到盘,进不了系统!立即用光盘进入修复模式进行修复!  1.修复模式操作方法: 用光盘进入Linux修复模式,插入cent ...

  8. linux磁盘分区模式

    linux磁盘分区模式 模式一:MBR 1)主分区不超过四个 2)单个分区容量最大2TB 模式二:GPT 1)主分区个数"几乎"没有限制(原因:在GPT的分区表中最多可以支持128 ...

  9. VMware Workstation虚拟机中的Linux通过NAT模式共享上网配置教程

    VMware Workstation虚拟机中的Linux通过NAT模式共享上网配置教程 在VMware Workstation虚拟机下面,Linux虚机要上网,一般是桥接模式,但我自己的电脑上网的环境 ...

随机推荐

  1. ElasticSearch大批量数据入库

    最近着手处理大批量数据的任务. 现状是这样的,一个数据采集程序承载大批量数据的存储和检索.后期可能需要对大批量数据进行统计. 数据分布情况 13个点定时生成采集结果到4个文件(小文件生成周期是5分钟) ...

  2. Palindrome Subarrays

    给定输入字符串,要求判断任意子字符串是否对称. 基本思路就是DP 写出DP表达式为 dp[i][j] = dp[i + 1][j - 1] && (s[i] == s[j]) dp[i ...

  3. 什么是野指针?(What is a wild pointer?)

    未被初始化的变量称为野指针(wild pointer).顾名思义,我们不知道这个指针指向内存中的什么地址,使用不当程序会产生各种各样的问题. 理解下面的例子: int main() { int *p; ...

  4. hdu4536-XCOM Enemy Unknown(爆搜)

    XCOM-Enemy Unknown是一款很好玩很经典的策略游戏. 在游戏中,由于未知的敌人--外星人入侵,你团结了世界各大国家进行抵抗.随着游戏进展,会有很多的外星人进攻事件.每次进攻外星人会选择3 ...

  5. soj 1700 ping_简单dp

    题目链接 题意:给你一个无向图,求n边的最短路 思路:用最短路想了半天都没想出来,比赛结束回去看看原来用dp做,我的dp有待提高啊 sp[i][k]=min(sp[j][k-1]+dp[j][i])/ ...

  6. jquery插件-自定义select

        由于原生select在各个浏览器的样式不统一,特别是在IE67下直接不可以使用样式控制,当PM让你做一个样式的时候,那是相当的痛苦.最好的办法就是使用自定义样式仿select效果.这里写了一个 ...

  7. [置顶] Android学习系列-把文件保存到SD卡上面(6)

    Android学习系列-把文件保存到SD卡上面(5) 一般多媒体文件,大文件需要保存到SD卡中.关键点如下: 1,SD卡保存目录:mnt/sdcard,一般采用Environment.getExter ...

  8. 第01讲- Android背景知识

    第01讲Android背景知识 Android是基于Linux系统 Android系统框图 : 第一.操作系统层(OS) 第二.各种库(Libraries)和Android 运行环境(RunTime) ...

  9. Mysql 分别按月, 日为组group,进行统计排序order

    在数据库中我们经经常使用sql语句对表进行简单的统计排序,对于日期字段.我们能够简单的对其进行order. 对于复杂一点的能够按日期中的年.月,日分别进行group,order. 按年份进行group ...

  10. 我在使用vector时候遇到的二逼问题

    最近在练习使用STL中德各种容器,像vector,map,set之类的. 然后在使用vector的时候,无意间遇到了一个很二逼的问题. 主要是这样的,请看源码(C++): //错误的写法: #incl ...