一、环境准备

使用Debian平台,需做如下环境检查:

1、检查各个需要的工具及内核版本号,看看是否符合lfs7.7的列表要求

2、检查需要用到的库,一共有三个,gmp, mpfr和mpc

工具检查脚本如下:

#filename:check_env.sh

 
#/bin/sh
export LC_ALL=C# check for bash
bash --version | head -n1 | cut -d" " -f2-4
echo "/bin/sh -> `readlink -f /bin/sh`"
echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-
bison --version | head -n1# check for yacc
if [ -h /usr/bin/yacc ]; thenecho "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`";
elif [ -x /usr/bin/yacc ]; thenecho yacc is `/usr/bin/yacc --version | head -n1`
elseecho "yacc not found"
fi# check for other
bzip2 --version 2>&1 < /dev/null | head -n1 | cut -d" " -f1,6-
echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2
diff --version | head -n1
find --version | head -n1
gawk --version | head -n1
if [ -h /usr/bin/awk ]; thenecho "/usr/bin/awk -> `readlink -f /usr/bin/awk`";
elif [ -x /usr/bin/awk ]; thenecho yacc is `/usr/bin/awk --version | head -n1`
elseecho "awk not found"
figcc --version | head -n1
g++ --version | head -n1
ldd --version | head -n1 | cut -d" " -f2- # glibc version
grep --version | head -n1
gzip --version | head -n1
cat /proc/version
m4 --version | head -n1
make --version | head -n1
patch --version | head -n1
echo Perl `perl -V:version`
sed --version | head -n1
tar --version | head -n1
makeinfo --version | head -n1
xz --version | head -n1echo "main(){}" > dummy.c && g++ -o dummy dummy.c
if [ -x dummy ]; thenecho "g++ compilation OK";
elseecho "g++ compilation failed";
firm -f dummy.c dummy

若结果如下,则环境就绪

若出现“command not found”,则缺少工具,可执行如下命令进行安装(以安装gawk工具为例)

sudo aptitude install gawk

库检查脚本如下:

#filename:check_lib.sh
 
#!/bin/bashfor lib in lib{gmp,mpfr,mpc}.la; doecho $lib: $(if find /usr/lib* -name $lib | grep -q $lib; then:;elseecho not;fi) found
doneunset lib

结果显示,三个库目前都不具备

二、存储设备准备

LFS的编译需要单独有一块存储,条件不好的就单独划个分区,条件好的就再挂块硬盘,实在不行就新建个目录来做这件事好了,只不过这样是没法引导起来,只能chroot之后当编译环境用。

下面以VMware新建一块SATA硬盘,然后接入虚拟机,分区,挂载为例来描述这个过程。

点击“编辑虚拟机设置”,选择添加硬盘,如下图:

选择“SATA(A)”,点击“下一步”,如下图:

选择“创建新的虚拟磁盘”,点击“下一步”,如下图:

设置磁盘大小为:20G,然后选择“将虚拟磁盘存储为单个文件”,点击“下一步”,如下图:

点击“完成”,如下图:

点击“确定”,如下图:

启动虚拟机,执行如下命令,查看新的硬盘信息

ls -l /dev | grep sd

新的硬盘为sdb,如下图:

执行如下命令后,选择”New”来新建一个分区,如下图:

cfdisk /dev/sdb

选择[Primary],创建一个新的主分区,如下图:

提示Size (in MB),选择要创建的分区大小为:128,如下图:

选择[Beginning],在空闲空间的起始位置来添加一个分区,如下图:

选择[ Bootable ],回车,在上方新建的分区这一栏Flags字段会出现Boot字样,如下图:

方向键按向下,光标选中”Free Space”,建立交换分区。基本上都是重复刚才的步骤,只不过大小改成1024,不需要置Boot标识。

移动光标到[ Type ],更改文件系统类型,回车后进入类型选择菜单,编号默认输入就是82,也就是”Linux swap / Solaris”,直接回车即可

此时回到主菜单,可以看到第二个分区sdb2的”FS Type”一项改成了”Linux swap / Solaris”,如下图:

按方向键向下,选中Free Space,重复sdb1的创建步骤,类型选择[Logical],大小默认最大即可,不需要更改,如下图:

此时回到主菜单,可以看到Name栏会显示sdb5,如下图:

新的硬盘分区表建立完毕,需要写入硬盘了,横移光标到[ Write ],回车,如下图:

提示”Are you sure you want to write the partition table to disk? (yes or no):”,敲入“yes”并回车,如下图:

右移光标到[ Quit ]回车,退出cfdisk,如下图:

至此,分区工作完成,LFS需要的独立存储设备与分区准备完毕,如下图:

三、磁盘初始化与源码准备

下面需要格式化分区,步骤如下:

/dev/sdb1使用ext2,执行如下命令,如下图

mkfs -v -t ext2 /dev/sdb1

/dev/sdb2使用swap,执行如下命令,如下图

mkswap /dev/sdb2

/dev/sdb5使用ext4,执行如下命令,如下图

mkfs -v -t ext4 /dev/sdb5

执行如下命令,创建目录:/mnt/lfs

mkdir -pv /mnt/lfs

方便起见,把/mnt/lfs目录的属主改为当前用户,否则每次操作都要加sudo,执行如下命令

chown -R lenovo.sudo lfs/

把lfs工程的主要存储分区/dev/sdb5挂载到这个目录上

mount -v -t ext4 /dev/sdb5 /mnt/lfs

每次宿主系统重启之后,都需要重新export和mount,方便起见,执行如下命令,建立环境变量$LFS=/mnt/lfs

vi ~/.bashrc
#在文件尾添加如下内容
export LFS=/mnt/lfs

执行如下命令,使环境变量立即生效

source ~/.bashrc

至此我们就可以在$LFS上面来下载和编译我们所需的lfs组件了。

下面,新建用于存储源码的目录,并下载源码

mkdir $LFS/src
cd $LFS/src

wget http://www.haopingrui.cn/lfs.tar.gz 124e1eb0e52f176ab84c38118b4975e3

至此,分区和源码准备完成。

转载于:https://www.cnblogs.com/274914765qq/p/4413784.html

LFS(Linux From Scratch)学习相关推荐

  1. Welcome to Linux From Scratch!

    /***************************************************************************** Welcome to Linux From ...

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

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

  3. 《Linux From Scratch》第一部分:介绍 第一章:介绍-1.3. 更新日志

    这是 Linux From Scratch 手册的 7.7-systemd 版本,发布于2015年3月6日.如果距离这个时间已超过 6 个月,那么应该已经有更新和更好的版本了.要获取的话,请访问这个页 ...

  4. [Linux From Scratch 作一个自己的Linux操作系统发行版本]一、环境准备

    前言 1. 物理系统 2. VirtualBox 3. CentOS7.7 二.构建环境准备 1.挂载/mnt/lfs分区 2. 执行挂载指令 3. 设置$LFS环境变量 4. /mnt/lfs下创建 ...

  5. Linux第二周学习笔记(7)

    Linux第二周学习笔记(7) 2.13 文档查看cat_more_less_head_tail (1). cat命令 cat命令:用于查看一个文件的内容并将其显示在屏幕上 cat-A命令:显示所有的 ...

  6. Linux系统新手学习的11点建议

    随着Linux应用的扩展许多朋友开始接触Linux,根据学习Windwos的经验往往有一些茫然的感觉:不知从何处开始学起.这里介绍学习Linux的一些建议. 一.从基础开始:常常有些朋友在Linux论 ...

  7. Linux第二周学习笔记(11)

    Linux第二周学习笔记(11) 2.17 隐藏权限lsattr_chattr chattr命令:是设置吟唱隐藏权限的命令,更改Linux文件系统上的文件属性. 参数说明: A:表示文件或目录的ati ...

  8. linux系统运维费用,一般Linux运维学习的费用是多少?Linux学习

    随着IT 互联网技术的发展,Linux逐渐成为中高端服务器的主要操作系统,并且目前地位不可替代.Linux运维工程师是一位"复合型人才",他集成了网络.系统.数据库.开发和安全等工 ...

  9. 20165219 预备作业3 Linux安装及学习

    20165219 预备作业3 Linux安装及学习 安装虚拟机 在安装的过程中遇到了不少的问题,在同学的帮助下都得到了解决.比如在新建虚拟机的时候没有64位这个选项,后来知道需要开启虚拟化,然后是安装 ...

最新文章

  1. Data Mapper
  2. android项目中记录ListView滚动停止位置与设置显示位置
  3. Windows下Unity5x的下载
  4. Uipath 学习栏目基础教学:13、Uipath调用python代码
  5. 懒与馋的平衡:餐饮O2O市场广阔,发展不易
  6. python代码执行过程记录_这款神器,能把 Python 代码执行过程看地一清二楚
  7. Salesforce 为什么要收购 Slack?
  8. 基础选择器之id选择器(CSS、HTML)
  9. python对list处理
  10. sssp-springmvc+spring+spring-data-jpa问题总结
  11. LinkedIn首席数据科学家谈数据分析
  12. 支持Android 11安卓Flash播放器终极版源码方案2022(1:概叙)
  13. 什么是游戏引擎,什么是虚幻引擎(Unreal Engin 4)?
  14. 第24篇 研究WebRTC官网之生成工程文件
  15. region proposal
  16. PHP梯度计算金额,数字图像的梯度概念以及计算(the gradient of the image)
  17. java和javaweb的区别_java和javaweb有什么关系吗?它们之间的区别是什么?
  18. Unity的Bounds(包围盒)简记
  19. 崩溃,80后千万富翁名单
  20. 小梅哥FPGA学习笔记——开发流程及仿真示例

热门文章

  1. 深度学习之自编码器(4)变分自编码器
  2. 数学--博弈论--巴什博奕(Bash Game)
  3. C++--浅谈开发系统的经验
  4. FZU 1894 志愿者选拔
  5. java kafka 多线程消费
  6. js 实现 table 行上移 (数据库)
  7. 【Python-随机旋转】图像随机旋转及坐标进行旋转原理
  8. 多元线性回归中多重共线性_多重共线性如何在线性回归中成为问题。
  9. C语言高级编程:二维数组、指针的指针、数组指针、指针数组
  10. 看新排美国话剧《哗变》