高手从零开始的全定制发行版-Linux from Scratch
在制作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的更多相关文章
- 发行版Linux和麒麟操作系统下netperf 网络性能测试
Netperf是一种网络性能的测量工具,主要针对基于TCP或UDP的传输.Netperf根据应用的不同,可以进行不同模式的网络性能测试,即批量数据传输(bulk data transfer)模式和请求 ...
- CentOS和Redhat发行版linux内核版本的对应关系
由于Redhat和CentOS的发行版本现在众多,所以我们应该知道CentOS和Redhat及linux内核之间版本的对应关系对维护系统还是很有帮助的.对应的列表如下: Redhat 9.0————— ...
- Linux发行版大全
基于Debian Adamantix:基于Debian,特别关注安全. Amber Linux:基于Debian,针对拉脱维亚用户作了一些定制. ASLinux Desktop:西班牙语,基于D ...
- 2016年如何选择 Linux 发行版
不管是在企业级应用还是在消费者领域,2015 对于 Linux 来说都是极其重要的一年.作为一个从 2005 年就开始使用 Linux 的老用户,我有幸见证了 Linux 过去这 10 年里的重大发展 ...
- 最佳 Linux 发行版汇总
Linux入门UbuntuUbuntu是一款基于Debian发行版,以Unity作为默认桌面环境的Linux操作系统.他是世界上最流行的发行版之一,每次发行,它都有提升.最新发行版为桌面.移动及其桌面 ...
- Linux发行版
Linux 发行版(英语:Linux distribution,也被叫做GNU/Linux 发行版),为一般用户预先集成好的Linux操作系统及各种应用软件.一般用户不需要重新编译,在直接安装之后,只 ...
- 常见Linux发行版有哪些?
Linux 发行版(英语:Linux distribution,也被叫做GNU/Linux 发行版),为一般用户预先集成好的Linux操作系统及各种应用软件.一般用户不需要重新编译,在直接安装之后,只 ...
- linux主要的发行版及其区别和联系
1. 主要发行版 linux主要发行版有3类: (1).Debian (2).Slackware (3).Redhat (1)Debian Ubuntu 针对桌面和服务器 knopix 以安全著称 ( ...
- 常见Linux的发行版有哪些?并描述不同发行版之间的联系与区别。
一.按系列罗列linux的发行版,并描述不同发行版之间的联系和区别 Linux发行版=Linux内核+商业软件 linux的发行版: RedHat.Fedora.suse.红旗.debian.Ubun ...
随机推荐
- linux的基本的命令行操作
linux的基本的命令行操作 第一步前登陆你的服务器 //创建文件夹的方法 mkdir 文件名 //进入指定文件夹 cd 文件名 //查看文件夹下的内容 ls or ll // 查看当前的路径 pwd ...
- Makefile系列之三 : 变量
一.变量的基础 变量在声明时需要给予初值,而在使用时,需要给在变量名前加上“$”符号,但最好用小括号“()”或是大括号“{}”把变量给包括起来.如果你要使用真实的“$”字符,那么你需要用“$$”来表示 ...
- FineReport——JS二次开发(自定义翻页按钮)
FR允许自定义工具栏上面的按钮,并提交JS方法: 对于翻页功能,大概有首页,下一页,上一页,最后一页,以及跳转页等功能. 不得不说的是,在HTML页面自定义的按钮如何获取到报表模板,通过FR提供的JS ...
- IE6下面的浮动问题
第一个问题: 在IE6下面overflow:hidden;失效 原因:在IE6/7中子级设置position:relative;属性值后,导致父级的overflow:hidden;失效. ...
- javascript方法--call()
关于call方法,以前经常看到这个方法,但是也没怎么用心去学习,后来觉得不行,所以知识在一点一点补~ 今天对自己学习call方法做一下总结 其实,学了call方法,会发现call跟apply其实是很像 ...
- close()和shutdown()函数
一·close(int sockfd) 当server和client建立连接,server调用close(),则server发送fin给client,server不在通过该套接字继续传送消息或者接收消 ...
- centos xampp 隐藏phpmyadmin地址
/opt/lampp/etc/extra/httpd-xampp.conf Alias /phpmyadmin "/opt/xampp/phpMyAdmin/" 改为 Alias ...
- PTA L2-001 紧急救援-最短路(Dijkstra)多条最短路找最优解并输出路径 团体程序设计天梯赛-练习集
L2-001 紧急救援 (25 分) 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快 ...
- 基于Shiro,JWT实现微信小程序登录完整例子
小程序官方流程图如下,官方地址 : https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html ...
- 中国石油大学(华东)暑期集训--二进制(BZOJ5294)【线段树】
问题 C: 二进制 时间限制: 1 Sec 内存限制: 128 MB提交: 8 解决: 2[提交] [状态] [讨论版] [命题人:] 题目描述 pupil发现对于一个十进制数,无论怎么将其的数字 ...