星期二, 3月 11, 2008

快速建立 chroot 環境

首先建立一個資料夾
$ mkdir wheezy32

接著使用 debootstrap 建立 chroot 環境

# debootstrap --arch i386 wheezy ./wheezy32 \
http://free.nchc.org.tw/debian

若需透過 proxy 則使用
# http_proxy=http://user:password@proxy.server:port/ \
debootstrap --arch i386 wheezy ./wheezy32 \
http://free.nchc.org.tw/debian

建立一個 chroot.sh ,方便執行 chroot
#!/bin/bash

CHROOT_DIR=`pwd`/$1

# check if it was already mounted
MOUNT_PROC_TMP=`mount | grep ${CHROOT_DIR} | grep proc | cut -d' ' -f3`

# umount previus mounted staff
if [ $# -eq 1 ]; then
    if [ $1 = "clean" ]; then
        umount ${CHROOT_DIR}/proc
        umount ${CHROOT_DIR}/tmp
        umount ${CHROOT_DIR}/dev/pts
        exit 0
    fi
fi

if [ -z $MOUNT_PROC_TMP ]; then
        mount --bind /proc ${CHROOT_DIR}/proc
        mount --bind /tmp ${CHROOT_DIR}/tmp
        mount --bind /dev/pts ${CHROOT_DIR}/dev/pts
fi

/usr/sbin/chroot ${CHROOT_DIR} /usr/bin/env -i HOME=/root TERM=$TERM PATH=/bin:/usr/bin:/sbin:/usr/sbin SHELL=/bin/bash /bin/bash

接下來就可以使用這個環境了
$ sudo chroot.sh wheezy32

root@:/# 

修改環境,讓用起來好看些

編輯 /etc/debian_chroot,加入一個字串或符號,可以讓我們在進入 chroot 環境後,提示我們目前是在 chroot 環境。例如加入 CHROOT,則重進一次 chroot 後,會變成

root@CHROOT:/#

為提示符號加入彩色控制碼,編輯 /etc/bash.bashrc,修改 PS1變數如下,此修改尚需配合下面的 /root/.bashrc 的修改方能生效。

PS1='\[\033[01;32m\]\u@${debian_chroot}\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

編輯/root/.bashrc

將 PS1 變數註解起來,使上個步驟所修改的 PS1 變數不會被蓋掉

將 LS_OPTIONS 相關的變數打開,使 ls 可以顯示色彩

# export PS1...
export LS_OPTIONS='--color=auto'
eval "`dircolors`"
alias ls='ls $LS_OPTIONS'
alias ll='ls $LS_OPTIONS -l'
alias l='ls $LS_OPTIONS -lA'

修改 /etc/apt/sources.list,設定為 Taiwan 的套件供應站

deb http://free.nchc.org.tw/debian wheezy main non-free contrib

安裝編譯程式所需的一些套件

root@CHROOT:/# aptitude update
root@CHROOT:/# aptitude install build-essential vim ncurses-dev enca locales zlib1g-dev  bison flex gawk pkg-config file less tree libgmp-dev libmpfr-dev libmpc-dev

完工!!!

2008/03/24 補充
chroot 裡的時間會跟目前時間差八小時,看起來是 time zone 沒有設定

執行
# dpkg-reconfigure tzconfig

設定到 Asia/Taipei 就解決了!

2010/12/08 補充
Debian / Lenny 之後 tzconfig 改為 tzdata

# dpkg-reconfigure tzdata
2012/03/9 update to Debian/Squeeze

2012/04/13 update to Debian/Wheezy
預設的 sh 是使用 dash ,將之改為 bash
# dpkg-reconfigure dash

沒有留言: