-
$ mkdir -pv $LFS/{dev,proc,sys}
一步一步打造自己的Linux--LFS6.3安装过程(三)
一步一步打造自己的Linux--LFS6.3安装过程(四)
一步一步打造自己的Linux--LFS6.3安装过程(五)
(注:本文于2月28日修改)
III. 构建 LFS 系统
挂载虚拟内核文件系统
创建初始设备节点:
-
$ mknod -m 600 $LFS/dev/console c 5 1
-
$ mknod -m 666 $LFS/dev/null c 1 3
挂载并填充 /dev 目录:
-
$ mount -v --bind /dev $LFS/dev
现在挂载虚拟内核文件系统:
-
$ mount -vt devpts devpts $LFS/dev/pts
-
$ mount -vt tmpfs shm $LFS/dev/shm
-
$ mount -vt proc proc $LFS/proc
-
$ mount -vt sysfs sysfs $LFS/sys
为了方便使用源码包,将lfs-sources里面所有源码包复制到$LFS/sources目录中:
-
$ cp -v /lfs-sources/* $LFS/sources/
进入 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
此时 bash 提示符会显示“I have no name! :/#”因为 /etc/passwd 还没有创建。
如果此时重启了,需要再执行一次上面带*号的命令
创建系统目录结构:
-
$ mkdir -pv /{bin,boot,etc/opt,home,lib,mnt,opt}
-
$ mkdir -pv /{media/{floppy,cdrom},sbin,srv,var}
-
$ install -dv -m 0750 /root
-
$ install -dv -m 1777 /tmp /var/tmp
-
$ mkdir -pv /usr/{,local/}{bin,include,lib,sbin,src}
-
$ mkdir -pv /usr/{,local/}share/{doc,info,locale,man}
-
$ mkdir -v /usr/{,local/}share/{misc,terminfo,zoneinfo}
-
$ mkdir -pv /usr/{,local/}share/man/man{1..8}
-
$ for dir in /usr /usr/local; do
-
ln -sv share/{man,doc,info} $dir
-
done
-
$ mkdir -v /var/{lock,log,mail,run,spool}
-
$ mkdir -pv /var/{opt,cache,lib/{misc,locate},local}
创建必需的文件与符号连接,在目标系统的编译过程中,部分编译程序会用绝对路径来寻找命令或文件:
-
$ ln -sv /tools/bin/{bash,cat,echo,grep,pwd,stty} /bin
-
$ ln -sv /tools/bin/perl /usr/bin
-
$ ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib
-
$ ln -sv /tools/lib/libstdc++.so{,.6} /usr/lib
-
$ ln -sv bash /bin/sh
为用到/etc/mtab的程序创建一个空文件:
-
$ touch /etc/mtab
创建root用户和必要的组:
-
$ cat > /etc/passwd << "EOF"
-
root:x:0:0:root:/root:/bin/bash
-
nobody:x:99:99:Unprivileged User:/dev/null:/bin/false
-
EOF
root 的真正密码将在后面设置("x"在这里只是一个占位符)。
-
$ 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:
-
mail:x:34:
-
nogroup:x:99:
-
EOF
启动新的shell,驱除"I have no name!"提示符:
-
$ exec /tools/bin/bash --login +h
初始化日志文件,并设置适当的权限:
-
$ 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
到目前为止,创建目标系统的准备工作已基本完成,下面将开始目标系统的软件包安装。
(未完待续)
- 版权所有,转载请遵循“署名-非商业用途-保持一致”创作共用协议。
