LFS是什么

LFS是Linux From Scratch
译为:从头开始构建自己的linux系统
就是从网上下载源码再根据手册
从头编译linux安装方式,可以任意选择安装那些功能和移除那些功能

linux的组成

Linux内核

linux内核是宏内核,设备驱动程序可以完全的访问硬件,它可以设置为模块的形式。模块形式也就是内核模块,它可以在系统运行期间直接装载或者卸载内核,在编译之前配置确定内核包含什么功能,增加功能的时候可以通过配置装载功能,不需要的时候就可以卸载掉。内核模块机制可以使内核使用更加的灵活。

C库及各类功能库

C函数库是将标准的C语言中的各种函数功能进行实现的库程序文件。因为在linux中许多程序都是采用C语言来进行编写的,所以C函数库是一个比较重要的函数库。

函数库它包含了大量的函数,程序在运行的过程中可以调用所包含的函数来实现设计好的功能,函数库中的函数也可以使用自己或者其他库中的函数,函数库包含了静态库和共享库两种,程序运行时共享库必须存在于系统且能被系统找到,静态库在程序运行时,即使静态库不在也可正常调用。

静态库缺点:运行多个程序并且都使用一个静态库中的函数时,内存中就会有同一个函数的多个副本,程序自身也会有对个同样的副本,会消耗大量的内存和磁盘空间。
除了C库,还有一些实现特定功能的,也被组织成了函数库存在于系统中。

交互环境

交互环境分为,命令行交互(CLI)和图形化交互(GUI)交互环境的存在就是为了能够方便的控制计算机运行,让计算机明白操作者表达的含义。

常用命令

用一些命令来于系统进行交互。
这些命令包括:复制文件(cp),显示文件列表(ls),显示文件内容(cat)等等,,,,

应用程序

应用程序是指为针对使用者的某种应用目的所撰写的软件。
应用程序是linux系统的主体,任何一个系统的存在都是为了满足应用的需求。如wps,火狐、谷歌浏览器

目录及配置文件

目录用于存放各种文件,配置文件则是帮助用户控制那些功能丰富的程序。
在LSB规则中包含了目录,文件和函数库等命名存放及一系列要求
通过配置文件,程序能明白用户的需求

启动和登录控制程序

启动程序是对计算机系统的环境进行处理。准备好各种软硬件使用的环境,装载运行过程中需要的各种程序
登录控制程序是通过用户名和密码来判断用户是否合法。

软件管理方式

一个专门用于管理安装软件的软件,称为“包管理器”。
比如Debian系统中的apt,RedHat系统中的yum。

LInux系统的架构

Linux系统的启动过程

BIOS

BIOS是一组固化到计算机内主板上的一个ROM芯片的程序,它保存着计算机最重要的输入输出的程序,开机后自检程序和系统自启动程序。所以系统想要启动必须先加载BIOS

然后BIOS加载CMOS的信息,借助它取得主机的各项硬件配置,然后进行加电自检,检查计算机中各种硬件信息,发现错误则会报错。然后BIOS对硬件进行初始化

搜索可引导设备

“Boot menu”意思为“启动菜单”意思是指系统启动过程中按对应热键,调出对应可启动设备的启动选择菜单,然后根据配置选择储存介质,如硬盘、CD-ROM或者USB启动。

MBR

搜索可引导存储设备之后,

MBR载入内存后,BIOS将控制权转交给MBR(准确的说应该是MBR中的boot loader ),然后MBR接管任务开始执行

启动MBR,MBR中的boot loader就要读取所在磁盘的操作系统核心文件,boot loader再将控制权交给对应操作系统的loader,让它负责去启动对应的操作系统。

这张图解释了boot loader的作用

MBR中的boot loader就要读取所在磁盘的操作系统核心文件,boot loader再将控制权交给对应操作系统的loader,让它负责去启动对应的操作系统。

一个硬盘的每个分区的第一个扇区叫做boot sector,这个扇区存放的就是操作系统的loader,如上图,第一个分区的boot sector存放着windows的loader,第二个分区放着Linux的loader,第三个第四个由于没有安装操作系统所以空着。

提供选单就是给用户提供一张选项单,让用户选择进入哪个操作系统;

当用户选择其他操作系统启动的时候,boot loader会将控制权转交给对应的loader,让它负责操作系统的启动。

我们知道系统会有一个默认启动的操作系统,这个操作系统的loader在所在分区的boot sector有一份,除此之外,也会将这个默认启动的操作系统的loader复制一份到MBR的boot loader中,这样一来MBR就会直接读取boot loader中的loader了,然后就是启动默认的操作系统
MBR 的boot loader有三个功能:提供选单,读取内核文件,转交给其他loader

启动器

MBR完成了主程序的引导后,会把控制权交给GRUB,主引导程序开始加载配置文件。

Grub启动有三个阶段;
第一阶段:引导安装在MBR中的引导程序。( Linux的loader就是这个文件)
第1-5阶段:MBR之后的扇区,让阶段一中的boot loader能识别阶段2所在的分区上的文件系统,GRUB的内置文件系统其实是依靠1-5阶段那些文件定义的,让grub在不依赖Linux内核
情况下具有读取配置文件与内核映像的能力。
第2阶段:读取存放在磁盘上的grub配置文件/boot/grub/grub.conf,把选定的内核装载到RAM中的特定空间中载入,加载/boot/initrd.img(Initrd)虚拟文件系统
Grub 阶段2功能有:
提供菜单、并提供交互式接口
加载用户选择的内核或操作系统
为菜单提供了保护机制

linux内核

将内核文件载入物理内存中执行,内核就是boot目录下的vmlinuz。然后将控制权转交给内核。

Initrd:
它是一个最小化的Linux根文件系统。
该文件装载了必要的驱动模块,内核就是先把这个文件展开,形成一个虚拟文件系统,内核借虚拟文件系统装载必要的模块,直到挂载真正的rootfs,然后将initrd从内存中移除。
内核上并没有各种硬件的驱动程序,也就无法识rootfs所在的设备,所以就产生了initrd这个文件.

启动控制程序

内核以只读方式挂载根文件系统当根文件系统被挂载后,开始装载第一个进程,执行/sbin/init,之后就将控制权交接给了init程序。

  1. 其实/etc/inittab文件它主要的作用就是设定Linux的启动过程进行配置(一共有7各等级),还有就是准备软件执行的环境,

  2. 其实/etc/inittab文件它主要的作用就是设定Linux的启动过程进行配置(一共有7各等级),还有就是准备软件执行的环境,

  3. 设置主机名,挂载/etc/fstab中的文件系统,修改/etc/sysctl.conf 的内核参数等各项系统环境。

  4. 根据运行级别,进入相应的/etc/rc.d/rcN.d目录,启动和关闭相关的系统服务。里边存放着一堆以K和S开头的软链接文件,其中K开头表示该运行级别下需要把该服务杀死,S开头表示该运行级别下需要把该服务开启。

  5. 可以自定义启动时需要执行的文件。

登录控制程序

接下来会由/sbin/mingetty指令启动终端,进入系统登陆界面。输入用户名与密码进行验证,验证成功后,登陆控制程序会根据相关的设置为用户启动需要的程序。

交互环境

当系统启动后,会为用户创建一个交互环境,不同的用户可以启动不同的环境

Bash首先去/etc中执行profile,该文件包含了所有用户共用的设置脚本,之后执行用户目录下的.bashrc隐藏文件,可以为不同用户提供不同的环境

文本形式的登录界面有login程序,在图形界面中有xdm,kdm等等

源代码编译


首先获得软件包的源代码

.configure阶段会生成makefile文件,为下一步的编译做准备,我们可以通过在configure后加上参数来对安装进行控制。如,选择安装的位置,指定链接库的路径

Make阶段会调用目录中的makefile来执行系列的工作,其中包括创建必要的文件,以及调用Gcc和Binutils来编译源代码和链接目标文件,最终生成可执行文件与附属文件。

Make install 阶段安装程序,把程序安装至系统预设的可执行文件存放路径。

运行的系统是由该系统之外的编译环境生成的,

并且软件包之间存在依赖关系,在编译某个软件包是它所依赖的软件包必须先被编译和安装。如编译工具,Glibc

为啥安装依赖的软件:
  • 源代码编译需要用到头文件,不同源代码头文件不同,程序运行时需要依赖到某个共享库,在编译过程中就会需要用到该共享库对应的头文件。
    在之前在函数库的时候说过共享库在程序运行时必须存在系统中且能被系统找到和使用。
  • 生成共享库或者程序文件的时候链接器会去链接所提供的函数库,如果没有则无法完胜编译

工具链介绍

工具链是由编译器,汇编器,链接器及其函数库组成的
Linux中通常是:Gcc,Binutils,Glibc组成

工具链原则:由某一个工具链编译出来的二进制程序或函数库文件必然连接该工具链中的函数库,无论是静态链接还是动态链接方式

LFS系统制作过程中工具链的转换


Glibc-B生成时调整工具链:修改GCC编译配置与Binutils中的ld命令的函数库查询目录,使它们依赖于自身的函数库


制作流程图

制作过程中的目录结构变化




具体制作步骤


遇到的问题

  1. 宿主机环境配置
  2. 分区的挂载:目标系统最终独立于主系统运行,需要把目标系统安装在一个分区上,而不是主系统的某个目录下。
  3. 内核配置

感谢孙海勇老师的《手把手教你构建自己的Linux系统》
感谢lfs9.0中文档翻译手册

制作LFS之后的总结相关推荐

  1. 手把手教你如何建立自己的Linux系统(LFS速成手册)

    原贴:http://www.linuxsir.org/bbs/showthread.php?t=244052 LinuxSir.Org > Linux 发行版讨论区 -- LinuxSir.Or ...

  2. surreal number应对不平等博弈

    转载自:http://www.matrix67.com/blog/archives/6333 Surreal Number求解一些不平等博弈游戏,该数学理念可以在高德纳数学科幻小说Surreal Nu ...

  3. Mac打包Android的apk,【ReactNative】Mac下分分钟打包 Android apk

    Mac 下 ReactNative如何打包构建Android apk 的应用.该文章还差一个 打包发布到各个平台的教程 总结 打包 jsbundle代码 生成签名 添加签名到app中 打包成apk(打 ...

  4. LFS(linux for stratch)关于急救盘的制作问题

    LFS制作手册里的这三行命令,大家都不陌生,是在更新grub前的一个操作. cd /tmp grub-mkrescue --output=grub-img.iso xorriso -as cdreco ...

  5. LFS系统安装镜像制作

    LFS系统安装镜像制作 这篇文章介绍如何将已完成的LFS系统制作成安装镜像的一种方式,关于手动安装的过程可以参考另一篇文章 LFS系统手动安装 概述 简介 将制作好的LFS系统制作成安装镜像的方式: ...

  6. LFS : 制作分区和挂载分区

    前言 上一步,向虚拟机里面加了新硬盘,检查了环境,补全了LFS编译要用到的组件. 这一步,将新加入的硬盘分区,并挂载. 手册中并没有详细描述这步,花了一天看了linux howto 中的分区资料,又用 ...

  7. 分享|如何制作高质量的图文摘要(Graphical Abstract)

    一些期刊对于稿件的要求还包括了Graphical Abstract,即图文摘要,用来清晰.简洁地展示研究工作最主要的信息,与论文标题同样重要.尤其是一些影响力大的顶级期刊,大部分都会要求作者提供. G ...

  8. 动手制作Dos、WinPE、Slax Linux|winpe+dos+Mini Linux U盘启动盘

    动手制作Dos.WinPE.Slax Linux|winpe+dos+Mini Linux U盘启动盘 一.概述 U盘的价格越来越便宜,容量也越来越大,携带也方便,在工作中可以把一些自己常用的工具整和 ...

  9. linux sd启动盘制作工具,制作Mini Linux U盘启动盘

    by ncforest http://ncforest.blog.163.com 在将U盘制作成启动盘,然后用Mini Linux引导,可以用以修复硬盘上的Linux系统错误. Mini linux很 ...

最新文章

  1. Linux篇---ftp服务器的搭建
  2. Robolectric
  3. Angular 依赖注入学习笔记之工厂函数的用法
  4. 机器学习算法(二):基于决策数的分类预测
  5. dill:解决python的“AttributeError: Can‘t pickle local object”及无法pickle lambda函数的问题
  6. 机器学习系列(5)_从白富美相亲看特征预处理与选择(上)
  7. Visual Studio中实用工具VAssistX
  8. 通过IGT-DSER网关实现各品牌PLC之间,PLC与工业机器人(ModbusTCP)之间通讯
  9. 有线异步通信原理_【对讲机的那点事】揭秘对讲机系统集群网关的应用原理
  10. 单词风暴2009免费分享版
  11. java更换证件照背景色
  12. 人机交互期末复习笔记
  13. 医院、诊所看这里,一个分诊屏+叫号系统,实现门诊高效排队叫号
  14. did you register the component correctly? For recursive components, make sure to provide the “name“
  15. 红外成像光电探测器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  16. SANGFOR SCSA——linux系统基础
  17. 美国大学统计专业申请策略
  18. 修复打开Excel提示
  19. 论文阅读笔记:vTPM
  20. 2022年,短视频直播现状与发展趋势

热门文章

  1. mysql 备份数据库结账_年度结转问题综合解答(转)
  2. Android仿微信朋友圈5实现朋友圈列表
  3. 桌面 计算机 网络连接怎么办,电脑显示本地网络连接但是宽带没连上。怎么办?...
  4. 最全iPhone启动图尺寸(包含 XS Max XR)
  5. IDEA 隐藏窗口标题栏(去掉 Win10 白色标题栏)
  6. 我的世界服务器皮肤显示mod,【回归了】McMySkin Mod - Minecraft单机联机皮肤显示Mod...
  7. Skin Cancer MNIST(皮肤癌患者相关数据集)
  8. 20200413 jzoj 普及c组 Loan Repayment
  9. ASP.NET Web程序设计 第三章 高级控件
  10. Codeforces Daily (Round 370-410)