一名linux爱好者,记录构建Linux From Scratch的过程html
经博客园-骏马金龙前辈介绍,开始接触学习lfs,用博客记录学习笔记,若有写的不恰当的地方,望多多指正。
笔记中只是记录一些问题和书中表述不清晰的内容的处理办法以及个人解决思路,仅作参考。linux
要实际构建lfs请结合lfs官方的书籍操做git
1.lfs:Linux From Scratch(LFS)是一个项目,为您提供彻底从源代码构建本身的自定义Linux系统的分步说明github
2.blfs:Beyond Linux From Scratch(BLFS)是一个继续LFS书籍完成的项目。它经过提供在基本LFS系统之上安装和配置各类软件包的普遍说明,帮助用户根据须要开发系统。安全
3.alfs:Automated Linux From Scratch (ALFS)是一个为可扩展系统构建器和程序包安装程序建立通用框架的项目。(自动化建立LFS系统的过程)bash
4.clfs:Cross Linux From Scratch(CLFS)是一个使用其余架构从源代码构建本身的定制Linux系统的分步说明多线程
5.hlfs:Hardened Linux From Scratch (HLFS)是一个为您提供从源彻底构建您本身的定制和强化Linux系统的分步说明。基于LFS,该项目还将包含BLFS的部份内容。与这些其余项目的主要区别在于处理安全配置问题的文本数量,以及修补或替换许多用于提升安全性的软件包。架构
6.livecd:LFS LiveCD专门用于提供可靠的主机系统,以便构建Linux From Scratch。所以,它可能不是您想象的“完美”Linux系统。可是,它应该为您提供足够温馨的环境,以便您能够反过来创建本身的“完美”系统。框架
1.lfs系列每本书籍都有两个版本工具
一个版本是安装并使用systemv的版本
个人学习笔记地址:http://www.javashuo.com/article/p-mjvyufhs-s.html
另外一个版本是安装并使用systemd的版本
个人学习笔记地址:http://www.javashuo.com/article/p-kqhscjyq-t.html
本篇笔记使用的是systemv版本书籍。
2.pdf版学习笔记的下载连接:https://files.cnblogs.com/files/renren-study-notes/pdf%E7%89%88-lfs%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.tar
1.lfs书籍原版(英文)下载连接:http://www.linuxfromscratch.org/lfs/downloads/stable/LFS-BOOK-8.4.tar.bz2
2.lfs(linux中国翻译版)下载连接:https://lctt.github.io/LFS-BOOK/lfs-sysv/LFS-BOOK.html
3.文件镜像网站汇总:http://www.linuxfromscratch.org/mirrors.html
1.使用的机器型号:Thinkpad-L450
2.使用过的主机操做系统:manjaro-xfce-18.0.1/fedora29-gnome/manjaro-gnome-18.0.1
3.使用lfs书籍版本lfs-book-8.4(官网英文版)
将书中提供的命令复制到终端(命令行)运行测试,并把得出结果与2.2章节所提供的软件版本连接类型进行核对,核对无误后可删除建立的验证文件。
1.有部分软件包未找到,按照错误提示的名字安装对应的软件包
2.未检测到/usr/bin/yacc是bison或执行bison的小脚本的连接
解决办法:
#ln -s /usr/bin/bison /usr/bin/yacc (创建连接)
相似问题解决思路:检查缺失连接的软件包是否安装,若是都已经安装,则手动创建软连接:
3./bin/sh的连接不是bash而是dash
执行以下命令并选择否
#dpkg-reconfigure dash
若是不能作到在不关机的状况下一次性构建完lfs,请仔细阅读本节内容
每次从新启动后建立环境变量:
1.设置变量
2.挂载为lfs建立的全部分区
3.切换到lfs用户,进行下一步的操做。4.提示对软件包编译过程当中出现解决不了的操做失误,首先删除所解压的软件包目录,从新解压软件包,切入目录,按该软件包书籍页操做说明从新进行编译。
1.进入root用户
2.设置变量
3.挂载你为lfs建立的全部分区
4.逐步完成6.2.2与6.2.3章节内容后
5.chroot进入lfs分区继续操做。
1.本章节开始全部操做切换为root用户,命令以下
su
2.为lfs建立新的分区,列出个人分区方案
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 465.8G 0 disk ├─sda9 8:9 0 100M 0 part /mnt/lfs/boot ├─sda10 8:10 0 50G 0 part /mnt/lfs ├─sda11 8:11 0 40G 0 part /mnt/lfs/home └─sda12 8:12 0 1G 0 part [SWAP]
3.注意事项:
1.分区使用的命令 cfdisk或fdisk
2.boot建议单独分区。建议分100M。
3./分区必须建立,根据机器状况自行分配大小(官方建议最小分20G)。
4.home建议单独分区,大小按需分配便可。
5.swap能够与主机系统用同一个swap分区,也能够单独分区。
1.建立文件系统(只介绍经常使用的ext4格式类型)
2.除了swap分区之外的分区,使用以下命令格式化:
#mkfs -v -t ext4 /dev/<xxx>(替换<xxx>和<yyy>为分区的名称)
3.swap分区若是是新分区则使用以下命令格式化:
#mkswap /dev/<yyy>(替换<xxx>和<yyy>为分区的名称)
1.设置lfs变量,运行的命令及做用:
export LFS=/mnt/lfs(使用$LFS代替输入/mnt/lfs目录,每次关闭机器或终端都须要从新设置)
echo $LFS(输出$LFS变量的内容,确保输出为:/mnt/lfs)
2.本章节书籍中的下文内容介绍如何设置开机运行变量,不建议此项设置。
3.变量设置在每次重启机器或者重启终端时都须要从新设置,详细参考2.3章节的笔记
挂载分区
使用的命令及做用:
#mkdir -pv $LFS(在当前系统的根目录下建立一个/mnt/lfs的目录) #mount -v -t ext4 /dev/<yyy> $LFS(替换<yyy>为根分区位置,将根分区挂载到/mnt/lfs目录) #mkdir -v $LFS/boot(在/mnt/lfs分区下建立boot目录) #mount -v -t ext4 /dev/<yyy> $LFS/boot(<yyy>替换为boot分区位置,将boot分区挂载到/mnt/lfs/boot目录) #mkdir -v $LFS/home(在/mnt/lfs目录下建立home目录) #mount -v -t ext4 /dev/<yyy> $LFS/home(<yyy>替换为home分区位置,将boot分区挂载到/mnt/lfs/home目录) #/sbin/swapon -v /dev/<zzz>(替换<zzz>为分配的swap分区位置,启用swap分区) lsblk(查看分区表是否正确)
书中本章节中的警告内容为如何设置开机自动挂载lfs的分区(不建议)
1.下载软件包并验证md5
首先建立放置软件包的目录,并给相应权限:
#mkdir -v $LFS/sources(在/mnt/lfs下建立sources目录) #chmod -v a+wt $LFS/sources(给sources目录权限)
下载软件包的几个问题:
1.书中建议使用wget下载,个人实际操做是用uget下载到当前系统后,移动到/mnt/lfs/source目录。
2.书中所给的连接文件wget-list有一部分连接出现下载失败或网速慢的状况,须要到前文中的《文件镜像网站汇总》中自行寻找相应的包进行下载
书中的下载命令及做用:
1.#wget --input-file=wget-list --continue --directory-prefix=$LFS/sources(使用目录文件wget-list的连接,下载软件包到/mnt/lfs/source目录)。 2.补充一个内容:要将书中提供的md5sums文件下载而且复制到/mnt/lfs/source文件夹下。 3.pushd $LFS/sources(切换到/mnt/lfs/source目录) 4.md5sum -c md5sums(校验md5) 5.popd(退出目录)
建立构建第一遍工具链的安装目录并连接到主机系统
#mkdir -v $LFS/tools #ln -sv $LFS/tools /
在主机中建立lfs用户(第五章节完成后可将建立的用户和用户组删除)
使用的命令及做用
#groupadd lfs(建立lfs工做组) #useradd -s /bin/bash -g lfs -m -k /dev/null lfs(建立lfs用户) #passwd lfs(给lfs用户设置密码) #chown -v lfs $LFS/tools(给lfs用户权限) #chown -v lfs $LFS/sources(给lfs用户权限) #su - lfs(切换到lfs用户)
为lfs用户建立变量
使用的命令及做用(具体说明见书籍注释):
1.cat > ~/.bash_profile << "EOF" exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash EOF(将EOF中的内容 写入文件~/.bash_profile) 2.cat > ~/.bashrc << "EOF" set +h umask 022 LFS=/mnt/lfs LC_ALL=POSIX LFS_TGT=$(uname -m)-lfs-linux-gnu PATH=/tools/bin:/bin:/usr/bin export LFS LC_ALL LFS_TGT PATH EOF(将EOF中的内容写入文件 ~/.bashrc) 3.source ~/.bash_profile(获取建立的用户配置文件)
1.这章节的大概意思就是告诉你书籍中的sbu值表明构建软件包所用的时间
2.书籍注意栏目里面的内容是说明编译过程当中怎么使用cpu多线程处理编译过程,提高编译速度。
3.使用cpu多线程编译的方法,make后面加上 -j(n) 参数加速安装,n为运行的任务数量,不设置参数为尽量同时多运行任务,该参数一般设置为cpu核心数的二倍。
5.有一些包的安装和测试过程要求使用单任务 make -j1运行,书中相应章节有对应的提示。
6.不建议按照书中的说明为cpu多线程编译建立环境变量。
关于测试套件的说明
1.第五章节的软件包不建议运行测试套件,浪费时间,第五章节构建的工具链是是临时的而且最终被删除的。
2.第五章节之后的软件包须要测试,而且不能出现书中未说明的报错,测试时间很慢,请耐心等待。
3.软件包出现书中未说明的报错多是环境配置问题,请对应检查2.3章节的内容。
软件包的编译操做流程及注意事项
1.进入sources目录
2.解压相应的软件包
3.进入解压完的软件包目录
4.按照书中说明构建软件包
5.切换回sources目录
6.除非构建说明页有说明,不然删除提取的软件包目录。
7.书中全部包的解压,进入目录,删除,使用tab键补全包名
lfs(systemv版本)学习笔记-第2页 的地址:http://www.javashuo.com/article/p-xhservmq-e.html