LFS(Linux From Scratch)学习
2015-04-10 10:07
621 查看
一、环境准备
使用Debian平台,需做如下环境检查:
1、检查各个需要的工具及内核版本号,看看是否符合lfs7.7的列表要求
2、检查需要用到的库,一共有三个,gmp,mpfr和mpc
工具检查脚本如下:
#filename:check_env.sh
若结果如下,则环境就绪
若出现“commandnotfound”,则缺少工具,可执行如下命令进行安装(以安装gawk工具为例)
库检查脚本如下:
结果显示,三个库目前都不具备
二、存储设备准备
LFS的编译需要单独有一块存储,条件不好的就单独划个分区,条件好的就再挂块硬盘,实在不行就新建个目录来做这件事好了,只不过这样是没法引导起来,只能chroot之后当编译环境用。
下面以VMware新建一块SATA硬盘,然后接入虚拟机,分区,挂载为例来描述这个过程。
点击“编辑虚拟机设置”,选择添加硬盘,如下图:
选择“SATA(A)”,点击“下一步”,如下图:
选择“创建新的虚拟磁盘”,点击“下一步”,如下图:
设置磁盘大小为:20G,然后选择“将虚拟磁盘存储为单个文件”,点击“下一步”,如下图:
点击“完成”,如下图:
点击“确定”,如下图:
启动虚拟机,执行如下命令,查看新的硬盘信息
新的硬盘为sdb,如下图:
执行如下命令后,选择”New”来新建一个分区,如下图:
选择[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,执行如下命令,如下图
/dev/sdb2使用swap,执行如下命令,如下图
/dev/sdb5使用ext4,执行如下命令,如下图
执行如下命令,创建目录:/mnt/lfs
方便起见,把/mnt/lfs目录的属主改为当前用户,否则每次操作都要加sudo,执行如下命令
把lfs工程的主要存储分区/dev/sdb5挂载到这个目录上
每次宿主系统重启之后,都需要重新export和mount,方便起见,执行如下命令,建立环境变量$LFS=/mnt/lfs
执行如下命令,使环境变量立即生效
至此我们就可以在$LFS上面来下载和编译我们所需的lfs组件了。
下面,新建用于存储源码的目录,并下载源码
wgethttp://www.haopingrui.cn/lfs.tar.gz124e1eb0e52f176ab84c38118b4975e3
至此,分区和源码准备完成。
使用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之后当编译环境用。
下面以
点击“编辑虚拟机设置”,选择添加硬盘,如下图:
选择“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
wget
至此,分区和源码准备完成。
相关文章推荐
- LFS-Linux From Scratch学习笔记——LFS系统准备
- LFS-Linux From Scratch学习笔记——LFS工具编译命令说明(第二次编译)
- Linux From Scratch--LFS从头开始学习linux
- LFS-Linux From Scratch学习笔记——构建LFS系统
- LFS-Linux From Scratch学习笔记——简介与准备工作
- LFS(Linux From Scratch)学习
- 新手玩Linux ---- 从Linux From Scratch开始学习Linux (四)
- 制作LFS(LinuxFromScratch),并u盘启动
- LFS--------Linux From Scratch
- 新手玩Linux ---- 从Linux From Scratch开始学习linux(一)
- LFS Linux From Scratch 笔记(经验非教程)
- [学习]Linux From Scratch
- LFS(Linux From Scratch) 6.1.1 6.2 6.3 中英文正式版
- 使用LFS(Linux From Scratch),定制自己的Linux系统
- LFS(Linux from Scratch)使用
- Linux From Scratch(从零开始构建Linux系统,简称LFS)(一)
- LFS——Linux from Scratch && 源码编译和rpm编译比较
- Linux From Scratch(从零开始构建Linux系统,简称LFS)(三)
- 说说Linux From Scratch (LFS)
- lfs--Linux From Scratch