lfs linux过程,一步一步打造自己的Linux--LFS6.3安装过程(四)

fa4e38c6a647db3e2c3f27af42c96a66.png(注:本文于2月28日修改)

III. 构建 LFS 系统

挂载虚拟内核文件系统

为虚拟内核文件系统建立挂载目录:

$ mkdir -pv $LFS/{dev,proc,sys}

创建初始设备节点:

$ 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

到目前为止,创建目标系统的准备工作已基本完成,下面将开始目标系统的软件包安装。

(未完待续)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值