chroot 进入 ArchLinux iso 安装环境

chroot 进入 ArchLinux iso 安装环境

我正在尝试安装 ArchLinux,但是只要我连接了任何可启动媒体(幸运的是主磁盘除外),我的笔记本电脑就会挂起。我告诉你这一点,不是因为我想修理我的笔记本电脑(尽管欢迎任何关于为什么会发生这种情况的评论),而是为了解释为什么我试图做一些看起来相当复杂的事情。

我的笔记本电脑上运行着旧版本的 Ubuntu,而 ArchLinux iso 则位于我可以挂载的磁盘上。我的计划是 chroot 进入 ArchLinux 安装环境,有点与安装过程相反。

然而此时,我的无知开始显露出来。我 RTM但由于如果我终止现有的安装,则几乎没有第二次尝试的希望,因此我将不胜感激任何需要注意的问题和任何一般建议。

答案1

在我开始 chroot 之前,您是否考虑过规避这个问题?你并非完全没有选择:

  1. 从 USB 记忆棒或 USB DVD 启动(除非计算机也挂起)

    或者,如果您手头有另一台计算机,

  2. 从网络启动(如果您的笔记本电脑能够做到这一点)- 设置 tftp 服务器并不困难。

  3. 把硬盘拿出来安装到另一台机器上。

接下来要考虑的是:你真的需要 chrooting 吗?安装程序不能从任何目录运行吗?

现在正在chroot。很大程度上取决于您的磁盘是否已分区。如果不是,我强烈建议采用上述路线之一(如果出现任何问题,这实际上是后备路线)。

假设你有一个分区S安装于/S您可以在其中放置安装介质内容和分区时间安装为/在运行系统时,步骤应该大致如下(免责声明:我没测试过!):

  1. 在某处环回挂载 iso:mount -o loop,ro /path/to/iso /some/where

  2. 将媒体内容复制到 from media toS:cp -r /some/where/* /S

  3. 进入单用户模式,关闭所有服务,卸载除时间S

  4. 从正在运行的系统绑定挂载重要的伪文件系统:

    for fs in /dev /dev/pts /proc /sys; do
        mount -o bind ${fs} S${fs}
    done
    
  5. ivot_root - 交换根目录和正在运行的进程的另一个目录exec chroot(需要 exec 才能卸载旧的/)。

    cd /S
    pivot_root . old_root
    exec chroot . command
    
  6. 卸载旧根:

    for fs in /dev /dev/pts /proc /sys; do
        umount old_root${fs}
    done
    umount old_root
    

您应该将媒体内容安装为/它们通常所在的最重要的伪文件系统。请注意,如果您想卸载旧的媒体,您实际上不能只是 chroot 到已安装的媒体/- 已安装的媒体备份文件必须位于旧根目录下安装的文件系统上,并且您必须从根目录下卸载所有内容。而且您确实想要卸载旧根目录,除非您有另一个备用分区要安装 - 因为如果您要安装到时间同时将其安装在其他地方,可能某些程序仍在运行,这只是自找麻烦。尤其是当您决定对其进行格式化时。

相关内容