Hello LOonux3(六):系统还原

九 28, 2012   //   by admin   //   新闻

上一篇:Hello LOonux3 (五):磁盘管理

LOonux3系统还原支持基于U盘和硬盘介质的还原。支持选择还原系统分区、数据分区或者全部还原。

进行U盘还原,用含有还原系统和LOonux3镜像的U盘来启动,按照屏幕提示操作。

进行硬盘还原,在进入PMON时连续按”u”键,开启隐藏的还原系统启动项,并选择进入。

LOonux3安装过程中,安装程序和镜像被放到备份分区,从而支持硬盘还原。备份分区通常位于/dev/sda2,挂载备份分区后,我们可以看到系统还原所需的全部文件:

还原系统:
  • boot.cfg:还原系统引导文件,仅在U盘还原时用到。
  • vmlinuz:还原系统本身
系统镜像:
  • basesys-YYYYMMDD.tar.gz:系统基本镜像
  • OSFab-YYYY-MMDD.squashfs:系统组件镜像
  • config.txt:系统镜像还原的配置文件
探索还原系统
LOonux3的还原系统是一个含有initramfs镜像的Linux内核,下述步骤可以提取含有还原程序的initramfs镜像:
1. 提取vmlinuz的“.data” section:
objcopy --only-section=.data -O binary vmlinuz data

2. 通过文件魔数,可知data是一个lzma压缩了的数据,解开它
mv data data.lzma
lzma -d data.lzma

3. 使用工具hexedit浏览,寻找data包含cpio格式的initramfs镜像并提取它。提取的方法是使用hexedit,寻找可能的cpio头,记下偏移字节数。然后使用dd来提取:
# 此处cpio头的偏移量为16072704
dd if=data bs=1 skip=16072704 of=recover.cpio

4. 解开recover.cpio:
mkdir recover && cd recover
cpio -imd --no-absoluate-filenames <../recover.cpio

还原系统初探:
ls root/recovery/
ldisk  lib  log.txt  ndisk  progress.txt  recovery  udisk

root/recover.lua这个脚本控制了还原过程:
  1. 挂载需还原的系统镜像所在介质。其中U盘还原时,U盘挂载到/root/udisk;硬盘还原时,备份分区挂载到/root/ldisk。
  2. U盘还原时,
    1. 按照config.txt,进行磁盘分区
    2. 按照config.txt,格式化备份分区
    3. 将U盘上的还原系统和系统镜像复制到备份分区
    4. 此时U盘可以移除了
    5. 按照config.txt,继续格式化余下分区
  3. 挂载备份分区到/root/backup,并将日志输出切换到/root/backup/log.txt
  4. 按照config.txt,解压缩基本镜像basesys-YYYYMMDD.tar.gz到系统区和数据区
  5. 按照config.txt,生成/etc/fstab和boot.cfg
  6. 准备环境,挂载组件镜像OSFab-YYYY-MMDD.squashfs,并执行其下的run.sh
  7. 补丁:将/boot/*拷贝到引导分区。这是因为PMON不支持ext4文件系统,不能直接从其他分区读取内核镜像,故只能拷贝到ext3格式的引导分区。
  8. 尝试备份分区下post-recovery/run.sh。post-recovery目录存放重要的系统补丁,确保还原后这些补丁能够被应用。
探索系统镜像
config.txt提供了磁盘分区,文件系统格式,基本镜像解压到哪些对应分区,以及使用的组件镜像,还原系统界面语言(英文、中文),哪个系统定制版本以及boot.cfg模板。

组件镜像包含了不同硬件平台的驱动和不同系统定制所需的组件。安装组件镜像时,会读取下述环境变量:

MOUNT_POINT:指向基本镜像解开后的路径。对应的proc、sys、dev等需要挂载好。OSFab的安装脚本将chroot到此路径中进行安装。

RECOVER_MODE:全盘还原(both)、系统区还原(system)或者是数据区还原(data)。

MACHINE_TYPE:硬件平台的代号,例如lemote-3a-notebook-a1004。对应值可以从/proc/cpuinfo获得。

SYSTEM_VERSION:系统定制版代号。

RESOLUTION:可选,目前仅在福珑上有使用,指定分辨率。

第一篇:Hello LOonux3

Comments are closed.

文章归档