尝试将 bash 移植到 /mnt 以进行 chroot,bash 需要什么才能工作?

尝试将 bash 移植到 /mnt 以进行 chroot,bash 需要什么才能工作?

我有一个第 3 阶段的 gentoo tarball.. 将其提取到托管 /dev/sda3 的 /mnt。尽管打开包装后没有垃圾箱,也没有任何损坏的迹象。据我所知,其余的配置涉及到在这个假的 gentoo 环境中进行初始设置。所以..我想我可以从我正在运行的 Fedora 移植 bash。这是一个更大问题的一个问题,但一次只解决一部分..我听说过一些关于 lib 或 lib64 中的一些文件的信息,但不清楚是哪一个..

编辑:尚未使用“make”。澄清我在哪里

答案1

使固定

首先,切勿将实时工具移植/复制/链接等到stage3工作区域。因此,让我们重新开始。首先,我假设/dev/sda3是一个空白分区。如果不:

  1. /dev/sda3使用 GParted 等工具进行创建。
  2. 如果您已完成步骤 1,请发出:mke2fs -j /dev/sda3
  3. mkdir /mnt/gentoo && mount /dev/sda3 /mnt/gentoo
  4. 光盘/mnt/gentoo
  5. wget http://distfiles.gentoo.org/releases/amd64/autobuilds/20150604/stage3-amd64-20150604.tar.bz2 -P /mnt/gentoo(假设 amd64 架构。)
  6. tar xvjpf stage3-*.tar.bz2 --xattrs
  7. 继续进入阶段 - 第 2 部分

推理

解压后,第 3 阶段 Tarball 将包含一个可用的 Bash。以下命令,在安装 Gentoo 基本系统的 1.4 节:

chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot) $PS1"

将输入一个用于构建/安装的干净的更改根目录。


遵循本手册假设您希望 Gentoo 作为另一个实时系统。对于您的情况,您唯一应该忽略的是 GRUB 配置部分,因为 Fedora 包含一个可用的 Grub。因此,Gentoo 的引导选项应该添加到 Fedora 的 Grub 选项中。

更新

根据评论,每个 Linux 发行版都包含一个profile文件。根据发行版的不同,它存储在不同的位置。在 Gentoo 中,它存储在该/etc目录中,因为在 Gentoo 中,每个配置文件都需要定制。引用超越 Linux 从头开始​​手册:

shell 程序 /bin/bash(以下简称“shell”)使用启动文件集合来帮助创建环境。每个文件都有特定的用途,并且可能会以不同的方式影响登录和交互环境。 /etc 目录中的文件通常提供全局设置。如果您的主目录中存在等效文件,它可能会覆盖全局设置。


这样,第 2 行source命令将构建系统(在您的例子中是 Fedora)的环境与您使用命令输入的解压缩 tarball 中包含的环境分开chroot。这确保了没有外部构建工具,即,,bash将能够“污染”构建过程(请参阅上面我的评论)。换句话说:configuremake用于构建系统的configure、make和gcc编译器将位于chroot内部

至于第 3 行,导出$PS1打印件(chroot) root@host #/

这样,那些遵循手册、喜欢翻阅 TTY 或图形控制台、阅读所有文档的人就可以知道他们正在创建/更新的 chroot 在哪里......

答案2

要从正在运行的 Fedora 移植 bash,您不仅需要 bash 可执行文件,还需要它所依赖的所有库。这会很麻烦,并且可能与 Gentoo 文件发生冲突。

获取一个静态链接的 shell,这样您只需将一个二进制文件添加到您的 chroot 中即可独立工作。我认为 Fedora 没有提供任何功能;您可以从 Debian 获取其中之一:bash静态,窗扇(没有命令行版本,但有几个有用的内置命令,例如cprmmount等),busybox-静态(有基本的命令行版本和许多内置函数),zsh-静态(比 bash 更好的命令行版本以及几个可以使用激活的有用内置命令zmodload zsh/files)。要从包中提取文件.deb,请使用例如

ar p zsh-static_5.0.7-5_amd64.deb | tar xJO ./bin/zsh5-static >/path/to/zsh-static

这里的重点是为您的 chroot 提供一些调试工具。当然你应该解决问题并正确安装 bash

相关内容