¿Cómo despojar un sistema Linux?

24

He estado construyendo una distribución de Linux, y he eliminado los archivos binarios, etc. El sistema no usará GCC ni herramientas de desarrollo, ya que será un quiosco de Chrome, por lo que sería de gran ayuda si pudiera eliminar el sistema. ...

Me preguntaba, ¿hay alguna manera de que pueda eliminar todos los archivos del sistema no utilizados (como binarios, etc.) observando qué archivos / bibliotecas se usan durante el tiempo de ejecución? Quizás se prefiera otro método, pero ¿hay alguna manera de lograr algo como esto?

Licuadora
fuente
3
De hecho usted está en el lugar correcto esta vez :)
phunehehe
2
Ahora, podría preguntar, ¿por qué hay un sitio separado de Stack Exchange basado en Ubuntu? Creo que deberían fusionarse con este sitio, porque AFAICT, Ubuntu debería considerarse Linux / Unix, pero no estoy muy seguro;) Si no, ¡prepárate para GentooOverflow y FedoraOverflow!
Blender
3
@Blender: esta fusión se consideró y rechazó. Busque en el Meta de los dos sitios la historia.
Gilles 'SO- deja de ser malvado'
3
Descubrí que el sitio ubuntu es mucho más sobre programas gnome y cosas de interfaz de usuario. Aquí su respuesta seguramente será un comando de terminal.
Falmarri
2
Tengo entendido que AskUbuntu es para Unix y Linux como Unix y Linux es para SuperUser: si es una pregunta específica de ubuntu, va a AU; si de lo contrario es n x-ish, va aquí; de lo contrario, va a SU o a ServerFault.
intuido

Respuestas:

11

Hay programas como Bootchart que se pueden usar para mostrar qué programas ejecutó durante el inicio; probablemente pueda continuar después del inicio para ver qué se ha invocado durante una sesión.

Una mejor solución puede ser usar herramientas de remasterización.

Hay herramientas de remasterización para Fedora , Ubuntu y otros; puede usarlos para personalizar una distribución.

Es posible que desee ver Tiny Core Linux . Hay un chico trabajando en un guión remaster para eso también.

Shawn J. Goff
fuente
Cuando llegue a casa, definitivamente intentaré Bootchart. Sin embargo, mentí, ya que el sistema acaba de terminar de compilarse anoche, así que realmente tendré que hacerlo funcionar en los próximos días. Encontré TinyX (que es lo que estaba buscando, ya que no puedo entender qué módulos XOrg realmente necesito), pero el sitio web no funcionaba ... ¡Bueno, pero muchas gracias!
Blender
Bootchart es! Lo compilé, lo ejecuté y me dio resultados extremadamente detallados y útiles. No voy a pelar el sistema simplemente sin embargo, como voy a poner en práctica un gestor de paquetes basada en el origen (Gentoo?), Pero definitivamente voy a utilizar esto. ¡Gracias!
Blender
6

Entre otras cosas, desea eliminar todo lo que no necesita. Asegúrese de que el sistema de archivos atimeesté totalmente habilitado; puedes configurar esto /etc/fstab. El valor predeterminado actual es relatimepero desea usar solo atime. Cada vez que se accede a un archivo, la marca de tiempo se actualizará. Luego, utilice algunos días para ver qué archivos nunca han actualizado su atime. Haría todo esto en una VM, y con mucho cuidado, porque imagino que hay algunos archivos que se leen cuando el sistema está en modo de solo lectura. Nota: configúrelo noatimeuna vez que esté listo para la producción; de lo contrario, hará una escritura cada vez que lea; Esto es ineficiente.

Aunque para ser honesto, miraría Damn Small Linux ; ¿realmente necesitas ser más pequeño que eso? Cree el suyo en función de su distribución y simplemente elimine el administrador de ventanas y algunos programas adicionales. Deje todas las herramientas de línea de comandos, de esa manera si alguna vez necesita reparar o recargar, tiene el shell.

xenoterracida
fuente
¡Gracias! Estoy tratando de hacerlo yo mismo, ya que nunca he conseguido ejecutar un sistema LFS totalmente utilizable, pero he jugado con DLS antes. De hecho, estoy tratando de construir un clon de ChromeOS que no esté hecho con SuSEStudio (el de chromium.org sí lo es) y que sea un poco más pequeño que 600 MB;) Mi objetivo es> 50 MB, ya que DSL incluye una tonelada de otro software, pero solo estoy instalando OpenBox, Chrome y un Thunar personalizado (y algunas otras cosas, por supuesto). ¡Gracias!
Blender
5

asumiendo que está utilizando Debian o sus derivados

Después de algunos días de uso (pesado), ejecute popularity-contest. Mostrará los paquetes no utilizados más antiguos en la parte inferior. Desinstala esos, pero vigilando si hay o no cosas dependiendo de ellos instalados.

Aquí hay un fragmento de la salida:

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

Las columnas significan atime , ctime , nombre del paquete y archivo al que se accede .

tshepang
fuente
1

Use activamente su sistema por un tiempo con los tiempos de acceso a archivos habilitados. Vea qué archivos nunca tienen su tiempo de acceso modificado. Estos son candidatos para la eliminación (pero asegúrese de que no haya una razón para conservarlos, por ejemplo, porque son controladores de hardware para hardware que no tiene, o son necesarios al principio del proceso de arranque cuando la partición raíz aún está montado solo lectura).

Como tendrá pocas aplicaciones grandes, verifique qué bibliotecas utiliza un solo ejecutable. Considere vincularlos estáticamente.

ldd /bin/* /usr/bin/* |sed -n 's/^.* => \(.*\) (.*)$/\1/p' |sort |uniq -c
Gilles 'SO- deja de ser malvado'
fuente
0

¿De dónde exactamente estás empezando? ¿Estás quitando una distribución existente? ¿Hay alguna razón por la que deba comenzar con alguna distribución?

Es posible que desee considerar la construcción de un sistema integrado desde cero y cargar solo lo que sabe que necesita.

Falmarri
fuente
Estoy construyendo a partir de una instalación LFS + Xorg, Python y Google Chrome. Nada sofisticado.
Blender
Usó GCC, Python, etc. para construir, pero ahora son obsoletos para mis propósitos.
Blender