从LFS到BLFS轻松上手.docx
《从LFS到BLFS轻松上手.docx》由会员分享,可在线阅读,更多相关《从LFS到BLFS轻松上手.docx(17页珍藏版)》请在冰豆网上搜索。
从LFS到BLFS轻松上手
从LFS到BLFS轻松上手
——关于编译LFS/BLFS的可行性报告
青铜镜
严正声明:
本贴可能含有危险成份,未满18岁的网友,为了您的身体健康、思想健康和机器健康着想,请勿阅读!
严重警告:
如果您决定继续阅读下去,那么表明您愿意承担因阅读本贴后所产生的不可预知的后果!
版权声明:
本水贴部分为唐师父口述,部分引自BLFS官方文档,青铜镜执笔!
一般人我不告诉他!
引言
LFS/BLFS是一个浩大的软件编译安装工程,耗时耗精力。
而且,有好多朋友辛辛苦苦花了几天甚至是几个星期的时间编译安装LFS,到了结束时还不一定能够顺利启动系统,最后只好放弃,实在是让人不爽。
本贴的目的,就是让喜欢LFS的朋友能够简单、快速、有效地完成从LFS到BLFS的艰巨任务,让LINUX在机器上流畅地运行起来。
唐师父说:
世界是美好的,生命是珍贵的!
不要在折腾电脑上消耗太多的精力!
在电脑面前呆得太久了,这样不好!
电脑只是一种工具,而不要把它当成玩具!
这样妈妈会不放心的!
请问:
你妈贵姓?
本水贴共分三集,即上集、下集和续集。
唐师父说:
青铜镜,你这样写贴,难道就不能一个就写完?
这样写贴,你还有时间晒衣服吗?
青铜镜答:
根据内容不同分为三集来写,主要是为了方便查阅。
上集主要是介绍编译安装LFS,下集主要是介绍BLFS,编译方向是KDE桌面。
续集则是对编译KDE桌面多媒体功能的补充介绍。
再说了,人家琼瑶老太太写《还珠格格》,都连续写了三部,俺为何就不能写三集?
唐师父说:
打雷啦,下雨收衣服啊!
小平同志说过:
不管黑猫白猫,抓得到老鼠的就是好猫。
青铜镜模仿着说:
不管用啥方法,能够装上LFS/BLFS的就是管用的方法!
唐师父读易经:
乾以易知,坤以简能。
易则易知,简则易从。
易知则有亲,易从则有功。
有亲则可久,有功则可大。
可久则贤人之德,可大则贤人之业。
易简,而天下之理得矣;天下之理得,而成位乎其中矣。
哈哈哈!
上集轻松搞定LFS
第一章启动
到www.linuxfromscratch.org下载LiveCD,刻成光盘。
俺青铜镜当时下载的LiveCD的版本号是6.2-1。
不同版本号的LiveCD是有区别的。
请各位看官注意!
将LFS的LiveCD放将光驱,从光驱启动,将会看到以下按系列号顺序出现的步骤:
01.01
boot:
按F1将会出现帮助画面。
可以设置显示屏的显示配置:
引用:
795=1280*1024*24
794=1280*1024*16
792=1024*768*24
791=1024*768*16
789=800*600*24
788=800*600*16
可以在boot后输入
linuxvga=792或是其他数字以设置屏幕显示的配置。
也可以输入
引用:
TZ=Asia/Shanghai
设置时区。
01.02
ConfigureSystemClock
配置系统时钟
02.01Asia/Shanghai
02.02localtime
01.03
Regionalsetting
Chooseyourlocale
中文有以下各项:
引用:
03.01ChineseTraditionalBIG5
03.02ChineseTraditionalUTF8
03.03ChineseTraditionalEUC-TW
03.04ChineseSimplifiedGB2312
03.05ChineseSimplifiedGB18030
03.06ChineseSimplifiedGBK
03.07ChineseSimplifiedUTF-8
俺青铜镜选的是ChineseSimplifiedUTF-8这一项。
这样,当LiveCD启动startx以后,X的界面就是中文的,很清爽啊!
01.04
Configrm/editSetting
这里显示默认的自动配置是:
引用:
locale:
zh_CN.UTF8
Consolekeymap:
defkeymap
Consolefont:
default8*16
autoconvertedfromcharset:
Xkeymap:
us
01.05
PressEntertoactivatethisvirtualconsole
出现以上提示时,按回车进入控制台。
至此,LiveCD算是正式启动完成了。
01.06
进入控制台以后,先对硬盘进行分区,输入cfdisk命令进行分区。
具体的分区方法很简单,这里就省了。
以下是我的分区:
引用:
NamePartTypeFSTypeSize(MB)
hda1Primarylinuxext33960.95
hda2Primarylinuxswap/solaris403.04
01.07
格式化分区:
mke2fs-jv/dev/hda1(这是俺的硬盘分区设备号,俺只分一个区,后面fstab文件要用到!
)
格式化交换分区,同时启动它:
引用:
mkswap/dev/hda2
swapon/dev/hda2
01.08
启动X,进入的是XFce桌面管理器:
startx
01.09
Xfce的下面是控制台,控制台有“终端防真程序”,点击一下,启动它。
还有一部手册,图标是一个救生圈。
打开手册后,将地址指到:
//usr/share/LFS-BOOK-6.2-HTML找到indel.html,打开LFS手册。
这样,你就可以一边看着手册,一边输入命令了。
哈哈哈。
青铜镜的意见和建议:
一般情况下,如果命令相对比较短而且容易记住,推荐用手工输入;如果命令比较长而且复杂,甚至是容易出错的,建议用复制的方法输入命令!
要不到了最后系统收工时,因为其中的命令出错而让人前功尽弃,那才是让人不爽!
比如下面这条命令:
引用:
GCC_INCLUDEDIR=`dirname$(gcc-print-libgcc-file-name)`/include&&
find${GCC_INCLUDEDIR}/*-maxdepth0-xtyped-execrm-rvf'{}'\;&&
rm-vf`grep-l"DONOTEDITTHISFILE"${GCC_INCLUDEDIR}/*`&&
unsetGCC_INCLUDEDIR
飞豹大侠的作法是,不管命令长短,一般都是手工输入……太长的,用脚工,据说是佛山无影脚。
哈哈哈。
对于飞豹大侠过于个性化或是偏执的行为,青铜镜的看法是:
不支持、不赞成、不提倡、不反对、不关注。
反正是萝卜青菜,各有所爱嘛,更何况LFS是个性化很强的东西,飞豹大侠爱咋折腾,我们只管看热闹就是了。
没事还可以冲他泼冷水,恶搞一下下也好。
据唐师父所掌握的可靠消息,近来江湖人才紧缺啊!
为了缓解江湖人才紧缺的问题,飞豹大侠作出了一个伟大的、具有划时代意义的决定:
他准备要出书了!
此乃青铜镜的独家新闻!
希望广大LINUX粉丝支持飞豹大侠具有里程碑意义的决定!
有部戏叫做《拿什么来拯救你,我的爱人》,青铜镜想来想去,正确的答案是:
钱!
当然是得拿钱!
我们要支持飞豹大侠,当然得拿出点钱意来呀!
为此,青铜镜决定赞助飞豹大侠人民币一块钱,一块钱可以买一个葱油大饼,当飞豹大侠写书到半夜时,肚子饿了,可以买一个葱油大饼吃!
当然,要是飞豹大侠拿青铜镜赞助的一块钱去买一个鸡蛋的话,那样的话前景就更加美好了:
鸡蛋里孵出小鸡,小鸡又生下一堆鸡蛋,又孵出一群小鸡,子子孙孙生生不息,飞豹大侠就可以开个养鸡场了。
呵呵……还有,江湖传闻天花大侠在修炼《葵花宝典2007》,飞豹大侠您老人家得赶紧写书稿呀,要不等你的书出来时,天花大侠的武功早炼好了,那时天花大侠就可以千秋万载,一统江湖了……
01.10
转到“终端防真程序”,开始LFS的制作历程。
剩下的工作,如果你是新手或者是比较懒,只要将手册中的命令选中,然后转到“终端防真程序”里面粘贴、回车就行了。
第二章配置
青铜镜下载的LiveCD是6.2-1版本的,LiveCD中的jhalfs是1.0,这个jhalfs-1.0比较爽啊,只要稍做配置一下,就可以让电脑自动给俺们编译LFS了,实在是方便呀!
当然,也有人反对说,我们做LFS的目的就是学习,还是手工输入一条一条命令比较好。
其实青铜镜在前面说过了,俺想简单、快速、有效地完成从LFS到BLFS的艰巨任务,俺要学习LFS,俺已将LFS的手册打印出来了,拿在手上,天天都可以拜读,当然啦,俺这也是一种学习方法,你要一条一条命令输入,青铜镜坚决不拦着你,还在精神上支持你哦!
唐师父说:
我佛慈悲!
大伙要爱惜身体呀!
02.01
创建分区好了以后挂载目录
引用:
exportLFS=/mnt/lfs
mkdir-pv$LFS
mount-v-text3/dev/hda1$LFS(各位看官,请注意自己的分区设备号)
02.02
配置jhalfs文件。
点开“终端防真程序”,当前的目录就是root,里面就有jhalfs-1.0这个文件夹,先进入jhalfs-1.0这目录在里面编辑配置文件。
02.02.01
修改LFS/config,输入命令:
cdjhalfs-1.0
viLFS/config
下面是LFS/config文件的全部内容及编辑说明:
引用:
####
#
#ConfigurationfilefortheLFSmodule
#
#$Id:
config28222006-07-1610:
06:
03Zmanuel$
#
#####
#---Locationoffstabfile(ifempty,atemplateiscreated)
FSTAB=(注:
留空!
我们也可以先将fstab写好以后,放到指定位置并在这里填上fstab的路径。
)
#---Fullyqualifiedpathtoakernelconfigfile
#IfnoconfigfileisspecifiedthekernelisNOTcompiled
CONFIG=(注:
留空!
我们也可以先行将编译内核的.config放到指定位置并在这里填上路径。
)
#Getthekernelpackageandpatchesevenifnoconfigutationfile
#hasbeensupplied?
0(no)/1(yes)
GETKERNEL=1(注:
修改这里,将原来的0改为1)
#---Book'ssourcesdirectory
#Ifyouhavepreviouslycheckedoutthebookfromtherepository
BOOK=/usr/share/LFS-BOOK-6.2-XML(注:
这里原来是空的,将手册的路径写到这里!
)
#====INTERNALVARIABLES====
#Don'tedititunlessyouknowwhatyouaredoing
#---Extrafilesthatneedbecopiedto$JHALFSDIR
FILES=""
#---Defaultstylesheet
XSL=lfs.xsl
#---Bookversion
LFSVRS=development
TREE=trunk/BOOK
#---Nameofthemakefile
MKFILE=$JHALFSDIR/Makefile
修改好上面的配置以后,保存退出。
(唐师父说:
按esc键,接着输入冒号:
,在冒号后面输入wq,回车退去。
)
02.02.02
修改common/config,输入命令:
vicommon/config
下面是common/config文件的全部内容及编辑说明:
引用:
#####
#
#commonconfigurationfile
#
#$Id:
config27992006-06-2023:
43:
07Zgeorgeb$
#####
declare-rSVN="svn:
//svn.linuxfromscratch.org"
declare-rLOG=000-masterscript.log
#---Mountpointforthebuild
BUILDDIR=/mnt/lfs(注:
这里原来是build_dir,改为lfs。
)
#CreateSBUanddiskusagereport0(no)/1(yes)
#NOTE:
requirestohavebcinstalledonthehost
REPORT=1
#===Gettingpackages===
#FileswillberetrievedfromthelocalarchiveSRC_ARCHIVE
#(ifdefined)orthe'netandwillbestoredin$BUILDDIR/sources
#---Downloadthesourcepackages0(no)/1(yes)
GETPKG=0
#---Thelocalrepositoryforpackages/file
#UsedonlyifGETPKG=1
#Anymissingfilewillbedownloadedandarchivedhere,
#iftheuserhastherightpriviledges.
SRC_ARCHIVE=$SRC_ARCHIVE
#---Serverusedifthefileisn'tfoundinSRC_ARCHIVE.
#Asalastresort,thefilewilldowloadedfromupstream,ifpossible.
SERVER=ftp:
//ftp.lfs-
#===Buildoptions===
#---Automaticallyrunthemakefileonceithasbeencreated0(no)/1(yes)
RUNMAKE=0
#---Optimizethebuild[0-2]
#0=nooptimization
#1=optimizefinalsystemonly
#2=optimizebothtemporarytoolsandfinalsystem
#Optimizationvaluesaresetinoptimize/*files
OPTIMIZE=0
#---Runtestsuites[0-3]
#0=none
#1=onlychapter06Glibc,GCCandBinutilstestsuites
#2=allchapter06testsuites
#3=allchapter05andchapter06testsuites
#(inCLFS,aliasto2)
TEST=1(如果在编译安装过程中你需要测试,那么这里不用修改。
俺从来都不test,因此俺将这里修改为0。
)
#---Runthestrippingphases0(no)/1(yes)
STRIP=1
#---pagedefinitionforgroffletter/A4
PAGE=letter(我国公文习惯使用的纸张尺寸标准是A4,这里改为A4。
)
#---setdefaulttimezone.
TIMEZONE=${TZ:
-GMT}(注:
这里是时区。
青铜镜一直填写Asia/Shanghai,晨想姐姐推荐我们中华人民共和国的时区。
)
#---installtheoptionalvim-langpackage0(no)/1(yes)
VIMLANG=1
#---Languageinformationin/etc/profileSeeforvalues
LANG=$LANG(注:
这里是系统语言。
推荐en_US.UTF8。
有一次,青铜镜在前面第一章第三小节选的是ChineseSimplifiedUTF-8这一项,这里没有修改,导致jhalfs运行到第六章的6.45.Man-DB-2.4.3时停止了,没办法,只得手工继续编译安装,很不爽!
其实,刚刚装好的LFS都是满屏鸟语的,想汉化,还得到后来装上KDE时才方便呀!
)
LC_ALL=$LC_ALL#(notusedinLFS)
#---Includethekeymapinthekernelifdefined.Pathtothe
#keymapfilerelativeto/usr/share/kbd/keymaps/
#(e.g.,i386/qwerty/us.map.gz)or"none"
#NotusedinLFS
KEYMAP=none
#===Variablesneededbyiterativecomparisonanalysis===
#---Shouldsomeiterativecomparisonanalysisbymade?
0(no)/1(yes)
COMPARE=0
#---Thenumberoffinalstagebuildstocreateandcompare,min.2,max.5
ITERATIONS=3
#---RunICAtesting0(no)/1(yes)
RUN_ICA=0
#---Runfarcetesting0(no)/1(yes)
RUN_FARCE=0
#====INTERNALVARIABLES====
#Don'tedititunlessyouknowwhatyouaredoing
#---Workingdirectories
SCRIPT_ROOT=jhalfs
JHALFSDIR=$BUILDDIR/$SCRIPT_ROOT
LOGDIR=$JHALFSDIR/logs
TESTLOGDIR=$JHALFSDIR/test-logs
#---Filelistingpackagecontents(fromwherepackagesourcesdirisextracted)
PKG_LST=unpacked
#---ICAreportlogdirectory
ICALOGDIR=$LOGDIR/ICA
#---farcereportlogdirectory
FARCELOGDIR=$LOGDIR/farce
02.03
修改optimize/opt_config.d/O3pipe_march,输入命令:
vioptimize/opt_config.d/O3pipe_march
下面是optimize/opt_config.d/O3pipe_march文件的全部内容:
引用:
#####
#
#$Id:
O3pipe_march26772006-05-1120:
21:
14Zmanuel$
#
#####
#
#MODEO3pipe_marchconfiguration
#
#Usage:
-Applyoptimizationstringtoeachvariable
#-"unset"willcausethevariabletobenotset
#insteadofjustsettonull.
#
#UsethisasanexampleformodeA_modeBcombinedmodes
#
#####
#InheritoptimizationsfromO3pipe
sourceoptimize/opt_config.d/O3pipe
CFLAGS_O3pipe_march=$CFLAGS_O3pipe"-march=pentium4"
CXXFLAGS_O3pipe_march=$CFLAGS_O3pipe"-march=pentium4"
LDFLAGS_O3pipe_march=$LDFLAGS_O3pipe
OTHER_CFLAGS_O3pipe_march=$CFLAGS_O3pipe"-march=pentium4"
OTHER_CXXFLAGS_O3pipe_march=$CXXFLAGS_O3pipe"-march=pentium4"
OTHER_LDFLAGS_O3pipe_march=$LDFLAGS_O3pipe
说明:
青铜镜的CPU是AMDAlthonXP2000+,俺在这里将-march=pentium4全部改为-march=athlon-xp。
02.04
设定环境变量,代码:
exportSRC_ARCHIVE=/lfs-sources
配置至此,差不多可以运行jhalfs啦!
输入命令export看看一下设置。
02.05
好戏来了,执行以下命令:
time./lfs-G-M
其间系统会有相应的提示,它会问你,你对刚刚的设置是不是很爽啊?
爽的鸟语是不是happy?
接下来将是考验你耐心的时刻!
如果你的机器性能强劲、速度飞快,估计用不了多长时间,你的LFS半成品就可新鲜出炉了。
第三章收工
当你看到屏幕上有这些鸟语时,也就是你的jhalfs打完收工了:
……
-set-upthebootloader,exceptifbuildingCLFSwithMETHOO=boot,Youcanset-upthehostbootloaderorthenewboot-loaderinstalledonthenewsystem.
Ifthelast,youmusttomountthevirtualfilesystem,re-enterthechrootandbesurethat/devispopulatedwiththerequireddevicesbeforeconfiguretheboot-loader.Whenready,exitfromthechrootandumountthefilesystems.
IfyouareanexperiencedLFSuser,severalofthoses