Mengapa tidak aman untuk menghapus kernel lama?

36

Saya kehabisan ruang pada boot drive saya, jadi saya memutuskan untuk menghapus kernel lama. Saya menemukan halaman ini yang menjelaskan dengan tepat apa yang harus saya lakukan: Dokumentasi Lubuntu: Hapus Kernel Lama .

Saya telah menghapus kernel tertua secara manual dan sekarang tidak apa-apa, tetapi saya tidak mengerti satu hal: di akhir artikel ada beberapa kode yang dapat menghapus semua versi kernel lama, tetapi itu ditandai hanya untuk pengguna tingkat lanjut saja.

Saya tidak begitu mengerti apa bahayanya di sini. Kedengarannya konyol, tetapi mereka tampaknya mengatakan bahwa mungkin ada lebih dari satu kernel yang digunakan oleh mesin tertentu pada saat yang sama.

Apakah mungkin aplikasi yang berbeda pada mesin Ubuntu saya dapat menggunakan kernel yang berbeda secara bersamaan? Mengapa menghapus semua kernel lama secara otomatis dianggap berbahaya?

Sergei
sumber
8
Sebenarnya, artikel itu tidak memiliki kata "bahaya" dan "tidak aman" di dalamnya. Bagaimana Anda bisa sampai pada kesimpulan yang terlalu berlebihan?
mikewhthing
2
Beberapa kali saya telah meningkatkan ke kernel terbaru dan menghapus kernel lama saya sebelum me-reboot, hanya untuk menemukan bahwa (pada sistem khusus saya) kernel tidak berfungsi dan sistem tidak mau boot. Sekarang saya melakukan reboot terlebih dahulu dan kemudian menghapus kernel lama jika semuanya baik-baik saja.
Matius Baca

Jawaban:

50

Menghapus kernel lama tidak inheren tidak aman, tetapi jika Anda menghapus semua kernel dan reboot, Anda akan ditinggalkan di layar Grub yang marah. Perbaikan yang membutuhkan pengetahuan yang signifikan (seperti itu tetapi dengan apt-get install linux-genericdi akhir).

Pertama kali Anda melakukan ini cukup mendebarkan, tetapi orang-orang yang ingin membersihkan menu Grub mereka atau memulihkan ruang disk tidak mencari kesenangan.

The bahaya datang dari pengguna menyalin-paste blok kode yang -unbeknownst kepada mereka dan tanpa mengakui risks- tidak berlaku. Ada banyak contoh mendeteksi kernel lama dan sedikit yang sempurna. Bahkan upaya terakhir saya masih memiliki jebakan. Dan kita berbicara tentang masalah yang bisa diperbaiki; banyak posting di Tanya Ubuntu dapat menyebabkan hilangnya data permanen jika digunakan secara tidak benar.

Kami mencoba melindungi dari kerusakan dengan menandatangani risiko untuk membuat pengguna sadar akan masalah potensial . Dalam skenario kasus terbaik, pengguna akan siap dan diperlengkapi untuk menghadapi masalah dan dalam kasus terburuk, setidaknya mereka tidak bisa mengeluh bahwa mereka tidak diperingatkan.

Oli
sumber
11
Jangan hapus semua kernel Anda (jelas) tetapi juga jangan hapus kernel yang sedang berjalan jika Anda baru saja menginstal kernel yang diperbarui dan belum reboot. Mengapa? Jika ada yang rusak di kernel yang diperbarui, Anda selalu dapat memilih kernel sebelumnya di Grub dan kembali bekerja. Jika tidak, Anda akan terjebak dengan sistem yang tidak bisa di-boot dan harus memainkan "game LiveCD" (bukan game yang menyenangkan, BTW).
Nathan Osman
1
Itu hampir sama menyenangkannya dengan dd if=/dev/zero of=/dev/sda bs=512 count=1. Saya tidak ingat apa yang saya coba lakukan (sesuatu tentang beberapa manajer boot membuat hidup saya menyebalkan). Saya menghabiskan sekitar tujuh jam dengan LiveCD mencoba memperbaiki tabel partisi saya.
phyrfox
1
Hanya saja itu mudah, pertahankan (setidaknya) satu kernel yang telah diuji dan pasti berfungsi. Seseorang - @NathanOsman - harus benar-benar menuliskannya dalam kata-kata, saya kira. Pelajaran penting kedua yang dipelajari di sini, jangan lakukan hal-hal yang Anda tidak tahu konsekuensinya.
Nicolai
1
Saya tidak akan menggunakan kata "menegangkan," tetapi perasaan itu sangat kuat ketika saya melakukannya.
MDeBusk
Setelah memperbaiki masalah kernel di masa lalu, saya jauh lebih bahagia meninggalkan tiga kernel. Saya biasanya pergi dengan kernel yang sedang berjalan, kernel terbaru dan yang tepat sebelum yang sekarang. Ini memberi saya yang terbaru saat reboot, yang diketahui berfungsi dan sebelumnya jika itu gagal karena suatu alasan. Itu mungkin berlebihan, tetapi apakah CYA disetujui.
flickerfly
4

Kernel lama adalah bagian dari paket. Jika Anda baru saja menghapus /boot/vmlinuz-3.13.0-44-genericAnda akan meninggalkan remah paket di seluruh.

Pertama, cari tahu kernel mana yang Anda jalankan. JANGAN hapus apa pun dengan nilai ini namanya:

$ uname -r  
3.13.0-49-generic  

YMMV. Kemudian, tanyakan dpkgapa yang diketahui:

$ dpkg -l linux-*

Beberapa paket itu dapat dihapus, tetapi apa lagi yang ada? Menggunakan satu baris diekstraksi (pada sistem MY) dari output dari dpkg -l linux-*:

 ii  linux-image-3.13.0-44-generic       3.13.0-44.73           amd64                  Linux kernel image for version 3.13.0 on 64 bit x86 SMP

Sekarang kita akan melihat paket apa yang ada -3.13.0-44di namanya:

$ dpkg -l *-3.13.0-44*

Setelah Anda melakukan pemeriksaan terakhir untuk memastikan bahwa kernel saat ini ( uname -r) TIDAK ada dalam daftar paket, Anda dapat mulai menghapusnya melalui sistem manajemen paket pilihan Anda.

waltinator
sumber
0

Terakhir kali saya menghapus kernel lama saya, saya meminjam potongan kode lama. Cuplikan kode ini mengharuskan saya untuk reboot setelah menginstal kernel baru, jadi saya dibiarkan tanpa kernel. Untungnya, saya telah menangkap ini sebelum me-reboot, tetapi seperti yang orang lain katakan, saya mungkin dibiarkan dengan "layar grub yang marah".

Singkatnya, itu hanyalah sesuatu yang dapat dengan mudah dikacaukan, sehingga menghasilkan sistem bata yang sulit dipulihkan.

alfonsojon
sumber
0

Itu tidak aman. Dengan menggunakan Linux, Anda dapat melakukan apa yang Anda inginkan jika Anda tahu perintah yang benar.

Dalam /bootdirektori, Anda dapat melakukan ls -ladaftar panjang yang sederhana serta menemukan file atau direktori tersembunyi (yang tidak seharusnya ada di sana jika ada !!).

Dari informasi ini, Anda dapat menilai tanggal dan file versi lama. Jangan hapus semuanya, tetapi file terlama yang sesuai dengan versi yang sama.

Pada titik tertentu, saya berpikir bahwa mungkin saja, jika Anda telah mengkompilasi kernel dari source, maka Anda perlu mengubah yang baru. The .configfile, yang saya tidak berpikir adalah kasus per penjelasan Anda, akan tinggal di sana.

Jadi, jika itu terjadi setelah menghapus file-file lama yang bersesuaian dengan satu versi dan setelah me-reboot mesin Anda, mungkin saja Anda menemui panik kernel.

Solusi sederhana adalah dengan mem-boot mesin dengan live USB atau CD / DVD Linux. chrootke dalamnya, dan membangun kembali kernel dengan alat-alat seperti dracut.

Nitin J Mutkawoa
sumber