在Ubuntu系統中配置chroot環境的教程

來源:互聯網
上載者:User

   你可能會有很多理由想要把一個應用、一個使用者或者一個環境與你的 linux 系統隔離開來。不同的作業系統有不同的實現方式,而在 linux 中,一個典型的方式就是 chroot 環境。

  在這份教程中,我會一步一步指導你怎麼使用 chroot 命令去配置一個與真實系統分離出來的獨立環境。這個功能主要可以用於測試專案,以下這些步驟都在 Ubuntu 14.04 虛擬專用伺服器(VPS)上執行。

  學會快速搭建一個簡單的 chroot 環境是一項非常實用的技能,絕大多數系統管理員都能從中受益。

  Chroot 環境

  一個 chroot 環境就是通過系統調用,將一個本地目錄臨時變成根目錄。一般所說的系統根目錄就是掛載點"/",然而使用 chroot 命令後,你可以使用其它目錄作為根目錄。

  原則上,任何運行在 chroot 環境內的應用都不能訪問系統中其他資訊(LCTT譯註:使用 chroot 把一個目錄變成根目錄,在裡面啟動並執行應用只能訪問本目錄內的檔案,無法訪問到目錄外的檔案。然而,運行在 chroot 環境的應用可以通過 sysfs 檔案系統訪問到環境外的資訊,所以,這裡有個“原則上”的修飾語)。

  Chroot 環境的用處

  測試一個不穩定的應用服務不會影響到整個主機系統。

  就算使用 root 許可權做了些不當的操作,把 chroot 環境搞得一塌糊塗,也不會影響到主機系統。

  可以在你的系統中運行另外一個作業系統。

  舉個例子,你可以在 chroot 環境中編譯、安裝、測試軟體,而不去動真實的系統。你也可以在64位環境下使用 chroot 建立一個32位環境,然後運行一個32位的程式(LCTT澤註:如果你的真實環境是32位的,那就不能 chroot 一個64位的環境了)。

  但是為了安全考慮,chroot 環境為非特權使用者設立了非常嚴格的限制,而不是提供完整的安全性原則。如果你需要的是有完善的安全性原則的隔離方案,可以考慮下 LXC、Docker、vservers等等。

  Debootstrap 和 Schroot

  使用 chroot 環境需要安裝 debootstrap 和 schroot,這兩個軟體都在 Ubuntu 的鏡像源中。其中 schroot 用於建立 chroot 環境。

  Debootstrap 可以讓你通過鏡像源安裝任何 Debian(或基於 Debian 的)系統,裝好的系統會包含最基本的命令。

  Schroot 命令允許使用者使用相同的機制去建立 chroot 環境,但在訪問 chroot 環境時會做些許可權檢查,並且會允許使用者做些額外的自動化佈建,比如掛載一些檔案系統。

  在 Ubuntu 14.04 LTS 上,我們可以通過兩步來實現這個功能:

  1. 安裝軟體包

  第一步,在Ubuntu 14.04 LTS 主機系統上安裝 debootstrap 和 schroot:

  代碼如下:

  $ sudo apt-get install debootstrap

  $ sudo apt-get install schroot

  2. 配置 Schroot

  現在我們有工具在手,需要指定一個目錄作為我們的 chroot 環境。這裡建立一個目錄先:

  代碼如下:

  sudo mkdir /linoxide

  編輯 schroot 的設定檔:

  代碼如下:

  sudo nano /etc/schroot/schroot.conf

  再提醒一下,我們現在是在 Ubuntu 14.04 LTS 系統上。如果我們想測試一個軟體包能不能在 Ubuntu 13.10(代號是“Saucy Salamander”) 上運行,就可以在設定檔中添加下面的內容:

  代碼如下:

  [saucy]

  description=Ubuntu Saucy

  location=/linoxide

  priority=3

  users=arun

  root-groups=root

  根據你的系統要求,調整上面的配置資訊。

  3. 使用 debootstrap 安裝32位 Ubuntu 系統

  Debootstrap 命令會在你的 chroot 環境裡面下載安裝一個最小系統。只要你能訪問鏡像源,你就可以安裝任何基於 Debian 的系統版本。

  前面我們已經建立了 /linoxide 目錄用於放置 chroot 環境,現在我們可以在這個目錄裡面運行 debootstrap 了:

  代碼如下:

  cd /linoxide

  sudo debootstrap --variant=buildd --arch amd64 saucy /linoxide/ http://archive.ubuntu.com/ubuntu/

  sudo chroot /linoxide /debootstrap/debootstrap --second-stage

  你可以將 --arch 的參數換成 i386 或其他架構,只要存在這種架構的鏡像源。你也可以把鏡像源 http://archive.ubuntu.com/ubuntu/ 換成離你最近的鏡像源,具體可參考 Ubuntu 官方鏡像首頁。

  注意:如果你是在64位系統中建立32位系統,你需要在上面第3行命令中加入 --foreign 選項,就像下面的命令:

  代碼如下:

  sudo debootstrap --variant=buildd --foreign --arch i386 saucy /linoxide/ http://archive.ubuntu.com/ubuntu/

  下載需要一段時間,看你網路頻寬效能。最小系統大概有500M。

  4. 完成 chroot 環境

  安裝完系統後,我們需要做一些收尾工作,確保系統運行正常。首先,保證主機的 fstab 程式能意識到 chroot 環境的存在:

  代碼如下:

  sudo nano /etc/fstab

  在檔案最後面添加下面的配置:

  代碼如下:

  proc /linoxide/proc proc defaults 0 0

  sysfs /linoxide/sys sysfs defaults 0 0

  儲存並關閉檔案。

  掛載一些檔案系統到 chroot 環境:

  代碼如下:

  $ sudo mount proc /linoxide/proc -t proc

  $ sudo mount sysfs /linoxide/sys -t sysfs

  複製 /etc/hosts 檔案到 chroot 環境,這樣 chroot 環境就可以使用網路了:

  代碼如下:

  $ sudo cp /etc/hosts /linoxide/etc/hosts

  最後使用 schroot -l 命令列出系統上所有的 chroot 環境:

  代碼如下:

  $ schroot -l

  使用下面的命令進入 chroot 環境:

  代碼如下:

  $ sudo chroot /linoxide/ /bin/bash

  測試安裝的版本:

  代碼如下:

  # lsb_release -a

  # uname -a

  為了在 chroot 環境中使用圖形介面,你需要設定 DISPLAY 環境變數:

  代碼如下:

  $ DISPLAY=:0.0 ./apps

  目前為止,我已經成功地在 Ubuntu 14.04 LTS 上安裝了 Ubuntu 13.10。

  退出 chroot 環境:

  代碼如下:

  # exit

  清理一下,卸載檔案系統:

  代碼如下:

  $ sudo umount /test/proc

  $ sudo umount /test/sys

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.