我读到过,与 Ubuntu 等预构建的发行版相比,基于源代码的 Linux 发行版(如 Gentoo)的性能可以大幅提升,因为它们是从源代码安装的,并且针对您的特定系统进行了优化。是否可以从源代码构建 Ubuntu 以获得同样的好处?
答案1
Is is possible to build Ubuntu from source to get the same kind of benefit?
我不确定如果你有相当新的硬件组件会有什么好处,但对于问题的“从源代码构建 Ubuntu”部分,答案是肯定的,你不仅可以从源代码构建你最喜欢的应用程序,还可以构建整个操作系统。
方法如下:
您需要安装apt-build。它是一个类似 apt-get 的命令行工具,但 apt-build 不会下载和安装二进制包,而是下载包的源代码,进行编译,然后安装到您的系统中。
安装后
sudo apt-get install apt-build
系统会询问你优化级别(medium 就可以了)、是否要为 APT 创建 apt-build repo(是)以及处理器架构问题(我的 intel i7 被认为是 core2 )。当然,所有选项都可以通过以下方式重新配置:
dpkg-reconfigure apt-build
上述命令为 gcc 编译器和 make 构建器提供了两个附加选项。它们的描述可以在系统手册 man gcc 和 man make 中找到。
有关手册和可用命令选项,请检查
man apt-build
但最有用的是:
- apt-build update — 更新 repo 列表,(类似 apt-get update)
- apt-build upgrade — 更新操作系统,(如 apt-get upgrade)
- apt-build install program — 安装应用程序(如 apt-get install)
- apt-build world — 为铁杆用户准备的东西,它重新编译整个系统!
例如:
假设您要编译/安装 Gedit。您只需要执行 apt-get install 即可
sudo apt-build install gedit
Apt-build 利用 /etc/apt/sources.list 文件中的 deb-src 条目,因此编译和安装过程完全自动化(类似于 Gentoo 中的 emerge)。Apt-build 下载主应用程序及其依赖项的源代码,对其进行编译,创建 deb 包,最后安装该包。
关于 apt-build world 的一些注释。
在我看来,不要尝试,除非你有 24 个小时或更多的空闲时间!
如果是这样,您应该做的第一件事就是删除/禁用/卸载任何第三方应用程序(最好在全新安装的 Ubuntu 中执行此操作),然后执行以下操作:
sudo su
dpkg --get-selections | awk '{if ($2 == "install") print $1}'> /etc/apt/apt-build.list
exit
上述命令将把系统软件包的完整列表复制到 apt-build.list,以便可以从源代码编译它们。打开该文件
sudo gedit /etc/apt/apt-build.list
并删除所有 GCC/G++ 条目
然后你可以这样做:
sudo apt-build world
我建议添加两个选项 - --yes 和 --force-yes - 以使重建过程完全自动化。
答案2
您可以就此类话题发起一场论战和激烈的辩论,但让我们看看现实生活。
操作系统的速度很大程度上取决于运行它的硬件,这是主要因素。
我经常更换发行版,但大多数时候都使用 Arch,但 Arch 比 Ubuntu 快得多吗?不是。
Ubuntu 10.10 上带有 compiz 的 Gnome 大约使用 300ram,在 Arch 上是 200ram,我有 4gb 的 RAM,我感觉不到差别,但如果你将带有 gnome 的 Ubuntu 与带有 awesome 的 Arch 进行比较,响应速度和资源使用率会有巨大的提升(300ram 对 50ram),但这仅在你为上网本选择发行版时才重要。
因此,如果您拥有一台快速的桌面并且不想花时间摆弄您的系统,那么只需使用 Ubuntu,但如果您有一台上网本,那么可以考虑在 Arch 上使用轻量级 WM :)
答案3
Apt-build 不仅对性能有用,您还可以为特定硬件构建自定义发行版映像和存储库,以便为您的企业进行大规模安装。我的意思是,如果您知道所有硬件都相同,则优化的二进制发行版。这样,只有一台计算机完成所有编译工作,其余的计算机只需使用重新制作的 ISO 进行升级。它并不完全是为了轻量级或编码。如果由于某种原因您的系统在灾难后无法恢复,自定义安装程序 ISO 允许您重新安装而无需重新编译。