如何剥离Linux系统?


24

我一直在构建Linux发行版,并且剥离了二进制文件等。该系统将不使用GCC或开发工具,因为它将是Chrome信息亭,因此如果我可以剥离该系统,它将大有帮助...

我想知道,有没有一种方法可以通过观察运行时使用的文件/库来删除所有未使用的系统文件(如二进制文件等)?也许首选其他方法,但是有没有办法完成类似的事情?


3
的确,这次您的位置正确:)
phunehehe 2010年

2
现在,请问,为什么会有一个单独的基于Ubuntu的Stack Exchange网站?我认为他们应该与该站点合并,因为应该将AFAICT,Ubuntu 视为Linux / Unix,但是我不太确定;)如果没有,请准备好GentooOverflow和FedoraOverflow!
Blender 2010年

3
@Blender:考虑并拒绝了此合并。在两个站点的Meta中查找历史记录。
吉尔斯(Gillles)“所以-别再邪恶了”

3
我发现ubuntu网站上有很多有关gnome程序和用户界面的内容。在这里,您的答案几乎肯定是终端命令。
Falmarri 2010年

2
我的理解是,AskUbuntu适用于Unix和Linux,就像Unix和Linux适用于SuperUser:如果这是针对Ubuntu的特定问题,请转到AU;如果不是n x-ish,则转到此处;否则,它将转到SU或ServerFault。
直觉

Answers:


11

有诸如Bootchart之类的程序可用于显示启动过程中运行的程序-您可能可以在启动后继续运行,以查看会话期间调用了什么程序。

更好的解决方案可能是使用重新制作工具。

有一些用于FedoraUbuntu和其他版本的重制工具。您可以使用它们来自定义发行版。

您可能想看看Tiny Core Linux。也有一个人正在为此制作一个remaster脚本


当我回到家时,我一定会尝试Bootchart。不过,我撒谎了,因为该系统昨晚才刚刚完成编译,所以我必须在接下来的几天中使其真正运行。我找到了TinyX(这是我一直在寻找的,因为我无法确定我真正需要的XOrg模块),但是该网站已关闭……哦,但是,非常感谢!
Blender 2010年

就是引导图!我编译,运行它,它给了我极其冗长和有用的结果。我不打算剥离系统只是还没有,因为我要实现基于源的包管理器(Gentoo的?),但我一定会用这个。谢谢!
Blender 2010年

6

除其他外,您想删除不需要的所有内容。确保文件系统已atime完全启用;您可以在中进行设置/etc/fstab。当前的默认值是,relatime但您只想使用atime。每次访问文件时,时间戳都会更新。然后,使用几天,以查看从未更新过的文件。我会非常仔细地在VM中完成所有这些操作,因为我想当系统处于只读模式时会读取一些文件。注意:将其设置为noatime准备生产时,否则每次阅读都会写一次;这是低效的。

坦白地说,我会看看Damn Small Linux;你真的需要小于那个吗?根据他们的发行版来构建您的版本,只需删除窗口管理器和一些其他程序。保留所有命令行工具,这样一来,如果您需要修复或重新加载外壳,就可以使用。


谢谢!我一直在尝试自己做,因为我从来没有真正运行过一个完全可用的LFS系统,但是我以前玩过DLS。我实际上是在尝试构建不是用SuSEStudio制作的ChromeOS克隆(来自chromium.org的那个),并且略小于600MB;)我的目标是> 50MB,因为DSL包含大量其他软件,但我只安装OpenBox,Chrome和定制的Thunar(当然还有其他一些东西)。谢谢!
Blender 2010年

5

假设您正在使用Debian或其衍生产品

在(大量)使用几天后,运行popularity-contest。它将在底部显示最旧的未使用的软件包。卸载它们,但要注意是否有东西取决于安装的东西。

这是输出的代码段:

1294222606 1292570417 vlc /usr/lib/vlc/plugins/gui/libqt4_plugin.so
1294222606 1292570109 xulrunner-1.9.2 /usr/share/xulrunner-1.9.2/chrome/classic.jar
1294222606 1292507839 ttf-dejavu-extra /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Oblique.ttf
1294222606 1292507459 x11-utils /usr/bin/xprop

列表示atimectime程序包名称和被访问的文件


1

启用文件访问时间后,请在一段时间内积极使用系统。查看哪些文件永远不会修改其访问时间。这些是可以删除的候选对象(但是请确保没有理由保留它们,例如,因为它们是您所没有的硬件的硬件驱动程序,或者在根分区仍处于引导过程的早期就需要它们)已安装为只读)。

由于您将只有几个大型应用程序,因此请检查单个可执行文件使用了哪些库。考虑静态链接它们。

ldd /bin/* /usr/bin/* |sed -n 's/^.* => \(.*\) (.*)$/\1/p' |sort |uniq -c

0

您到底从哪里开始?您是否要剥离现有发行版?您有理由从任何发行版开始吗?

您可能要考虑从头开始构建嵌入式系统,并仅加载您所需的内容。


我基于LFS安装+ Xorg,Python和Google Chrome构建。没有什么花哨。
Blender 2010年

它使用GCC,Python等进行构建,但出于我的目的,它们现在已过时。
Blender 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.