Bagaimana agar 4 kernel Linux tetap / boot secara default sebelum dihapus secara otomatis

12

Saya melakukan penggalian sekitar dan menemukan bahwa pembersihan otomatis untuk kernel sudah dalam /etc/kernel/postinst.d/apt-auto-removaldan file menyatakan:

# 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.

tapi skrip itu jauh di atas kepala saya dan saya tidak dapat dengan mudah menemukan cara autoclean apa pun kecuali 4 kernel terakhir.

Fabby
sumber
Anda harus memodifikasi skrip di beberapa tempat, tidak ada cara lain. Jika mau, Anda dapat mengajukan laporan bug "wishlist" pada aptpaket untuk memungkinkan jumlah kernel disesuaikan.
fkraiem
2
"Empat" di bagian yang Anda kutip merujuk pada kasus yang tidak biasa di mana "versi yang saat ini di-boot", "versi kernel yang kami panggil", "versi kernel terbaru", dan "versi kernel terbaru kedua" semua berbeda, karena semua versi itu disimpan. Dalam kasus-kasus tertentu, bagaimanapun, ini bermuara pada dua karena "versi yang saat ini di-boot" dan "versi kernel terbaru kedua" adalah sama, dan juga untuk dua lainnya.
fkraiem

Jawaban:

12

Apa artinya ketika dikatakan "hingga empat" adalah bahwa versi saat ini berjalan, diinstal saat ini, terbaru, dan sebelumnya semua bisa berbeda, sehingga empat versi disimpan secara otomatis (dengan minimal dua). Lihat bagian kode ini:

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

Saya pikir cara paling sederhana untuk mendapatkannya untuk menyelamatkan kernel lama adalah dengan memperluas $previous_versionke daftar. Dari pada:

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

Melakukan:

previous_version="$(echo "$debverlist" | sed -n 2,4p)"
muru
sumber
Ya, ini sepertinya bekerja. Orang harus mencatat bahwa karena file tersebut adalah bagian dari aptpaket, itu dapat dikembalikan ke default ketika aptditingkatkan.
fkraiem
@ fkraiem file ada di /etc, jadi mungkin file tersebut adalah konfigurasi dan perubahan harus dipertahankan (atau, setidaknya, pengguna akan ditanya tentang mereka)
muru
1
Ya, semua file di bawah /etcadalah conffile, tetapi tampaknya pengguna sering menjadi bingung ketika "menyimpan atau mengganti?" pertanyaan muncul ...
fkraiem
1
Saya tidak akan bingung ... @fkraiem
Fabby
apt masih mengeluh: 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. tapi itu executable dan saya akan berhenti mengkhawatirkannya dan telah menyesuaikan pertanyaan agar sesuai dengan jawabannya. :-)
Fabby