[Linux From Scratch 作一个自己的Linux操作系统发行版本]一、环境准备
前言
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操作系统发行版本]一、环境准备相关推荐
- linux php后门,Linux_一个初级的linux后门制作方法,众所周知,Linux的文件权限如: - phpStudy...
一个初级的linux后门制作方法 众所周知,Linux的文件权限如: 777;666等,其实只要在相应的文件上加上UID的权限,就可以用到加权限人的身份去运行这个文件.所以我们只需要将bash复制出来 ...
- linux用xrandr只有一个屏幕,在Linux下,禁止某一个显示屏的输出
今天接到了一个任务,实现显示屏的关和开 理了下思路: 1.需求:实现终端的开关屏,要求仅仅是终端的屏幕关掉了,但是系统仍旧在跑,可以用遥控器唤醒 2.方向: 2.1. 切断显示屏的电源,进入省电模式 ...
- linux剪切到另一个文件夹,linux下文件夹操作常见命令如创建、复制、剪切、重命名、清空和删除命令 实例说明...
linux下文件夹操作常见命令如创建.复制.剪切.重命名.清空和删除命令 实例说明,在home目录下有wwwroot目录,wwwroot下有sinozzz目录,即/home/wwwroot/sinoz ...
- linux系统中扩展一个逻辑卷,Linux 创建及扩展逻辑卷
标签:系统 实验01 创建逻辑卷 实验目标 从两块磁盘上各取10GB组成20GB的卷组 从卷组中划分一个16GB的逻辑卷 将此逻辑卷格式化并挂载到/mbox 实验步骤 一.为新添加的两块硬盘分区 ...
- 设置linux默认桌面,使用一个命令重置Linux桌面为默认设置
前段时间,我们分享了一篇关于 Resetter 的文章 -- 这是一个有用的软件,可以在几分钟内将 Ubuntu 重置为出厂默认设置.使用 Resetter,任何人都可以轻松地将 Ubuntu 重置为 ...
- linux用光盘作yum源实验步骤,Linux使用系统光盘作为YUM源
CentOS 使用方法 挂载光盘 Linux代码 # mkdir /media/cdrom # mount /dev/cdrom /media/cdrom yum源文件说明 在 /etc/yum.re ...
- linux给网卡添加一个ip地址,linux网络配置中如何给一块网卡添加多个IP地址
汤向峰每日一题-2017年3月16日: linux网络配置中如何给一块网卡添加多个IP地址 linux系统给网卡配置VIP的方法常见有两种:别名IP.以及辅助IP ================== ...
- LFS(Linux From Scratch)构建过程全记录(一):准备工作
前言 根据LFS文档,构建Linux系统.LFS版本:Linux From Scratch Version 7.9-systemd 首先了解一下该版本下LFS构建中的软件包和作用(摘自Linu ...
- Linux各个发行版本的选择
Linux由于其"自由"和"开放"的特性,衍生出了数百种各具特色的发行版.所谓发行版,就是在Linux内核外包装一些软件,如我们常见的RedHat Linux. ...
最新文章
- 使用opencv训练cascade分类器进行目标检测
- 2021-07-27 详解TCP连接建立和释放的过程(三报文握手和四次挥手)
- Java-自定义注解
- 计算机毕业设计中用Java 实现系统权限控制
- 在Java中安全地将long转换为int
- python--- 之The program 'python' can be found in the following packages: * python-minimal * python3
- DBPN:Deep Back-Projection Networks For Super-Resolution
- 国标 计算机机房,国标相关知识:电子信息系统机房设计规范(GB50174-2008)
- java图形用户界面交互_java图形用户界面编程
- IDEA无法选择新安装字体
- ExtJs4 笔记(2) ExtJs对js基本语法扩展支持
- 小程序 滚动加载分页处理【亲测有效】
- 苹果电池显示维修_iPhone电池健康显示“维修”的原因和解决办法
- 口令破解(web安全入门07)
- 51单片机课设代做_微波炉控制系统设计
- Linux下 单网卡配置多个ip方法
- Vista 兼容软件列表
- 助力移动物联网开启高质量发展新征程,芯讯通获“2022年移动物联网先进企业”奖
- 复旦大学邱锡鹏:若优化顺利,MOSS三月底开源;库克或被踢出苹果董事会;华为云联合CSDN发布智能化编程助手Snap|极客头条...
- TCP协议-TCP中的定时器/计时器
热门文章
- Moto Z6 手机 联通GSM卡上网设置, 使用技巧及疑难问题解决
- OpenCV打开摄像头《大华摄像头》
- 串口通信协议简介—学习笔记
- WIN10 注册.dll regsvr32.exe错误 VC6添加插件
- Java实现O(nlogn)最长上升子序列
- cPanel里的 Addon Domain/Subdomains/Parked domain 区别
- 使用XSSFWork创建的xlsx后缀Excel文件无法打开
- 等待指示器(2) -- 网络等待指示器
- DHCP以及DHCP中继
- 【牛客刷题】上手用C语言写一个三子棋小游戏超详解哦(电脑优化)