LFS编译过程必备辅助手册.docx_第1页
LFS编译过程必备辅助手册.docx_第2页
LFS编译过程必备辅助手册.docx_第3页
LFS编译过程必备辅助手册.docx_第4页
LFS编译过程必备辅助手册.docx_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

LFS编译过程必备辅助手册(一)来源:Linux中国作者:PHILO 米油很多人对Linux进行了一定的学习之后,都会有一种自己从头搭建一套Linux的想法,在这方面LFS和Gentoo都是不错的起点。不过虽然它们已经尽量提供详细文档了,但对于初学者来说还是存在一定的困难的。因此本站特邀 PHILO (看见微软我就跑)和 米油 两位同学将他们自己学习LFS的经验分享给大家,也希望大家一起来参与到LFS之旅中。前言LFS(Linux from scratch)是从源代码开始编译Linux操作系统。如果需要深度定制Linux操作系统或者需要更加深入学习Linux的学习者可以从这里开始您的旅途。这份意义的深渊不必多说。 同时也希望您能加入我们一起开始这段旅程:加入我们从7月初开始我们团队里面两个人为了更加深入的学习Linux方面的知识。也为了瞻仰LFS大神们的光辉。 开始了LFS的旅程,因为LFS官方文档写的虽然非常具体,但是多多少少对于一些Linux新手来说造成很多困扰。因此我们团队做完LFS之后写了这篇辅助性质的说明,对新手遇到问题的时候提供帮助。进行LFS旅程的前提条件1. 比较熟悉Linux操作2. 有一定Linux开发基础3. 在LFS之前有过从源码编译软件的经验。4. 有一定的英文基本功,除了看手册之外,有的时候抛出错误的时候应该有google查找并解决错误的能力。文档使用方法:1. 首先对本辅助文档完整的浏览一遍,这样有助于理解LFS的整个过程做什么2. 然后扫一遍LFS官方文档的目录,这样至少知道每个章节的目的。3. 当你进行到LFS某一步时,遇到问题后可以对应上本辅助手册的具体问题的解决方案LFS全过程概括1. 对磁盘的准备和用户的准备2. 建立temp系统3. 编译LFS系统4. 最后调整LFS 编译完成的成果LFS在编译完成的最后除了Linux基础内核目录结构(bin etc lib proc dev等等这些)还有一个tools这个目录(过程概括中的第2部分),它的存在是为了编译LFS整个系统的。所以在第五章这一部分中,就是利用ubuntu或centos主机系统的编译环境(称之为HOST)来编译出tools这个目录下的编译环境。提示:其实制作LFS所有用到的工具链接,就是在ubuntu或centos下编译出一个新的交叉编译器(就是/tools目录下的所有工具),而这个新的交叉编译器在编译出来后,就不会依赖于现有操作系统编译器和库文件(ubuntu or centos),此时我们就可以利用这个全新的交叉编译工具(/tools目录下的所有工具)制造属于我们自己的Linux了,利用这个新的工具,从源码开始编译出所有我们需要的软件和库,最后编译Linux内核,设置bash脚本,启动脚本,tmpfs文件系统需要的配置文件,整个LFS的过程就结束了。A: Linux发行版本的选择1. CentOS 6.3 (虚拟机双硬盘)2. Ubuntu 14.04 with GCC4.4(64bit) (笔记本电脑+双硬盘+LFS系统构建在SSD硬盘上)3. 在以上两种Linux发行版上分别进行编译运行,且最终都取得成功。4. 使用LFS官网上LFS7.5的源码进行编译制作B:前四章的内容:硬盘分区、用户准备篇主机所用操作系统的准备工作: (ubuntu14.04 64位下需要安装的软件)1.在ubunt下安装bison(ubuntu下默认没有安装)sudo apt-get install bison #LFS 手册要求2.不能用gcc4.8,需要换成gcc4.4(ubuntu14.04默认gcc4.8) sudo apt-get install gcc-4.4 g+-4.4 sudo rm which gcc sudo rm which g+ sudo ln -sv /usr/bin/gcc-4.4 /usr/bin/gcc sudo ln -sv /usr/bin/g+-4.4 /usr/bin/g+这里CentOS没有什么特别要说的。主要因为全部都用默认的,就可以了。各种依赖C6-Media就可以解决3.到LFS官网上下载LFS7.5的所有源码:/pub/lfs/lfs-packages/1.磁盘分区准备1. plan: 准备一个10到20GB的分区,这一步请谨慎操作2. action: 创建分区(表)并格式化。创建分区表请使用fdisk , 如果需要图形界面下的请使用GPartion,如果这两种工具都不会请到windows下分区(无需格式化)#格式化分区sudo mkfs -v -t ext4 /dev/sdaX #这里的X是填上自己的分区号PS:因为现在计算机的内存都比较大,所以可以不需要swap分区。(第一次进行LFS,一个根“/”分区就够了,等以后有经验了,在进行多分区的操作)2.用户准备直接参考手册上的来就行了。小建议:PS1=e32m#e31mue36mh w$emPS1修改成这个变量看着能舒服点。注意:每次开机,或是重启后,在进入lfs用户前,都要对 LFS变量进行检查,查看LFS=/mnt/lfs变量是否存在,然后对lfs使用的分区进行挂载前四章的小结:1. 这一部分没有什么难点,准备硬盘分区是因为要让LFS作为独立的硬盘来启动。新建分区、格式化分区、准备lfs用户是Linux操作的基础素质。注意:为了下面的编译过程能更快,可以在输入make命令时在后面加入-j4,使用4个进程进行同时编译,在多核处理器上编译的速度有明显提升开始进入编译代码的环境(每次开机或重启动后需要进行下面步骤进入lfs用户环境)1. 首先导入LFS变量export LFS=/mnt/lfs#建议放到/etc/profile下方便一直用2. 然后挂载LFS的分区sudo mount -v -t ext4 /dev/sdaX $LFS #X为你的LFS硬盘分区号3. 最后就可以切换到lfs用户了su - lfs #注意中间这个 - 符号是一定要的,代表为lfs用户启动一个login shell 补充:通常我们在开机后,启动的第一个shell称之为login shell,当进入GUI界面后,不需要输入密码启动的shell称之为non-login shell。这两种shell是有区别的。大家都知道shell的运行是需要环境变量的支持的。配置这些环境变量的文件就是配置shell工作环境的文件。两种shell在读取配置文件时有很大的不同,下面是总结它们分别读取哪些配置文件:1. login shell 启动-读取/etc/porfile文件-读取/.bash_profile文件2. no-login shell 启动-读取/.bashrc文件3. exec env -i /bin/bash命令会开启一个全新的non-login shell。注意:每次重新开机或重启后都需要进行下面的步骤,切换到lfs用户,因为对于新手来说,不可能一天就编译完lfs的所有源,可以把以上步骤保存到一个文件中,每次重启系统进行LFS之前,参照以上步骤进入到LFS编译环境。C: 第五章的内容:编译得到$LFS/tools/目录下面的工具包o 第一步,编译出一个全新的与主机系统无关的工具链。这些工具链包含了:compiler(就是我们常用的gcc,g+),assembler(就是把汇编程序变成a.obj文件的工具),linker(就是把很多*.obj文件和库文件链接成可运行文件a.out的工具),还有各类库文件(为后面编译其它的软件提供基础设施),当然还有大量的其它工具o 第二步,得用第一步编译出来的工具,编译其它的工具(这里可以看出,在制作LFS的过程中,编译的先后顺序是非常生要的,因为有了鸡,才能下蛋)o 注意 1:上面两步编译出来的工具都会安装到 $LFS/tools目录下面(也就是/mnt/lfs/tools目录下面)。LFS手册中把这个称之为临时的文件系统,就是因为$LFS/tools这个目录在第6章结束时就会被删除,因为$LFS/tools已经使用完了,没有利用价值了。o 注意 2:参照LFS手册上的指令进行编译,基本不会遇到错误,因为编译代码的步骤就是老三样:configure &make &make install,但是有一点,一定要注意,所有的安装包一定要打补丁,因为LFS手册没有强调打补丁的过程,所以自己如果发现这个源码包有补丁文件,一定要记得打上。o 注意 3:因为需要编译的软件太多,到最后你可能不会愿意自已每个单词都输入到命令行进行编译,所以通常会直接复制LFS手册中的命令。但是复制时,请一定注意先把指令复制到一个空的文件编辑器中,然后检查一下,复制过来的内容是否正确,因为从PDF文件复制到文本中的内容,格式会发生很大的变化。这一点在你尝试的过程中就会发现了。然后在文本编译器或是vim中进行编辑后,在复制到lfs用户的命令行中。o 注意 4:在编译perl时,按照官方文档打补丁会出现readonly的错误,下面是是正确的操作命令:o cd /mnt/lfs/sourceso tar xvf perl-5.16.2o cd perl-5.16.2/hintso cp linux.sh o cd .o patch -Np1 -i ./perl-5.16.2-libc-1.patcho cd hintso diff linux.sh #输出打补丁情况,则为正常打补丁,编译过程参考手册o 注意 5:手册上的configure的位置一定刚要注意有三种情况,第一种是在源代码目录之外进行configure,第二种是在源代码目录里面进行configure,第三种(特殊情况)是libstdc+是在gcc源码目录的子目录里面进行configure。所以在执行命令之前一定刚要看好执行命令的前提条件,不妨思考一下L

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论