Pertanyaan Mengapa Ubuntu tidak menghapus kernel lama secara otomatis? [duplikat]


Pertanyaan ini sudah memiliki jawaban di sini:

Saya bertanya-tanya mengapa Ubuntu tidak akan menghapus kernel lama secara otomatis.

Tentunya tidak ada yang sempurna dan hal-hal bisa salah, jadi jika pembaruan tidak berfungsi, memiliki kernel cadangan mungkin besar. Tapi itu juga cukup untuk menyimpan kernel terbaru dan yang terakhir sebelum yang terbaru dan menghapus semua yang lebih tua.

Apakah ada alasan mengapa Ubuntu tidak akan melakukan ini secara otomatis ?.


91
2018-02-27 14:35


asal


Lihat apakah di bawah ini cukup baik. Saya menarik beberapa sumber daya bersama dan ada banyak keraguan tentang apa yang harus dipertimbangkan untuk dihapus. - Rinzwind
Menghapus @Rinzwind? Arch hanya menimpa mereka - dan kemudian beberapa hal tetap tidak dapat digunakan hingga Anda memulai ulang (seperti iptables). - muru
"Mengapa Ubuntu tidak menghapus kernel lama secara otomatis?" itu benar. "Saya ingin tahu mengapa Ubuntu tidak akan menghapus kernel lama secara manual." Saya tidak tahu apa yang Anda maksud dengan ini. - Braiam
Tampaknya sangat konyol bagi saya bahwa saya mendapatkan pesan 'boot out of disk space' setiap bulan kedua, dan kemudian harus memperbaiki masalah yang agak teknis ini. Saya sangat mengerti mengapa ubuntu bukan sistem untuk pengguna non-teknis. - sunew
@sunew ya, masalah ini benar-benar membunuh mesin orang tua saya menjalankan 12.04 untuk periode LTS penuh - mengisi tabel inode disk! Harus ada standar yang masuk akal di sini bahwa pengguna teknis (yang sengaja menginstal kernel yang berbeda) dapat menimpa dengan mudah. - artfulrobot


Jawaban:


Apakah ada alasan mengapa Ubuntu tidak melakukan ini secara otomatis?

Saya hanya bisa melihat satu alasan: itu tidak bekerja dengan sempurna; tidak ada cara yang bersih untuk memutuskan apa definisi "kernel lama" itu. "tua" tidak berarti "tidak terpakai" juga tidak berarti "tidak diinginkan". Dan kesalahan apa pun dalam hal ini akan membunuh mesin pengguna.

Jadi hingga kini metode manual lebih disukai karena ini menempatkan kekuatan menghapus ke tangan pengguna.


Sumber daya untuk kesimpulan ini:

Ubuntu WIKI: Proposal untuk menghapus kernel lama

Last-good-boot dilaksanakan sepenuhnya di Intrepid / 8.10 final, namun telah dinonaktifkan karena dianggap tidak cukup stabil. Pengaturannya adalah satu baris dalam file / etc / default / kernel-helper-rc.


Landasan peluncuran: Haruskah aptitude menyediakan cara untuk menghapus versi kernel lama?

apt-get memiliki fitur autoremove yang mencopot semua paket yang tidak diperlukan sebagai dependensi dan belum diinstal secara manual. Karena Ubuntu 14.04 semua kernel dan header usang secara otomatis akan ditandai sebagai tidak diperlukan lagi, dan dengan demikian dapat dibersihkan dengan perintah apt-get autoremove. (Ada laporan bahwa ini belum sepenuhnya berfungsi). Saya tidak tahu fitur dalam aptitude yang mirip dengan autoremove apt-get.


Ubuntu-devel: Mekanisme distro-disediakan untuk membersihkan kernel lama

Sementara setuju bahwa itu akan sangat membantu dan sepertinya tepat untuk memiliki   pembersihan otomatis, ada sedikit potensi jebakan (atau dua). Ada   berbagai rasa kernel dan orang mungkin atau mungkin tidak sengaja memilikinya   dipasang secara paralel. Juga berbagai rilis kadang-kadang set perubahan   tergantung paket. Untuk sementara ini seharusnya hanya linux-backports-modules   (ada linux-ubuntu-modules dan linux-restricted-modules). Padahal ini   tidak begitu banyak masalah.   Dari sudut pandang pencocokan pola, kernel generik-pae adalah sedikit a   rasa sakit karena mereka cenderung merusak "gunakan bagian terakhir dari perpecahan oleh" - "untuk rasa".   Tapi bagaimanapun, saya pikir masalah utamanya adalah berbagai rasa, jadi pembersihan itu   otomatis harus mempertahankan tiga terakhir masing-masing, meskipun ini mungkin cenderung   tinggalkan lebih banyak kernel di sekitar.


44
2018-02-27 15:02



Saya setuju bahwa Ubuntu seharusnya tidak menghapus kernel lama secara otomatis. Saya pernah mengalami situasi di mana kernel baru menyebabkan masalah serius dengan beberapa perangkat lunak; sampai masalah itu diperbaiki, saya harus mempertahankan kernel tertua yang berfungsi. Tentu saja, saya menghindar apt-get autoremove. - Paddy Landau
setidaknya harus menjadi pilihan untuk dapat mengaktifkan autoremove hanya saya .02 - mBardos
@mBardos ada (semacam): Ubuntu Tweak memiliki metode untuk ini. - Rinzwind
@Rinzwind terima kasih! saya akan mengeceknya - mBardos
Bukankah "lama" berarti "bukan salah satu dari 2 (atau tiga) kernel terakhir yang akan di-boot"? Kecuali Anda memiliki dua baris kernel yang berbeda diinstal? Hmm Saya kira Anda mungkin menggunakan versi kernel yang lebih lama untuk instalasi yang berbeda di partisi lain. Tetapi harus ada keadaan default yang dibatalkan jika Anda adalah semacam panduan funk. Atau setidaknya harus secara default mengalokasikan cukup ruang pada / boot yang Anda tidak perlu khawatir tentang ini selama bertahun-tahun. Kalau tidak, nenek tidak akan pernah menjalankan linux. - intuited


Ada dua hal yang terjadi di sini:

  1. Kernel baru adalah paket yang benar-benar baru, bukan paket yang diperbarui dengan nomor versi yang lebih baru, jadi memasang imej kernel baru tidak menggantikan yang lama. Mereka hidup berdampingan.

  2. Ubuntu menggunakan sekelompok sihir apt untuk melindungi dua versi kernel terakhir dari 'apt-get autoremove' (yang terbaru, dan yang terakhir di-boot). Lihat /etc/apt/apt.conf.d/01autoremove-kernels untuk detailnya.

Apa ini semua berarti adalah setelah Anda reboot ke kernel terbaru, 'apt-get autoremove' seharusnya menghapus semua paket kernel yang ada dan yang terakhir.

Kernel lama masih terakumulasi di / boot karena autoremove tidak diaktifkan di Ubuntu secara default - Anda harus menjalankannya secara manual sesering mungkin, atau Anda harus mengaktifkannya.

Ini dapat berubah pada 16.04 - a perbaikan bug ke paket upgrade tanpa pengawasan akan mengaktifkan autoremove dari kernel lama secara default.


21
2018-02-27 23:08





Skrip ini akan melakukan pekerjaan. Ini akan menghapus semua kernel yang tidak digunakan.

sudo dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge

Lain kemudian itu, tidak menghapus kernel harus menjadi hal yang cukup baru. Saya memiliki satu sistem Ubuntu 14 setelah yang lain berjalan ke dalam masalah ini dari partisi boot penuh karena sampah kernel lama.

Ini dapat membuat kehidupan pengguna yang kurang berpengalaman menjadi sangat rumit. Ini sebenarnya jebakan noob. Kanonikal harus memperbaiki ini.


16
2018-03-08 09:18



Skrip ini berpotensi berbahaya: ketika saya melakukan pembaruan sistem yang menginstal kernel baru, jalankan skrip ini sebelum reboot, kernel baru akan dihapus, bukan yang lama. Saya tidak ingin mengatakan itu adalah naskah yang buruk, hanya saja yang harus berhati-hati ketika menyebutnya. - daniel kullmann
Terima kasih! "0 ditingkatkan, 0 baru diinstal, 48 untuk menghapus dan 5 tidak ditingkatkan. Setelah operasi ini, 3,322 MB ruang disk akan dibebaskan." - thenickdude
Adalah bijaksana untuk menjalankan skrip ini tanpa | xargs ... bagian untuk memeriksa paket apa yang akan dihapus, sebelum benar-benar menghapusnya: sudo dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' - PeterM
@PeterM, dan sudo tidak diperlukan di depan dpkg. - jarno
Ada pertanyaan terpisah tentang naskahnya sini. - jarno


Cara sederhana untuk menghapus kernel lama adalah dengan menggunakan ubuntu-tweak. Anda memilih tag Pengawas dan centang kotak Old Kernel. Itu memberi Anda daftar kernel yang menurut Anda tidak perlu lagi. Anda dapat memilih semuanya dan mengklik Bersihkan dan, setelah beberapa saat, pekerjaan selesai. Karena gugup, saya memeriksa kernel mana yang saya jalankan menggunakan uname -a tetapi tidak ada dalam daftar. Ini bekerja pada laptop istri saya (yang memiliki partisi boot yang agak kecil dan menunjukkan peringatan) dan milik saya (yang berfungsi dengan baik). Apakah semua orang setuju bahwa ini aman?


3
2018-02-28 12:22



Oh menghapus kernel secara otomatis dapat dilakukan dengan aman; hanya saja orang yang bertanggung jawab membuat ini terjadi tidak merasa cukup percaya diri untuk mengklaim dia dapat memutuskan untuk semua orang kernel dari sistem tertentu harus dihapus. Lama bukan berarti tidak diinginkan;) - Rinzwind
Seperti yang ditunjukkan @Rinzwind, sebenarnya ada dua masalah di sini. Bagaimana dan kapan / jika melakukannya. Saya terbiasa menggunakan ubuntu-tweak dan berhasil, tetapi tidak menyukai KDE (yang saya gunakan) sangat banyak. Sekarang, setiap kali saya mendapatkan pembaruan kernel, saya masuk ke manajer paket muon gui, mencari kernel, cari yang ingin dihapus, tambahkan nomor terakhir seperti 36 ke kernel - kernel 36, sortir di instal, dan pilih 2 atau 3 paket yang akan dihapus. Mudah. Ini juga manual, jadi jika saya telah menyusun modul driver yang masih membutuhkan kernel lama, kernel itu tidak akan dihapus sampai saya siap untuk itu terjadi. - Joe


Ubuntu hanya menghapus secara otomatis item yang tidak lagi diperlukan atau merupakan risiko keamanan ... Jadi saya berasumsi bahwa alasan untuk ini adalah tujuan keamanan. Katakanlah untuk beberapa alasan aneh kernel baru menjadi tidak aman ... Maka Anda akan dialihkan kembali ke kernel lama sementara sementara yang baru sedang diperbaiki. Juga kernel baru bisa datang dengan perubahan sehingga beberapa kernel opt-in misalnya memperbarui 14.04.1 ke 14.04.2 Anda dapat memilih untuk kernel baru, tetapi April ini ketika versi LTS baru 15.04 keluar Anda secara otomatis akan memiliki Anda memperbarui kernel. Jadi saya pikir itu untuk tujuan keamanan.

tetapi jika Anda ingin menghapusnya, coba jalankan baris perintah ini

sudo apt-get autoremove

Ini harus menghapus perangkat lunak yang tidak diperlukan seperti kernel lama Anda jika tidak mencoba

sudo apt-get remove (kernels-name)

2
2018-02-27 14:54



"Katakanlah untuk beberapa alasan aneh kernel baru menjadi tidak aman ... Maka Anda akan dialihkan kembali ke kernel lama sementara sementara yang baru sedang diperbaiki." Apakah Anda memiliki sumber untuk klaim ini? - John Kugelman
@JohnKugelman itu tidak akan terjadi. Paket baru akan dirilis dengan perbaikan dan orang-orang akan meningkatkannya. Dalam kasus ekstrim masalah yang tidak bisa diperbaiki, kernel yang lebih tua akan dikemas dengan nomor versi yang lebih tinggi (mungkin perubahan zaman) untuk mempengaruhi upgrade. - hobbs
"... ketika LTS versi baru 15.04 keluar ..." - 15.04 tidak akan LTS, kecuali ada pergeseran dukungan besar oleh Canonical yang belum saya dengar. - iGadget
sebenarnya 15.04 akan menjadi LTS baru tetapi rilis seperti yang sama untuk semua rilis tidak akan menjadi standar LTS baru sampai tanggal tertentu setelah sistem baru dirilis ... saya yakin Canonical melakukan ini karena mereka ingin menjadi benar-benar yakin sistem benar-benar aman ... karena saya mengetik 15.04 ini telah dirilis sehingga berikan beberapa bulan dan itu akan menjadi LTS ... saya tidak berencana untuk meningkatkan sampai saat itu ... tidak banyak berubah pula - Tactux
@TAC_Tux Itu bukan cara Ubuntu merilis LTS. Anda mungkin memikirkan cara proyek Debian melakukan banyak hal. Berikut jadwal rilis Ubuntu saat ini: wiki.ubuntu.com/LTS - Martijn Heemels


Saya Roadmap menggunakan Ubuntu Tweak untuk menghapus kernel lama. Lihat di sini:

Bagaimana cara menghapus versi kernel lama untuk membersihkan menu boot?


2
2017-10-22 09:00





Saya pikir rilis terbaru Ubuntu 15.10 dapat menghapus kernel lama secara otomatis, jika Anda mengedit file /etc/apt/apt.conf.d/50unattended-upgrades: Ubah garis

// Unattended-Upgrade :: Remove-Unused-Dependencies "false";

untuk

Unattended-Upgrade :: Remove-Unused-Dependencies "true";

Saya belum menguji ini.


2
2017-12-23 20:12



Melihat sebuah Laporan bug tentang masalah ini. - jarno
Dan lihat juga terkait saya menjawab. - jarno


Saya memiliki masalah dengan tidak dapat menginstal perangkat lunak. Apt-get tidak dapat menginstal linux-headers, melaporkan disk penuh.$ df -imelaporkan bahwa IUse% mencapai 100%: Disk memiliki ruang kosong tetapi kehabisan inode. $ sudo dpkg --configure -a gagal, & begitu juga $ sudo apt-get -f install dan $ sudo apt-get autoremove

Masalahnya terpecahkan ketika saya secara manual menghapus beberapa folder kernel lama dari / usr / src - hanya $ rm atau shift-delete folder. Ini membebaskan cukup ruang inode untuk memungkinkan $ apt-get -f install untuk menyelesaikan.

Setelah itu saya hanya memiliki 10 kernel linux. Saya berlari $ sudo apt-get autoremove yang menghapus 1,4 GB file. Yang menimbulkan pertanyaan: Benarkah ?? Sangat?? Tapi jujur, apakah ini cara yang tepat untuk menjalankan sistem ramah pengguna?


2
2017-12-24 08:47



Ya, itu, karena Anda mungkin secara tak terduga membutuhkan kernel lama itu, seperti yang dijelaskan di atas. - Reinier Post
Apakah Anda mencoba untuk membersihkan beberapa kernel dpkg --purge? - jarno