SDB:磁盘上的救援系统

跳转到:导航搜索


本文档描述了如何将救援系统安装到硬盘上。

在 openSUSE 上测试

推荐文章

Icon-manual.png

相关文章

Icon-help.png


情况

将救援系统安装到硬盘上通常很有用,例如,为了对需要卸载的根文件系统执行文件系统操作。从硬盘加载救援系统比使用光盘快几倍。系统加载后,硬盘将不被使用,就像可以从驱动器中移除光盘一样。

显然,这不适用于需要修复硬盘或引导加载程序的情况……


安装介质中所需的文件

这是针对 64 位系统。请根据 32 位系统进行相应更改。

 boot/x86_64/common
 boot/x86_64/config
 boot/x86_64/loader/initrd
 boot/x86_64/loader/linux
 boot/x86_64/rescue
 content
 content.asc

创建一个目录 /boot/media。将以下文件从可引导的光盘介质复制到该目录中,保持目录结构。例如:

cd top_level_of_DVD; mkdir /boot/media; rsync -avR ... /boot/media

Grub 菜单配置

编辑文件 /boot/grub/menu.lst(以 root 身份),并在末尾附加

title Rescue
   kernel /boot/media/boot/x86_64/loader/linux	rescue=hd:/boot/media	keytable=en-us namescheme= splash=silent vga=0x318 panic=10 linemode=1 linuxrc.debug=4
   initrd /boot/media/boot/x86_64/loader/initrd

请注意,总共只有 3 行,"kernel" 行必须保持为一行!并且没有用于附加行的关键字,这仅适用于 lilo 和 PXE 启动配置文件。

调整键盘布局、体系结构以及您案例中的任何其他不同之处。

使用

重新启动,并从 grub 引导菜单中选择“Rescue”条目。

扩展救援系统

在某些情况下,在救援系统中拥有更多可用命令很有用。幸运的是,如果不在意额外的提示,很容易添加。

步骤

  • 使用您想要添加的文件创建一个 squash 文件系统。创建一个新的目录,例如“myaddons”,并用您想要添加的文件填充它。此 myaddons 目录的内容将添加到正在运行的救援系统的顶级目录中,保持目录结构。因此,相应地布局它,例如通过创建 myaddons/usr/bin/。
  • 安装 squashfs
zypper -vv in squashfs
  • 创建 squashfs
mksquashfs myaddons addon -all-root -no-xattrs

这将创建文件“addon”。

  • 将文件“addon”复制到与“common”和“rescue”相同的目录中。
  • 编辑 boot/x86_64/config

在第二行“rescue: ”的末尾添加“addon”,使该行读作 rescue: common rescue addon

重启。

在加载文件之前,系统会说找不到“addon”的 SHA1 校验和,并询问是否继续。选择“是”。

原因是 linuxrc 会验证其加载的所有文件的校验和,并且在编辑 'boot/x86_64/config' 后,该校验和不再与其 SHA1 和匹配。可以通过在内核行中添加 insecure=1 来禁用验证。理想情况下,应该创建新的校验和(如果您知道如何操作,请在此处添加)。

PXE 启动

也可以使用 PXE 网络启动机制从 LAN 加载救援系统。

优点

  • 可以用于 LAN 上任何可以从网络启动的计算机(还有不能启动的吗?),无需安装。

缺点

  • 需要用于 DHCP、TFTP 和 FTP 或 HTTP 的服务器。
  • 必须具有网络连接 - 在野外无法工作。

快速概述

  • DHCP 服务器必须提供带有 next-server 字段设置为 tftp 服务器 IP 地址的 bootp 信息。将引导文件名设置为“pxelinux.0”。
  • TFTP 服务器
zypper -vv in tftp

卸载 atftp,它更复杂。运行 yast 来设置 tftp 服务,默认 tftp 根目录 /srv/tftpboot 很好。Yast 无法通过 xinetd 打开防火墙的 tftp 端口,因此将 "0/0,udp,tftp" 添加到 /etc/sysconfig/SuSEfirewall2 中的 FW_SERVICES_ACCEPT_EXT

  • TFTP 内容
zypper -vv in syslinux

将 gfxboot.c32、menu.c32、pxelinux.0、vesamenu.c32 复制到 /srv/tftpboot。创建一个配置文件 /srv/tftpboot/pxelinux.cfg/default - /usr/share/doc/packages/syslinux 中的文档很好。

  • FTP 服务器

vsftpd 是一个不错的选择,或者使用 apache 进行 HTTP,或者任何可以用作安装源的东西。将上述“安装介质中所需的文件”下提到的文件复制到 ftp 服务器,例如复制到 /srv/ftp/,保持目录结构。

说明

  • 请参阅 SDB:Linuxrc,了解所有参数的描述。
  • 请参阅控制台 3 以获取调试输出(默认,linuxrc.log=/dev/tty3)。似乎无法将日志输出输出到文件。
  • rescue=... 与 rescue=1 install=... 相同
  • namescheme= 切换回按设备方式的设备;默认情况下为按 ID。
  • 如果没有 keytable=,加载程序会停止并询问。
  • 如果没有文件内容,则找不到仓库。
  • 如果没有文件 content.asc,加载程序会停止并询问。
  • 如果没有“?device=...”,则会尝试所有分区以查找文件内容。要指定设备,请使用 rescue=hd:/boot/media?device=/dev/sda3
  • 要在引导过程中的几个点等待:linuxrc.debug=4,wait
  • 可以使用 insecure=1 关闭 SHA1 校验和验证。
  • 指向 common、rescue 等文件的符号链接不会被跟踪。考虑使用硬链接。