adr*_*nos 2 chroot shell-script x86 amd
例如,假设主机系统正在运行 Debian amd64。在该系统上,另一个 Debian i386 已使用 debootstrap 安装在文件夹中。然后假设一个 shell 脚本在 chroot 中运行。
从 chroot 内部,dpkg-architecture / uname -a 仅显示主机系统具有的架构(amd64)。
如何检测 chroot 的 [package] 架构?(i386)
dpkg-architecture并dpkg --print-architecture为我工作。
/root# chroot /f/32
{3}/# uname -m
x86_64
{3}/# file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=152184668fe2d58ef2ef49e8c40d044880f8e318, stripped
{3}/# dpkg --print-architecture
i386
{3}/# dpkg-architecture
DEB_BUILD_ARCH=i386
DEB_BUILD_ARCH_BITS=32
DEB_BUILD_ARCH_CPU=i386
DEB_BUILD_ARCH_ENDIAN=little
DEB_BUILD_ARCH_OS=linux
DEB_BUILD_GNU_CPU=i586
DEB_BUILD_GNU_SYSTEM=linux-gnu
DEB_BUILD_GNU_TYPE=i586-linux-gnu
DEB_BUILD_MULTIARCH=i386-linux-gnu
DEB_HOST_ARCH=i386
DEB_HOST_ARCH_BITS=32
DEB_HOST_ARCH_CPU=i386
DEB_HOST_ARCH_ENDIAN=little
DEB_HOST_ARCH_OS=linux
DEB_HOST_GNU_CPU=i586
DEB_HOST_GNU_SYSTEM=linux-gnu
DEB_HOST_GNU_TYPE=i586-linux-gnu
DEB_HOST_MULTIARCH=i386-linux-gnu
DEB_TARGET_ARCH=i386
DEB_TARGET_ARCH_BITS=32
DEB_TARGET_ARCH_CPU=i386
DEB_TARGET_ARCH_ENDIAN=little
DEB_TARGET_ARCH_OS=linux
DEB_TARGET_GNU_CPU=i586
DEB_TARGET_GNU_SYSTEM=linux-gnu
DEB_TARGET_GNU_TYPE=i586-linux-gnu
DEB_TARGET_MULTIARCH=i386-linux-gnu
Run Code Online (Sandbox Code Playgroud)
话虽如此,您可能应该让 chroot 中的程序认为它们在 32 位系统上运行。你可以通过以正确的个性来运行它们来做到这一点。该setarch实用程序(的一部分util-linux)这样做,或简单地
linux32 chroot /path/to/chroot
Run Code Online (Sandbox Code Playgroud)
如果您使用 schroot 设置您的 chroot ,那么linux32在 chroot 定义中声明个性就可以解决这个问题。
| 归档时间: |
|
| 查看次数: |
809 次 |
| 最近记录: |