LFS構築記5日目~LFS構築の下準備

user-pic
0

LFS Book: 6.2.Mounting Virtual Kernel File System~6.8.Populating /dev

新年早々からLFS構築作業です。明日(1月2日)からまた仕事だし、小生にとってはいつもと変わらない週末(今日は月曜だけど)となっております。

先ずは仮想カーネルファイルシステムをマウントします。実行コマンドは以下のとおりです。

# mkdir -pv $LFS/{proc,sys}
# mount -vt proc proc $LFS/proc
# mount -vt sysfs sysfs $LFS/sys

LFS Bookにもありますが、これらのファイルシステムはPCを再起動して作業を再開する際に、chrootする前にマウントしておく必要があります。

さらに、chroot環境の中でマウントされる付加的なファイルシステムをフェイクマウントしておきます。

# mount -vft tmpfs tmpfs $LFS/dev
# mount -vft tmpfs tmpfs $LFS/dev/shm
# mount -vft devpts -o gid=4,mode=620 devpts $LFS/devpts

次にいよいよchrootして新しい環境の構築作業準備に入ります。

# chroot "$LFS" /tools/bin/env -i \
> HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
> PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
> /tools/bin/bash --login +h

lfsユーザーは新しい環境には存在しないので、/toolsディレクトリの所有者をrootに変更し、必要なディレクトリ等を作成します。実行コマンドは下記のとおりです。

# chown -R 0:0 /tools
# install -dv /{bin,boot,dev,etc/opt,home,lib,mnt}
# install -dv /{sbin,srv,user/local,var,opt}
# install -dv /root -m 0750
# install -dv /tmp /var/tmp -m 1777
# install -dv /media/{floppy,cdrom}
# install -dv /usr/{bin,include,lib,sbin,share,src}
# ln -sv share/{man,doc,info} /usr
# install -dv /usr/share/{doc,info,locale,man}
# install -dv /usr/share/{misc,terminfo,zoneinfo}
# install -dv /usr/share/man/man{1,2,3,4,5,6,7,8}
# install -dv /usr/local/{bin,etc,include,lib,sbin,share,src}
# ln -sv share/{man,doc,info} /usr/local
# install -dv /usr/local/share/{doc,info,locale,man}
# install -dv /usr/local/share/{misc,terminfo,zoneinfo}
# install -dv /usr/local/share/man/man{1,2,3,4,5,6,7,8}
# install -dv /var/{lock,log,mail,run,spool}
# install -dv /var/{opt,cache,lib/{misc,locate},local}
# install -dv /opt/{bin,doc,include,info}
# install -dv /opt/{lib,man/man{1,2,3,4,5,6,7,8}}
# ln -sv /tools/bin/{bash,cat,pwd,stty} /bin
# ln -sv /tools/bin/perl /usr/bin
# ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib
# ln -sv bash /bin/sh

次にシステムに必要なファイル等を作成します。以下のコマンドで作成します。
/etc/passwd
# cat > /etc/passwd << "EOF"
>root:x:0:0:root:/root:/bin/bash
>EOF

/etc/group
# cat > /etc/group << "EOF"
>root:x:0:
>bin:x:1:
>sys:x:2:
>kmem:x:3:
>tty:x:4:
>tape:x:5:
>daemon:x:6:
>floppy:x:7:
>disk:x:8:
>lp:x:9:
>dialout:x:10:
>audio:x:11:
>video:x:12:
>utmp:x:13:
>usb:x:14:
>cdrom:x:15:
>EOF

ここで以下のコマンドを実行し、環境設定を読み込んでおきます。これでプロンプトに「root」が表示されるはずです(chrootした直後は/etc/passwdが無いので、「I have no name!」と表示されている)。

# exec /tools/bin/bash --login +h

その他/var配下のログ、認証系ファイル等も作成します。

# touch /var/run/utmp /var/log/{btmp,lastlog,wtmp}
# chgrp -v utmp /var/run/utmp /var/log/lastlog
# chmod -v 664 /var/run/utmp /var/log/lastlog

次にデバイスファイル系(/dev配下のファイル)を作成します。

# mknod -m 600 /dev/console c 5 1
# mknod -m 666 /dev/null c 1 3
# mount -nvt tmpfs none /dev
# mknod -m 622 /dev/console c 5 1
# mknod -m 666 /dev/null c 1 3
# mknod -m 666 /dev/zero c 1 5
# mknod -m 666 /dev/ptmx c 5 2
# mknod -m 666 /dev/tty c 5 0
# mknod -m 444 /dev/random c 1 8
# mknod -m 444 /dev/urandom c 1 9
# chown -v root:tty /dev/{console,ptmx,tty}
# ln -sv /proc/self/fd /dev/fd
# ln -sv /proc/self/fd/0 /dev/stdin
# ln -sv /proc/self/fd/1 /dev/stdout
# ln -sv /proc/self/fd/2 /dev/stderr
# ln -sv /proc/kcore /dev/core
# mkdir -v /dev/pts
# mkdir -v /dev/shm
# mount -vt devpts -o gid=4, mode=620 none /dev/pts
# mount -vt tmpfs none /dev/shm

/dev/ptsのマウント時(最後から2番面のコマンド実行時)に/etc/fstabなんてファイル知らんぞ!というWarningが出力されますが、当該ファイルは未だ作成していないので出力されて当然です。特に実害はないので気にしなくて結構です。

トラックバック(0)

トラックバックURL: http://www.skucky.com/cgi-bin/mt/mt-tb.cgi/18

コメントする

このブログ記事について

このページは、webmasterが2007年1月 1日 00:33に書いたブログ記事です。

ひとつ前のブログ記事は「LFS構築記4日目〜暫定環境最後の仕上げ」です。

次のブログ記事は「LFS構築記5日目~ヘッダファイル、マニュアルのインストール」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。