115篇!国庆 ⑦ 天,我从 〇 开始撸了个 Linux 系统!(建议收藏)

本文已收录于专栏 📚《Linux From Scratch》📚
点我跳转文末 可以获取 粉丝专属福利 以及博主的联系方式

@TOC

🌲 前言

曾几何时,是否有想过自己 DIY 一个 Linux 系统,就像造汽车一样一步步的构建一个 Linux 系统!

🚗 做个形象的比喻:

汽车(Linux发行版)= 发动机(内核)+ 轮子和方向盘(shell)+ 车架子和座椅(桌面)+ 倒车雷达/自动泊车(基础软件)

在大众的眼里,Linux似乎是很神秘的东西,比如经常说到的,网上的黑客用的都是Linux,对着黑色的框框敲几条命令,就能够控制很多电脑,控制网络。这个时候,Linux像是游戏里的神器,无所不能。稍微懂一点计算机知识的人来说,知道Linux是一个操作系统,但是是个什么样的操作系统,也不太了解。

Linux From Scratch 项目简称 LFS,它提供具体的步骤、特定的补丁、必须的脚本,从而提供一个简便的创建Linux发行版的途径。LFS并不是一个发行版,但是它可以作为制作初级发行版的良好练习。

🔥 有什么好处:

  • 了解一个完整的linux系统是如何组成的
  • 可以更好的理解 Linux 是如何正常运转,和其它程序之间是如何协同工作,以及和其它程序之间的依赖关系
  • 可以让你创建极其精简的 Linux 系统
  • 对系统本身有更多的控制权,而不必知道别人是如何实现的
  • 加强对 Linux 系统的深入理解,装逼必备

☀️ 本文将一步步教你如何从零开始构建一个 Linux 系统!

🏅 构建流程

📚 构建流程参考自官方文档:Linux From Scratch

以下将我完整构建流程分为以下几个部分进行展示链接 🔗,通过链接可以直接跳转操作!

只要跟着教程一步步操作,必然可以成功!🎉

一、准备构建

从零开始 DIY Linux 系统:LFS 介绍 从零开始 DIY Linux 系统:虚拟机创建宿主机(Centos7)

⭐️ 系统安装完成配置之后,建议做一个快照!以备后续误操作可以回退~

从零开始 DIY Linux 系统:磁盘分区(Version 7.7) 从零开始 DIY Linux 系统:软件包、补丁以及创建用户(Version 7.7)

上述步骤为准备阶段,下面开始构建临时文件系统!

二、构建临时文件系统

Binutils 编译耗时较长...

从零开始 DIY Linux 系统:构建临时系统 - Binutils-2.25 - 第1遍

GCC 编译耗时较长...

从零开始 DIY Linux 系统:构建临时系统 - GCC-4.9.2 从零开始 DIY Linux 系统:构建临时系统 - Linux-3.19

Glibc 编译耗时较长...

从零开始 DIY Linux 系统:构建临时系统 - Glibc-2.21 从零开始 DIY Linux 系统:构建临时系统 - Libstdc++-4.9.2

Binutils 编译耗时较长...

从零开始 DIY Linux 系统:构建临时系统 - Binutils-2.25 - 第2遍

GCC 编译耗时较长...

从零开始 DIY Linux 系统:构建临时系统 - GCC-4.9.2 - 第2遍

⭐️ GCC 第2遍编译之后,建议做一个快照!以备后续误操作可以回退~

从零开始 DIY Linux 系统:构建临时系统 - Tcl-8.6.3 从零开始 DIY Linux 系统:构建临时系统 - Expect-5.45 从零开始 DIY Linux 系统:构建临时系统 - DejaGNU-1.5.2 从零开始 DIY Linux 系统:构建临时系统 - Check-0.9.14 从零开始 DIY Linux 系统:构建临时系统 - Ncurses-5.9 从零开始 DIY Linux 系统:构建临时系统 - Bash-4.3.30 从零开始 DIY Linux 系统:构建临时系统 - Bzip2-1.0.6 从零开始 DIY Linux 系统:构建临时系统 - Coreutils-8.23 从零开始 DIY Linux 系统:构建临时系统 - Diffutils-3.3 从零开始 DIY Linux 系统:构建临时系统 - File-5.22 从零开始 DIY Linux 系统:构建临时系统 - Findutils-4.4.2 从零开始 DIY Linux 系统:构建临时系统 - Gawk-4.1.1 从零开始 DIY Linux 系统:构建临时系统 - Gettext-0.19.4 从零开始 DIY Linux 系统:构建临时系统 - Grep-2.21 从零开始 DIY Linux 系统:构建临时系统 - Gzip-1.6 从零开始 DIY Linux 系统:构建临时系统 - M4-1.4.17 从零开始 DIY Linux 系统:构建临时系统 - Make-4.1 从零开始 DIY Linux 系统:构建临时系统 - Patch-2.7.4 从零开始 DIY Linux 系统:构建临时系统 - Perl-5.20.2 从零开始 DIY Linux 系统:构建临时系统 - Sed-4.2.2 从零开始 DIY Linux 系统:构建临时系统 - Tar-1.28 从零开始 DIY Linux 系统:构建临时系统 - Texinfo-5.2 从零开始 DIY Linux 系统:构建临时系统 - Util-linux-2.26 从零开始 DIY Linux 系统:构建临时系统 - Xz-5.2.0 从零开始 DIY Linux 系统:构建临时系统 - 收尾工作

⭐️ 构建临时系统完成之后,建议做一个快照!以备后续误操作可以回退~

三、构建 LFS 系统

接下来,我们会进入构建环境然后开始认真地构建 LFS 系统!

从零开始 DIY Linux 系统:构建 LFS 系统 - 准备虚拟内核文件系统 从零开始 DIY Linux 系统:构建 LFS 系统 - 进入 Chroot 环境

📢 注意:如果下方编译过程未一次完成,再次继续的时候需要再次进入 Chroot 环境才能编译:

bash 复制代码
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

从零开始 DIY Linux 系统:构建 LFS 系统 - 创建目录 从零开始 DIY Linux 系统:构建 LFS 系统 - 创建必需的文件和符号链接

下面又要开始编译啦!

从零开始 DIY Linux 系统:构建 LFS 系统 - Linux-3.19 API 头文件 从零开始 DIY Linux 系统:构建 LFS 系统 - Man-pages-3.79

Glibc 编译耗时非常久... 需要耐心等待丫!

从零开始 DIY Linux 系统:构建 LFS 系统 - Glibc-2.21

⭐️ Glibc 编译完成之后,如果后续出问题,重新编译太久了,建议做一个快照!

从零开始 DIY Linux 系统:构建 LFS 系统 - 调整工具链 从零开始 DIY Linux 系统:构建 LFS 系统 - Zlib-1.2.8 从零开始 DIY Linux 系统:构建 LFS 系统 - File-5.22

Binutils 编译耗时较长...

从零开始 DIY Linux 系统:构建 LFS 系统 - Binutils-2.25 从零开始 DIY Linux 系统:构建 LFS 系统 - GMP-6.0.0a 从零开始 DIY Linux 系统:构建 LFS 系统 - MPFR-3.1.2 从零开始 DIY Linux 系统:构建 LFS 系统 - MPC-1.0.2

⚠️ 这次的 GCC 编译耗时灰常灰常久...

从零开始 DIY Linux 系统:构建 LFS 系统 - GCC-4.9.2

⭐️ GCC 编译完成之后,如果后续出问题,重新编译太久了,建议做一个快照!

从零开始 DIY Linux 系统:构建 LFS 系统 - Bzip2-1.0.6 从零开始 DIY Linux 系统:构建 LFS 系统 - Pkg-config-0.28 从零开始 DIY Linux 系统:构建 LFS 系统 - Ncurses-5.9 从零开始 DIY Linux 系统:构建 LFS 系统 - Attr-2.4.47 从零开始 DIY Linux 系统:构建 LFS 系统 - Acl-2.2.52 从零开始 DIY Linux 系统:构建 LFS 系统 - Libcap-2.24 从零开始 DIY Linux 系统:构建 LFS 系统 - Sed-4.2.2 从零开始 DIY Linux 系统:构建 LFS 系统 - Shadow-4.2.1 从零开始 DIY Linux 系统:构建 LFS 系统 - Psmisc-22.21 从零开始 DIY Linux 系统:构建 LFS 系统 - Procps-ng-3.3.10 从零开始 DIY Linux 系统:构建 LFS 系统 - E2fsprogs-1.42.12 从零开始 DIY Linux 系统:构建 LFS 系统 - Coreutils-8.23 从零开始 DIY Linux 系统:构建 LFS 系统 - Iana-Etc-2.30 从零开始 DIY Linux 系统:构建 LFS 系统 - M4-1.4.17 从零开始 DIY Linux 系统:构建 LFS 系统 - Flex-2.5.39 从零开始 DIY Linux 系统:构建 LFS 系统 - Bison-3.0.4 从零开始 DIY Linux 系统:构建 LFS 系统 - Grep-2.21 从零开始 DIY Linux 系统:构建 LFS 系统 - Readline-6.3 从零开始 DIY Linux 系统:构建 LFS 系统 - Bash-4.3.30 从零开始 DIY Linux 系统:构建 LFS 系统 - Bc-1.06.95 从零开始 DIY Linux 系统:构建 LFS 系统 - Libtool-2.4.6 从零开始 DIY Linux 系统:构建 LFS 系统 - GDBM-1.11 从零开始 DIY Linux 系统:构建 LFS 系统 - Expat-2.1.0 从零开始 DIY Linux 系统:构建 LFS 系统 - Inetutils-1.9.2 从零开始 DIY Linux 系统:构建 LFS 系统 - Perl-5.20.2 从零开始 DIY Linux 系统:构建 LFS 系统 - XML::Parser-2.44 从零开始 DIY Linux 系统:构建 LFS 系统 - Autoconf-2.69 从零开始 DIY Linux 系统:构建 LFS 系统 - Automake-1.15 从零开始 DIY Linux 系统:构建 LFS 系统 - Diffutils-3.3 从零开始 DIY Linux 系统:构建 LFS 系统 - Gawk-4.1.1 从零开始 DIY Linux 系统:构建 LFS 系统 - Findutils-4.4.2 从零开始 DIY Linux 系统:构建 LFS 系统 - Gettext-0.19.4 从零开始 DIY Linux 系统:构建 LFS 系统 - Intltool-0.50.2 从零开始 DIY Linux 系统:构建 LFS 系统 - Gperf-3.0.4 从零开始 DIY Linux 系统:构建 LFS 系统 - Groff-1.22.3 从零开始 DIY Linux 系统:构建 LFS 系统 - Xz-5.2.0 从零开始 DIY Linux 系统:构建 LFS 系统 - GRUB-2.02~beta2 从零开始 DIY Linux 系统:构建 LFS 系统 - Less-458 从零开始 DIY Linux 系统:构建 LFS 系统 - Gzip-1.6 从零开始 DIY Linux 系统:构建 LFS 系统 - IPRoute2-3.19.0 从零开始 DIY Linux 系统:构建 LFS 系统 - Kbd-2.0.2 从零开始 DIY Linux 系统:构建 LFS 系统 - Kmod-19 从零开始 DIY Linux 系统:构建 LFS 系统 - Libpipeline-1.4.0 从零开始 DIY Linux 系统:构建 LFS 系统 - Make-4.1 从零开始 DIY Linux 系统:构建 LFS 系统 - Patch-2.7.4 从零开始 DIY Linux 系统:构建 LFS 系统 - Systemd-219 从零开始 DIY Linux 系统:构建 LFS 系统 - D-Bus-1.8.16 从零开始 DIY Linux 系统:构建 LFS 系统 - Util-linux-2.26 从零开始 DIY Linux 系统:构建 LFS 系统 - Man-DB-2.7.1 从零开始 DIY Linux 系统:构建 LFS 系统 - Tar-1.28 从零开始 DIY Linux 系统:构建 LFS 系统 - Texinfo-5.2 从零开始 DIY Linux 系统:构建 LFS 系统 - Vim-7.4

📢 注意:清理前需要先退出当前环境,然后再次进入 Chroot 环境:

bash 复制代码
export LFS=/mnt/lfs
chroot $LFS /tools/bin/env -i            \
    HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
    PATH=/bin:/usr/bin:/sbin:/usr/sbin   \
    /tools/bin/bash --login

从零开始 DIY Linux 系统:构建 LFS 系统 - 再次清理无用内容

执行完 Strip 之后再次退出环境!

bash 复制代码
logout

⭐️ 所有软件编译安装完成之后,建议做一个快照!

四、基本系统配置

进入 Chroot 环境:

bash 复制代码
export LFS=/mnt/lfs
chroot $LFS /usr/bin/env -i            \
    HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
    PATH=/bin:/usr/bin:/sbin:/usr/sbin   \
    /bin/bash --login

从零开始 DIY Linux 系统:基本系统配置 - 通用网络配置 从零开始 DIY Linux 系统:基本系统配置 - 配置系统时间 从零开始 DIY Linux 系统:基本系统配置 - 系统区域设置 从零开始 DIY Linux 系统:基本系统配置 - 创建 /etc/inputrc 文件 从零开始 DIY Linux 系统:基本系统配置 - 创建 /etc/shells 文件 从零开始 DIY Linux 系统:基本系统配置 - Systemd 的用法与配置

五、让 LFS 系统可引导

⭐️ 是时候该让 LFS 系统可以启动了!

本节主要为:

  • 创建 fstab 文件
  • 为新的 LFS 系统编译内核
  • 安装 GRUB 引导器

如此,就可以在电脑启动的时候选择启动 LFS 系统了!

从零开始 DIY Linux 系统:让 LFS 系统可引导 - 创建 /etc/fstab 文件 从零开始 DIY Linux 系统:让 LFS 系统可引导 - Linux-3.19 从零开始 DIY Linux 系统:让 LFS 系统可引导 - 安装 GRUB 从零开始 DIY Linux 系统:让 LFS 系统可引导 - 收尾

😄 哈哈,干的很不错!到这里,全新的 LFS 系统就已经安装完成了!🎉

❤️ 粉丝专属福利

玩转 Linux: 《玩转 Vagrant 系列》 玩转 Oracle: 《Oracle 一键安装脚本》 安装 Oracle: 《Oracle 零基础安装》 运维小知识: 《每天一个DBA小知识》
👇🏻 可通过搜索下方 公众号 免费 获取👇🏻


📚 推荐阅读:DBA 学习之路

如果这篇文章对你有帮助,推荐访问我的 Oracle DBA 系统学习站点,涵盖 100 天完整学习路线:

  • 🔧 Oracle 安装部署 · RMAN 备份恢复 · Data Pump 数据迁移
  • 🏗️ RAC 高可用 · DataGuard 容灾 · 多租户架构
  • 🔍 故障排查 · 升级迁移 · GoldenGate 数据同步

👉 立即访问 ora100.com →

相关推荐
Lucifer三思而后行2 小时前
100+ 新特性!OGG 23ai 到底强在哪?
后端
Lucifer三思而后行2 小时前
19.30 先别用了,有 BUG!
后端
Lucifer三思而后行2 小时前
11GR2 rac 2节点一键安装演示
后端
Lucifer三思而后行2 小时前
Asianux 8 一键安装 Oracle 19C 单机
后端
Lucifer三思而后行2 小时前
2026 年了,DBA 该有自己的 AI 助手了!
后端
Lucifer三思而后行2 小时前
19C 19.22 RAC 2节点一键安装演示
后端
Lucifer三思而后行2 小时前
CentOS LVM 扩容实战:home 分区合并到根分区
后端