Answers:
从Ubuntu 11.04和Debian wheezy(7.0)开始,Debian和Ubuntu具有多体系结构支持:您可以直接在同一系统上混合使用x86_32(i386)和x86_64(amd64)软件包。这称为多体系结构支持。有关更多详细信息,请参见warl0ck的答案。
在较早的版本中,Debian和Ubuntu在amd64上附带了许多32位库。安装该软件包以拥有一组基本的32位库,以及可能依赖于此库的其他软件包。如果您具有所有必需的库,则应该只运行32位可执行文件。为了进行开发,请安装,并再次安装其他依赖它的软件包,例如。在Debian上,您也可能会发现有用。将选项传递给gcc以针对ix86进行编译。ia32-libs 
gcc-multilib 
g++-multilibbinutils-multiarch 
ia32-libs-dev-m32
请注意,无论您安装的是什么32位用户模式组件,如果您正在运行64位内核,它uname -m仍然会显示x64_64。下面介绍的Schroot会处理此问题。
本节是在另一个Linux发行版内部安装类似Debian的发行版的指南。它的用语是在64位Ubuntu中安装32位Ubuntu,但应对其他情况进行少量修改,例如在Debian稳定版中安装Debian不稳定版,反之亦然。
想法是在子树中安装备用发行版并从中运行。您可以通过这种方式在64位系统上安装32位系统,也可以在发行版的其他版本中安装,也可以在安装了不同软件包套件的测试环境中安装。
该chroot命令和系统调用使用仅限于目录树子树的文件系统视图启动进程。Debian和Ubuntu发行了schroot,该实用程序包装了此功能以创建更可用的子环境。
安装schroot软件包 
(Debian)和debootstrap软件包 
(Debian)。仅在安装备用发行版时才需要Debootstrap,然后可以将其删除。
本示例说明如何设置32位Ubuntu 10.04LTS(透明lynx)备用环境。类似的设置应与Debian和Ubuntu的其他版本一起使用。创建一个/etc/schroot/chroot.d/lucid32具有以下内容的文件:
[lucid32]
description=Ubuntu 10.04LTS 32-bit
directory=/32
type=directory
personality=linux32
users=yourusername
groups=users,admin
该行directory=/32告诉schroot,我们将把32位安装文件放在哪里。该行username=yourusername说yourusername将允许用户使用schroot。该行groups=users,admin说,将允许任一组中的用户使用schroot。您还可以放置一个users=…指令。
创建目录并开始用debootstrap填充它。Debootstrap下载并安装一组用于指定发行版和体系结构的核心软件包。
mkdir /32
debootstrap --arch i386 lucid /32 http://archive.ubuntu.com/ubuntu
您几乎已经有了一个工作系统;接下来是一些小的增强。Schroot在/32/etc运行时会自动覆盖其中的多个文件,尤其是其中的DNS配置/etc/resolv.conf和中的用户数据库/etc/passwd以及其他文件(可以覆盖此文件,请参见文档)。您可能还需要一劳永逸地手动复制一些文件:
cp -p /etc/apt/apt.conf /32/etc/apt/      # for proxy settings
cp -p /etc/apt/sources.list /32/etc/apt/  # for universe, security, etc
cp -p /etc/environment /32/etc/           # for proxy and locale settings
cp -p /etc/sudoers /32/etc/               # for custom sudo settings
不会有文件/etc/mtab或/etc/fstabchroot。我不建议mount在chroot中手动使用命令,而是从外部使用它。但是一定要做好准备,/etc/mtab以使诸如此类的命令df能够合理地工作。
ln -s /proc/mounts /32/etc/mtab
与directory类型,schroot将执行绑定安装一个数量的目录,即那些目录将与父安装共享:/proc,/dev,/home,/tmp。
如此处所述,schroot不适合运行守护程序。退出schroot时,schroot中的程序将被杀死。如果您希望它更永久,请使用“普通” schroot而不是“目录” schroot,并/etc/fstab在父安装上设置永久绑定安装。
在Debian和Ubuntu上,服务在安装时自动启动。为避免这种情况(这可能会中断chroot外部运行的服务,尤其是因为共享了网络端口),请建立一个不在chroot中运行服务的策略。将以下脚本放入,/32/usr/sbin/policy-rc.d并使其可执行(chmod a+rx /32/usr/sbin/policy-rc.d)。
#!/bin/sh
## Don't start any service if running in a chroot.
## See /usr/share/doc/sysv-rc/README.policy-rc.d.gz
if [ "$(stat -c %d:%i /)" != "$(stat -c %d:%i /proc/1/root/.)" ]; then
  exit 101
fi
现在我们可以开始使用chroot了。此时,您将需要安装更多软件包。
schroot -c lucid32
sudo apt-get update
apt-get install lsb-core nano
...
您可能需要生成一些语言环境,例如
locale-gen en_US en_US.utf8
如果schroot用于Ubuntu的较旧版本(例如8.04(强壮)),请注意,软件包ubuntu-standard引入了MTA。选择nullmailer而不是默认值postfix(您可能希望chroot发送邮件,但您绝对不希望它接收任何邮件)。
有关更多信息,请参见schroot手册,schroot FAQ和
 schroot.conf手册。Schroot是Debian autobuilder(已构建)项目的一部分。在Ubuntu社区页面上可能还有关于debootstrap的其他有用提示。
如果需要完全隔离备用环境,请使用虚拟机,例如KVM(qemu-kvm 
)或VirtualBox。
[ "$(stat -c %d:%i /)" != "$(stat -c %d:%i /proc/1/root/.)" ]条件说明吗?
                    users=faheem在您的示例中添加一行。默认情况下,至少对于我来说,我不是用户组的成员。但是,我本来希望如此。
                    自从Ubuntu 11.04(natty)和Debian 7.0(heezy)引入了多体系结构支持以来,32位和64位库可以在一个系统上共存。要安装32位库libXX,请首先在系统中添加必要的32位体系结构:
对于Ubuntu:
sudo dpkg --foreign-architecture i386
对于Debian:
sudo dpkg --add-architecture i386
然后安装32bit库:
sudo apt-get install libXX:i386
ia32-libs软件包。从Ubuntu 12.04精确版开始,它不再包含任何库,仅将libXX:i386软件包作为依赖项引入。
对于C和C ++程序,编译部分相当容易,将其添加-m32到CFLAG或中CXXFLAG,这将使生成的程序成为32位,例如
export CFLAGS="-m32"
gcc main.c -o main
这也适用于基于makefile的项目。
apt-get install ia32-libs为我工作(13.04)!
                    如果您只有32位二进制文件,并且希望在现代的64位Debian / Ubuntu系统上运行,请执行以下操作:
dpkg --add-architecture i386
apt update
apt install libc6-i386
这已经在Debian 9上进行了测试。
sudo apt-get install lib32z1如果有帮助,我还需要特定的32位可执行文件。错误是:sqlite3: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory。是的,这是2019年,我找不到sqlite项目支持的预编译的64位sqlite3客户端:(我在允许在此共享资源上安装的内容相当有限,因此我必须拉下预编译的sqlite软件包。值得庆幸的是我可以安装lib32z1。