❏ 站外平台:

重走LFS之路:(一) 环境准备

作者: @郝平睿

| 2015-04-02 12:34   评论: 7 收藏: 10    

自从大学二年级的寒假没日没夜地用了整整两个月的时间编译了LFS之后,就再也没做过。这两天在Linux中国的微信公众号上看到LFS都升级到7.7了,故而觉得是时候重新再编译一遍的时候了。

诚然LFS是Linux学习和深入理解的终南捷径,每个真心希望了解Linux的人都建议去做一遍LFS,因为每做一次就会获得新的知识,对Linux有更多更深入的理解。

(题图来自: techradar.com)

貌似LFS官网(http://www.linuxfromscratch.org)不再提供LiveCD了,好吧好吧,那我就从虚拟机装个宿主系统,依然是Debian。说句题外话,对于自己用得惯的OS,真心应该最小安装到虚拟机一份,再有需要的时候,直接复制一下改个名,省心又省力。

此时我把Debian更新到了最新,并且为了使用显卡驱动让它能够在我的显示器上全屏显示,就用tasksel装上了Debian desktop environment。

1-Tasksel-DebianDesktopEnv

我在自己的Home目录中新建了一个目录lfs,用于整个工程的存储。这时候我在~/lfs/中新建了一个checkscript目录,用于存储事前的环境检查脚本。

我们来编写第一个检查脚本,这个脚本会检查各个需要的工具及内核版本号,看看是否符合lfs7.7的列表要求,如果没有,会报not found。

cd ~/lfs/checkscript

vi check_env.sh

 

#/bin/sh
export LC_ALL=C

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

if [ -h /usr/bin/yacc ]; then
echo “/usr/bin/yacc -> `readlink -f /usr/bin/yacc`”;
elif [ -x /usr/bin/yacc ]; then
echo yacc is `/usr/bin/yacc –version | head -n1`
else
echo “yacc not found”
fi

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 ]; then
echo “/usr/bin/awk -> `readlink -f /usr/bin/awk`”;
elif [ -x /usr/bin/awk ]; then
echo yacc is `/usr/bin/awk –version | head -n1`
else
echo “awk not found”
fi

gcc –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 -n1

echo ‘main(){}’ > dummy.c && g++ -o dummy dummy.c
if [ -x dummy ]; then
echo “g++ compilation OK”;
else
echo “g++ compilation failed”;
fi
rm -f dummy.c dummy

2-CheckScript-check_env.sh

此时的脚本是不能直接执行的,需要加执行权限,也就是x权限

chmod +x check_env.sh

现在可以执行脚本了

3-CheckScript-check_env.run

从检查结果中可以看到,我的Debian太干净了,缺了好几样东西,bison gawk g++,所以我用aptitude装上他们就好了。

4-CheckScript-install

5-CheckScript-check_env-OK

此时环境检查没有报错信息了,需要的工具也已经正确显示了版本号。

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

cd ~/lfs/checkscript

vi check_lib.sh

 

#!/bin/bash
for lib in lib{gmp,mpfr,mpc}.la; do
echo $lib: $(
if find /usr/lib* -name $lib | grep -q $lib; then
:;
else
echo not;
fi
) found
done
unset lib

6-CheckScript-check_lib.sh

7-CheckScript-check_lib.run

从检查结果来看,三个库目前都不具备,不过没关系,现在还用不到这三个货,先把脚本写好。

作者简介:

郝平睿 – Pure How

京东集团安全应急响应中心 安全研发工程师

非著名相声演员

过了期的旧黑客

能写出Segmentation right的半调子程序员

常年游走于曲艺、象棋、园艺、饲养、安全、研发等一系列没正事的边缘

E-mail :  haopingrui@haopingrui.cn 



最新评论

江水滔滔 [Firefox 34.0|GNU/Linux] 2016-12-14 11:20 3 回复
好帅的感脚,哈哈
来自 - 四川成都西南交通大学 的 Chrome/Windows 用户 2015-04-02 17:41 8 回复
感觉没有一定内核基础即是能把LFS做一遍,也不知道里面的每个组件是干啥的。至少我是这个感觉。
[1]
绿色圣光 发表于 2015-04-02 13:03 的评论:
作者挺逗的。哈哈!
[2]
来自 - 安徽合肥 的 Chrome/Windows 用户 发表于 2015-04-02 13:50 的评论:
你俩长得有点像啊...
[3]
绿色圣光 发表于 2015-04-02 14:27 的评论:
我哪有那么帅?
远古的人类甲 2015-04-02 15:13 3 回复
表情很像的~
[1]
绿色圣光 发表于 2015-04-02 13:03 的评论:
作者挺逗的。哈哈!
PureHow 2015-04-02 13:11 11 回复
是吧,我也觉的我挺逗的。说相声的要是不逗那就太逗了

返回顶部

分享到微信

打开微信,点击顶部的“╋”,
使用“扫一扫”将网页分享至微信。