Bagaimana saya bisa menghapus kernel yang dikompilasi?

21

Saya menginstal 14.10 pada laptop saya Lenovo E455.

Dan kompilasi kernel 3.19 dengan urutan sebagai berikut

karena sepertinya jam 14.10 tidak mau bekerja dengan milikku. (Aku melihat gerakan lambat)

Kernel saat ini diunduh dari http://www.kernel.org/

make oldconfig
make
sudo make install

Akhirnya, gagal boot dengan kernel baru.

Bagaimana saya bisa menghapus kernel yang dikompilasi dari grub dan pulih?

Ohmygirl
sumber
Apa yang Anda coba sejauh ini untuk menghapusnya dan di mana kesalahannya? Di mana ada pesan peringatan atau kesalahan?
David Foerster
Terima kasih atas bantuan Anda. Sudah pulih dan menunggu Ubuntu 15.XX.
Ohmygirl

Jawaban:

33

Metode mudah:

Jika dikompilasi melalui metode debian, Anda dapat melihat kernel yang diinstal dengan yang berikut ini:

dpkg --list | grep kernel-image

Dan kemudian hapus paket kernel yang diinginkan dengan apt-get:

sudo apt-get remove kernel-image-your-kernel-image

Metode yang sulit:

Jika dikompilasi dan diinstal melalui make install, Anda harus menghapus entri berikut secara manual:

/boot/vmlinuz*KERNEL-VERSION*
/boot/initrd*KERNEL-VERSION*
/boot/System-map*KERNEL-VERSION*
/boot/config-*KERNEL-VERSION*
/lib/modules/*KERNEL-VERSION*/
/var/lib/initramfs/*KERNEL-VERSION*/

Kemudian perbarui konfigurasi grub:

sudo update-grub2
Mudit Kapil
sumber
1
Saya tidak memiliki direktori / var / lib / initramfs /, tetapi apakah karena saya tidak mengkompilasi kernel di sistem saya?
jarno
1
/var/lib/initramfs-tools/*KERNEL-VERSION*pada Debian
Csaba Toth
1
Pertimbangkan hasil edit untuk kernel yang lebih baru (tahun 2018) yang mengandung: /boot/abi*KERNEL-VERSION*dan/boot/retpoline*KERNEL-VERSION*
WinEunuuchs2Unix
9

Berkat pertanyaan jarno di sini, saya menemukan cara menerapkan jawaban Mudit Kapil yang hanya membutuhkan sedikit pengetikan dan menangkap bit ekstra yang tergeletak di sekitar

Karena semua yang diperlukan untuk menghapus kernel adalah menghapus semua file & direktori, dan semua file dan direktori tersebut akan memiliki string rilis kernel di jalurnya, kita dapat menggunakan locateuntuk menemukan semua file dengan string rilis kernel dan menghapusnya untuk menghapus kernel.

(Pertama periksa uname -runtuk menemukan nama kernel yang saat ini berjalan & pastikan untuk tidak menghapusnya)

Katakanlah Anda ingin menghapus kernel yang disebut 4.4.6-my-kernel. Anda dapat menemukan semua file & direktori yang ada (tanpa daftar file di semua direktori yang disebutkan) dengan locate -b -e 4.4.6-my-kernel. Menambahkan rm -rini dengan xargsmemungkinkan Anda untuk menghapus file juga. Saya menambahkan -puntuk membuat xargstarget tampilan dan meminta konfirmasi sebelum menjalankan

locate -b -e 4.4.6-my-kernel | xargs -p sudo rm -r

kemudian ketik yuntuk mengeksekusi rm -rpada target yang ditampilkan. Ini akan mengeluh bahwa file yang bukan direktori tidak ada karena Anda mencoba untuk menghapusnya secara rekursif ( -r) tetapi tidak apa-apa, mereka masih akan dihapus bersama dengan direktori dan isinya. Setelah selesai, jalankan saja

sudo update-grub

et voila.

Zanna
sumber
+1 karena ini menangkap lebih banyak file daripada jawaban yang diterima. Misalnya semua dkmsbarang. Saya akan menjalankannya terlebih dahulu tanpa rmopsi hanya untuk melihat semua yang akan dihapus.
WinEunuuchs2Unix
Mengapa saya tidak menghapus kernel yang sedang berjalan? Bagaimana jika itu adalah kernel yang ingin saya hapus? Apakah mungkin untuk menghapus kernel yang sedang berjalan tanpa terlebih dahulu me-restart mesin dengan kernel lain?
Liran Funaro
1
@LiranFunaro mungkin ya. Lihat jawaban saya. Bagaimana saya menghapus instalan kernel yang sedang berjalan dengan perintah saja? yang juga menjelaskan mengapa itu mungkin bukan ide yang bagus
Zanna