linux 的救援模式是什么原理呢?

2016-05-12 21:04:28 +08:00
 pythonee
修复 initramfs 和修复 grub 也好,都会用到这个模式,这个模式是怎么工作的呢? iso 跟硬盘上的系统又是怎么关联上的呢?下面这几条命令又是什么意思呢?

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

在网上基本上都是教大家怎么做的,而没有说为什么
4153 次点击
所在节点    Linux
9 条回复
hardware
2016-05-12 21:09:12 +08:00
善于使用 google 和 man 命令 是每一个 linux 用户必备的技能
fiepi
2016-05-12 21:27:26 +08:00
如果你装过 arch 你就能理解了, arch-chroot /mnt
ayaseangle
2016-05-12 21:31:01 +08:00
应该是临时提供一个 root 环境,而没有挂载根硬盘。
zent00
2016-05-12 22:17:40 +08:00
简单来说,前三步将 /proc /dev /sys 这些目录挂载到目标系统的对应目录下,最后 chroot 到目标系统, chroot 的意思就是 change root ,也就是切换到目标系统,将当前系统的 / 切换到目标系统的 /

iso 和硬盘上的系统没有什么关系,通常使用 iso 是因为硬盘上的系统已经无法正常启动了,我们只是借助 iso 引导来获得一个正常运行的系统环境(Live System),借助这个系统切换到硬盘上已有的系统,便于进行一系列的修复动作。
pythonee
2016-05-13 08:41:20 +08:00
@zent00 为什么只要这三个目录呢
pythonee
2016-05-13 08:41:54 +08:00
@zent00 这三个目录是指硬盘上的系统的吗
zent00
2016-05-13 12:44:55 +08:00
@pythonee 因为这三个目录是在系统启动过程中生成的,由于目标系统没有经过正常的引导过程,没有生成并挂载这三个目录,所以需要将现有的 live system 内的这三个目录挂载到目标系统的对应目录下。

这三个目录的内容不是保存在硬盘上,而是由内核自动生成。

建议你安装一次 Gentoo 或 LFS 这类系统,你会对 chroot 操作,还有 /proc /dev 这些虚拟文件系统有更深刻的认识。

PS: 不是要你用 Gentoo/LFS 作为日常使用,只需要你安装一次,并理解安装过程中每个步骤的意义。如果只是照着手册复制粘贴,那还是别浪费时间了。
Neveroldmilk
2016-05-13 15:45:51 +08:00
根 WinPEts 一样,依靠加载介质上的系统核心提供精简功能,以便恢复硬盘上瘫痪的系统。
julyclyde
2016-05-13 18:08:32 +08:00
本机修复:
single 模式,简称 s ,或者叫 1 ,在古代 sysvinit 体系里,是一个 runlevel 的名字
sysvinit 体系里,启动分为 rc.init 和 rc{runlevel}.d 两个阶段,前者是共用的,后者其中 rc1.d 就是单用户模式的启动过程,启动 sulogin 给你个 shell 用

Live 启动:
一般是内核命令行加 rescue 这个词,然后在启动过程中判断 /proc/cmdline 里是否有这个词,如果有的话就进入 sulogin 。此种做法和 runlevel 没啥关系

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/278284

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX