Hỗ trợ bản địa
Do Ubuntu 11.04 và Debian wheezy (7.0), Debian và Ubuntu có hỗ trợ đa nhóm: bạn có thể trộn các gói x86_32 (i386) và x86_64 (amd64) trên cùng một hệ thống theo cách đơn giản. Điều này được gọi là hỗ trợ multiarch Xem câu trả lời của warl0ck để biết thêm chi tiết.
Trong các bản phát hành cũ hơn, Debian và Ubuntu có một số thư viện 32 bit trên amd64. Cài đặt gói để có một bộ thư viện 32 bit cơ bản và có thể các gói khác phụ thuộc vào gói này. Các tệp thực thi 32 bit của bạn chỉ cần chạy nếu bạn có tất cả các thư viện cần thiết. Để phát triển, cài đặt và một lần nữa có thể các gói khác phụ thuộc vào nó, chẳng hạn như . Bạn cũng có thể thấy hữu ích và trên Debian. Vượt qua tùy chọn để gcc để biên dịch cho ix86.ia32-libs
gcc-multilib
g++-multilib
binutils-multiarch
ia32-libs-dev
-m32
Lưu ý rằng uname -m
vẫn sẽ hiển thị x64_64
nếu bạn đang chạy kernel 64 bit, bất kể thành phần chế độ người dùng 32 bit nào bạn đã cài đặt. Schroot được mô tả dưới đây quan tâm đến điều này.
Schroot
Phần này là một hướng dẫn để cài đặt một bản phân phối giống như Debian bên trong một bản phân phối Linux khác. Nó được dùng để cài đặt Ubuntu 32 bit bên trong Ubuntu 64 bit, nhưng nên áp dụng với các sửa đổi nhỏ cho các tình huống khác, chẳng hạn như cài đặt Debian không ổn định trong Debian ổn định hoặc ngược lại.
Giới thiệu
Ý tưởng là cài đặt một bản phân phối thay thế trong một cây con và chạy từ đó. Bạn có thể cài đặt hệ thống 32 bit trên hệ thống 64 bit theo cách đó hoặc bản phát hành khác của bản phân phối hoặc môi trường thử nghiệm với các bộ gói khác nhau được cài đặt.
Các chroot
lệnh và hệ thống gọi bắt đầu một quá trình với một cái nhìn của hệ thống tập tin được giới hạn trong một cây con của cây thư mục. Debian và Ubuntu gửi schroot , một tiện ích bao quanh tính năng này để tạo ra một môi trường phụ có thể sử dụng nhiều hơn.
Cài đặt schroot
gói ( Debian ) và debootstrap
gói ( Debian ). Debootstrap chỉ cần thiết cho việc cài đặt phân phối thay thế và có thể được gỡ bỏ sau đó.
Thiết lập schroot
Ví dụ này mô tả cách thiết lập môi trường thay thế Ubuntu 10.04LTS (lucid lynx) 32 bit. Một thiết lập tương tự sẽ hoạt động với các bản phát hành khác của Debian và Ubuntu. Tạo một tệp /etc/schroot/chroot.d/lucid32
có nội dung sau:
[lucid32]
description=Ubuntu 10.04LTS 32-bit
directory=/32
type=directory
personality=linux32
users=yourusername
groups=users,admin
Dòng này directory=/32
cho schroot biết nơi chúng ta sẽ đặt các tệp của bản cài đặt 32 bit. Dòng username=yourusername
cho biết người dùng yourusername
sẽ được phép sử dụng schroot. Dòng groups=users,admin
nói rằng người dùng trong một trong hai nhóm sẽ được phép sử dụng schroot; bạn cũng có thể đặt một users=…
chỉ thị.
Cài đặt bản phân phối mới
Tạo thư mục và bắt đầu điền nó với debootstrap. Debootstrap tải xuống và cài đặt một bộ gói cốt lõi cho phân phối và kiến trúc được chỉ định.
mkdir /32
debootstrap --arch i386 lucid /32 http://archive.ubuntu.com/ubuntu
Bạn gần như đã có một hệ thống làm việc rồi; những gì sau đây là những cải tiến nhỏ. Schroot tự động ghi đè một số tệp /32/etc
khi bạn chạy nó, đặc biệt là cấu hình DNS trong /etc/resolv.conf
và cơ sở dữ liệu người dùng /etc/passwd
và các tệp khác (điều này có thể được ghi đè, xem tài liệu). Có một vài tệp bạn có thể muốn sao chép thủ công một lần và mãi mãi:
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
Sẽ không có một tập tin /etc/mtab
hoặc /etc/fstab
trong chroot. Tôi không khuyên bạn nên sử dụng mount
lệnh thủ công trong chroot, hãy thực hiện từ bên ngoài. Nhưng hãy tạo ra một thứ đủ tốt /etc/mtab
để thực hiện các lệnh như df
làm việc hợp lý.
ln -s /proc/mounts /32/etc/mtab
Với directory
loại, schroot sẽ thực hiện gắn kết ràng buộc của một số thư mục, tức là những thư mục sẽ được chia sẻ với quá trình cài đặt cha mẹ: /proc
, /dev
, /home
, /tmp
.
Dịch vụ trong chroot
Như được mô tả ở đây, một schroot không phù hợp để chạy daemon. Các chương trình trong schroot sẽ bị giết khi bạn thoát khỏi schroot. Sử dụng một schroot đơn giản và thay vì một thư mục của Google schroot nếu bạn muốn nó lâu dài hơn và thiết lập các liên kết gắn kết vĩnh viễn trong /etc/fstab
cài đặt gốc.
Trên Debian và Ubuntu, các dịch vụ bắt đầu tự động khi cài đặt. Để tránh điều này (có thể làm gián đoạn các dịch vụ chạy bên ngoài chroot, đặc biệt vì các cổng mạng được chia sẻ), hãy thiết lập chính sách không chạy các dịch vụ trong chroot. Đặt đoạn script sau đây /32/usr/sbin/policy-rc.d
và làm cho nó có thể thực thi được ( 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
Xây dựng hệ thống mới
Bây giờ chúng ta có thể bắt đầu sử dụng chroot. Bạn sẽ muốn cài đặt thêm một vài gói vào thời điểm này.
schroot -c lucid32
sudo apt-get update
apt-get install lsb-core nano
...
Bạn có thể cần tạo một vài địa phương, vd
locale-gen en_US en_US.utf8
Nếu schroot dành cho một bản phát hành cũ hơn của Ubuntu, chẳng hạn như 8.04 (hardy), hãy lưu ý rằng gói tiêu chuẩn ub Ubuntu kéo theo một MTA. Chọn nullmailer
thay vì mặc định postfix
(bạn có thể muốn chroot của mình gửi thư nhưng bạn chắc chắn không muốn nhận nó).
Đi xa hơn
Để biết thêm thông tin, xem schroot
hướng dẫn , Câu hỏi thường gặp schroot và
schroot.conf
hướng dẫn . Schroot là một phần của dự án autobuilder (buildd) của Debian . Có thể có thêm các mẹo hữu ích trên trang cộng đồng Ubuntu về debootstrap .
Máy ảo
Nếu bạn cần cách ly hoàn toàn với môi trường thay thế, hãy sử dụng máy ảo như KVM ( qemu-kvm ) hoặc VirtualBox .