3 Debian install してからにするまで
~ chroot からめる sid その 2 ~

木洋

PIC
____________________________________________________________________

3.1 は じ め に

タイトルのままだとアレソレinstall してコレしてかとわれるかもしれませんがそういうではありませ *1 こでは年の西 Debian 尊也さん発表したchroot からめる sid(  2008) というネタらませて stable 使いながら unstable とうまくおつきあいする方法してみます

unstable しないとはこのヘタレめが!!というがどこからともなく聞こ えてきそうですがいきなり unstable 足を踏みれるのドキドキですよ *2

3.2 chroot てなんですか?

単にえばコマンドするプロセスおよびそのプロセストデレクトリ (/) えるコマンド (およびその ための) です*3 トデレクトリレクトリされたプロセスそのレクトリアクセスできなくなりま *4 chroot 使するネルドウトワメモリプロセス有したまま レクトリ造のみを (じて) えられることですVMware VirutalBox マシン には API ドウエミないますがこれらをなわない分だけ動作 ます

えば

といには便です

ただしらかプログラムするにはchroot されたレクトリライブラリ揃ってい 必要がありますこれをするためにDebian には cdebootstrap というされてい ます

3.3 Debian での chroot

では早速cdebootstrap 使して chroot してみましとりあえずここでは

としてめます

cdebootstrap 導入しまし

$ sudo aptitude install cdebootstrap

chroot します

$ sudo -s
# mkdir -p /var/chroot/unstable-amd64
# cdebootstrap unstable /var/chroot/unstable-amd64 http://ftp.jp.debian.org/debian
...(表示)

cdebootstrap によ/var/chroot/unstable-amd64 以下unstable システム展開されますchroot したてみまし

 # chroot /var/chroot/unstable-amd64
(# chroot /var/chroot/unstable-amd64 /bin/bash   <-- shell   bash  には chroot  動する shell  する)

... 無事 chroot されて, unstable れたでしうか?

3.4 chroot

このではしか導入されていないのでつかのれたり抜いたりします

# vi /etc/apt/sources.list                      <-- contrib, non-free 
# aptitude install locales
# dpkg-reconfigure -plow locales
# aptitude update
# aptitude install ~pstandard ~t^japanese$ zsh ...
...
# aptitude remove nfs-common portmap ....       <--  物の

chroot パスワ聞かれそうならば/etc/passwd,shadow などをコピしておきます

$ sudo cp /etc/passwd /var/chroot/unstable-amd64/etc
sudo sed ’s/\([^:]*\):[^:]*:/\1:*:/’ /etc/shadow \
  | sudo tee /var/chroot/unstable-amd64/etc/shadow
$ sudo cp /etc/group /var/chroot/unstable-amd64/etc
$ sudo cp /etc/hosts /var/chroot/unstable-amd64/etc
$ sudo cp /etc/sudoers /var/chroot/unstable-amd64/etc

またプロセスデバイスフイル有するために/etc/fstab しておきます

$ sudo vi /etc/fstab
...(以下)...
/home             /var/chroot/unstable-amd64/home     none    rbind     0   0
/tmp              /var/chroot/unstable-amd64/tmp      none    bind      0   0
proc-sid-amd64    /var/chroot/unstable-amd64/proc     proc    defaults  0   0
devpts-sid-amd64  /var/chroot/unstable-amd64/dev/pts  dev/pts defaults  0   0

ここでは chroot 側で /home 以下イルシステムマウントしているでもそれにできるようにするた めに rbind にしています

fstab いた有効にしたchroot てみまし

$ sudo mount -a
$ sudo -s
# chroot /var/chroot/unstable-amd64

/home 以下chroot にもマウントされているでしうかここまでで /var/chroot/unstable-amd64 以下 unstable いました

3.5 での chroot 使

さてここまでは chroot コマンド使して chroot るためには root 必要でしたでも (必要ですが) chroot いて chroot ソフトウ使するためにschroot というされ ています

man によれば schroot

DESCRIPTION

     schroot  allows  the user to run a command or a login shell in a chroot
     environment.  If no command is specified, a login shell will be started
     in the user’s current working directory inside the chroot.

     The  command is a program, plus as many optional arguments as required.
     Each argument may be separately quoted.

     The directory the command or login shell is run  in  depends  upon  the
     context.  See --directory option below for a complete description.

     If  the  user is not an allowed user, or a member of the allowed groups
     (or if changing to root, the allowed root users or allowed root groups)
     for  the specified chroot(s), the user will be required to authenticate
     themselves (typically with a password, but this depends  upon  the  PAM
     configuration).  All chroot usage will be logged in the system logs.

     If  no  chroot is specified, the chroot name or alias ’default’ will be
     used as a fallback.  This is equivalent to ‘‘--chroot=default’’.

とあります

では schroot 導入してみまし

$ sudo aptitude install schroot

導入したら /etc/schroot/schroot.conf します

$ sudo vi /etc/schroot/schroot.conf
[unstable-amd64]
description=Debian unstable amd64                 <--  適当
location=/var/chroot/unstable-amd64               <-- cdebootstrap  した場所
priority=3                                        <--  とりあえずにならさらず
users=uwabami                                     <-- chroot   login  できるようにする user  アカウント
root-users=uwabami                                <-- chroot   login  できるようにする user  アカウント
aliases=default,sid                               <-- schroot   alias

description, priority はとりあえずにしなくてもいです

しておくとえば

$ schroot -c unstable                             <-- chroot   login
...
$ schroot -c sid                                  <-- aliases   login
...
$ schroot -c unstable -p                          <--  いで login
...
$ schroot -c unstable -p xterm                    <--  直接 chroot  プログラム]
...
$ schroot -c unstable -p -- xterm -e /bin/sh      <-- option  したりできる
...
$ schroot -c unstable -u root                     <-- root  として login

なんてができるようになります

3.6 マウント/etc/passwod などのコピschroot 任せる

/etc/schroot 以下になています

$ ls -R /etc/schroot
 /etc/schroot:
 chroot.d/  copyfiles-defaults  exec.d/  mount-defaults  schroot.conf  script-defaults  setup.d/

 /etc/schroot/chroot.d:

 /etc/schroot/exec.d:
 00check*

 /etc/schroot/setup.d:
 00check*  05file*  05lvm*  10mount*  15killprocs*  20copyfiles*  50chrootname*

/etc/schroot.conf において

type=directory
run-setup-scripts=true
run-exec-scripts=true

したschroot するとprocdev/pts/home bind マウント動でなわれますマウント /var/lib/schroot/$(hash)/ 以下です$(hash) schroot 動的に生成されますマウント bind Mount になていますまたコピした /etc/{passwod, shadow}なども schroot 動的にから copy されますcopy されるイル/etc/schroot/copyfiles-default でき ます

run-{exec,setup}-scripts=true としておくと/etc/schroot/{setup.d, exec.d}以下いた script してから chroot login することもできますなのでとかわをしたいにはこのあたりに script 転がしておくといでし(えばmount したドライブ動で bind マウントする, )

type には lvm-snapshot block-device といをすることもできます他にも setup.d 以下 イル展開するスクリプトしておくとchroot tar.gz めていておくなんてもでき ます.

3.7 まとめ

とまではいきませんがstable leftrightallow testing leftrightallow unstable (さらに experimental) まで をおかつとして chroot schroot しました

schroot

laptop でも 100 GB える HDD されていたりするのでしに unstable/experimental 使てみたいというにはしてみてさい

最後として/var/chroot 以下はどうなているかとうと

$ ls -lh /var/chroot
drwxrwxr-x 2 root root  4.0k 2007-06-26 12:33 etch-amd64/
drwxrwxr-x 2 root root  4.0k 2007-06-26 11:33 etch-i386/
drwxrwxr-x 2 root root  4.0k 2009-04-26 08:32 experimental-amd64/
drwxrwxr-x 2 root root  4.0k 2009-03-01 08:31 lenny-i386/
-rw-rw-r-- 2 root root  9.4G 2005-12-06 11:35 sarge-i386.tar.bz2
drwxrwxr-x 2 root root  4.0k 2009-04-16 12:33 squeeze-amd64/
drwxrwxr-x 2 root root  4.0k 2009-04-18 10:13 squeeze-i386/
drwxrwxr-x 2 root root  4.0k 2009-04-26 08:31 unstable-amd64/
drwxrwxr-x 2 root root  4.0k 2009-04-26 08:31 unstable-i386/

なんか分でも念なになりました