GNU/Linux >> Znalost Linux >  >> Ubuntu

Debian – Jak spouštět 32bitové programy na 64bitovém Debianu/ubuntu?

Mám 64bitovou (amd64 a.k.a. x86_64) instalaci Debianu nebo Ubuntu. Potřebuji občas spouštět 32bitové (i386/i686) programy nebo kompilovat programy pro 32bitový systém. Jak to mohu udělat s minimem starostí?

Bonus:co když chci spustit nebo testovat starší nebo novější verzi distribuce?

Přijatá odpověď:

Pro aktuální verze

Aktuální Debian a Ubuntu mají podporu multiarch:Balíčky x86_32 (i386) a x86_64 (amd64) můžete kombinovat na stejném systému přímočarým způsobem. Toto je známé jako podpora multiarch –
více informací viz Ubuntu nebo Debian wiki.

Podívejte se na warl0ckovu odpověď pro jednoduchou a aktuální odpověď.

Pro stará vydání

Ve starších verzích se Debian a Ubuntu dodávají s řadou 32bitových knihoven na amd64. Nainstalujte ia32-libs obsahuje základní sadu 32bitových knihoven a případně další balíčky, které na této knihovně závisí. Vaše 32bitové spustitelné soubory by se měly jednoduše spustit, pokud máte všechny požadované knihovny. Pro vývoj nainstalujte gcc-multilib a opět možná další balíčky, které na něm závisí, jako je g++-multilib . Můžete najít binutils-multiarch je také užitečné a ia32-libs-dev na Debianu. Předejte -m32 možnost kompilace gcc pro ix86.

Všimněte si, že uname -m bude stále zobrazovat x64_64 pokud používáte 64bitové jádro, bez ohledu na to, jaké součásti 32bitového uživatelského režimu jste nainstalovali. O to se stará níže popsaný Schroot.

Schroot

Tato část je průvodcem instalací distribuce podobné Debianu „uvnitř“ jiné distribuce Linuxu. Je formulován jako instalace 32bitového Ubuntu do 64bitového Ubuntu, ale měl by se s menšími úpravami použít i v jiných situacích, jako je instalace nestabilního Debianu uvnitř stabilního systému Debian nebo naopak.

Úvod

Cílem je nainstalovat alternativní distribuci do podstromu a spustit z ní. Tímto způsobem můžete nainstalovat 32bitový systém na 64bitový systém nebo jiné vydání vaší distribuce nebo testovací prostředí s nainstalovanými různými sadami balíčků.

chroot příkaz a systémové volání spustí proces s pohledem na souborový systém, který je omezen na podstrom adresářového stromu. Debian a Ubuntu dodávají schroot, utilitu, která tuto funkci obklopuje a vytváří použitelnější dílčí prostředí.

Nainstalujte schroot balík (Debian) a debootstrap balík (Debian). Debootstrap je potřeba pouze pro instalaci alternativní distribuce a lze jej poté odstranit.

Nastavit schroot

Tento příklad popisuje, jak nastavit 32bitové alternativní prostředí Ubuntu 10.04LTS (lucid lynx). Podobné nastavení by mělo fungovat s dalšími vydáními Debianu a Ubuntu. Vytvořte soubor /etc/schroot/chroot.d/lucid32 s následujícím obsahem:

[lucid32]
description=Ubuntu 10.04LTS 32-bit
directory=/32
type=directory
personality=linux32
users=yourusername
groups=users,admin

Řádek directory=/32 řekne schrootu, kam umístíme soubory 32bitové instalace. Řádek username=yourusername říká uživatel yourusername bude moci používat schroot. Řádek groups=users,admin říká, že uživatelé v obou skupinách budou moci používat schroot; můžete také zadat users=… směrnice.

Nainstalujte novou distribuci

Vytvořte adresář a začněte jej plnit debootstrapem. Debootstrap stáhne a nainstaluje základní sadu balíčků pro specifikovanou distribuci a architekturu.

mkdir /32
debootstrap --arch i386 lucid /32 http://archive.ubuntu.com/ubuntu

Už máte téměř funkční systém; co následuje, jsou drobná vylepšení. Schroot automaticky přepíše několik souborů v /32/etc když jej spustíte, zejména konfiguraci DNS v /etc/resolv.conf a uživatelskou databázi v /etc/passwd a další soubory (toto lze přepsat, viz dokumentace). Existuje několik dalších souborů, které možná budete chtít zkopírovat ručně jednou provždy:

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

Nebude zde soubor /etc/mtab nebo /etc/fstab v chrootu. Nedoporučuji používat mount příkaz ručně v chrootu, udělejte to zvenčí. Ale vytvořte dostatečně dobrý /etc/mtab k provádění příkazů jako df pracovat rozumně.

ln -s /proc/mounts /32/etc/mtab

Pomocí directory typu, schroot provede připojení k řadě adresářů, tj. tyto adresáře budou sdíleny s nadřazenou instalací:/proc , /dev , /home , /tmp .

Služby v chrootu

Jak je zde popsáno, schroot není vhodný pro spouštění démonů. Programy ve schrootu budou ukončeny, když opustíte schroot. Pokud chcete, aby byl trvalejší, použijte „prostý“ schroot namísto „adresářového“ schrootu a nastavte trvalé připojení v /etc/fstab na nadřazené instalaci.

Související:Linux – Kdy byste použili pivot_root přes switch_root?

Na Debianu a Ubuntu se služby spouštějí automaticky při instalaci. Abyste tomu zabránili (což by mohlo narušit služby běžící mimo chroot, zejména kvůli sdíleným síťovým portům), zaveďte politiku nespouštění služeb v chrootu. Vložte následující skript jako /32/usr/sbin/policy-rc.d a udělejte jej spustitelným (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

Naplňte nový systém

Nyní můžeme začít používat chroot. V tuto chvíli budete chtít nainstalovat několik dalších balíčků.

schroot -c lucid32
sudo apt-get update
apt-get install lsb-core nano
...

Možná budete muset vygenerovat několik národních prostředí, např.

locale-gen en_US en_US.utf8

Pokud je schroot pro starší verzi Ubuntu, jako je 8.04 (hardy), všimněte si, že balíček ubuntu-standard stahuje MTA. Vyberte nullmailer místo výchozího postfix (můžete chtít, aby váš chroot posílal poštu, ale rozhodně nechcete, aby nějakou přijímal).

Jít dále

Další informace naleznete v schroot manuál, schroot FAQ a schroot.conf manuál. Schroot je součástí projektu Debian autobuilder (buildd). Na stránce komunity Ubuntu o debootstrapu mohou být další užitečné tipy.

Virtuální stroj

Pokud potřebujete úplnou izolaci alternativního prostředí, použijte virtuální počítač, jako je KVM (qemu-kvm ) nebo VirtualBox.


Ubuntu
  1. Jak nainstalovat Spotify na Ubuntu a Debian

  2. Jak změnit verzi Pythonu v Ubuntu a Debianu

  3. Jak nainstalovat Subversion 1.9 na Ubuntu a Debian

  1. Jak nainstalovat Python 3.5 na Ubuntu, Debian a Linuxmint

  2. Jak nainstalovat Indicator SysMonitor na Ubuntu a Debian

  3. Debian – instalace dvou Glibc vedle v Debian/ubuntu?

  1. Jak otevřít porty v Ubuntu / Debian

  2. Jak nainstalovat Docker na Debian / Ubuntu

  3. Jak se Ubuntu liší od Debianu?