debootstrap

書いている最中にバッテリが切れて, 発狂しそうになった. ふん.

Debian の場合の話.
基本的には sarge で動かしてるのだけれど,
幾つかのパッケージは etch とか sid を使いたい(使わねばならぬ)
という状況になってきたので, ついに sarge 内で etch を「飼う」事に.

debootstrap が chroot の作成 + base-config までちゃっちゃとやってくれるので
特にはまらず終了.

# mkdir /chroot/etch
# debootstrap etch /chroot/etch http://ftp.jp.debian.org/debian
 : 
 : 
# chroot /chroot/etch /bin/bash
# shadowconfig on
# vi /etc/apt/sources.list
# apt-get update; apt-get upgrade
# apt-get install zsh lv sudo
# adduser uwabami
# apt-get remove …(イロイロ)

で,

# cp /etc/passwd /chroot/etch/etc/passwd
# cp /etc/group /chroot/etch/etc/group
# cp /etc/shadow /chroot/etch/etc/shadow
# cp /etc/sudoers /chroot/etch/etc/sudoers
# cp /etc/hostname /chroot/etch/etc/hostname

とかしておく. 別環境で動かしたいなら上の作業も適宜考えること.
あと, 親(sarge) と子(etch) でプロセスとかデバイスは共有するんで,
/etc/fstab に以下を追加.

/home/uwabami	/chroot/etch/home/uwabami	none	bind	0	0
/tmp		/chroot/etch/tmp	none	bind	0	0
/proc		/chroot/etch/proc	proc	defaults	0	0
/dev		/chroot/etch/dev	none	bind	0	0

あとは一般ユーザで入れるように, dchroot を導入.

# apt-get install dchroot
# vi /etc/dchroot.conf

etch /chroot/etch # 追加

 $ dchroot  -> etch 環境になる.

…しばらく使ってみて chroot 内では PROMPT 変えたくなったので

# cat 'etch' > /chroot/etch/etc/chroot
 … .zshrc 編集 …
PROMPT=$'%U[%n@%m:%j:%(!.#.%%)%u%B>%b '
RPROMPT=$'%B%(5~,%-2~/.../%1~,%~)%b'
[ -f /etc/chroot ] &&
PROMPT='%U%{$fg[green]%}||`cat /etc/chroot`||%n@%m:%j:%(!.#.%%)%u%B>%b '

みたいに書いてみる. しばらくこんな感じで行こうかと.