• LFS学习系列1 — 初识


    新换了工作,工作中同组者经常提到一个术语“lfs”,很多人都在基于它进行工作。由于是新到公司,没有参与到之前的开发过程和阶段,因此并不清楚何为“lfs”,好在同组者给出了一个链接:Linux From Scratch

    通过这个主页,可以完全地对于“lfs”,准确地说应该是“LFS”进行全方位的了解和实操。不过本章还是先从百度百科以及其它介绍“LFS”的网站进行快速直观的了解。

    以下内容引自百度百科——Linux From Scratch

    LFS的概念

    LFS,全称为Linux from Scratch,就是一种从网上直接下载源码,从头编译LINUX的安装方式。它不是发行版,只是一个菜谱,告诉你到哪里去买菜(下载源码),怎么把这些生东西( raw code) 作成符合自己口味的菜肴──个性化的linux,不单单是个性的桌面。

    简介

    《LinuxFromScratch》是杰勒德·比克曼斯等人编写的安装Linux的教科书,描述了从源代码编译Linux系统的方法。这本书可以从在LinuxFromScratch网站上免费下载到,当前最新的版本为8.0。

    为了保持LFS的基本性和专注性,另一本书《BeyondLinuxFromScratch》(BLFS)提供了在LFS的基础上,进一步完善Linux基本系统的指引。在BLFS中,读者可以学习到如何为系统增加网络、X桌面、声音、

    打印机和扫描仪支持。从5.0版开始,BLFS开始与LFS的版本号保持同步。

    除了LFS和BLFS,还有描述交叉编译的《CrossLinuxfromScratch》(CLFS)以及专注于安全的《HardenedLinuxFromScratch》(HLFS)。

    《Automated Linux From Scratch》 provides tools for automating and managing LFS and BLFS builds。

    步骤

    尽管目标是安装一个与现有发行版毫无关系的系统,安装LFS仍然不能无中生有,而必须要有一个可以编译软件包的运行中的Linux系统。这个系统一般称为宿主系统。对于新机器,可以选用Linux发行版提供的光盘操作系统(LiveCD)作为宿主。LFS工程曾提供LiveCD但当前不提供。在宿主操作系统上安装LFS,需要的步骤如下:

    1. 对硬盘分区,添加用于安装LFS的用户和组(LFS教科书第2章)

    2. 下载所有需要的软件包源代码(LFS教科书第3章)

    3. 准备开发环境(LFS教科书第4章)

    4. 构造一个基本开发环境(称为工具链)(LFS教科书第5章)

    5. 构造完整的目标系统(LFS教科书第6章)

    6. 配置系统启动脚本(LFS教科书第7章)

    7. 启动系统(LFS教科书第8章)

    制作

    制作过程

    快速浏览官方文档即可(没必要仔细翻阅,抓几个关键点即可)

    一般套路

    以下步骤在LFS制作中会重复几次乃至几十次:

    1,

    tar xf foo-version.tar.*

    cd foo-version

    ./configure --prefix=xxx --xxx=xxxx ······

    make

    make install

    cd ..

    rm -rf foo-version

    2,

    tar xf foo-version.tar.*

    cd foo-version

    patch -Np1 -i ../xxx.patch

    mkdir ../foo-build

    cd foo-build

    ../foo-version/configure --prefix=xxx --xxx=xxxx ······

    make

    make install

    cd ..

    rm -rf foo-version foo-build

    具体编译参数复制文档中对应部分即可。

    相关项目

    该项目有很多相关子项目:

    • BeyondLinuxFromScratch(BLFS)

    标准LFS仅仅安装了足够让系统启动的基本软件,以及使新系统能够编译新软件包的开发工具。BLFS包括了更多的软件包,且都有相应指导。

    • CrosssLinuxFromScratch(CLFS)

    为需要进行交叉编译(即在一个平台上编译另一个平台的代码)的用户提供指导,正式版本为1.0,另有两个变种CLFS Sysroot 采用Sysroot的方法来进行编译,好处是软件包的编译次数可以减少,坏处是不能支持在编译后对软件进行测试,必须要启动到目标平台上才能测试。

    CLFS Embedded 一般用于极小系统以及嵌入式系统。为此,它使用uclibc而不是一般LFS使用的glibc。

    • AutomatedLinuxFromScratch(ALFS)

    标准LFS只是一本书,用户需要根据书上的指引下载软件包并手动输入指令进行编译。ALFS子项目提供了把这一切自动化的脚本。

    • HardenedLinuxFromScratch(HLFS)

    这个子项目致力于打造在安全性上无懈可击的Linux系统。

    • Hints

    收集一些解释性、增强性的文档,以协助用户

    • LiveCD

    利用LFS的方法生成可以自行启动并安装了足够软件的CD,可以用来在空机器上安装LFS,或者直接在其上运行应用,已经停止维护 #LFS LiveCD Project[2011-11-10](英文). "Note: The LiveCD is no longer being maintained. However, it still works well for many purposes, such as a rescue disk. The packages and the rendered LFS book on the CD are quite out of date."。

    • Patches

    由于软件之间的依赖关系,在升级软件包之后可能会导致LFS的过程出现故障。Patch项目致力于研究最新版本的软件之间的互动,并提供一些补丁修复这些故障。

    除此之外,该项目另有一个名为CBLFS(Community Driven BLFS)的项目,该项目实际是一个Wiki网站,依靠网友的自发贡献来提交各种软件包的安装方式。

    意义

    LFS的意义不在于机械地编译,事实上,按照文档描述,简单地点击键盘即可生成一个简略的发行版,这并不是存在时间达13年的LFS的目的。LFS的意义在于让使用者理解编译参数的作用,理解补丁的作用,理解LFS附带的脚本的工作过程,从而达到脱离LFS、独立制作并完善发行版的目的。

    由于LFS提供的是一个通用的Linux发行版制作流程,LFS并不能保证制作最终产物符合制作者个人口味,也不能保证质量。

  • 相关阅读:
    【面试必刷TOP101】删除链表的倒数第n个节点 & 两个链表的第一个公共结点
    Spring+SpringBoot+SpringCloud全攻略
    vertx的学习总结4之异步数据和事件流
    MLX90614红外测温传感器使用arduino采集温度数据OLED显示
    知识注入以对抗大型语言模型(LLM)的幻觉11.6
    游戏行业如何应对网络攻击?
    Ajax Fetch Axios三者区别
    c++的可见性,有序性与原子性
    视觉SLAM十四讲_4李群与李代数
    【Q-Learning】TD算法的一种
  • 原文地址:https://blog.csdn.net/phmatthaus/article/details/126518572