基于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. mysql/Java服务端对emoji的支持

    更改好后的字符集: 乱码 推荐大家看 深入MySQL字符集设置 ,区分检查client端.server端的编码:最简单暴力的方式,是在所有的环节都显式明确的指定相同的编码. 比如使用python的My ...

  2. 06_Elasticsearch 批量获取mget

    06_Elasticsearch 批量获取mget 现在有: http://192.168.32.81:9200/bank/bank_account/1 http://192.168.32.81:92 ...

  3. 转:C# 定时任务实现

    原文地址:http://blog.csdn.net/Netself/article/details/5766398 C#实现的定时任务类,核心代码如下: 以下代码可直接封装成 TimerTask.dl ...

  4. Populating Next Right Pointers in Each Node II 解答

    Question Follow up for problem "Populating Next Right Pointers in Each Node". What if the ...

  5. Android 开发笔记-Eclipse中文乱码

    使用eclipse时经常中文乱码网上搜罗了下解决办法:   使用Eclipse编辑文件经常出现中文乱码或者文件中有中文不能保存的问题,Eclipse提供了灵活的设置文件编码格式的选项,我们可以通过设置 ...

  6. hdu 4007 Dave(线性探查+枚举)

    Problem Description Recently, Dave is boring, so he often walks around. He finds that some places ar ...

  7. Hibernate PO对象的状态

    Hibernate的PO对象有三种状态:临时状态(又称临时态).持久状态(又称为持久态)和脱管状态(又称为脱管态.游离态).处理持久态的对象也称为PO,临时对象和脱管对象也称为VO. 1.临时态: 简 ...

  8. android——仿网易今日头条等自定义频道listview 或者grideview等item上移到另一个view中

    转载请注明出处: www.cnblogs.com/shoneworn 我这里只是简单的用了两个listview来实现的,先上效果图.比较粗糙.预留了自定义的空间. 思路: 从上图应该可以看的出来.就是 ...

  9. javascript无缝流畅动画轮播,终于让我给搞出来了。

    自己一直想写一个真正能用的轮播图,以前是写过一个,但是不是无缝的轮播,感觉体验很差,这个轮播之前也搞了很多实例,看了很多代码,但是脑子总转不过弯,为什么在运动到一定距离后可以突然转回到原始位置,而没有 ...

  10. C# 执行存储过程

    SqlParameter[] paras = BuildParas(id, time, name); bool bRet = ExcuteProcedure(“数据库连接字符串”, "存储过 ...