一名linux爱好者,记录构建Linux From Scratch的过程

博客园-骏马金龙前辈介绍,开始接触学习lfs,用博客记录学习笔记,如有写的不恰当的地方,望多多指正。
笔记中只是记录一些问题和书中表述不清晰的内容的处理办法以及我的解决思路,仅做参考。

要实际构建lfs请结合lfs官方的书籍操作

一.lfs系列概述

1.lfs:Linux From Scratch(LFS)是一个项目,为您提供完全从源代码构建自己的自定义Linux系统的分步说明

2.blfs:Beyond Linux From Scratch(BLFS)是一个继续LFS书籍完成的项目。它通过提供在基本LFS系统之上安装和配置各种软件包的广泛说明,帮助用户根据需要开发系统。

3.alfs:Automated Linux From Scratch (ALFS)是一个为可扩展系统构建器和程序包安装程序创建通用框架的项目。(自动化创建LFS系统的过程)

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系统。但是,它应该为您提供足够舒适的环境,以便您可以反过来建立自己的“完美”系统。

二.lfs版本说明

1.lfs系列每本书籍都有两个版本

一个版本是安装并使用systemv的版本

我的学习笔记地址:https://www.cnblogs.com/renren-study-notes/p/10199344.html

另一个版本是安装并使用systemd的版本

我的学习笔记地址:https://www.cnblogs.com/renren-study-notes/p/10385401.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章节以前的内容,仔细阅读即可

第2.2章节

1.具体操作:

将书中提供的命令复制到终端(命令行)运行测试,并把得出结果与2.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

第2.3章节

注意:

如果不能做到在不关机的情况下一次性构建完lfs,请仔细阅读本节内容

1.具体操作:

第1-4章节

每次重新启动后创建环境变量:

第5章节

1.设置变量

2.挂载为lfs创建的所有分区

3.切换到lfs用户,进行下一步的操作。4.提示对软件包编译过程中出现解决不了的操作失误,首先删除所解压的软件包目录,重新解压软件包,切入目录,按该软件包书籍页操作说明重新进行编译。

第6-8章节

1.进入root用户

2.设置变量
3.挂载你为lfs创建的所有分区
4.逐步完成6.2.2与6.2.3章节内容后

5.chroot进入lfs分区继续操作。

第2.4章节

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分区,也可以单独分区。

第2.5章节

1.创建文件系统(只介绍常用的ext4格式类型)
2.除了swap分区以外的分区,使用如下命令格式化:

#mkfs -v -t ext4 /dev/<xxx>(替换<xxx>和<yyy>为分区的名称)

3.swap分区如果是新分区则使用如下命令格式化:

#mkswap /dev/<yyy>(替换<xxx>和<yyy>为分区的名称)

第2.6章节

1.设置lfs变量,运行的命令及作用:

export LFS=/mnt/lfs(使用$LFS代替输入/mnt/lfs目录,每次关闭机器或终端都需要重新设置)
echo $LFS(输出$LFS变量的内容,确保输出为:/mnt/lfs)

2.本章节书籍中的下文内容介绍如何设置开机运行变量,不建议此项设置。
3.变量设置在每次重启机器或者重启终端时都需要重新设置,详细参考2.3章节的笔记

第2.7章节

挂载分区
使用的命令及作用:

#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的分区(不建议)

第3.1章节

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(退出目录)

第4.2章节

创建构建第一遍工具链的安装目录并链接到主机系统

#mkdir -v $LFS/tools
#ln -sv $LFS/tools /

第4.3章节

在主机中创建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用户)

第4.4章节

为lfs用户创建变量
使用的命令及作用(具体说明见书籍注释):

.cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF(将EOF中的内容 写入文件~/.bash_profile) .cat > ~/.bashrc << "EOF"
set +h
umask
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) .source ~/.bash_profile(获取创建的用户配置文件)

第4.5章节

1.这章节的大概意思就是告诉你书籍中的sbu值代表构建软件包所用的时间
2.书籍注意栏目里面的内容是说明编译过程中怎么使用cpu多线程处理编译过程,提升编译速度。
3.使用cpu多线程编译的方法,make后面加上 -j(n) 参数加速安装,n为运行的任务数量,不设置参数为尽可能同时多运行任务,该参数通常设置为cpu核心数的二倍。

5.有一些包的安装和测试过程要求使用单任务 make -j1运行,书中相应章节有对应的提示。
6.不建议按照书中的说明为cpu多线程编译创建环境变量。

第4.6章节

关于测试套件的说明
1.第五章节的软件包不建议运行测试套件,浪费时间,第五章节构建的工具链是是临时的并且最终被删除的。
2.第五章节以后的软件包需要测试,并且不能出现书中未说明的报错,测试时间很慢,请耐心等待。
3.软件包出现书中未说明的报错可能是环境配置问题,请对应检查2.3章节的内容。

第5.3章节

软件包的编译操作流程及注意事项
1.进入sources目录
2.解压相应的软件包
3.进入解压完的软件包目录
4.按照书中说明构建软件包
5.切换回sources目录
6.除非构建说明页有说明,否则删除提取的软件包目录。

7.书中所有包的解压,进入目录,删除,使用tab键补全包名

lfs(systemv版本)学习笔记-第2页 的地址:https://www.cnblogs.com/renren-study-notes/p/10199381.html

lfs(systemv版本)学习笔记-第1页的更多相关文章

  1. lfs(systemv版本)学习笔记-第2页

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemv)学习笔记-第1页 的地址:https://www.cnblogs.com/renren-study-no ...

  2. lfs(systemv版本)学习笔记-第4页

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemv版本)学习笔记第3页:https://www.cnblogs.com/renren-study-notes ...

  3. lfs(systemv版本)学习笔记-第3页

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemv版本)学习笔记-第2页的地址:https://www.cnblogs.com/renren-study-n ...

  4. lfs(systemd版本)学习笔记-第3页

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemd)学习笔记-第2页 的地址:https://www.cnblogs.com/renren-study-no ...

  5. lfs(systemd版本)学习笔记-第1页

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 一名linux爱好者,记录构建Linux From Scratch的过程 经博客园-骏马金龙前辈介绍,开始接触学习lfs,用博客 ...

  6. lfs(systemd版本)学习笔记-第4页

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemd版本)学习笔记-第3页 的地址:https://www.cnblogs.com/renren-study- ...

  7. lfs(systemd版本)学习笔记-第2页

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemd)学习笔记-第1页 的地址:https://www.cnblogs.com/renren-study-no ...

  8. 关于Angular.js Routing 的学习笔记(实现单页应用)

    最近开始学习angular.js,发现angular.js确实很方便,也很强大.在看到 AngularJS Routing and Multiple Views 这一部分的时候,有点乱.现在通过记录一 ...

  9. react-router 4.0版本学习笔记

    Router 所有路由组件的底层接口,一般情况都不使用,而是使用更加高级的路由. 最常用的有两种<BrowserRouter>.<HashRouter> <Browser ...

随机推荐

  1. 轮播图js编写

    //面向对象 function Left() { this.index = 0; this.lefthover = $('#left-content'); this.listenhover(); th ...

  2. 技术文档生成工具:appledoc

    做项目一般都会要求写技术文档,特别是提供SDK或者基础组件的.如果手写这类技术文档的话,工作量比编写代码也少不了多少.比如 Java 语言本身就自带 javadoc 命令,可以从源码中抽取文档.本篇我 ...

  3. HSmartWindowControl 之 显示图像

    概述:使用Halcon在VS中的控件显示一张图片. 要点:使用了图像缩放和图像显示函数,以及鼠标滚轮响应函数. 1.创建WinForm项目 首先在VS中添加Halcon所需的控件HSmartWindo ...

  4. .net core mvc发布项目到IIS上出现500错误

    如题,我把.net core mvc项目以应用程序方式挂到IIS默认网站下,结果出现了如下错误:HTTP Error 500.0 - ANCM In-Process Handler Load Fail ...

  5. 仿今日头条横向滚动导航栏--原生js

    咳咳!先打一波小广告,在上一篇里忘记了,那啥……我的那个个人博客做好了-->(我的博客)<--.嘿嘿 好嘞,言归正传,说说我们的效果. 其实就是实现横向滑动,进行选择. 原理: 鼠标按下, ...

  6. 发现CVE-2018-11512-wityCMS 0.6.1 持久型XSS

    CMS(内容管理系统)很适合被用来做代码审计,尤其是现在CMS系统越来越流行,很多人愿意使用CMS搭建自己的项目.由于大部分CMS是一种开源项目,所以对于CMS的审计属于白盒测试,白盒测试让我们可以发 ...

  7. Android框架式编程之MVP架构

    MVP(Model-View-Presenter)模式.是将APP的结构分为三层:View - Presenter - Model. View 1. 提供UI交互 2. 在presenter的控制下修 ...

  8. C#中关于as关键字的使用

    我们在实际编码中有时会用到as关键字来将对象转换为指定类型,与is类型不同的是,is关键字是用于检查对象是否与给定类型兼容,如果兼容就返回true,如果不兼容就返回false.而as关键字会直接进行类 ...

  9. vue 自学笔记(6) axios的使用

    前情提要:axios 的使用 axios是一个ajax 的包,主要在node.js 使用 axios 的官网 https://www.kancloud.cn/yunye/axios/234845 一: ...

  10. spring boot 集成 thymeleaf

    例如meta标签,低版本标签必须要闭合,高版本不用这么严格. pom文件引入高版本jar包如下,propertis里添加: