Linux From Scratch / 6. 準備 3



root になる

su

ルートディレクトリを変更する

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

ツール群の所有者を変更する

chown -R 0:0 /tools

各ディレクトリを作成する

mkdir -p /{bin,boot,dev/{pts,shm},etc/opt,home,lib,mnt,proc}
mkdir -p /{root,sbin,tmp,usr/local,var,opt}
for dirname in /usr /usr/local
 do
 mkdir $dirname/{bin,etc,include,lib,sbin,share,src}
 ln -s share/{man,doc,info} $dirname
 mkdir $dirname/share/{doc,info,locale,man}
 mkdir $dirname/share/{misc,terminfo,zoneinfo}
 mkdir $dirname/share/man/man{1,2,3,4,5,6,7,8}
done
mkdir /var/{lock,log,mail,run,spool}
mkdir -p /var/{tmp,opt,cache,lib/misc,local}
mkdir /opt/{bin,doc,include,info}
mkdir -p /opt/{lib,man/man{1,2,3,4,5,6,7,8}}

ディレクトリの権限を変更する

chmod 0750 /root
chmod 1777 /tmp /var/tmp

proc/devpts ファイルシステムをマウントする

mount proc /proc -t proc
mount devpts /dev/pts -t devpts

シンボリックリンクを作成する

ln -s /tools/bin/{bash,cat,pwd,stty} /bin
ln -s /tools/bin/perl /usr/bin
ln -s /tools/lib/libgcc_s.so.1 /usr/lib
ln -s bash /bin/sh

ユーザ・グループファイルを作成する

cat > /etc/passwd << "EOF"
root:x:0:0:root:/root:/bin/bash
EOF
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:
EOF

シェルを再起動する

exec /tools/bin/bash --login +h
touch /var/run/utmp /var/log/{btmp,lastlog,wtmp}
chmod 644 /var/run/utmp /var/log/{btmp,lastlog,wtmp}