“Volume booting hanya memiliki sisa ruang 0 byte”


32

Setelah pembaruan terbaru, saya mendapatkan peringatan yang mengatakan:

The volume boot has only 0 bytes disk space remaining

Tetapi komputer saya memiliki banyak ruang HD gratis. Apakah ada yang tahu bagaimana saya menyelesaikan ini. (Jika itu relevan, saya menggunakan fitur enkripsi seluruh disk dari gambar instalasi alternatif untuk Ubuntu 12.04).


Itu benar-benar tergantung pada bagaimana Anda menginstal Ubuntu pada mesin Anda. Bisakah Anda "sudo fdisk -l" di terminal dan memeriksa apakah ada partisi kecil yang hampir penuh?
Paulius Šukys

4
Lebih baik lagi, silakan jalankan perintah 'df -H -x tmpfs -x devtmpfs' tanpa tanda kutip dan tempel hasilnya di sini.
fabricator4

Pertanyaan dan jawaban ini terkait dengan masalah, dan dapat membantu.
Elomage

rupanya masalah yang diketahui untuk partisi terenkripsi. answer askubuntu.com/a/230942/231504 bagus - bekerja untuk saya. Selain itu, harap tambahkan hitungan pengguna yang terpengaruh dalam pelacak ubuntu: bugs.launchpad.net/ubuntu/+source/unattended-upgrades/+bug/…
pestophagous

Jawaban:


48

Untuk membuat daftar semua kernel:
dpkg --get-selections | grep "linux-image-[[:digit:]].*" | tr "\t" ";" | cut -d ";" -f1

Hasilnya terlihat seperti ini:

linux-image-3.19.0-7-generic 
linux-image-3.18.0-13-generic  
linux-image-3.16.0-23-generic

Jangan hapus semua kernel, hanya yang lama!

Selanjutnya mari kita hapus kernel 3.16,
sudo apt-get purge linux-image-3.16.0-23-generic

dan kemudian semua paket yang tidak digunakan dari sistem:
sudo apt-get autoclean && sudo apt-get autoremove


Saya memiliki beberapa panggilan extrajuga, misalnya keduanya linux-image-3.13.0-40-genericdan linux-image-extra-3.13.0-40-generic. Bisakah saya menghapus yang dengan extra?
Mads Skjern

Ini sangat membantu, tetapi tidak sepenuhnya menyelesaikan masalah saya (membersihkan kernel lama masih gagal). Saya harus menghapus secara manual beberapa file kernel lama. Saya menemukan beberapa yang besar menggunakan find /boot/ -type f | xargs du | sort -n. Kernel saya sedang berjalan adalah 3.13.0-66-generic, jadi aku hati untuk tidak apa-apa menghapus terkait dengan itu, tapi saya tidak menghapus berikut: sudo rm /boot/initrd.img-3.13.0-63-generic /boot/initrd.img-3.13.0-65-generic /boot/vmlinuz-3.13.0-65-generic /boot/vmlinuz-3.13.0-63-generic. Akhirnya, menjalankan pembersihan pada kernel lama berhasil.
blong

4
jika Anda benar-benar memiliki 0 byte gratis, ini tidak akan berfungsi seperti yang dikatakan @blong. Anda harus menghapus secara manual beberapa file vmlinuz lama, karena proses pembersihan perlu membuat beberapa file dan, jika 0 byte tersisa, ini gagal.
pomarc

1
Bagaimana saya tahu kernel mana yang sudah tua? Output saya adalah linux-image-4.10.0-42-generic linux-image-4.13.0-26-generic linux-image-4.13.0-32-generic linux-image-4.13.0-37-generic linux-image -4.13.0-38-generic linux-image-4.13.0-39-generic linux-image-4.13.0-41-generic linux-image-4.13.0-43-generic linux-image-4.8.0-36 -generik
jacob

25

Penyebabnya memang gambar kernel lama.
Untuk membersihkan semua yang harus saya lakukan adalah menjalankan satu baris:

sudo apt-get autoclean && sudo apt-get autoremove

Ini secara otomatis mengenali kernel lama dan menghapusnya.


9

Mungkin saja /bootpartisi Anda telah mengakumulasi terlalu banyak versi kernel saat melakukan peningkatan dari waktu ke waktu. Partisi ini kemungkinan akan terpisah dari partisi disk besar Anda (dipasang sebagai /). Anda dapat memeriksa /bootruang partisi seperti ini (lihat baris dengan / boot):

df -h

Ada halaman yang bagus tentang cara menghapus kernel lama .

Singkatnya, periksa versi kernel Anda saat ini, dapatkan daftar apa yang diinstal, dan kemudian hapus versi lama. Ada juga perintah "liner" ajaib pada halaman yang akan melakukan semua itu untuk Anda. Tetapi gunakan dengan risiko Anda sendiri.

Instruksi lebih detail:

  1. Dapatkan versi kernel saat ini, yang ingin Anda pertahankan :

    uname -r
    
  2. Dapatkan daftar semua kernel diinstal:

    dpkg -l | grep linux-image-
    
  3. Jalankan apt-get remove pada kernel yang ingin Anda hapus. Bukan yang terbaru ! Sebagai contoh:

    sudo apt-get remove linux-image-2.6.32-22-generic
    

Lebih banyak catatan:

  • dpkg -lakan memberi tahu Anda status paket (kernel) sebelum nama paket. Sebagai contoh:

    rc  linux-image-3.13.0-39-generic  ...
    ii  linux-image-3.13.0-40-generic  ...
    
    • "rc" berarti bahwa paket tersebut r emoved dan memiliki c onfiguration file. Ini Anda tidak perlu menghapus lagi.
    • "ii" berarti bahwa paket ditandai untuk saya instal dan saya instal

    Berdasarkan ini, Anda hanya bisa mencantumkan paket kernel yang diinstal:

    dpkg -l | grep "ii.*linux-image-"
    

Solusi alternatif , menggunakan alat GUI Ubuntu Tweak .

Instal dan pergi ke Computer Janitor, periksa paket System-> Old Kernel dan System-> Unneeded, dan tekan Clean.


3

Gunakan skrip ini sehingga akan menghapus semua kernel lama lainnya yang meninggalkan versi saat ini dan sebelumnya (versi 1 kernel terakhir)

KERNELMAGES=`ls -lRt /boot/vmlinuz-*| awk -F/ '{print $3}' | grep -v $(uname -r) | sed 1d | sed -e 's/vmlinuz/linux-image/g'`

KERNELHEADERS=`ls -lRt /boot/vmlinuz-*| awk -F/ '{print $3}' | grep -v $(uname -r) | sed 1d | sed -e 's/vmlinuz/linux-headers/g'`

for PURGEKERNEL in `echo $KERNELMAGES $KERNELHEADERS`; do

apt-get autoremove -y && apt-get purge $PURGEKERNEL -y

done

Bekerja dengan sempurna, bahkan ketika saya tidak bisa melakukan jawaban "Paradiesstaub" dari baris perintah.
bulltorious

Saya mendapat "Izin ditolak" ...
Richard Hardy
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.