LFS(Linux From Scratch)学习

一、环境准备

使用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

若结果如下,则环境就绪

image

若出现“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

image

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

 

二、存储设备准备

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

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

 

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

image

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

image

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

image

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

image

点击“完成”,如下图:

image

点击“确定”,如下图:

image

 

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

ls -l /dev | grep sd

新的硬盘为sdb,如下图:

image

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

cfdisk /dev/sdb

image

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

image

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

image

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

image

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

image

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

image

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

image

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

image

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

image

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

image

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

image

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

image

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

image

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

image

 

 

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

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

 

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

mkfs -v -t ext2 /dev/sdb1

image

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

mkswap /dev/sdb2

image

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

mkfs -v -t ext4 /dev/sdb5

image

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

mkdir -pv /mnt/lfs

image

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

chown -R lenovo.sudo lfs/

image

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

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

image

每次宿主系统重启之后,都需要重新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

image

 

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257450.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LaTeX 安装配置 OSX

LaTeX 安装配置 OSX官方网站&#xff1a;http://www.latex-project.orghttp://www.tug.org/mactex/http://pages.uoregon.edu/koch/BasicTeX.pdf完整的Tex超过2G&#xff0c;一般用户没必要&#xff0c;可以先安装BasicTeX&#xff0c;当有需要时include必要的库即可1.安装Basi…

告警系统邮件引擎

2019独角兽企业重金招聘Python工程师标准>>> 20.23-20.25 告警系统邮件引擎 创建发邮件的脚本——mail.py [rootlocalhost mail]# pwd /usr/local/sbin/mon/mail[rootlocalhost mail]# vim mail.py #!/usr/bin/env python #-*- coding: UTF-8 -*- import os,sys rel…

【HTTP 2】简介(Introduction)

前情提要 在上一篇文章《【HTTP 2.0】 序言》中&#xff0c;我们简要介绍了 HTTP 2 协议的概要和协议状态。 在本篇文章中&#xff0c;我们将会了解到 HTTP 2 协议简介&#xff08;Introduction&#xff09;部分的内容。 简介&#xff08;Introduction&#xff09; 超文本传输协…

SSD硬盘 全盘安全擦除

此文From http://ssd.zol.com.cn/575/5753057.html 在SSD固态硬盘的使用过程中&#xff0c;部分用户可能会碰到计算机意外掉电或死机并强行断电后&#xff0c;系统出现异常&#xff0c;扫描SSD后发现坏块&#xff0c;然后一着急一跺脚甚至想返厂维修。 其实掉电后固态硬盘出现坏…

2017敏捷沙滩大会:完美软件,测量持续交付,以及探索未来

在英国康沃尔郡举行的2017敏捷沙滩大会上&#xff0c;数百名演讲者和参与者共聚一堂&#xff0c;探讨敏捷和后敏捷领域软件开发方法有哪些最新进展。本次大会最后一个下午的要点包括&#xff1a;交付团队可以通过拥抱精益、迭代和持续的部署方法更快速地实现业务价值&#xff1…

做fzu oj 1045 做减法学到的sprintf()函数

题目 做题一直输不出答案&#xff0c;于是就上网去百度了这题的解题&#xff0c;发现解答十分的简短&#xff0c;而且其中我看见了平时没见过的函数&#xff0c;sprintf()。 于是就百度sprintf()的使用。 如下&#xff1a; 函数功能&#xff1a;把格式化的数据写入某个字符串 函…

动态内存分配及变量存储类别(第二部分)

5. C语言变量的存储类别和生存期 我们知道&#xff0c;变量是有数据类型的&#xff0c;用以说明它占用多大的内存空间&#xff0c;可以进行什么样的操作。除了数据类型&#xff0c;变量还有一个属性&#xff0c;称为“存储类别”。存储类别就是数据在内存中的存放区域。一个正在…

oracle的em能干什么,转载 解决Oracle的EM登录

转载 解决Oracle的EM登录(2011-03-13 20:53:39)标签&#xff1a;杂谈这几天解决了EM无法登录的问题&#xff0c;顺便也把j数据库程序中常出现的ORA_12518错误解决了&#xff0c;有必要总结一下&#xff0c;我最初遇到的情况是这样的&#xff1a;1. 编写java程序访问oracle数据库…

python 回溯法 子集树模板 系列 —— 1、8 皇后问题

问题 88格的国际象棋上摆放八个皇后&#xff0c;使其不能互相攻击&#xff0c;即任意两个皇后都不能处于同一行、同一列或同一斜线上&#xff0c;问有多少种摆法。 分析 为了简化问题&#xff0c;考虑到8个皇后不同行&#xff0c;则每一行放置一个皇后&#xff0c;每一行的皇后…

Android实用代码七段(五)

前言 每次分享意味着每次都有进步&#xff0c;本系列以实用为主&#xff0c;欢迎和我分享和推荐好用的代码段~~声明欢迎转载&#xff0c;但请保留文章原始出处:) 博客园&#xff1a;http://www.cnblogs.com农民伯伯&#xff1a; http://over140.cnblogs.com 正文 1、展开、收起…

ceph Luminous版手动安装零散记录

1.安装必要的依赖包&#xff0c;关防火墙&#xff0c;向/etc/hosts内添加域名等 2.安装ceph 配置yum源 (如果嫌慢&#xff0c;可以配置cachedir/home/yum/$basearch/$releasever和keepcache1两个参数&#xff0c;在第一次安装时将安装包下载到本地做成yum源&#xff0c;给后面的…

C#最简单最完整的webservice实例

我做java&#xff0c;但最近接触crm所以必须研究一下C#中的webservice以备后用&#xff0c;其实就是个新手&#xff0c;哈哈&#xff0c;这个实例是我在参考了网上诸多不完整的例子的情况下&#xff0c;自己摸索完成的。期间遇到过一系列的棘手的问题&#xff0c;经过个人努力终…

51 Nod 1007 正整数分组【类01背包】

1007 正整数分组 基准时间限制&#xff1a;1 秒 空间限制&#xff1a;131072 KB 分值: 10难度&#xff1a;2级算法题将一堆正整数分为2组&#xff0c;要求2组的和相差最小。例如&#xff1a;1 2 3 4 5&#xff0c;将1 2 4分为1组&#xff0c;3 5分为1组&#xff0c;两组和相差1…

iOS富文本

iOS富文本 背景&#xff1a;前些天突然想做一个笔记本功能&#xff0c;一开始&#xff0c;觉得挺简单的呀&#xff0c;一个UITextView,网络缓存也不干了&#xff0c;直接本地NSUserDefault存储&#xff0c;然后完事了&#xff0c;美工&#xff0c;弄几张好看的图片&#xff0c;…

SQL编程题-----1

首先&#xff0c;题目给出这个数据库表格 要求写出SQL语句使之变成如下表格 解决方法&#xff1a; SELECT t1.Rq,t1.胜,t2.负 FROM //t1和t2是自己命的新表格的名字 (SELECT Rq,COUNT(*) AS 胜 //As 胜意思是输出结果时列名为”胜“FROM testtableWHERE Sh…

六角填数---第五届蓝桥杯

/** 如图【1.png】所看到的六角形中&#xff0c;填入1~12的数字。使得每条直线上的数字之和都同样。图中&#xff0c;已经替你填好了3个数字&#xff0c;请你计算星号位置所代表的数字是多少&#xff1f;请通过浏览器提交答案。不要填写多余的内容。*/ public class 六角填数 {…

linux命令编写,编写简单的linux命令

8种机械键盘轴体对比本人程序员&#xff0c;要买一个写代码的键盘&#xff0c;请问红轴和茶轴怎么选&#xff1f;又到了周四分享环节&#xff0c;鉴于最近在看linux编程实践&#xff0c;所以就的讲一下如何编写一个简单的who命令。PPTManual PageManual Page 也就是大家常用的m…

linux不登录用户就关机,Linux无法被远程登录;用户的关机, 重启,注销,新增用户,删除用户...

不能使用xshell连接到我的Linux服务器通过再windows的cmd中ping了我的Linux地址&#xff0c;发现网络不通。查看百度发现是因为网络没有选桥接模式&#xff0c;然后选完桥接模式告诉我&#xff1a;然后发现没有虚拟网卡&#xff0c;原因是之前装过vm没有卸载干净&#xff0c;使…

程序员的国庆节如何安排,你想好了吗?

2019独角兽企业重金招聘Python工程师标准>>> 就要国庆放假了&#xff0c;国庆节是旅游的黄金期&#xff0c;同时也是我们买买买的幸福期&#xff0c;作为一名技术开发&#xff0c;除了要安排假期旅游行程外也不要忘记提升自己&#xff0c;准备好学习计划&#xff0c…

微服务实战(一):微服务架构的优势与不足

本文讲的是微服务实战&#xff08;一&#xff09;&#xff1a;微服务架构的优势与不足&#xff0c;【编者的话】本文来自Nginx官方博客&#xff0c;是微服务系列文章的第一篇&#xff0c;主要探讨了传统的单体式应用的不足&#xff0c;以及微服务架构的优势与挑战。正如作者所说…