GNU/Linux >> Belajar Linux >  >> Ubuntu

Debian – Bagaimana Cara Menjalankan Program 32-bit Pada Debian/ubuntu 64-bit?

Saya memiliki instalasi Debian atau Ubuntu 64-bit (amd64 a.k.a. Saya perlu menjalankan program 32-bit (i386/i686) sesekali, atau untuk mengkompilasi program untuk sistem 32-bit. Bagaimana saya bisa melakukan ini dengan sedikit keributan?

Bonus:bagaimana jika saya ingin menjalankan atau menguji dengan rilis distribusi yang lebih lama atau lebih baru?

Jawaban yang Diterima:

Untuk rilis saat ini

Debian dan Ubuntu saat ini memiliki dukungan multiarch:Anda dapat mencampur paket x86_32 (i386) dan x86_64 (amd64) pada sistem yang sama dengan cara yang mudah. Ini dikenal sebagai dukungan multiarch –
lihat Ubuntu atau Debian wiki informasi lebih lanjut.

Lihat jawaban warl0ck untuk jawaban sederhana dan terkini.

Untuk rilis lama

Dalam rilis yang lebih lama, Debian dan Ubuntu dikirimkan dengan sejumlah perpustakaan 32-bit di amd64. Instal ia32-libs memiliki kumpulan dasar pustaka 32-bit, dan mungkin paket lain yang bergantung pada paket ini. Eksekusi 32-bit Anda harus dijalankan jika Anda memiliki semua pustaka yang diperlukan. Untuk pengembangan, instal gcc-multilib , dan lagi mungkin paket lain yang bergantung padanya seperti g++-multilib . Anda mungkin menemukan binutils-multiarch berguna juga, dan ia32-libs-dev di Debian. Lewati -m32 opsi ke gcc untuk dikompilasi untuk ix86.

Perhatikan bahwa uname -m akan tetap menampilkan x64_64 jika Anda menjalankan kernel 64-bit, apa pun komponen mode pengguna 32-bit yang telah Anda instal. Schroot yang dijelaskan di bawah menangani hal ini.

Schroot

Bagian ini adalah panduan untuk menginstal distribusi mirip Debian “di dalam” distribusi Linux lain. Ini disebutkan dalam hal menginstal Ubuntu 32-bit di dalam Ubuntu 64-bit, tetapi harus diterapkan dengan sedikit modifikasi pada situasi lain, seperti menginstal Debian tidak stabil di dalam Debian stable atau sebaliknya.

Pengantar

Idenya adalah untuk menginstal distribusi alternatif di subpohon dan menjalankannya. Anda dapat menginstal sistem 32-bit pada sistem 64-bit dengan cara itu, atau rilis berbeda dari distribusi Anda, atau lingkungan pengujian dengan kumpulan paket yang diinstal berbeda.

chroot perintah dan panggilan sistem memulai proses dengan tampilan sistem file yang dibatasi pada subpohon dari pohon direktori. Debian dan Ubuntu mengirimkan schroot, sebuah utilitas yang membungkus fitur ini untuk membuat sub-lingkungan yang lebih bermanfaat.

Instal schroot kemasan (Debian) dan debootstrap kemasan (Debian). Debootstrap hanya diperlukan untuk instalasi distribusi alternatif dan dapat dihapus setelahnya.

Siapkan schroot

Contoh ini menjelaskan cara menyiapkan lingkungan alternatif Ubuntu 10.04LTS (lucid lynx) 32-bit. Pengaturan serupa harus bekerja dengan rilis lain dari Debian dan Ubuntu. Buat file /etc/schroot/chroot.d/lucid32 dengan isi sebagai berikut:

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

Baris directory=/32 memberitahu schroot di mana kita akan meletakkan file instalasi 32-bit. Baris username=yourusername kata pengguna yourusername akan diizinkan untuk menggunakan schroot. Baris groups=users,admin mengatakan bahwa pengguna di kedua grup akan diizinkan untuk menggunakan schroot; anda juga dapat menempatkan users=… arahan.

Instal distribusi baru

Buat direktori dan mulai mengisinya dengan debootstrap. Debootstrap mengunduh dan menginstal kumpulan paket inti untuk distribusi dan arsitektur yang ditentukan.

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

Anda hampir memiliki sistem kerja; berikut ini adalah peningkatan kecil. Schroot secara otomatis menimpa beberapa file di /32/etc ketika Anda menjalankannya, khususnya konfigurasi DNS di /etc/resolv.conf dan database pengguna di /etc/passwd dan file lainnya (ini dapat diganti, lihat dokumentasi). Ada beberapa file lagi yang mungkin ingin Anda salin secara manual untuk selamanya:

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

Tidak akan ada file /etc/mtab atau /etc/fstab dalam chroot. Saya tidak menyarankan menggunakan mount perintah secara manual di chroot, lakukan dari luar. Tapi buat /etc/mtab yang cukup baik untuk membuat perintah seperti df bekerja dengan wajar.

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

Dengan directory ketik, schroot akan melakukan pengikatan sejumlah direktori, yaitu direktori tersebut akan dibagikan dengan instalasi induk:/proc , /dev , /home , /tmp .

Layanan di chroot

Seperti yang dijelaskan di sini, schroot tidak cocok untuk menjalankan daemon. Program di schroot akan dimatikan saat Anda keluar dari schroot. Gunakan schroot “polos” alih-alih schroot “direktori” jika Anda ingin lebih permanen, dan siapkan pengikatan permanen di /etc/fstab pada instalasi induk.

Terkait:Linux – Kapan Anda akan menggunakan pivot_root daripada switch_root?

Di Debian dan Ubuntu, layanan mulai secara otomatis saat instalasi. Untuk menghindari hal ini (yang dapat mengganggu layanan yang berjalan di luar chroot, khususnya karena port jaringan digunakan bersama), buat kebijakan untuk tidak menjalankan layanan di chroot. Letakkan script berikut sebagai /32/usr/sbin/policy-rc.d dan membuatnya dapat dieksekusi (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

Mengisi sistem baru

Sekarang kita bisa mulai menggunakan chroot. Anda akan ingin menginstal beberapa paket lagi saat ini.

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

Anda mungkin perlu membuat beberapa lokal, mis.

locale-gen en_US en_US.utf8

Jika schroot adalah untuk rilis Ubuntu yang lebih lama seperti 8.04 (hardy), perhatikan bahwa paket standar ubuntu menarik MTA. Pilih nullmailer alih-alih postfix default (Anda mungkin ingin chroot Anda mengirim email tetapi Anda pasti tidak ingin menerimanya).

Melangkah lebih jauh

Untuk informasi lebih lanjut, lihat schroot manual, FAQ schroot dan schroot.conf manual. Schroot adalah bagian dari proyek autobuilder (buildd) Debian. Mungkin ada tips berguna tambahan di halaman komunitas Ubuntu tentang debootstrap.

Mesin virtual

Jika Anda memerlukan isolasi lengkap dari lingkungan alternatif, gunakan mesin virtual seperti KVM (qemu-kvm ) atau VirtualBox.


Ubuntu
  1. Cara Menginstal Spotify di Ubuntu &Debian

  2. Cara Beralih Versi Python di Ubuntu &Debian

  3. Cara Menginstal Subversion 1.9 di Ubuntu &Debian

  1. Cara Menginstal Python 3.5 di Ubuntu, Debian &Linuxmint

  2. Cara Membuka Port di Ubuntu / Debian

  3. Bagaimana Ubuntu Berbeda Dari Debian?

  1. Cara Memasang Indikator SysMonitor di Ubuntu &Debian

  2. Cara menginstal Docker di Debian / Ubuntu

  3. Debian – Menginstal Dua Glibc Bersamaan Di Debian/ubuntu?