概述

github上已经有一个国外的docker-lfs-build项目,基于Docker容器的环境封装,构建LFS。

问题:

1。 其依赖的源码均在国外服务器上,有较大概率下载不过来。

2。 虽然基于docker封装好了所有构建指令,但是经过在Fedora Linux 31 x86_64环境下实际测试,发现中途构建失败,导致不能生成最终需要的系统镜像

本文经过调试、修改,最终完成了在Fedora Linux 31 X86_64架构上的构建工作,顺利得到lfs.iso,并利用VirtualBox完成启动、运行测试

验证后的项目地址:

https://github.com/hknarutofk/docker-lfs-build.git

构建LFS系统

下载源码

git clone --depth=1 https://github.com/hknarutofk/docker-lfs-build.git

构建Docker镜像

cd docker-lfs-build
docker build -t evilfreelancer/docker-lfs-build .

说明:

1。 调整后的docker-lfs-build项目,主要依赖项如源码均切换到了国内资源地址。有效提升了下载速率

2。 容器构建完成后,在容器内部/sources目录存放了所有需要的源代码

启动Docker容器

cp docker-compose.yml.dist docker-compose.yml
docker-compose up -d

开始构建

进入容器

docker-compose exec lfs bash

执行构建

/book/book.sh

说明:为了提升构建速度,执行/book/book.sh前,可以通过设置环境变量MAKEFLAGS=-j6设置并行编译任务数,或者在构建docker镜像前,修改Dockerfile ENV MAKEFLAGS="-j6",具体数值根据自身CPU核心数调整。

/image/image.sh错误处理

经测试,Fedora31上Docker容器内losetup指令无论loop设备是否就绪,均报错 Device or resource busy,因此第二步改为在宿主机上运行

镜像构建过程调整如下

  1. 在容器内,root运行
sh /image/1.configure-syslinux.sh
  1. 在容器外,源码目录下运行
sudo sh -x buildImageOnHostOS.sh

说明:Fedora31上,容器内losetup会报错,无奈在宿主机器上构建lfs.ram

  1. 在容器内,root运行
sh /image/3.build-iso.sh

最终得到dist/lfs.iso

退出容器,查看生成的镜像文件

[yeqiang@harbor docker-lfs-build]$ ls dist/ -lh
total 1.3G
-rw-r--r-- 1 root root 194M 2021-02-05 09:27:16 lfs.bz2
-rw-r--r-- 1 root root 202M 2021-02-05 09:28:09 lfs.iso
-rw-r--r-- 1 root root 977M 2021-02-05 09:27:17 lfs.ram

测试镜像

当前版本内置了网卡驱动,系统启动后,自动挂载了网络。

总结

至此,完成了完全从源码构建出一个基础的Linux操作系统,可以在此基础上,编译更多的软件,如openjdk,docker等,实现自主编译的整套系统。

偷懒的可以直接下载已经编译好的镜像:https://github.com/hknarutofk/docker-lfs-build/releases/download/8.3.20200205-build/lfs.iso

Linux From Scratch docker lfs build 在Fedora 31 Linux上自己动手从源码一步一步编译出一个x86_64架构LFS Linux操作系统相关推荐

  1. debian 编译linux内核源码,安装debian总结以及编译linux内核

    1. 安装debian 使用unetbootin(http://unetbootin.sourceforge.net/)来创建启动盘,并且下载debian的基本包. 将磁盘进行压缩操作,并且保留出一个 ...

  2. cups源码下载 linux_【正点原子FPGA连载】第九章Linux显示设备的使用-领航者ZYNQ之linux开发指南...

    1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...

  3. 获取并编译linux源码,android获取源代码、编译、命令

    ---my--- 正确的编译android sdk: cd myandroid . ./build/envsetup.sh lunch sdk-eng make sdk //或者: make PROD ...

  4. Linux安装和管理程序(包括rpm包安装、卸载、升级以及源码包的手工编译安装)

    点击蓝色目录查找相应内容 Linux应用程序简介 应用程序与系统命令的关系 典型应用程序的目录结构 常见的软件包封装类型 RPM包管理工具 查询RPM软件包信息 查询已安装的RPM软件信息 查询未安装 ...

  5. build怎么调试 react_GitHub - bozhouyongqi/debug-react: 本地调试react源码环境

    [TOC] 工欲善其事,必先利其器. 在学习raect源码时,如果能够在浏览器中单步调试,势必会加深理解.其实可以借助webpack的resolve.alias将react等指向本地的目录,这样就不会 ...

  6. linux 画图 源码,Drawing:一款开源的类似微软画图的 Linux 桌面应用

    Drawing 是一个基本的图像编辑器,就像微软画图一样.有了这个开源的应用,你可以画箭头.线条.几何图形.添加颜色和其他你期望在普通绘图应用程序中做的事情. Drawing: 一个简单的 Linux ...

  7. 【Linux 内核 内存管理】物理内存组织结构 ④ ( 内存区域 zone 简介 | zone 结构体源码分析 | zone 结构体源码 )

    文章目录 一.内存区域 zone 简介 二.zone 结构体源码分析 1.watermark 成员 2.lowmem_reserve 成员 3.zone_pgdat 成员 4.pageset 成员 5 ...

  8. Linux 登陆火星,占有率再超 Windows,NASA 还在 GitHub 发布源码教程

    Linux 飞出天际,成功登陆火星! 作者 | 李磊       责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 在电影<玩具总动员>中,主人公巴斯光年虽然只是一个玩具,但自 ...

  9. Linux IO多路复用之epoll网络编程,高并发的使用例子 (含源码)

    本章节是用基本的Linux基本函数加上epoll调用编写一个完整的服务器和客户端例子,可在Linux上运行,客户端和服务端的功能如下: 客户端从标准输入读入一行,发送到服务端 服务端从网络读取一行,然 ...

  10. 轻松实现各种文档格式转换,doc转pdf、doc转png图片、pdf转png图片,可以实现Windows、Linux、MacOS平台上部署(附源码和说明)

    轻松实现各种文档格式转换,doc转pdf.doc转png图片.pdf转png图片,可以实现Windows.Linux.MacOS平台上部署,可以通过命令行.shell脚本.python等方式调用. 实 ...

最新文章

  1. 微软老毛病还没改:Win10版本多达七个 咋选?
  2. 连不到别人电脑的mysql_连接其他电脑mysql (转)
  3. 解决git提交问题error: The requested URL returned error: 403 Forbidden while accessing
  4. 重装Windows后修复Linux引导
  5. simple_html_dom.php 使用 乱码处理作者:gaoming13
  6. 这算抄百度?Google为信息流告别简洁搜索框,也押注短视频
  7. 将vim打造成python开发工具
  8. 索尼相机手机控制对焦,操控指南丨 使用索尼微单的十个小技巧
  9. 雷达多普勒频率计算公式_人体感应和雷达感应的区别
  10. Emacs基础使用教程及常见命令整理
  11. python爬虫豆瓣电影按电影类型_Python爬虫入门 | 7 分类爬取豆瓣电影,解决动态加载问题...
  12. 积化和差、和差化积简记
  13. Centos下搭建个人网站
  14. 推荐大家几款提高工作效率的软件
  15. Fatal signal 11 (SIGSEGV) at 0x00000048 (code=1)
  16. 正则表达式内的常用的函数 2
  17. 如何快速无损地把flv格式文件转换为mp4格式(可在iPhone上播放)
  18. Qt运行过程中错误未找到信号的符号undefined symbol: _ZN11FileManager12sigTechFilesE4QMapIi7QSt
  19. 分享50个漂亮的设计师个人作品集网站案例
  20. VB.NET EXCE 操作(打开)

热门文章

  1. 解决复制网页文本多一个空格的问题
  2. 微服务入门到入土(08)-消息队列RabbitMQ
  3. 配流07—基于BPR函数的Frank Wolfe算法
  4. 理论物理极础附录:有心力和行星轨道
  5. 单细胞测序系列之一:测序技术的发展
  6. sql 根据身份证号码计算年龄
  7. EXCEL中汉字转变拼音的技巧~代码实现
  8. linux gz是什么文件,gz是什么
  9. Python 去除白色背景
  10. 人工智能 猴子摘香蕉问题