chroot (change root) 是一個指令,它可以將某個小型的檔案系統變成一個 / 環境,而這個小型的檔案系統要用 debootstrap 這個指令來建立。
使用 debootstrap 指令
debootstrap 指令是用來建立小型 root 環境的一個指令,他對於建立嵌入式系統的根目錄或是我們現在要建立的小型 root 環境都非常有用,要安裝 debootstrap 請執行:
# apt-get install debootstrap
安裝完成後,請在 ~/virtualclassroom 底下建立一個 chroot 目錄,接著在此目錄新增一個 shell script,其檔名為 debootstrap.sh,內容如下所示:
SOURCEDIR=`pwd`/LEENIX
ARCH=amd64
DEBIAN_RELEASE=jessie
#DEBIAN_MIRROR=ftp://opensource.nchc.org.tw/debian
DEBIAN_MIRROR=file:///srv/ftp/debian
[ -d $SOURCEDIR ] && rm -rf $SOURCEDIR
mkdir -p $SOURCEDIR
time debootstrap --arch ${ARCH} ${DEBIAN_RELEASE} ${SOURCEDIR} ${DEBIAN_MIRROR}
建完 debootstrap.sh 後,請以 root 權限執行:
# sh debootstrap.sh
此時會看到 debootstrap 開始抓檔案並開始安裝一個最原始、最小型的 / 檔案系統。debootstrap.sh 執行完的畫面如下所示:
I: Configuring iputils-ping...
I: Configuring isc-dhcp-common...
I: Configuring isc-dhcp-client...
I: Configuring tasksel...
I: Configuring tasksel-data...
I: Configuring libc-bin...
I: Configuring systemd...
I: Base system installed successfully.
此時會有一個 LEENIX 的目錄,我們可以檢查此目錄來看其內容,這個目錄其實就是一個最精簡的 / 目錄。接下來我們可以使用 chroot 指令來切換至此目錄,請先編輯 chroot.sh 檔案,其內容如下所示:
SOURCEDIR=`pwd`/LEENIX
chroot ${SOURCEDIR} \
/usr/bin/env -i \
HOME=/root \
TERM=$TERM \
PS1='\u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin \
/bin/bash --login
編輯完之後可以用 root 權限執行:
sh chroot.sh
此時你會發現你的目錄位置變成 /,如底下所示:
~/virtualclassroom/chroot# sh chroot.sh
root@120:/#
現在我們已經切換到剛剛那個小型的 root 目錄了,在這個目錄可以作一些事情,理論上不會傷害到實體主機。例如 apt-get 指令等均是在此小型 / 目錄中作修改。我們可以在這個目錄新增一個空的 aaa.txt 檔,指令如下所示:
/# touch aaa.txt
接著打 exit 離開 chroot 環境,再觀看 LEENIX 目錄中是否有 aaa.txt 這個檔案。
以上所完成的就是一個最簡單的 chroot 環境,它與我們接下來要教的 docker 有點類似,所以 docker 才號稱是「加了外掛的 chroot 環境」。
沒有留言:
張貼留言