debootstrap
什麼是 CHROOT:
CHROOT(change root directory)這個指令是用來指定新的 / 的路徑。
簡單得說,我們在某一個目錄中建立另一個 Linux 目錄結構,
(並沒有限定必須為完整的 Linux 目錄結構),
然後使用 chroot 指令來進入這一個目錄中。
之後所有的程式在運作時將會將這個目錄視同為 /。
這樣,我們就可以輕易得打造一個虛擬的 Linux 運作環境。
CHROOT 常被用來建立一個高度安全的 Linux 運作環境,
因為即使這個虛擬的 Linux 運作環境不幸被突破了,
劊客們得到的常常是空無一物,
甚至是什麼程式都不能執行的 Linux 空殼。
當然了,並不是所有的程式都能在 CHROOT 環境下運作無誤。
不過這是題外話了。
建立 CHROOT 所需的目錄結構:
基本上,這個新的 / 目錄結構只要能讓特定的程式,
如:Bind,能夠執行即可;
並沒有必要把整個完整的 Linux 目錄結構放進來。
如果您想知道要如何實作,請不妨參考 Chroot-BIND HOWTO 的說明。
使用 debootstrap + Debian Installer CD Image 來建立完整的 CHROOT 環境:
在 Debian 裡,我們可以使用 debootstrap 來建立一個完整的 Linux 運作環境,
當然也可以直接拿來給 CHROOT 使用。
而在執行 debootstrap 時,
一般是將檔案來源指向 Internet,
不過我們也可以直接使用 Debian Installer 的 CD Image 做為檔案來源,
那就不用浪費珍貴的網路資源去重覆下載己有的套件了。
方法簡述如下:
首先,將 Debian Installer 的 CD Image 掛載在某個目錄下:
- 代碼: 選擇全部
mount -o loop sarge-i386-netinst.iso /mnt
然後,建立 CHROOT 的目錄並使用 debootstrap 指令來產生完整的 Linux 執行環境:
- 代碼: 選擇全部
mkdir CHROOT
/usr/bin/env -i HOME=/root TERM=$TERM PATH=/bin:/usr/bin:/sbin:/usr/sbin /usr/sbin/debootstrap --arch i386 sarge CHROOT/ file:///mnt/debian/
注意,debootstrap 指令只有 root 才有權限可以執行。
在此使用 env 指令是為了要確實清除所有的環境變數。
在 debootstrap 執行完畢之後,一個完整的 Linux 執行環境就此產生了。
這時,請再修改 CHROOT 目錄中的以下檔案:
/etc/passwd:
- 代碼: 選擇全部
root:x:0:0:root:/root:/bin/bash
另,依您喜好,您還可以修改以下檔案:
/root/.bashrc
/root/.bash_login
/root/.bash_logout
/root/.vimrc
/etc/apt/sources.list
另一個不太重要的事就是設定該系統的時區。
在此就略過不提了...
以上這些設定也可以在進入 CHROOT 環境後再加以設定。
使用 chroot 來進入 CHROOT 環境:
您可以試著用以指令:
- 代碼: 選擇全部
chroot CHROOT /usr/bin/env -i HOME=/root TERM=\$TERM PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/bash --login
來進入新的 CHROOT 環境。
進入新的 CHROOT 環境後,
您就可以如同進入一個全新系統般操作這個 Linux 虛擬系統了。
CHROOT 實務上的應用:
除了上文所說的,可以拿 CHROOT 來建立一個高度安全的 Linux 運作環境之外,
CHROOT 也常用在 Rescue 模式下用來重建 GRUB 或是 LILO。
而一些 Linux 的安裝程式也常常使用 CHROOT 來修改系統的設定檔。
而本人則是使用 CHROOT 來編譯軟體,
因為它可以提供一個絕對乾淨且安全的作業環境,
且即是是亂亂搞都不(太)會危害到我原本的系統。
(不過不要真的太鐵齒。小心駛得萬年船呀!)
在使用 CHROOT 時的一些注意事項:
首先,chroot 這個指令只有 root 可以使用。
進入 CHROOT 環境後,它仍然會使用原有的系統設定。
如:IP 位址、Hostname 之類的。
若加以修改,則往往會連帶影響到原有環境。請特別注意。
您可以直接把檔案 Copy 到 CHROOT 的系統中。
不過有時候使用 NFS 來傳遞檔案也蠻方便的。
當然囉,CHROOT 只支援 Linux...
總結:
我們可以使用 CHROOT 來迅速打造一個獨立的 Linux 作業環境,
而它的運作原理淺顯易懂,在使用上也用不著什麼特別技巧,
但它在執行效能可以說是百分百,
我想,在某種程度上,
它應該可以用來取代 VMware、QEMU、Xen 等等虛擬機器吧?