第六章 制作目标系统
1. 加载需要的文件系统
mkdir -pv $LFS/{proc,sys}
mount -vt proc proc $LFS/proc
mount -vt sysfs sysfs $LFS/sys
mount -vft tmpfs tmpfs $LFS/dev
mount -vft tmpfs tmpfs $LFS/dev/shm
mount -vft devpts -o gid=4,mode=620 devpts $LFS/dev/pts
2. 进入工具链系统
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
3. 设置目录属性
chown -R 0:0 /tools
4. 创建目标系统目录
install -d /{bin,etc,dev,sbin,proc,sys,var/{lib,run},srv/{conf,htdocs,logs},boot/grub,tmp}
5. 建立临时链接
ln -sv /tools/bin/{bash,cat,pwd,stty} /bin
ln -sv bash /bin/sh
6. 建立目标系统组和用户
cat > /etc/passwd << "EOF"
root:x:0:0:root:/root:/bin/bash
nobody:x:100:100:nobody:/home/nobody:/bin/bash
EOF
cat > /etc/group << "EOF"
root:x:0:
nobody:x:100:
EOF
exec /tools/bin/bash --login +h
7. 创建/dev设备文件
mknod -m 600 /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
8. 进入源代码目录
cd /sources
9. udev-0.76
tar xvf udev-076.tar.bz2
cd udev-076
make EXTRAS=extras/run_directory
./udevstart
cd ..
rm -rf udev-076
10. grub-0.97
tar xvf grub-0.97.tar.bz2
cd grub-0.97
./configure && make
cp stage1/stage1 /boot/grub/
cp stage2/xfs_stage1_5 /boot/grub/
cp stage2/stage2 /boot/grub/
grub/grub
root (hd0,0)
setup (hd0)
quit
cd ..
rm -rf gurb-0.97
cat > /boot/grub/menu.lst << “EOF”
default 0
timeout 10
color green/black light-green/black
title miniLFS
root (hd0,0)
kernel /boot/bzImage root=/dev/hda1 rw
EOF
11. 编译内核
tar xvf linux-2.6.14.3.tar.bz2
cd linux-2.6.14.3
make menuconfig
make
cp arch/i386/boot/bzImage /boot/
cd ..
12. bash-3.0
tar xvf bash-3.0.tar.bz2
patch -Np1 -i ../bash-3.0-fixes-3.patch
patch -Np1 -i ../bash-3.0-avoid_WCONTINUED-1.patch
./configure --prefix=/usr --bindir=/bin --without-bash-malloc
make LDFLAGS="-static"
rm -rf /bin/bash
cp bash /bin/
cd ..
rm -rf bash-3.0
13. dhcpcd
tar xvf dhcpcd-1.3.22.tar.gz
cd dhcpcd-1.3.22
patch -Np1 -i ../dhcpcd-1.3.22-pl4-fhs-1.patch &&
./configure --prefix="" --sysconfdir=/var/lib &&
make LDFLAGS="-static"
cp dhcpcd /bin/
cd ..
rm -rf dhcpcd-1.3.22
