在制作Linux发行版中Linux from Scratch可谓是真正的大师级。Linux from Scratch是在线的社区创建的一本电子书,目的是帮助那些根深蒂固的想方设法提高计算机性能的人(tweaker)帮助他们来创建自己毫无争论的独一无二的发行版本。

Linux from Scratch

困难程度:高;时间需求:200分钟;自定义程度:极高

对于想自定义他们的发行版本中所有的东西,从核心驱动的选择到默认文本编辑器是Vi还是Emacs的真正的Linux强者,没有比通过scratch来搭建你自己的核心和每个重要的组件更彻底的方法了。这就是Linux From Scratch的存在的意义。LFS(Linux from Scratch)是在线的社区创建的一本电子书,目的是帮助那些根深蒂固的想方设法提高计算机性能的人(tweaker)帮助他们来创建自己毫无争论的独一无二的发行版本。

电子书本身(在这个月的封面光盘上可以找到)包含了你需要知道的所有的细节,从构建跨平台的编译器到使用chroot来建立你的用户环境。然而,在你创建你的LFS系统的时候仍有许多骗人的把戏(gotchas)需要你注意。但是,我们已经把这些困难的部分提出了,所以你不用担心了。下面是这本电子书的精华LXF,每一条对于每个人来说都意味着大脑充血的,满头大汗的不眠之夜。我们的测试根据LFS6.3,因为这个稳定的live CD包含了我们需要的所有的工具,软件包和补丁,但是如果你想要最新最强大的LFS(我们要出版6.5),那么所有的电子书涵盖了怎样用你的主流的发行版本来搭建LSF系统。无论你选了哪条路,这些提示会帮助你无争议的安装!

Linux from Scratch电子书版格式清晰,并且保证每个阶段准确到位。

分区

当你开始初始化cfdisk的时候,最常见的错误是退出的时候没有保存你的修改(人们然后就想知道为什么mke2fs提示'dev/hda1 不存在 '错误),所以在你提交你的程序之前一定要再一次检查你的分区对于你用户的系统是可用的。

本地源

如果你使用LFS live CD,你所有的工具,源和补丁都被存储在/lfs-sources中。一旦你建立了 'lfs' 用户,推荐你把这些源拷贝这些到 $LFS/sources ,因为你之后将可以正确的完成大多数阶段而不需要root允许。如果你遇到了任何问题,再一次检查你的工作目录是不是 $LFS/sources。下面的命令将返回 /mnt/lfs :

echo $LFS

引导

你一次你运行GCC构建的时候(使用'bootstarp'选项),我们推荐你离开去喝一杯咖啡。然后去喝另一杯,这个特殊的阶段需要花费一些时间,因为你要编译三次GCC,然后把第三次构建和第二次构建比较。这个的要点是检查第二次和第三次构建是否相同,这个可以显示你第一次构建的GCC时候是正确的。

跳过bootstarp是可能的,但是我们不推荐那样做,因为这样有可能会增加奇怪的错误,而且这些错误后边不容易诊断出来。刚刚接触LFS分散的用户在很多论坛里发贴子想要知道为什么GCC要话那么长时间来构建并且问这样是否正常。确实是这样,但是现在足够的耐心,将来出现的问题就会更少。

在对应的主题中,对于搭建过程来说是经常出现的,在你已经决定要花更长时间而不是你短暂的记忆可以记住的那么短的时间来完成你的安装。确认你没有什么忘记做的事,否则稍后就会出现错误,你不得不返回去来修复你的错误。

核心API 总管(hernel API headers)

通常出现的错误是误以为kernel API headers包含在你的软件包里。这个不是问题,你需要提取内核源码包(通常是linux-2.6.x.tar.bz2的格式)然后根据电子书中的步骤移动提取路径。

Shell的古怪举动

在你开始你的LFS搭建之前,了解Bsah的精妙之处是很重要的。你会创建系统链接、写多行命令(这意味你看见了,你需要跟着按回车)。你可以在电子书的格式上发现这个问题。在整个电子书多行的命令中的每一行不会包含 > (尽管你会在终端中看见)。然后,如果你在电子书里看见了 > ,确定你敲命令的时候也输入这个字符。我们可能没有察觉这个意外而这样写:

gcc -dumpspecs | sed 's@^/lib/ld-linux.so.2@/tools&@g'
> `dirname $(gcc -print-libgcc-file-name)`/specs

这样就会出现奇异的错误状态,文件不存在。第二行应该是这样:

> > `dirname $(gcc -print-libgcc-file-name)`/specs

大量时间和奉献,你可以搭建出像Nutyx一样有用的版本。

不要排版(typos)

如果你使用主流的发行版本作为你的主系统,我们衷心地推荐在shell中使用拷贝和粘贴命令。这主要是因为这样不会出现拼写错误,而拼写错误可能会在后边的过程中引发新的错误(这个问题通常只能使用完全重新构建的方法来解决)。对于那些一定要手动输入或者是使用live CD的人,一定要在你执行命令之前反复检查,反复检查你使用了类型正确的括弧。手动输入在开始的时候会有意义,但是最终你会遭遇这头特殊的野兽命令(beast):

GCC_INCLUDEDIR=`dirname $(gcc -print-libgcc-file-name)`/include &&
find ${GCC_INCLUDEDIR}/* -maxdepth 0 -xtype d -exec rm -rvf '{}' ; &&
rm -vf `grep -l "DO NOT EDIT THIS FILE" ${GCC_INCLUDEDIR}/*` &&
unset GCC_INCLUDEDIR

我们试着一次性输入全部这些内容,偶然使用了单独的括号,这会使所有抹杀掉所有我们已经做对的事情!你可以通过拷贝和粘贴或者在你看见&&时单独地输入每一行。

别掉以轻心

在GCC第二次通过的时候,配置会变得很简单而且可以通过同样的步骤来安装一系列软件包:

./configure --prefix=/tools
make
make install

然而,这个不是一直都有效,通过工作环境和LFS的补丁你会跟快的命中(hit)软件包,使它们正确的工作。基于这个原因,你必须一有时间就频繁地查阅电子书,这样才能避免奇怪的行为和之后有可能出现的错误。

转移到root

你应该以用户 'lfs' 来登录系统,但是一旦你执行命令的时候你就应该贴换到root。你可以通过按住Alt和右箭头键(你可以使用有箭头键按钮回到 lfs 用户)。在这个步骤中一定要按电子书中说的做备份。所有的这些可能导致的是在一个错误的路径中执行了一个糟糕的rm命令,这会使你几个小时的辛苦劳动付之东流。你可以通过下面的命令创建一个存档(因此挽救了一些空间):

tar -cvf --file=$LFS/tools/lfs_build.tar $LFS/tools

然后拷贝压缩包到外部存储介质或者是你能轻松恢复系统的地方。即使你没有使用存档备份,将来你也可以使用它迅速地搭建另外的LFS系统。

搭建你梦想的发行版本

Linux From Scratch伴随着电子书,打开超越Linux from Scrach搭建一个可扩展的、自定义的,标准的基于LFS的系统的无限可能的窗户。LFS论述了软件包管理也论述了怎样搭建桌面环境和一般的软件包。

想要看Linux from Scratch到底能做多少,那么你看看Nutyx吧(www.nutyx.org)。这是法语的网站,到现在为止还没有使用英语的选项,但是这个发行版本已经有了全面的桌面和应用程序套装,非常好用。

LFS关键的事是你可以完全掌握哪些补丁和更新可以被应用。所有的都是从源代码编译来的,所以它像闪电一样快。你总是可以选择是否升级内核,哪些软件可以,哪些软件不可以在你的系统上运行。这可能会话费一些时间来完成这种发行版本搭建天堂,之后还学要去维护它,但是结果是值得的。

或者是Gentoo的方式

如果你不能获得有足够自定义潜力的发行版本,那么看一看Gentoo是值得的。和Arch Linux类似,Gentoo支持滚动升级,但是不像Arch,Gentoo给你选用Linux还是BSD作为核心的选择。同时它也包含了300个开发者维护的10,000个软件包的服务,这些软件包通过Gentoo社区要求的,Linux世界中最高级的软件包管理系统来分发(叫做Portage)。

Gentoo从源代码编译所有的软件包,旨在获得稳定的系统,然而Arch Linux安装二进制包旨在成为自由软件开发的尖端。你使用哪个版本是由你的目的和你想控制多少而决定的,但是如果你不能在Arch 和Linux From Scratch中做出选择的话,Gentoo值得你一试。

Gentoo是同样喜欢LFS和Arch Linux的人的一个更好的选择。

高手从零开始的全定制发行版-Linux from Scratch的更多相关文章

  1. 发行版Linux和麒麟操作系统下netperf 网络性能测试

    Netperf是一种网络性能的测量工具,主要针对基于TCP或UDP的传输.Netperf根据应用的不同,可以进行不同模式的网络性能测试,即批量数据传输(bulk data transfer)模式和请求 ...

  2. CentOS和Redhat发行版linux内核版本的对应关系

    由于Redhat和CentOS的发行版本现在众多,所以我们应该知道CentOS和Redhat及linux内核之间版本的对应关系对维护系统还是很有帮助的.对应的列表如下: Redhat 9.0————— ...

  3. Linux发行版大全

    基于Debian  Adamantix:基于Debian,特别关注安全.  Amber Linux:基于Debian,针对拉脱维亚用户作了一些定制.  ASLinux Desktop:西班牙语,基于D ...

  4. 2016年如何选择 Linux 发行版

    不管是在企业级应用还是在消费者领域,2015 对于 Linux 来说都是极其重要的一年.作为一个从 2005 年就开始使用 Linux 的老用户,我有幸见证了 Linux 过去这 10 年里的重大发展 ...

  5. 最佳 Linux 发行版汇总

    Linux入门UbuntuUbuntu是一款基于Debian发行版,以Unity作为默认桌面环境的Linux操作系统.他是世界上最流行的发行版之一,每次发行,它都有提升.最新发行版为桌面.移动及其桌面 ...

  6. Linux发行版

    Linux 发行版(英语:Linux distribution,也被叫做GNU/Linux 发行版),为一般用户预先集成好的Linux操作系统及各种应用软件.一般用户不需要重新编译,在直接安装之后,只 ...

  7. 常见Linux发行版有哪些?

    Linux 发行版(英语:Linux distribution,也被叫做GNU/Linux 发行版),为一般用户预先集成好的Linux操作系统及各种应用软件.一般用户不需要重新编译,在直接安装之后,只 ...

  8. linux主要的发行版及其区别和联系

    1. 主要发行版 linux主要发行版有3类: (1).Debian (2).Slackware (3).Redhat (1)Debian Ubuntu 针对桌面和服务器 knopix 以安全著称 ( ...

  9. 常见Linux的发行版有哪些?并描述不同发行版之间的联系与区别。

    一.按系列罗列linux的发行版,并描述不同发行版之间的联系和区别 Linux发行版=Linux内核+商业软件 linux的发行版: RedHat.Fedora.suse.红旗.debian.Ubun ...

随机推荐

  1. vscode和phpStorm使用xdebug调试设置

    phpStorm http://www.cnblogs.com/cxscode/p/7045944.html http://www.cnblogs.com/cxscode/p/7050781.html ...

  2. 坐标转换——GCJ-02

    WGS84(World Geodetic System 1984),是为GPS 全球定位系统 使用而建立的坐标系统GCJ-02,我国在WGS84的基础上加密得到BD-09,百度坐标在GCJ-02基础上 ...

  3. Linux下undefined reference to ‘pthread_create’问题解决 zz

    接触了Linux系统编程中的线程编程模块,可gcc sample.c(习惯把书上的sample代码写进sample.c文件中)出现“undefined reference to ‘pthread_cr ...

  4. DevExpress控件-GridControl根据条件改变单元格(Dev GridControl 单元格着色)

    DevExpress控件-GridControl根据条件改变单元格颜色,如下图: 解决办法:可以参考:http://www.cnblogs.com/zeroone/p/4311191.html 第一步 ...

  5. Python3通过汉字输出拼音

    https://github.com/mozillazg/python-pinyin # pip install pypinyin from pypinyin import pinyin, lazy_ ...

  6. C++ cin.ignore()用法

    cin.ignore(int a,char b); a为一行中最大读取字符长度,b为某一个字符.在缓冲区中寻找b,找到后忽略b以前的所有字符(包括b).如果在a的范围内还没有找到b,则忽略b以前的所有 ...

  7. CentOS6安装后的常见基础优化

    1.SSH优化 编辑/etc/ssh/sshd_config配置文件 //全部都应该设置为no /etc/ssh/sshd_config //服务端配置文件 /etc/ssh/ssh_config / ...

  8. 乱侃OOD

    接口代表的就是共同性,所谓面向接口编程,就是要抽象各种不同概念的共同点 然后把这些概念的不同点用具体的类包装起来,这样一看,面向接口编程就等于面向对象编程 其实说白了是一个概念 IOC就是要把对细节的 ...

  9. 性能测试篇:LoadRunner11 压力测试实例笔记

    最近在学习用loadrunner做web性能测试,简单记录一下一个自学实例流程. 1.录制测试脚本 (1).打开LR11,点击create/edit Script来打开VUgen (2).点击新建 ( ...

  10. 【kubernetes】ubuntu14.04 64位 搭建kubernetes过程

    背景: Kubernetes介绍:http://kubernetes.io/docs/getting-started-guides/ github地址:https://github.com/kuber ...