我一直在构建Linux发行版,并且剥离了二进制文件等。该系统将不使用GCC或开发工具,因为它将是Chrome信息亭,因此如果我可以剥离该系统,它将大有帮助...
我想知道,有没有一种方法可以通过观察运行时使用的文件/库来删除所有未使用的系统文件(如二进制文件等)?也许首选其他方法,但是有没有办法完成类似的事情?
我一直在构建Linux发行版,并且剥离了二进制文件等。该系统将不使用GCC或开发工具,因为它将是Chrome信息亭,因此如果我可以剥离该系统,它将大有帮助...
我想知道,有没有一种方法可以通过观察运行时使用的文件/库来删除所有未使用的系统文件(如二进制文件等)?也许首选其他方法,但是有没有办法完成类似的事情?
Answers:
有诸如Bootchart之类的程序可用于显示启动过程中运行的程序-您可能可以在启动后继续运行,以查看会话期间调用了什么程序。
更好的解决方案可能是使用重新制作工具。
有一些用于Fedora,Ubuntu和其他版本的重制工具。您可以使用它们来自定义发行版。
您可能想看看Tiny Core Linux。也有一个人正在为此制作一个remaster脚本。
除其他外,您想删除不需要的所有内容。确保文件系统已atime
完全启用;您可以在中进行设置/etc/fstab
。当前的默认值是,relatime
但您只想使用atime
。每次访问文件时,时间戳都会更新。然后,使用几天,以查看从未更新过的文件。我会非常仔细地在VM中完成所有这些操作,因为我想当系统处于只读模式时会读取一些文件。注意:将其设置为noatime
准备生产时,否则每次阅读都会写一次;这是低效的。
坦白地说,我会看看Damn Small Linux;你真的需要小于那个吗?根据他们的发行版来构建您的版本,只需删除窗口管理器和一些其他程序。保留所有命令行工具,这样一来,如果您需要修复或重新加载外壳,就可以使用。
假设您正在使用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
列表示atime,ctime,程序包名称和被访问的文件。
启用文件访问时间后,请在一段时间内积极使用系统。查看哪些文件永远不会修改其访问时间。这些是可以删除的候选对象(但是请确保没有理由保留它们,例如,因为它们是您所没有的硬件的硬件驱动程序,或者在根分区仍处于引导过程的早期就需要它们)已安装为只读)。
由于您将只有几个大型应用程序,因此请检查单个可执行文件使用了哪些库。考虑静态链接它们。
ldd /bin/* /usr/bin/* |sed -n 's/^.* => \(.*\) (.*)$/\1/p' |sort |uniq -c
您到底从哪里开始?您是否要剥离现有发行版?您有理由从任何发行版开始吗?
您可能要考虑从头开始构建嵌入式系统,并仅加载您所需的内容。