2011年9月15日星期四

Ubuntu chroot (Debootstrap)

在Gentoo下很容易就能進入一個chroot環境,用來做一些實驗性的事(例如安裝測試版的套件)
在Ubuntu(或者說Debain)也能這樣做的:)
而且比Gentoo更簡單
Ubuntu有一個叫做DebootstrapChroot的東西就是用來建立chroot環境的
(其實也可以用來安裝Ubuntu就像安裝Gentoo一樣,可能舊時代沒有liveCD installer時就用這東西的??)
還有一個schroot用來管理chroot環境,這個是可選的但是用了它就可以不用super user權限就能開啟一個root user的chroot
詳細步驟在ubuntu wiki裏寫得很清濋,首先當然要安裝這兩個東東:
sudo apt-get install debootstrap schroot
然後找一條ubuntu的source url,例如http://archive.ubuntu.com/ubuntu/
澳門的也可以用這個:http://mo.archive.ubuntu.com/ubuntu/(但是好慢囧)
然後下載一個最小化的Ubuntu到一個目錄裏,我是放在HOME下的ubuntuchroot
$ sudo mkdir -p ~/ubuntuchroot
$ sudo debootstrap --variant=buildd --arch amd64 natty ~/ubuntuchroot http://archive.ubuntu.com/ubuntu/
--arch amd64是64bit版本,如果想在64bit系統裏安裝一個32bit環境可以改回i386
natty就是Ubuntu 11.04,也可以用其他的版本
buildd會安裝build-essential套件,如果想最少化的話用minbase應該也可以的
這樣debootstrap就會自動完成所有工作,基本上可以直接執行chroot進去
為了方便以後隨時進入chroot環境,我們需要設置一下schroot
wiki裏寫的是舊版本用的,現在貌似改變了少許(以Ubuntu 11.04 Natty為例)
schroot的設置文件是/etc/schroot/schroot.conf,在裏面加入:
[server]
description=Ubuntu server for developing
directory=/home/USERNAME/ubuntuchroot
root-users=USERNAME
type=directory
users=USERNAME
要把USERNAME換成自己系統的使用者名稱,directory當然要填剛才下載東西的那個
root-users所指定的使用者就能夠不需要super user權限直接打開一個root的chroot環境

開始使用之前還要修改一下schroot的設定
因為它會把系統裏一部份檔案同步到chroot環境入面,有時會帶來不必要的麻煩
所以先修改/etc/schroot/default/fstab把/home那行註釋了
然後修改/etc/schroot/default/copyfiles把gshadow一行註釋了(這是使用者群組的資料庫)
最後修改/etc/schroot/default/nssdatabases把這幾個註釋了
#passwd
#shadow
#group
#services
#protocols
基木上我們只需要掛載上必要的系統目錄/dev/proc/tmp和複制網絡設定即可使用chroot環境
schroot還會同步使用者資料庫,這樣會帶來一些問題
例如我在chroot裏安裝了LAMP task用來試下網站,但是主機本身沒有安裝mysql
這樣schroot會把chroot裏的mysql使用者和群組刪除,結果造成無法連接mysql database

要進入chroot環境的話不需要sudo直接用schroot即可:
schroot -c server -u root
發佈留言

熱門文章