关于chroot的问题

关于chroot的问题

设想

  • 我的硬盘上有 2 个可用的 Ubuntu 分区,我们称之为 A 和 B。它们使用单​​个交换分区。
  • 我已经启动到 A 并登录到桌面。现在我想在不重启的情况下将分区 A 扩容(有足够的空间)。

问题

我可以使用 chroot 来

  • 切换执行到 B,然后卸载分区 A。
  • 然后从 B 启动 gparted 并调整分区 A 的大小。
  • 然后(在 B 中)将 A 安装到 /mnt/temp 并使用 chroot 将执行切换回 A?

如果您知道这是否可行,请发表评论或回答。即使您不知道确切的步骤。这已经对我有帮助了,比没有答案要好得多。

当然更有帮助的是通过一步一步的命令行程序转到 B、卸载分区 A 以及如何启动图形 gparted。

我做了什么

  • 我使用 chroot 从实时 CD 或其他分区切换来修复 grub。它仅处于文本模式。我使用了许多帖子中解释的标准程序(安装其他分区,安装 --bind 虚拟文件夹,然后使用 chroot 移动到已安装的驱动器)。
  • 我将 A 克隆到新创建的分区 B。从 grub 启动时,克隆运行良好且完整,因此我知道它完全可以正常工作。我确实从 A 使用 chroot(“#”提示符)访问了命令行。
  • 我没有找到在 B 中启动桌面的方法,或者完全切换到 B 中工作,就像我将系统重新启动到 B 一样。
  • 我没有看到其他包含该问题的帖子

答案1

据我所知:chroot 意味着改变根目录。

类 Unix 操作系统上的 chroot 是一种改变当前正在运行的进程及其子进程的明显根目录的操作。 [从这里]

您正在更改正在运行的系统的根;因此,您的系统(A)仍在运行,您看到的一切都是正在运行的系统的一部分,您不能简单地卸载其繁忙的资源(块设备)。

此外,您正在将根目录更改为的系统 (B),如果没有 A 的帮助,则无法执行任何操作。例如,我猜您使用了类似命令mount --bind /xxx /mnt/xxx将路径绑定为进程的一部分/proc;这些路径由您正在运行的系统 (A) 管理,并且对于 chrooted 环境 (B) 是必需的。/devchroot

你根本无法做你想做的事。

作为维基百科说,的用法chroot是:

  • 测试和开发
  • 依赖控制
  • 兼容性
  • 恢复
  • 特权分离

要从 chrooted 环境(A 内的 B)运行图形程序;您应该允许访问正在运行的 X。

在 chroot 环境之外运行(打开另一个终端):

xhost +local:
echo $DISPLAY

然后将得到的输出导出到 chrooted 环境中:

export DISPLAY=[output of above command]

现在您应该能够运行图形应用程序了。

来源


我不明白你为什么要这样做,只需启动到活动磁盘,应用你的更改,chroot 到你的不同机器以在必要时修复任何问题。然后重新启动并使用你的系统。

相关内容