Pertanyaan Menghapus entri kernel lama di Grub [duplikat]


Pertanyaan ini sudah memiliki jawaban di sini:

Saya secara teratur menghapus kernel lama hanya menyisakan dua entri terbaru menggunakan Synaptic.

Saya menggunakan Precise. Namun di dalam menu "Linux versi sebelumnya", ada beberapa entri berlabel 2.6.8. Saya tidak dapat menemukan gambar-gambar linux ini di Synaptic.

dpkg -l | grep linux-image

Memberi:

rc  linux-image-3.0.0-17-generic           3.0.0-17.30                         
    Linux kernel image for version 3.0.0 on x86/x86_64
ii  linux-image-3.2.0-27-generic           3.2.0-27.43
Linux kernel image for version 3.2.0 on 32 bit x86 SMP
ii  linux-image-3.2.0-29-generic           3.2.0-29.46
Linux kernel image for version 3.2.0 on 32 bit x86 SMP
ii  linux-image-3.4.0-030400-generic       3.4.0-030400.201205210521
Linux kernel image for version 3.4.0 on 32 bit x86 SMP
ii  linux-image-generic                    3.2.0.29.31
Generic Linux kernel image

Sudo update-grub memberi:

Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.4.0-030400-generic
Found initrd image: /boot/initrd.img-3.4.0-030400-generic
Found linux image: /boot/vmlinuz-3.2.0-29-generic
Found initrd image: /boot/initrd.img-3.2.0-29-generic
Found linux image: /boot/vmlinuz-3.2.0-27-generic
Found initrd image: /boot/initrd.img-3.2.0-27-generic
Found linux image: /boot/vmlinuz-2.6.38-11-generic
Found initrd image: /boot/initrd.img-2.6.38-11-generic
Found linux image: /boot/vmlinuz-2.6.38-10-generic
Found initrd image: /boot/initrd.img-2.6.38-10-generic
Found linux image: /boot/vmlinuz-2.6.38-8-generic
Found initrd image: /boot/initrd.img-2.6.38-8-generic
Found memtest86+ image: /boot/memtest86+.bin
Found Windows Vista (loader) on /dev/sda1

sudo apt-get remove linux-image-2.6.8-8-generic memberi:

E: Unable to locate package linux-image-2.6.8-8-generic
E: Couldn't find any package by regex 'linux-image-2.6.8-8-generic'

Folder boot saya berisi yang berikut:

abi-2.6.38-10-generic initrd.img-3.4.0-030400-generik
abi-2.6.38-11-generic memtest86 + .bin
abi-2.6.38-8-generic memtest86 + _multiboot.bin
abi-3.2.0-27-generik System.map-2.6.38-10-generic
abi-3.2.0-29-generik System.map-2.6.38-11-generic
abi-3.4.0-030400-generik System.map-2.6.38-8-generic
config-2.6.38-10-generik System.map-3.2.0-27-generic
config-2.6.38-11-generic System.map-3.2.0-29-generic
config-2.6.38-8-generic System.map-3.4.0-030400-generik
config-3.2.0-27-generik vmcoreinfo-2.6.38-10-generik
config-3.2.0-29-generik vmcoreinfo-2.6.38-11-generik
config-3.4.0-030400-generik vmcoreinfo-2.6.38-8-generik
extlinux vmlinuz-2.6.38-10-generik
grub vmlinuz-2.6.38-11-generik
initrd.img-2.6.38-10-generik vmlinuz-2.6.38-8-generik
initrd.img-2.6.38-11-generic vmlinuz-3.2.0-27-generic
initrd.img-2.6.38-8-generic vmlinuz-3.2.0-29-generic
initrd.img-3.2.0-27-generik vmlinuz-3.4.0-030400-generik
initrd.img-3.2.0-29-generik

dan

ls -l /etc/grub.d
 hasil:

total 56
-rwxr-xr-x 1 root root 6715 Apr 17 20:16 00_header
-rwxr-xr-x 1 root root 5522 Okt 1 2011 05_debian_theme
-rwxr-xr-x 1 root root 7407 17 Mei 09:22 10_linux
-rwxr-xr-x 1 root root 6335 Apr 17 20:16 20_linux_xen
-rwxr-xr-x 1 root root 1588 3 Mei 2011 20_memtest86 +
-rwxr-xr-x 1 root root 7603 Apr 17 20:16 30_os-prober
-rwxr-xr-x 1 root root 214 Okt 1 2011 40_custom
-rwxr-xr-x 1 root root 95 Okt 1 2011 41_custom
-rw-r - r-- 1 root root 483 Okt 1 2011 README
gdisk -l /dev/sda

hasil:

Pemindaian tabel partisi:
  MBR: hanya MBR
  BSD: tidak ada
  APM: tidak ada
  GPT: tidak ada


************************************************** *************
Ditemukan GPT tidak valid dan MBR yang valid; mengkonversi MBR ke format GPT.
************************************************** *************

Disk / dev / sda: 312581808 sektor, 149,1 GiB
Ukuran sektor logis: 512 byte
Disk identifier (GUID): F832A498-05E1-4615-B5B1-757ACB4A757A
Tabel partisi menampung hingga 128 entri
Sektor yang dapat digunakan pertama adalah 34, sektor yang terakhir digunakan adalah 312581774
Partisi akan sejajar pada batas 2048-sektor
Total ruang kosong adalah 4183661 sektor (2,0 GiB)

Nomor Start (sektor) End (sektor) Ukuran Kode Nama
   1 2048 61442047 29,3 GiB 0700 Data dasar Microsoft
   3 163842048 169986047 2.9 GiB 8200 Linux swap
   4 169986048 312578047 68,0 GiB 0700 Data dasar Microsoft
   5 61444096 159666175 46.8 GiB 8300 filesystem Linux

Tolong bantu dengan menghapus kernel lama dan tidak ada dari Grub.


21
2017-08-15 22:54


asal


Mungkinkah upgrade dari 11.10 meninggalkan kernel ini diinstal di / boot tetapi menghapus paket entah bagaimana? - To Do
Apakah aman untuk secara manual menghapus file 2.6.8 di / boot dan kemudian memutakhirkan Grub? - To Do
Tolong lari sudo os-prober - John S Gruber
sudo os-prober memberi '/ dev / sda1: Windows Vista (loader): Windows: rantai' - To Do
'sudo apt-get remove linux-image-2.6.8-8-generic' misalkan menjadi 'sudo apt-get remove linux-image-2.6.38-8-generic' - penreturns


Jawaban:


  • Buka terminal (Ctrl+Alt+T).

  • Mengetik uname -r. Ini akan menunjukkan kepada Anda kernel yang Anda gunakan saat ini, jadi Anda tidak ingin menghapus ini.

  • Jalankan perintah berikut: dpkg --list | grep linux-image. Ini akan menunjukkan semua kernel yang diinstal.

  • Catat nama semua kernel yang ingin Anda hapus.

  • Untuk menghapus kernel, jalankan: sudo apt-get purge linux-image-x.x.x.x-xyz (ganti nama kernel dengan yang sesuai).

  • Perbarui GRUB: sudo update-grub2

Dan, selesai.

Bonus: inilah satu-kapal kecil untuk melakukan semua itu secara otomatis:

sudo apt-get purge $( dpkg --list | grep -P -o "linux-image-\d\S+" | grep -v $(uname -r | grep -P -o ".+\d") )

40
2017-10-04 16:17



Ringkasan yang bagus dan satu baris yang lebih baik. Terima kasih! - Alex
mungkin menggunakan menghapus atau autoremove bukan membersihkan? dan hebat dengan satu-liner. - Lamda


Saya menemukan apa masalah ini.

Masalahnya adalah, ketika saya meng-upgrade Ubuntu, dengan menginstal melalui liveUSB daripada melakukan upgrade normal, itu meninggalkan file kernel lama di folder / boot.

Sekarang saya telah mengupgrade dengan cara yang sama dari 12.10 ke 13.04, saya mengalami situasi yang sama.

Solusinya adalah secara manual menghapus semua file yang terkait dengan kernel lama di folder / boot dan jalankan sudo update-grub. Entri ekstra menghilang.


10
2018-05-18 12:56



Saya punya beberapa kernel yang saya buat dari sumber. Jadi ini tidak muncul di dpkg --list | grep linux-image  Jawaban ini adalah bagaimana Anda menyingkirkannya. - RyanNerd


Coba perintah ini. Ini adalah versi yang bagus dari yang sama apt-get remove perintah

sudo apt-get autoremove linux-image-3.2.0-23-generic-pae

Dengan mengganti menghapus dengan autoremove, proses penghapusan secara otomatis menemukan dan menghapus dependensi lain yang tersisa juga, sehingga Anda akan mendapatkan penghapusan instalasi yang bersih, daripada harus pergi ke sana-sini dan menghapus sisa-sisa makanan.

Ulangi proses untuk kernel lama lainnya juga.

Setelah itu, larilah

sudo update-grub

Setelah itu, Anda hanya akan melihat kernel terbaru.


5
2017-10-04 16:01



Saya pikir pertanyaan aslinya adalah tentang grubtidak burg. jadi perintah terakhir tidak akan melakukan apa-apa. - Tom Brossman


Saya biasanya hanya memulai Synaptic (yang harus diinstal secara terpisah hari ini), cari "linux" di kategori Terpasang dan tandai semua versi lama dari kernel dan linux-header (yaitu semua kecuali yang sekarang) untuk dihapus. Saat dihapus, mereka dihapus dari menu GRUB.

Harus ada perintah satu baris yang bagus untuk melakukan itu, tetapi terasa lebih aman hanya untuk melakukannya secara manual


3
2017-08-15 23:08



Seperti yang saya sebutkan di posting, tidak ada entri di Synaptic untuk kernel 2.6.8. - To Do
Apakah Anda memiliki partisi lain, mungkin dengan versi Linux yang lebih lama diinstal? GRUB mungkin menemukan mereka dan menambahkan entri ke menu. - Sergey
bagaimana jika tidak memiliki lingkungan GUI? im bekerja pada 'server ubuntu' dan ingin menghapus entri-entri lama - kapitanluffy
@kapitanluffy: untuk solusi baris perintah lihat jawaban green7. - Sergey


Solusi paling licin akan digunakan ubuntu-tweak. Setelah instalasi, nyalakan, pergi ke Janitor, pilih Old Kernel, pilih kernel lama yang ingin Anda hapus dan Clean. Itu dia! (Perhatikan itu saja tua kernel muncul di petugas kebersihan)


3
2017-08-16 17:40



+1, tetapi jika OP tidak ingin menginstal perangkat lunak tambahan, pengalaman saya mungkin bisa membantu. Saya menghapus file yang sebenarnya oleh sudo su, setelah itu GRUB 2, karena OS-Prober, secara otomatis disesuaikan. - pfeiffep


Saya sarankan Anda memasukkan ini dalam sesi terminal (Alt-Ctrl-T):

sudo update-grub

Perintah ini menyebabkan grub digunakan os-prober dan memperbarui menu.

Jika Anda memiliki partisi dengan rilis Ubuntu lama pada mereka yang telah menggunakan grub (tampaknya OP memiliki partisi rilis rapi di suatu tempat, mungkin lebih) perlu untuk membersihkan mereka juga sebelum menjalankan pembaruan-grub pada sistem saat ini. os-prober menemukan Windows dan partisi Linux lainnya. Untuk partisi Linux lainnya menyalin item dari menu grub mereka, jika ada, daripada melihat file kernel mereka.

Jika Anda memiliki konfigurasi yang benar-benar kacau, solusi terbaik mungkin adalah mem-boot sistem Ubuntu Anda dan menginstal ulang grub dengan:

sudo apt-get --reinstall install grub2

Sementara menginstal ulang grub akan menciptakan kembali /etc/default/grubdan /boot/grub/menu.cfg file, berdasarkan kernel yang diinstal di partisi itu dan pada kernel yang diinstal di konfigurasi grub partisi Ubuntu (yang tampaknya lebih tua) (tampaknya tidak ada untuk OP).


3
2017-08-16 01:09



Saya mencoba itu tetapi mendeteksi 2.6.8 yang tidak ditampilkan di Synaptic. Dan apt-get remove memberi "tidak dapat menemukan paket". Lihat detail lebih lanjut di atas. - To Do
Anda harus mem-boot setiap versi Ubuntu lama, dalam rangka dan pertama membersihkan dengan sudo apr-get remove atau synaptic, hanya menyisakan satu dan kemudian jalankan pembaruan-grub di sana. Lakukan itu secara berurutan. Akhiri dengan pembaruan-grub di partisi ubuntu Anda saat ini. Ini mengambil kernel dari menu grub di partisi Ubuntu lama yang ditemukan oleh os-prober. - John S Gruber
Bisakah Anda melampirkan pertanyaan Anda link ke isi / etc / default / grub, ls -l /etc/grub.d, dan /boot/grub/grub.cfg? - John S Gruber
Untuk yang pertama lihat edit terakhir. Tidak ada file /boot/grub/grub.cfg - To Do
Precise menggunakan grub2 dan grub2 menyimpan menu di /boot/grub/grub.cfg. Fakta bahwa tidak ada yang dapat berarti bahwa grub sebenarnya menemukan file executable dan menu di partisi lain. Bisakah Anda menambahkan isi sudo gdisk -l, Anda mungkin harus menginstal paket gdisk terlebih dahulu. Apa saja di / etc / default / grub, ngomong-ngomong? Mungkin Anda memiliki partisi bios-loader pada disk GPT? - John S Gruber


Untuk Ubuntu 12.04 LTS (Precise) 64bit (pada non-PAE 32bit)


1
2017-08-16 08:32



Masalah dengan ini adalah bahwa kernel 2.6.8 ini TIDAK hadir di Synaptic sehingga penghapusan apt-get tidak berfungsi - To Do