您的位置:首页 > 运维架构 > Linux

LFS(Linux From Scratch)学习

2015-04-10 10:07 621 查看
一、环境准备

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

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

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

工具检查脚本如下:

#filename:check_env.sh
#/bin/sh
exportLC_ALL=C

#checkforbash
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

#checkforyacc
if[-h/usr/bin/yacc];then
echo"/usr/bin/yacc->`readlink-f/usr/bin/yacc`";
elif[-x/usr/bin/yacc];then
echoyaccis`/usr/bin/yacc--version|head-n1`
else
echo"yaccnotfound"
fi

#checkforother
bzip2--version2>&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
echoyaccis`/usr/bin/awk--version|head-n1`
else
echo"awknotfound"
fi

gcc--version|head-n1
g++--version|head-n1
ldd--version|head-n1|cut-d""-f2-#glibcversion
grep--version|head-n1
gzip--version|head-n1
cat/proc/version
m4--version|head-n1
make--version|head-n1
patch--version|head-n1
echoPerl`perl-V:version`
sed--version|head-n1
tar--version|head-n1
makeinfo--version|head-n1
xz--version|head-n1

echo"main(){}">dummy.c&&g++-odummydummy.c
if[-xdummy];then
echo"g++compilationOK";
else
echo"g++compilationfailed";
fi

rm-fdummy.cdummy

若结果如下,则环境就绪





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

sudoaptitudeinstallgawk


库检查脚本如下:

#filename:check_lib.sh
#!/bin/bash

forlibinlib{gmp,mpfr,mpc}.la;do
echo$lib:$(
iffind/usr/lib*-name$lib|grep-q$lib;then
:;
else
echonot;
fi
)found
done

unsetlib





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

二、存储设备准备

LFS的编译需要单独有一块存储,条件不好的就单独划个分区,条件好的就再挂块硬盘,实在不行就新建个目录来做这件事好了,只不过这样是没法引导起来,只能chroot之后当编译环境用。
下面以VMware新建一块SATA硬盘,然后接入虚拟机,分区,挂载为例来描述这个过程。
点击“编辑虚拟机设置”,选择添加硬盘,如下图:




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





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





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





点击“完成”,如下图:





点击“确定”,如下图:





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

ls-l/dev|grepsd

新的硬盘为sdb,如下图:





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

cfdisk/dev/sdb





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





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





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





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





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



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



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



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



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



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



提示”Areyousureyouwanttowritethepartitiontabletodisk?(yesorno):”,敲入“yes”并回车,如下图:





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



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




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

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

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

mkfs-v-text2/dev/sdb1





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

mkswap/dev/sdb2





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

mkfs-v-text4/dev/sdb5





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

mkdir-pv/mnt/lfs





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

chown-Rlenovo.sudolfs/





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

mount-v-text4/dev/sdb5/mnt/lfs





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

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

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

source~/.bashrc

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

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

mkdir$LFS/src
cd$LFS/src

wgethttp://www.haopingrui.cn/lfs.tar.gz124e1eb0e52f176ab84c38118b4975e3





至此,分区和源码准备完成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: