前言

1. 物理系统

2. VirtualBox

3. CentOS7.7

二、构建环境准备

1.挂载/mnt/lfs分区

2. 执行挂载指令

3. 设置$LFS环境变量

4. /mnt/lfs下创建系统目录

5. 下载资源到sources目录

执行下载

查看以下在的软件源码及补丁

总结



前言

接触Linux操作系统快10年了,终于下定决心自己构建一个属于自己的Linux发行版本。

参考Linux From Scratch


一、基础环境准备

1. 物理系统

Fedora release 31 (Thirty One)

2. VirtualBox

在物理系统上安装VirtualBox,采用虚拟机内编译构建方案,防止误操作影响物理系统

3. CentOS7.7

在VirtualBox上安装CentOS7.7,注意虚拟硬盘挂载到物理系统固态硬盘上,为其分配8核8G

4. 本地使用ssh连接到服务器,方便操作

二、构建环境准备

1.挂载/mnt/lfs分区

说明,当前是初次构建,且本地资源紧张,不按照原文作复杂的分区。

事先准备/dev/sda3,并采用ext4格式化

编辑/etc/fstab,追加内容

/dev/sda3    /mnt/lfs    ext4    defaults    0   0

2. 执行挂载指令

[root@localhost ~]# mount -a
[root@localhost ~]# mount | grep lfs
/dev/sda3 on /mnt/lfs type ext4 (rw,relatime,seclabel,data=ordered)

3. 设置$LFS环境变量

编辑/etc/profile, 追加

export LFS=/mnt/lfs

重启系统,确保每次进入终端均设置了$LFS环境变量

4. /mnt/lfs下创建系统目录

[root@localhost ~]# mkdir -v $LFS/usr
mkdir: created directory ‘/mnt/lfs/usr’
[root@localhost ~]# mkdir -v $LFS/sources
mkdir: created directory ‘/mnt/lfs/sources’
[root@localhost ~]# chmod -v a+wt $LFS/sources
mode of ‘/mnt/lfs/sources’ changed from 0755 (rwxr-xr-x) to 1777 (rwxrwxrwt)[root@localhost ~]# mkdir -v $LFS/tools
mkdir: created directory ‘/mnt/lfs/tools’

5. 下载资源到sources目录

准备wget-list,内容如下

http://download.savannah.gnu.org/releases/acl/acl-2.2.52.src.tar.gz
http://download.savannah.gnu.org/releases/attr/attr-2.4.47.src.tar.gz
http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.xz
http://ftp.gnu.org/gnu/automake/automake-1.15.tar.xz
http://ftp.gnu.org/gnu/bash/bash-4.4.tar.gz
http://alpha.gnu.org/gnu/bc/bc-1.06.95.tar.bz2
http://ftp.gnu.org/gnu/binutils/binutils-2.27.tar.bz2
http://ftp.gnu.org/gnu/bison/bison-3.0.4.tar.xz
http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz
https://github.com/libcheck/check/releases/download/0.11.0/check-0.11.0.tar.gz
http://ftp.gnu.org/gnu/coreutils/coreutils-8.26.tar.xz
http://dbus.freedesktop.org/releases/dbus/dbus-1.10.14.tar.gz
http://ftp.gnu.org/gnu/dejagnu/dejagnu-1.6.tar.gz
http://ftp.gnu.org/gnu/diffutils/diffutils-3.5.tar.xz
http://downloads.sourceforge.net/project/e2fsprogs/e2fsprogs/v1.43.4/e2fsprogs-1.43.4.tar.gz
http://prdownloads.sourceforge.net/expat/expat-2.2.0.tar.bz2
http://prdownloads.sourceforge.net/expect/expect5.45.tar.gz
ftp://ftp.astron.com/pub/file/file-5.30.tar.gz
http://ftp.gnu.org/gnu/findutils/findutils-4.6.0.tar.gz
https://github.com/westes/flex/releases/download/v2.6.3/flex-2.6.3.tar.gz
http://ftp.gnu.org/gnu/gawk/gawk-4.1.4.tar.xz
http://ftp.gnu.org/gnu/gcc/gcc-6.3.0/gcc-6.3.0.tar.bz2
http://ftp.gnu.org/gnu/gdbm/gdbm-1.12.tar.gz
http://ftp.gnu.org/gnu/gettext/gettext-0.19.8.1.tar.xz
http://ftp.gnu.org/gnu/glibc/glibc-2.25.tar.xz
http://ftp.gnu.org/gnu/gmp/gmp-6.1.2.tar.xz
http://ftp.gnu.org/gnu/gperf/gperf-3.0.4.tar.gz
http://ftp.gnu.org/gnu/grep/grep-3.0.tar.xz
http://ftp.gnu.org/gnu/groff/groff-1.22.3.tar.gz
http://alpha.gnu.org/gnu/grub/grub-2.02~beta3.tar.xz
http://ftp.gnu.org/gnu/gzip/gzip-1.8.tar.xz
http://anduin.linuxfromscratch.org/LFS/iana-etc-2.30.tar.bz2
http://ftp.gnu.org/gnu/inetutils/inetutils-1.9.4.tar.xz
http://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz
https://www.kernel.org/pub/linux/utils/net/iproute2/iproute2-4.9.0.tar.xz
https://www.kernel.org/pub/linux/utils/kbd/kbd-2.0.4.tar.xz
https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-23.tar.xz
http://www.greenwoodsoftware.com/less/less-481.tar.gz
https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.25.tar.xz
http://download.savannah.gnu.org/releases/libpipeline/libpipeline-1.4.1.tar.gz
http://ftp.gnu.org/gnu/libtool/libtool-2.4.6.tar.xz
https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.9.9.tar.xz
http://ftp.gnu.org/gnu/m4/m4-1.4.18.tar.xz
http://ftp.gnu.org/gnu/make/make-4.2.1.tar.bz2
http://download.savannah.gnu.org/releases/man-db/man-db-2.7.6.1.tar.xz
https://www.kernel.org/pub/linux/docs/man-pages/man-pages-4.09.tar.xz
http://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz
http://www.mpfr.org/mpfr-3.1.5/mpfr-3.1.5.tar.xz
http://ftp.gnu.org/gnu//ncurses/ncurses-6.0.tar.gz
http://ftp.gnu.org/gnu/patch/patch-2.7.5.tar.xz
http://www.cpan.org/src/5.0/perl-5.24.1.tar.bz2
https://pkg-config.freedesktop.org/releases/pkg-config-0.29.1.tar.gz
http://sourceforge.net/projects/procps-ng/files/Production/procps-ng-3.3.12.tar.xz
http://downloads.sourceforge.net/project/psmisc/psmisc/psmisc-22.21.tar.gz
http://ftp.gnu.org/gnu/readline/readline-7.0.tar.gz
http://ftp.gnu.org/gnu/sed/sed-4.4.tar.xz
https://github.com/shadow-maint/shadow/releases/download/4.4/shadow-4.4.tar.xz
http://anduin.linuxfromscratch.org/sources/other/systemd/systemd-232.tar.xz
http://ftp.gnu.org/gnu/tar/tar-1.29.tar.xz
http://sourceforge.net/projects/tcl/files/Tcl/8.6.6/tcl-core8.6.6-src.tar.gz
http://ftp.gnu.org/gnu/texinfo/texinfo-6.3.tar.xz
http://www.iana.org/time-zones/repository/releases/tzdata2016j.tar.gz
https://www.kernel.org/pub/linux/utils/util-linux/v2.29/util-linux-2.29.1.tar.xz
ftp://ftp.vim.org/pub/vim/unix/vim-8.0.069.tar.bz2
http://cpan.metacpan.org/authors/id/T/TO/TODDR/XML-Parser-2.44.tar.gz
http://tukaani.org/xz/xz-5.2.3.tar.xz
http://zlib.net/zlib-1.2.11.tar.xz
http://www.linuxfromscratch.org/patches/lfs/8.0/bash-4.4-upstream_fixes-1.patch
http://www.linuxfromscratch.org/patches/lfs/8.0/bc-1.06.95-memory_leak-1.patch
http://www.linuxfromscratch.org/patches/lfs/8.0/bzip2-1.0.6-install_docs-1.patch
http://www.linuxfromscratch.org/patches/lfs/8.0/coreutils-8.26-i18n-1.patch
http://www.linuxfromscratch.org/patches/lfs/8.0/glibc-2.25-fhs-1.patch
http://www.linuxfromscratch.org/patches/lfs/8.0/kbd-2.0.4-backspace-1.patch

6. 执行下载

[root@localhost ~]# wget --input-file=wget-list --continue --directory-prefix=$LFS/sources

7. 查看以下在的软件源码及补丁

[root@localhost ~]# ls $LFS/sources
acl-2.2.52.src.tar.gz             expat-2.2.0.tar.bz2      inetutils-1.9.4.tar.xz       perl-5.24.1.tar.bz2
attr-2.4.47.src.tar.gz            expect5.45.tar.gz        intltool-0.51.0.tar.gz       pkg-config-0.29.1.tar.gz
autoconf-2.69.tar.xz              file-5.30.tar.gz         iproute2-4.9.0.tar.xz        procps-ng-3.3.12.tar.xz
automake-1.15.tar.xz              findutils-4.6.0.tar.gz   kbd-2.0.4-backspace-1.patch  psmisc-22.21.tar.gz
bash-4.4.tar.gz                   flex-2.6.3.tar.gz        kbd-2.0.4.tar.xz             readline-7.0.tar.gz
bash-4.4-upstream_fixes-1.patch   gawk-4.1.4.tar.xz        kmod-23.tar.xz               sed-4.4.tar.xz
bc-1.06.95-memory_leak-1.patch    gcc-6.3.0.tar.bz2        less-481.tar.gz              shadow-4.4.tar.xz
bc-1.06.95.tar.bz2                gdbm-1.12.tar.gz         libcap-2.25.tar.xz           systemd-232.tar.xz
binutils-2.27.tar.bz2             gettext-0.19.8.1.tar.xz  libpipeline-1.4.1.tar.gz     tar-1.29.tar.xz
bison-3.0.4.tar.xz                glibc-2.25-fhs-1.patch   libtool-2.4.6.tar.xz         tcl-core8.6.6-src.tar.gz
bzip2-1.0.6-install_docs-1.patch  glibc-2.25.tar.xz        linux-4.9.9.tar.xz           texinfo-6.3.tar.xz
bzip2-1.0.6.tar.gz                gmp-6.1.2.tar.xz         m4-1.4.18.tar.xz             tzdata2016j.tar.gz
check-0.11.0.tar.gz               gperf-3.0.4.tar.gz       make-4.2.1.tar.bz2           util-linux-2.29.1.tar.xz
coreutils-8.26-i18n-1.patch       grep-3.0.tar.xz          man-db-2.7.6.1.tar.xz        vim-8.0.069.tar.bz2
coreutils-8.26.tar.xz             groff-1.22.3.tar.gz      mpc-1.0.3.tar.gz             XML-Parser-2.44.tar.gz
dbus-1.10.14.tar.gz               grub-2.02~beta3.tar.xz   mpfr-3.1.5.tar.xz            xz-5.2.3.tar.xz
dejagnu-1.6.tar.gz                gzip-1.8.tar.xz          ncurses-6.0.tar.gz           zlib-1.2.11.tar.xz
diffutils-3.5.tar.xz              iana-etc-2.30.tar.bz2    patch-2.7.5.tar.xz

8. 创建tools目录软链接

[root@localhost ~]# ln -sv $LFS/tools /
‘/tools’ -> ‘/mnt/lfs/tools’

9. 创建LFS用户

创建用户

[root@localhost ~]# groupadd lfs
[root@localhost ~]# useradd -s /bin/bash -g lfs -m -k /dev/null lfs

配置权限

[root@localhost ~]# chown -v lfs $LFS/tools
changed ownership of ‘/mnt/lfs/tools’ from root to lfs
[root@localhost ~]# chown -v lfs $LFS/sources
changed ownership of ‘/mnt/lfs/sources’ from root to lfs

10. 切换到lfs用户

[root@localhost ~]# su lfs
bash-4.2$ whoami
lfs

11. 配置环境变量

bash-4.2$ cat > ~/.bash_profile << "EOF"
> exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
> EOF
bash-4.2$ cat > ~/.bashrc << "EOF"
> set +h
> umask 022
> 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

加载环境变量

bash-4.2$ source ~/.bash_profile
lfs:/root$ 

12.安装构建工具及依赖

yum install byacc gcc bzip2 bash bison coreutils diffutils findutils gawk gcc glibc grep glibc-headers gcc-c++  gzip kernel

总结

本文完成编译前的各项准备。

[Linux From Scratch 作一个自己的Linux操作系统发行版本]一、环境准备相关推荐

  1. linux php后门,Linux_一个初级的linux后门制作方法,众所周知,Linux的文件权限如: - phpStudy...

    一个初级的linux后门制作方法 众所周知,Linux的文件权限如: 777;666等,其实只要在相应的文件上加上UID的权限,就可以用到加权限人的身份去运行这个文件.所以我们只需要将bash复制出来 ...

  2. linux用xrandr只有一个屏幕,在Linux下,禁止某一个显示屏的输出

    今天接到了一个任务,实现显示屏的关和开 理了下思路: 1.需求:实现终端的开关屏,要求仅仅是终端的屏幕关掉了,但是系统仍旧在跑,可以用遥控器唤醒 2.方向: 2.1. 切断显示屏的电源,进入省电模式 ...

  3. linux剪切到另一个文件夹,linux下文件夹操作常见命令如创建、复制、剪切、重命名、清空和删除命令 实例说明...

    linux下文件夹操作常见命令如创建.复制.剪切.重命名.清空和删除命令 实例说明,在home目录下有wwwroot目录,wwwroot下有sinozzz目录,即/home/wwwroot/sinoz ...

  4. linux系统中扩展一个逻辑卷,Linux 创建及扩展逻辑卷

    标签:系统 实验01    创建逻辑卷 实验目标 从两块磁盘上各取10GB组成20GB的卷组 从卷组中划分一个16GB的逻辑卷 将此逻辑卷格式化并挂载到/mbox 实验步骤 一.为新添加的两块硬盘分区 ...

  5. 设置linux默认桌面,使用一个命令重置Linux桌面为默认设置

    前段时间,我们分享了一篇关于 Resetter 的文章 -- 这是一个有用的软件,可以在几分钟内将 Ubuntu 重置为出厂默认设置.使用 Resetter,任何人都可以轻松地将 Ubuntu 重置为 ...

  6. linux用光盘作yum源实验步骤,Linux使用系统光盘作为YUM源

    CentOS 使用方法 挂载光盘 Linux代码 # mkdir /media/cdrom # mount /dev/cdrom /media/cdrom yum源文件说明 在 /etc/yum.re ...

  7. linux给网卡添加一个ip地址,linux网络配置中如何给一块网卡添加多个IP地址

    汤向峰每日一题-2017年3月16日: linux网络配置中如何给一块网卡添加多个IP地址 linux系统给网卡配置VIP的方法常见有两种:别名IP.以及辅助IP ================== ...

  8. LFS(Linux From Scratch)构建过程全记录(一):准备工作

    前言   根据LFS文档,构建Linux系统.LFS版本:Linux From Scratch Version 7.9-systemd   首先了解一下该版本下LFS构建中的软件包和作用(摘自Linu ...

  9. Linux各个发行版本的选择

    Linux由于其"自由"和"开放"的特性,衍生出了数百种各具特色的发行版.所谓发行版,就是在Linux内核外包装一些软件,如我们常见的RedHat Linux. ...

最新文章

  1. 使用opencv训练cascade分类器进行目标检测
  2. 2021-07-27 详解TCP连接建立和释放的过程(三报文握手和四次挥手)
  3. Java-自定义注解
  4. 计算机毕业设计中用Java 实现系统权限控制
  5. 在Java中安全地将long转换为int
  6. python--- 之The program 'python' can be found in the following packages: * python-minimal * python3
  7. DBPN:Deep Back-Projection Networks For Super-Resolution
  8. 国标 计算机机房,国标相关知识:电子信息系统机房设计规范(GB50174-2008)
  9. java图形用户界面交互_java图形用户界面编程
  10. IDEA无法选择新安装字体
  11. ExtJs4 笔记(2) ExtJs对js基本语法扩展支持
  12. 小程序 滚动加载分页处理【亲测有效】
  13. 苹果电池显示维修_iPhone电池健康显示“维修”的原因和解决办法
  14. 口令破解(web安全入门07)
  15. 51单片机课设代做_微波炉控制系统设计
  16. Linux下 单网卡配置多个ip方法
  17. Vista 兼容软件列表
  18. 助力移动物联网开启高质量发展新征程,芯讯通获“2022年移动物联网先进企业”奖
  19. 复旦大学邱锡鹏:若优化顺利,MOSS三月底开源;库克或被踢出苹果董事会;华为云联合CSDN发布智能化编程助手Snap|极客头条...
  20. TCP协议-TCP中的定时器/计时器

热门文章

  1. Moto Z6 手机 联通GSM卡上网设置, 使用技巧及疑难问题解决
  2. OpenCV打开摄像头《大华摄像头》
  3. 串口通信协议简介—学习笔记
  4. WIN10 注册.dll regsvr32.exe错误 VC6添加插件
  5. Java实现O(nlogn)最长上升子序列
  6. cPanel里的 Addon Domain/Subdomains/Parked domain 区别
  7. 使用XSSFWork创建的xlsx后缀Excel文件无法打开
  8. 等待指示器(2) -- 网络等待指示器
  9. DHCP以及DHCP中继
  10. 【牛客刷题】上手用C语言写一个三子棋小游戏超详解哦(电脑优化)