2009年11月12日星期四上午10:22发布
许多人想要搭建自己的Linux发行版本,可能是觉得有趣,也可能是为了学习更多的Linux知识,或者因为他们有很正式的问题要解决。但是秘密是:自己搭建完美的发行版本不是很困难的一件事。事实上,我们收集了几种方法,使用这些方法,每个人,是的,甚至是你——都可以搭建满足自己需要的个性化的Linux版本,只要应用一些你想要的改变——那就是你的Linux,你的风格。
主流的Linux发行版本开发者们不得不做出影响成千上万潜在使用者的决定。他们到底是应该添加还是删除一个特殊的软件包?他们是否应该应用一个可能破坏旧型号计算机兼容性的补丁?这些问题在论坛中被热火朝天的讨论,火焰冲天,项目领导者不得不为了自己的决定和一个尖锐的唱反调的人辩论。
但是你个人没有这些顾虑。你可以随心所欲的安装或者移除软件包,选择在你的系统上安装自由软件还是非自由软件。当你可以让Linux以你想要的方式工作的时候,你为什么还得忍受社区的决定?同时,你安装的发行版本可能包含你不想要的安装在你系统上的驱动或者组件。不仅如此,你想要在你新系统上安装的每个软件你都不得不费时费力地下载,并且还需要挨个安装。
这就是我们来的原因,如果你在程序设计上比在玩游戏上花了更多的时间,那么你可以用你最喜欢的IDE替换游戏软件包。亦或是你为什么不移除你永远用不到的硬件驱动包来节约你的硬盘空间呢。你们之中发现应用了“让你的Linux更快指导”这篇文章中的设置后,Linux速度有提升的人,可以在安装阶段就让Linux自动开足马力。
"我们以前曾经谈到怎样从scratch中搭建自己的Linux发行版本" 但是这次我们更感兴趣怎样使用不同的方法衍生已经存在的Linux发行版本,以得到你想要的。我们以最简单的开始,最难的结束,听起来不错?那就让我们开始吧!
Ubuntu定制工具箱
困难程度:简单;需要时间:30分钟;个性化程度:低
如果你厌倦了每次安装Ubuntu的时候都安装同样的组件,那么你会发现这是自定义CD中安装包最简单的方法。你需要5GB的剩余磁盘空间,一个UbuntuISO镜像和你从安装包管理器中安装的定制工具包。
一旦你有了这些资源,那么只需启动Ubuntu CustomisationKit(UCK),按着仅仅一页的说明来做。你就会发现你之前你编辑你的liveCD中最常用的步骤已经被自动的加载。添加这个到GUI的界面,显而易见凡是有一些个性的人都能迅速容易地自定义自己的Ubuntu拷贝。你可以随意编辑你的Ubuntu(看弹出提示)但是你会成为那个叫枪手的人。
在UCK步骤中一个共同的陷阱是错失了允许你决定哪些包将会包涵,哪些包会省略的默认选项。这样的结果就是你结束了一个有自定义名字的独立Ubuntu安装盘的制作,却发现完全没有用!为了保证你获得访问新立得的权限,当被问到你是否要在搭建期间自定义你的CD时候,回答“是”。这样就出现一个对话给你打开新立得或者一个终端,或是继续安装。
决定,决定
在我们的例子中(昵称BobBuntu)我们安装了Medibutu软件仓库(看我们的“在Ubuntu中安装第三方软件指导”以获得更多的信息)通过从会话中打开终端,运行下面的命令:
wget http://www.medibuntu.org/sources.list.d/jaunty.list--output-document=/etc/apt/sources.list.d/medibuntu.list
你可以安装仓库的GPG key通过输入:
apt-get update && apt-get install medibuntu-keyring&& apt-get update
第三方软件仓库给使我们可以获得非自由软件,例如 AdobeReader,Skype和受限格式的解码包。从对话中选中新立得,当你搜索Skype的时候将展示它是可用的(你需要重新加载软件包列表)。
在Bobuntu中我们同样去掉了OpenOffice.org,用Abiword和Gnumeric代替。移除了Ekiga,用Epiphany替换了Firefox。你可以从一个LaunchapdPPA源和任何第三方软件仓库中自己选择软件,也可以通过选中或不选中框来移除你很少使用的软件。
你可以自由的通过新立得选择你需要的安装包。
一旦你点击“应用”提交了你的更改,那么将进入搭建阶段,这个阶段你的 liveCD镜像将会在~/tmp/remaster-new-files/中产生,叫做lived.iso。当搭建结束的时候,你可以烧录你的CD或者使用类如VirtualBox的虚拟机尝试你自己个人Ubuntu衍生版本。
UCK有一组非常好的功能。你可以容易地选择软件包,桌面和本地资源,同时如果你是为Windows用户搭建发行版本,你可以添加Wubi。然而UCK缺少添加其他工具或服务的功能。例如,没有终端扩展小程序,你不能定义你的Ubuntu衍生版本的外观和感觉,并且,你也不能为liveUSB创建一个启动镜像(尽管你可以从新的live环境创建)。
你同时也被受限于你的主系统须是Ubuntu,你的最终衍生版本是个变异Ubuntu。尽管有这些缺点,UCK依然是一个很好的发行版本搭建环境,并且是一个当你要简单的拷贝你的Ubuntu,搭建你喜欢的工作环境的时候,需要的一个经典的工具。
Ubuntu变异版本
Ubuntu是一个有名的可以简单自定义的发行版本,并且基于这个原因你可以看见荒谬数量的变异,星罗棋布于互联网上,例如nUbuntu,Xubuntu甚至是一个恶魔版本。
其中的一些版本包含了增加使用体验的特别美化。终极版本,例如有额外的工具:GDM Maker和USplashMarker,使用这些工具来创建自己的登录和splash画面,也存在一个特殊的为游戏者预装的版本。主题和选择的独立安装程序(自由软件和非自由软件)都被考虑在去搭建一个“终极发行版本”。
到了天平的另一头。例如MundusOS,绑定外星人安装非Ubuntu软件包,以一个预安装方案去加载.dmg文件,剩下的就是vanilla UbuntuISO,你可以从社区站点下载。
不论你是想要用激进的方式去发行一个新的软件包还是只是一个有意思的壁纸,你可以任意的改变。谁知道呢,如果人们喜欢你正在做的事情,你很快就会在Distrowatch上看到你的影响力。
不论你需要什么,总有一种Ubuntu变异版本满足你。
SUSEStudio
难度程度:简单;时间:30分钟;自定义程度:中
Novell最近发起了SUSEStudio 一项可以让你从任何浏览器创建OpenSUSE的服务。在那时,我们报道这项服务是非常排外的,它是严格地执行只能被邀请才能使用,尽管如此,你可以通过www.susestudio.com请求一个邀请。
即使在第二位,这也是个强大的,易用的工具。这项服务的主要目的是使你能够产生一个虚拟的程序,出于几乎所有的目的这个程序是基于SUSE的,但是对于我们的目的,我们也能使用它来搭建自己的发行衍生版本。开始有很多种剪裁你发行版本的方法。你可以选择使用哪个版本的SUSE,然后你需要选择一个基础包(basepackage)这个基础软件包定义了你衍生版本在哪个桌面和硬件平台上面。这可能要选择包括Gnome,KDE或者是LXDE作为你的桌面,或者决定你要在一台服务器上使用它。我们建议你选在OpenSUSE作为你的平台,选择更加适合家庭使用的服务,尽管如此如果想要的话,你可以选择企业版本。
更进一步的选项允许你定义哪个软件被包含或者被拒绝,通过使用页面底部的一个搜索工具,你同样可以通过点击相关的链接来添加软件仓库和自定义RPMs。每一个选项界面都像基地浏览服务器一样有逻辑性,并且很令人惊讶。
创建一个SUSE Studio应用
应用:你可以在这里选择桌面,
3.7 执行命令
•简单命令扩展:bash如何在执行前扩展简单命令。
•命令搜索和执行:bash如何找到命令和运行。
•命令执行环境:bash执行非shell内建命令的环境。
•环境:命令的环境。
•退出状态:命令返回的状态以及bash如何解释它。
•信号:bash或运行的命令接收到信号时,会发生什么。
3.7.1 简单命令扩展
当一个简单命令执行时,shell由左到右执行以下的扩展,赋值和重定向。
1.那些已经被解析器标记为变量赋值(位于命令前面)和重定向的单词,被保存供以后处理。
2.那些不是变量赋值或重定向的单词被扩展(Shell扩展)。如果扩展的结果包含单词的话,第一个单词是命令的名称,余下的是参数。
3.如上所述,执行重定向(见重定向)。
4.对于每个变量赋值,先对'='后的文本进行波浪线扩展,参数扩展,命令替换,算术扩展和引号移除,然后再赋值给变量。
如果扩展结果中没有命令名,变量赋值影响当前的shell环境。否则,这些变量被添加到该命令的环境,不影响当前的shell环境。如果尝试赋值到一个只读变量,会发生错误,并且命令退出时返回一个非零的状态。
如果扩展结果中没有命令名,则执行重定向,但不影响当前的shell环境。重定向错误将导致该命令退出,并返回一个非零的状态。
如果扩展结果中有一个命令名,按下述进行命令的执行。否则,该命令将退出。如果扩展中包含了一个命令替换,命令的退出状态是最后执行的命令替换的退出状态。如果没有命令替换,命令退出状态为0。
3.7.2 命令搜索和执行
在命令已经分解成单词后,如果结果是一个简单的命令和一个可选的参数列表,将采取如下动作。
1.如果命令名称中没有包含斜杠,shell试图定位该命令。如果存在同名的shell函数,该函数被调用(见shell函数)。
2.如果名称和函数不匹配,shell在内建命令列表中搜索。如果找到一个匹配项,则该内建命令被调用。
3.如果名字既不是shell函数,也不是内建命令,并且命令名字不包含斜线,bash搜索$PATH中的每一个成员,试图寻找包含该名称的可执行文件的目录。 bash使用一个哈希表来记住可执行文件的全路径名,以避免重复的PATH搜索(见Bourne shell的内建命令中hash的描述)。只有当命令在哈希表中没有找到时,才对$PATH中的目录进行完整的搜索。如果搜索不成功,shell试图搜索一个预定义的shell函数command_not_found_handle。如果该函数存在,它被最初的命令调用,最初的命令的参数作为它的参数,函数的退出状态成为shell的退出状态。如果该函数没有被定义,shell输出错误消息并返回一个退出状态127。
4.如果搜索是成功的,或如果该命令名中包含一个或多个斜杠,shell将在单独的执行环境中执行指定的程序。参数0被设置为给定的名称,该命令的其余参数(如果有的话),被设置为该程序支持的参数。
5.如果因为文件不是可执行格式而执行失败,并且该文件不是一个目录,则它被认为是一个shell脚本,shell将执行它(见shell脚本)。
6.如果该命令不是异步命令,shell等待命令完成并收集它的退出状态。
3.7.3 命令执行环境
shell的执行环境,由以下部分组成:
·在调用时,打开的文件被shell继承,同时,被exec内建命令提供的重定向修改
·当前工作目录被cd,pushd或者popd设置,
最开始真tmd的蛋疼
用了无线就不能使用pppoe
后来找到,用
pppoe-setup //在终端执行这个命令,开始搭建pppoe
然后会按照提示进行,值得说一点注意网卡。
我的是无线,所以是wlan0网卡
然后按照提示 /sbin/ifup ppp0
高定拨号上网