Cómo mantener 4 núcleos de Linux en / boot por defecto antes de que se eliminen automáticamente

12

Investigué un poco y descubrí que la limpieza automática de los núcleos está en /etc/kernel/postinst.d/apt-auto-removaly el archivo dice:

# In the common case this results in two kernels saved (booted into the
# second-latest kernel, we install the latest kernel in an upgrade), but
# can save up to four. Kernel refers here to a distinct release, which can
# potentially be installed in multiple flavours counting as one kernel.

pero esa secuencia de comandos está muy por encima de mi cabeza y no puedo encontrar fácilmente cómo limpiar automáticamente nada más que los últimos 4 núcleos.

Fabby
fuente
Tienes que modificar el script en varios lugares, no hay otra manera. Si lo desea, puede presentar un informe de error de "lista de deseos" en el aptpaquete para permitir que se personalice la cantidad de núcleos.
fkraiem
2
Los "cuatro" en la parte que citó se refieren al caso inusual en el que "la versión actualmente arrancada", "la versión del núcleo que se nos solicitó", "la última versión del núcleo" y "la segunda versión más reciente del núcleo" son todos distintos, ya que todas esas versiones se mantienen. Sin embargo, en casos típicos, esto se reduce a dos porque "la versión actualmente arrancada" y "la segunda versión más reciente del núcleo" son las mismas, y lo mismo para las otras dos.
fkraiem

Respuestas:

12

Lo que significa cuando dice "hasta cuatro" es que las versiones actualmente en ejecución, instaladas actualmente, las últimas y las anteriores pueden ser diferentes, lo que da como resultado que cuatro versiones se mantengan automáticamente (con un mínimo de dos). Vea esta parte del código:

debkernels="$(echo "$latest_version
$installed_version
$running_version
$previous_version" | sort -u | sed -e '/^$/ d')"

Creo que la forma más sencilla de conseguir que guarde núcleos más antiguos sería extenderlo $previous_versiona una lista. En lugar de:

previous_version="$(echo "$debverlist" | sed -n 2p)"

Hacer:

previous_version="$(echo "$debverlist" | sed -n 2,4p)"
muru
fuente
Sí, parece que debería funcionar. Se debe tener en cuenta que, dado que el archivo es parte del aptpaquete, podría revertirse al predeterminado cuando aptse actualice.
fkraiem
@fkraiem el archivo está dentro /etc, por lo que presumiblemente es un archivo de conffile y los cambios deben conservarse (o, al menos, se le preguntará al usuario sobre ellos)
muru
1
Sí, todos los archivos debajo /etcson conffiles, pero parece que los usuarios a menudo se confunden cuando "guardar o reemplazar". surge una pregunta ...
fkraiem
1
No me confundiré ... @fkraiem
Fabby
apt todavía se queja: The following packages were automatically installed and are no longer required: linux-headers-4.10.0-38 linux-headers-4.10.0-38-generic linux-image-4.10.0-38-generic linux-image-extra-4.10.0-38-generic linux-signed-image-4.10.0-38-generic Use 'sudo apt autoremove' to remove them. pero es un ejecutable y dejaré de preocuparme por eso y he adaptado la pregunta para que se ajuste a la respuesta. :-)
Fabby