Chroot

如何創建 32 位 chroot 系統,它只是我目前系統的鏡像以用於編譯目的?

  • September 9, 2016

經過大量的Google搜尋、發布和為模糊的 GCC 連結器錯誤消息而哭泣後,我得出結論,在外國 CPU 架構中可靠地建構某些東西的唯一方法是建立一個 chroot 環境。這有點好笑,因為我已經在 VirtualBox 中執行 Debian,所以現在它將是虛擬系統中的虛擬系統。

當我閱讀有關 chroot 的各種教程時,我注意到有兩點我不喜歡它們:

  1. 它們總是包含一個從他們選擇的某個 URL 下載系統的命令,如下所示。我想使用我已經擁有的類似系統,並且盡可能地縮小。
sudo debootstrap --variant=buildd --arch i386 lucid /var/chroot/ http://mirror.url.com/ubuntu/
  1. 從來沒有真正提到過編譯位於主機系統上的項目。就像我真的不想把我的項目複製到某個地方——如果是這樣的話,我可以設置另一個虛擬盒子系統。

所以我想問是否有人真的設法創建了 chroot 系統並用它來建構一個項目。當然,如果該系統盡可能小,那將是理想的,因為我只是為庫安裝它。如果它只是下載執行它的 64 位系統的 32 位版本,那就太好了。

Linux 程序員一直在說在 Linux 上程式比在 Windows 上容易得多。我很想最終體驗其中的一些。

我已經寫了一個關於創建 32 位 chroot 的教程,所以我不會在這裡重複,我會假設你已經閱讀過它。在這個答案中,我將只解決您問題中的具體問題。

它們總是包含一個從他們選擇的某個 URL 下載系統的命令,如下所示。我想使用我已經擁有的類似系統,並且盡可能地縮小。

您確實需要下載軟體包。大多數 32 位軟體包未安裝或安裝在您的系統上,因為您有提供相同文件的 64 位軟體包。

您確實需要選擇要安裝的 32 位發行版的版本。畢竟,同樣的技術可以用於安裝其他版本的發行版。

您在陳述兩個不兼容的目標:一個是擁有一個最小系統,另一個是重現您已經擁有的 64 位系統。如果您想要一個最小的系統,請從 debootstrap 安裝的內容開始。當然,您可能可以通過刪除一些永遠不會在 chroot 中使用的包來節省幾兆字節的空間,但是不值得花時間來擺弄依賴關係(您可能不得不打破很多依賴關係刪除不是絕對必要的包裹)。如果您想重現您現有的安裝,請使用apt-clone(如果可用)(範例),如果不使用,請使用dpkg --get-selectionsandapt-mark

從來沒有真正提到過編譯位於主機系統上的項目。就像我真的不想把我的項目複製到某個地方——如果是這樣的話,我可以設置另一個虛擬盒子系統。

由 schroot 設置的 chroot 已經有了你的主目錄。更準確地說,/home是綁定安裝在 chroot 內。因此,如果您的項目位於 下/home,則它已經在 chroot 中可用。

如果您想使其他目錄可用,請將條目添加到/etc/schroot/default/fstab,複製現有條目/home,例如

/dev            /dev            none    rw,bind         0       0
/dev/pts        /dev/pts        none    rw,bind         0       0
/home           /home           none    rw,bind         0       0
/tmp            /tmp            none    rw,bind         0       0
/scratch        /scrath         none    rw,bind         0       0

所以我想問是否有人真的設法創建了 chroot 系統並用它來建構一個項目。

我一直這樣做。事實上,這就是我最初寫這篇文章的原因。

引用自:https://unix.stackexchange.com/questions/232958