系统修复:HowTo chroot

很多时候,尤其是在搞乱的时候,我们发现自己陷入无法访问系统进行修复的困境,但是解决方案很简单:使用命令 chroot 从任何LiveCD / RepairCD。

在很多地方(论坛,博客...),都提到了此命令,并给出了代码的“复制/粘贴”,但是我在这篇文章中的目的是对这些步骤进行一些解释,以充分利用该工具,并学到一些知识。原因。

简介

命令 chroot 它被称为CHangeROOT,这是一个命令,它允许您更改正在使用的系统的根目录。 换句话说:如果您来自LiveCD,并且希望控制台上进行的所有操作都对已安装的系统产生影响,则必须首先使用 chroot.

问题是使用不足 chroot 因此,在我们必须正确装入某些分区之前。

如何

首先,我们需要从另一个安装的系统(在另一个分区/磁盘上)或从LiveCD启动一个终端。 重要信息:LiveCD的体系结构必须与要修复的系统的体系结构(32或64位)相匹配。
进入终端后,我们将开始识别分区:
fdisk -l

  • 使用此命令,我们将列出所有分区/磁盘。 我们必须确定哪个目标分区,我们要修复的系统的安装位置,从现在开始,我们将其称为 破碎的系统.

对于此示例,我们将认为损坏的系统处于 / dev / sda1 .

我们继续组装系统。 首先,我们将在要使用的文件夹中创建文件夹,然后在该文件夹中装入损坏的系统所在的分区
mkdir /mnt/my_linux
mount /dev/sda1 /mnt/my_linux

如果您有文件夹 /主页 o / VAR 或任何其他分区上,您应该按以下方式安装它:
mount /dev/sda2 /mnt/my_linux/var

  • 注意:我以/ var文件夹的/ dev / sda2分区为例,让每个人根据自己的特点调整代码。

通常,如果您只需要手工编辑文件就足够了,但是如果我们要执行一些配置系统的命令,则需要挂载某些特殊的系统文件夹: 的/ dev, / proc中/系统
mount -t proc proc /mnt/my_linux/proc
mount -t sysfs sys /mnt/my_linux/sys
mount -o bind /dev /mnt/my_linux/dev

  • 有选项 -t 我们告诉 安装 我们要挂载的“文件系统”的类型。 由于文件夹的特殊性质,有必要指定它 / proc中 y /系统.
  • 有选项 -o 我们指定以下选项 安装。 选项 绑定 用于“链接”。 在UNIX上,可通过文件夹访问所有硬件设备 的/ dev,这就是为什么我们必须安装当前 的/ dev 在我们损坏的系统现在所在的文件夹中。 由于此文件夹已安装,因此只需告诉 安装 最初安装的位置。

这样做是为了 chroot 尽管这些文件夹必须来自当前系统(例如,LiveCD会话),但由于它们与系统,进程和硬件的状态有关,因此必须像访问已损坏的系统一样访问这些文件夹。

现在是时候使用了 chroot:
chroot /mnt/my_linux/ /bin/bash

  • 该命令作为参数传递到新根目录«/»的路径(在本例中为 / mnt / my_linux)和您要使用的控制台(在这种情况下,我们选择了众所周知的bash,位于 / bin / bash)。 如果不指定控制台,我们将在有点过时的命令解释器之前找到自己(在按下选项卡等时它不会填充)。

现在,我们可以使用控制台,就像在损坏的系统上启动了根会话一样(编辑文件,检查脚本,安装/卸载软件包...)。 警告!为使更改生效,您必须在退出后卸载文件系统 chroot看下面的例子。

更多信息 https://wiki.archlinux.org/index.php/Change_Root (超过推荐的阅读范围)。

使用示例:还原GRUB2

的最广泛的用途之一 chroot 它是修复GRUB的工具。 由于grub破裂,因此实际上不可能引导我们的系统对其进行修复。

注意:本小教程只是一个示例,它可用于从Debian,Ubuntu和openSUSE等衍生的各种发行版。 即使如此,请检查您的发行版文档,因为在许多命令中都找不到该命令 更新grub。
#注意:这些命令在chroot内部运行一次。update-grub
grub-install /dev/sda

  • 连接器 更新GRUB 我们更新了GRUB2的输入菜单,从而添加了所有缺少的输入。 稍后,我们将GRUB重新安装在磁盘上,因为它已损坏。

在这种情况下,我采取了 / dev / sda上的 就像我们拥有我们系统的相册一样,该相册必须适合您的情况。

我们的GRUB应该已经修复了,所以我们必须退出 chroot,卸载文件系统(IMPORTANT)并重新引导以使更改生效。 如果我们忘记卸载文件系统,则重启文件可能无法正确卸载,因此某些更改将不会生效。
#我们离开了chrootexit
#卸载文件系统并重新启动umount /mnt/my_linux/dev
umount /mnt/my_linux/sys
umount /mnt/my_linux/proc
umount /mnt/my_linux
reboot

就这样。 希望您喜欢它,它对您有所帮助。 一声问候!


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   麻风病人

    我可以使用它..在某些时候我必须使用它。

  2.   马里奥

    你们有没有用过查克拉·奔驰(Chakra Benz)? 如果是这样,你能告诉我是否
    普通用户容易吗? 我使用SolydK,这很简单,但是
    我知道Chakra是纯KDE,它使我感兴趣。

    1.    沃克斯

      是的,chakra非常好,或多或少都很容易,事实是要安装/卸载软件包,您必须在控制台上进行安装,因为它们仍在图形化软件包管理器上工作。 尝试它,因为它值得。 它使用从Archlinux继承的pacman软件包管理器,但是请注意,它不与arch共享存储库,并且与它们不兼容。 如果要了解有关pacman的更多信息,请参阅arch Wiki。 https://wiki.archlinux.org/index.php/Pacman_%28Espa%C3%B1ol%29

      1.    伊兹维普

        Oktopi已经很稳定,并且对于普通用户来说效果很好,您不需要终端即可使用pacman。

  3.   x11泰特11x

    我希望这篇文章会被很多人所访问,然后他们会开始重新安装任何东西,只要有了chroot,您几乎可以随时修复系统,chroot使您有很多可能,其中包括安装Gentoo xD哈哈哈

  4.   阿鲁纳多

    很好,谢谢...我从来没有给过它一个球,因为在我看来,一些现场维修用的CD似乎默认将其抬高,但是现在很明显,再次感谢。

  5.   洛洛

    为了完成它,最好解释一下如何挂载LVM分区,加密分区和RAID系统。

    1.    沃克斯

      嗯,我已经很长时间没有接触过LVM和RAID了,但是您能告诉我一些完成该问题的信息吗?谢谢您的提示!

      1.    洛洛

        好吧,事实是我可以用得很好。

        将不胜感激。

        1.    沃克斯

          看看这个维基,这很酷 http://wiki.bandaancha.st/RAID_y_LVM_en_Linux

  6.   调制解调器

    如果仅在几周后才存在该主题,那么事实证明我的系统有问题,并且阅读和阅读,到处都可以找到chroot和blablabla,但基于与您的系统相同的实时建议,它对我不起作用,这很重要,因为我使用x64,另一个原因是挂载系统分区,因为在我的情况下,当我应用chroot并挂载它时,它抛出了一个命令,而它根本无法识别该命令。

    本主题将转到我的“信息汇编”文件

  7.   饼干

    损坏系统时,只需用Arch LiveCD(使用此工具)即可修复系统。

    1.    RAW基本

      确实!....这是所有必要的..甚至要帮助某位决定不开始使用..的人。

      我总是随身携带一个带有Arch live的1gb笔式驱动器...而chroot是我所需要的,因此在任何问题下,您在10分钟之内都能将所有东西整理得井井有条...

    2.    伊兹维普

      您只需要知道如何做。

    3.    巴勃罗

      您好,请注意我在centos上遇到问题,它使我感到内核崩溃等。 而且我无法解决它,我的网站和数据库都在那儿,我不知道该怎么办。

  8.   乔尼127

    好的帖子,我听说过chroot,但是我真的不知道它是如何使用的,当然我从来不需要它,这就是为什么我没有特别读一些东西的原因。 现在,您的帖子得到了非常清晰的解释,我知道如何使用它。

    顺带一提,非常感谢Led Zeppelin呵呵。

  9.   卡马拉

    谢谢,我终于摆脱了救援的噩梦

    实际上,我遵循了除umount / mnt / my_linux之外的所有步骤,因为它告诉我它很忙,并且我融合了-km,但什至没有,然后反弹...

    我希望这并不重要…。

    再次感谢…
    问候语

  10.   何塞·安东尼奥

    尽管这篇文章已经有几年历史了,但我要感谢作者的慷慨分享,因为这是一篇很棒的文章,因为这个周末挽救了我的生命。 我不由自主地加载了一个安装了软件包的服务器,并且在重启时没有加载。 经过三天的尝试修复并阅读了不同的文章之后,我偶然来到了这里,终于能够重新安装grub并修复服务器。

    非常感谢你!

    1.    沃克斯

      很高兴它对您有所帮助。 感谢您的评论!

  11.   Helio公司

    您好,我知道几年前发布的这篇文章,非常感谢您的分享。 而且我怀疑,就我而言,它损坏了系统以及网络驱动程序,因此我按照以下步骤进行操作,但是它不允许我下载软件包,是否可以通过任何方式将实时网络与终端链接

    1.    沃克斯

      我不太了解您的问题…使用LiveCD登录时,加载的内核就是LiveCD的内核,因此您应该能够完美地配置Internet连接。 建立连接后,尝试执行chroot以查看是否继续维护它,否则,可能必须重新配置它,但是损坏的内核不应影响chroot会话。
      如果您不指定更多,我可以告诉您...

  12.   达赫

    优秀文章…是互联网上为数不多的有用文章之一。
    非常感谢你的贡献。

  13.   佐派克

    你好,优秀的教程! 解释得很好,对我们凡人来说!

    我有个问题:
    当您提到如果您需要安装软件包、执行系统更新或其他特殊活动,并需要安装 /dev/proc 和 /sys 文件夹时,我不清楚这些文件夹是否在我们使用的 Live 系统中。启动要修复的设备,或者如果它们在根分区中先挂载。

    谢谢。

  14.   奥兰多

    多谢!!!!