技术解析

linux 的救援模式是什么原理呢?
0
2021-07-02 15:16:56
idczone
修复 initramfs 和修复 grub 也好,都会用到这个模式,这个模式是怎么工作的呢? iso 跟硬盘上的系统又是怎么关联上的呢?下面这几条命令又是什么意思呢?

mount --bind /proc /mnt/sysimage/proc
mount --bind /dev /mnt/sysimage/dev
mount --bind /sys /mnt/sysimage/sys
chroot /mnt/sysimage

在网上基本上都是教大家怎么做的,而没有说为什么
善于使用 google 和 man 命令 是每一个 linux 用户必备的技能

如果你装过 arch 你就能理解了, arch-chroot /mnt

应该是临时提供一个 root 环境,而没有挂载根硬盘。

简单来说,前三步将 /proc /dev /sys 这些目录挂载到目标系统的对应目录下,最后 chroot 到目标系统, chroot 的意思就是 change root ,也就是切换到目标系统,将当前系统的 / 切换到目标系统的 /
iso 和硬盘上的系统没有什么关系,通常使用 iso 是因为硬盘上的系统已经无法正常启动了,我们只是借助 iso 引导来获得一个正常运行的系统环境(Live System),借助这个系统切换到硬盘上已有的系统,便于进行一系列的修复动作。

为什么只要这三个目录呢

这三个目录是指硬盘上的系统的吗

因为这三个目录是在系统启动过程中生成的,由于目标系统没有经过正常的引导过程,没有生成并挂载这三个目录,所以需要将现有的 live system 内的这三个目录挂载到目标系统的对应目录下。
这三个目录的内容不是保存在硬盘上,而是由内核自动生成。
建议你安装一次 Gentoo 或 LFS 这类系统,你会对 chroot 操作,还有 /proc /dev 这些虚拟文件系统有更深刻的认识。
PS: 不是要你用 Gentoo/LFS 作为日常使用,只需要你安装一次,并理解安装过程中每个步骤的意义。如果只是照着手册复制粘贴,那还是别浪费时间了。

根 WinPEts 一样,依靠加载介质上的系统核心提供精简功能,以便恢复硬盘上瘫痪的系统。

本机修复:
single 模式,简称 s ,或者叫 1 ,在古代 sysvinit 体系里,是一个 runlevel 的名字
sysvinit 体系里,启动分为 rc.init 和 rc{runlevel}.d 两个阶段,前者是共用的,后者其中 rc1.d 就是单用户模式的启动过程,启动 sulogin 给你个 shell 用
Live 启动:
一般是内核命令行加 rescue 这个词,然后在启动过程中判断 /proc/cmdline 里是否有这个词,如果有的话就进入 sulogin 。此种做法和 runlevel 没啥关系

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服