การสนับสนุนพื้นเมือง
ตั้งแต่ Ubuntu 11.04 และ Debian wheezy (7.0) Debian และ Ubuntu มีการสนับสนุนหลายแบบ: คุณสามารถผสมแพ็คเกจ x86_32 (i386) และ x86_64 (amd64) ในระบบเดียวกันได้อย่างตรงไปตรงมา นี่เป็นที่รู้จักกันในชื่อmultiarch supportดูคำตอบของ warl0ckสำหรับรายละเอียดเพิ่มเติม
ในรุ่นเก่า Debian และ Ubuntu มาพร้อมกับไลบรารีจำนวน 32 บิตใน amd64 ติดตั้งแพคเกจเพื่อให้มีชุดพื้นฐานของไลบรารี 32 บิตและอาจเป็นแพ็คเกจอื่น ๆ ที่ขึ้นอยู่กับแพ็คเกจนี้ executables 32 บิตของคุณควรรันถ้าคุณมีไลบรารีที่จำเป็นทั้งหมด สำหรับการพัฒนาติดตั้งและอีกแพคเกจอื่น ๆ อาจจะว่าขึ้นอยู่กับมันเช่น คุณอาจพบว่ามีประโยชน์เช่นกันและใน Debian ผ่านตัวเลือกเพื่อ gcc เพื่อรวบรวมสำหรับ ix86ia32-libs
gcc-multilib
g++-multilib
binutils-multiarch
ia32-libs-dev
-m32
โปรดทราบว่าuname -m
จะยังคงแสดงx64_64
หากคุณใช้เคอร์เนล 64 บิตโดยไม่คำนึงถึงองค์ประกอบโหมดผู้ใช้แบบ 32 บิตที่คุณติดตั้งไว้ Schroot อธิบายไว้ด้านล่างดูแลเรื่องนี้
Schroot
ส่วนนี้เป็นแนวทางในการติดตั้งการแจกจ่ายแบบเดเบียน“ ข้างใน” การกระจาย Linux อื่น มันเป็นคำพูดในแง่ของการติดตั้ง Ubuntu แบบ 32 บิตภายใน Ubuntu แบบ 64 บิต แต่ควรใช้กับการปรับเปลี่ยนเล็กน้อยกับสถานการณ์อื่น ๆ เช่นการติดตั้ง Debian ไม่เสถียรภายใน Debian เสถียรหรือในทางกลับกัน
บทนำ
แนวคิดคือการติดตั้งการกระจายทางเลือกในทรีย่อยและเรียกใช้จากที่ คุณสามารถติดตั้งระบบ 32- บิตบนระบบ 64- บิตในแบบนั้นหรือรีลีสการกระจายของคุณที่แตกต่างกันหรือสภาพแวดล้อมการทดสอบที่ติดตั้งชุดแพ็กเกจต่างๆ
การเรียกใช้chroot
คำสั่งและระบบเริ่มต้นกระบวนการด้วยมุมมองของระบบไฟล์ที่ถูก จำกัด ไว้ที่แผนผังย่อยของแผนผังไดเร็กทอรี schroot ของเดเบียนและอูบุนตูยูทิลิตีที่ล้อมรอบคุณสมบัตินี้เพื่อสร้างสภาพแวดล้อมย่อยที่สามารถใช้งานได้มากขึ้น
ติดตั้งschroot
แพ็คเกจ ( Debian ) และdebootstrap
แพ็คเกจ ( Debian ) Debootstrap จำเป็นสำหรับการติดตั้งการกระจายทางเลือกเท่านั้นและสามารถลบออกได้ในภายหลัง
ตั้งค่า schroot
ตัวอย่างนี้อธิบายวิธีตั้งค่าสภาพแวดล้อมทางเลือก Ubuntu 10.04LTS (lucid lynx) 32 บิต การตั้งค่าที่คล้ายกันควรทำงานกับ 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/fstab
ใน chroot ฉันไม่แนะนำให้ใช้mount
คำสั่งด้วยตนเองใน chroot ทำจากภายนอก แต่สร้างดีพอที่/etc/mtab
จะทำให้คำสั่งเช่นdf
ทำงานอย่างมีเหตุผล
ln -s /proc/mounts /32/etc/mtab
กับdirectory
ชนิด schroot จะดำเนินม้าผูกของจำนวนของไดเรกทอรีเช่นไดเรกทอรีที่จะใช้ร่วมกันกับการติดตั้งผู้ปกครอง: /proc
, /dev
, ,/home
/tmp
บริการใน chroot
ตามที่อธิบายไว้ที่นี่ schroot ไม่เหมาะสำหรับการเรียกใช้ daemons โปรแกรมใน 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 (hardy) โปรดทราบว่าแพ็คเกจ ubuntu-standard pulls ใน MTA เลือกnullmailer
แทนที่จะเป็นค่าเริ่มต้นpostfix
(คุณอาจต้องการให้ chroot ส่งอีเมล แต่คุณไม่ต้องการรับมันอย่างแน่นอน)
ก้าวต่อไป
สำหรับข้อมูลเพิ่มเติมโปรดดูที่schroot
คู่มือการschroot คำถามที่พบบ่อยและ
คู่มือschroot.conf
Schroot เป็นส่วนหนึ่งของautobuilder (buildd) โครงการ อาจจะมีเคล็ดลับที่เป็นประโยชน์เพิ่มเติมในเพจชุมชนเกี่ยวกับอูบุนตู debootstrap
เครื่องเสมือน
หากคุณจำเป็นต้องแยกสมบูรณ์ของสภาพแวดล้อมอื่นใช้เครื่องเสมือนเช่นKVM ( qemu-KVM ) หรือVirtualBox