Saya memiliki 200 MB untuk /boot
partisi. Setiap kali saya mencoba memperbarui kernel, saya menerima pesan kesalahan yang pada dasarnya menyatakan /boot
penuh.
Apa yang bisa saya lakukan untuk membersihkan /boot
dan menghapus / mencadangkan kernel yang lebih lama?
kernel
boot-partition
koba101
sumber
sumber
Jawaban:
Metode baris perintah:
Pertama periksa versi kernel Anda, sehingga Anda tidak akan menghapus gambar kernel yang digunakan, menjalankan:
Sekarang jalankan perintah ini untuk daftar kernel yang diinstal:
dan hapus kernel yang tidak Anda inginkan / butuhkan lagi dengan menjalankan ini:
Ganti VERSION dengan versi kernel yang ingin Anda hapus.
Setelah selesai menghapus kernel lama, Anda bisa menjalankan ini untuk menghapus paket yang tidak Anda perlukan lagi:
Dan akhirnya Anda dapat menjalankan ini untuk memperbarui daftar kernel grub:
sumber
sudo dpkg --list 'linux-image*' | grep ^ii
membuatnya sedikit lebih mudah untuk melihat kernel yang diinstal saja. Juga saya pikirupdate-grub
itu tidak berbahaya tetapi tidak sepenuhnya diperlukan, yang dijalankan secara otomatis ketika Anda menghapus kernel.sudo dpkg --list 'linux-image*' | grep ^ii | awk '{print $2}' | sort | egrep "[0-9]-generic" | head -n -3 | tr '\n' ' '; echo ""
untuk mendapatkan daftar nama paket yang akan digunakansudo apt-get remove
.head -n -3
digunakan untuk menyimpan 3 kernel terbaru dalam sistem.apt-get remove `dpkg --list 'linux-image*' |grep ^ii | awk '{print $2}'\ | grep -v \`uname -r\``
sudo apt-get autoremove
harus mencukupi (biasanya meninggalkan Anda dengan 3 kernel terakhir)/boot
sudah penuh, jadiapt-get
akan gagal dengan beberapa kode kesalahan atau lainnya. Jawabannya di bawah ini sedikit "hackier" (Saya harus mengakui saya harus menguatkan diri untuk mengeluarkan yangrm -rf
di/boot
) tetapi satu-satunya yang mungkin untuk bekerja dalam situasi ini.CATATAN: ini hanya jika Anda tidak dapat menggunakan apt untuk membersihkan karena 100% penuh / boot
Jika apt-get tidak berfungsi karena / boot Anda 100%, Anda harus membersihkan / boot terlebih dahulu. Kemungkinan ini telah menangkap upgrade kernel dalam pemasangan parsial yang berarti apt telah membeku sepenuhnya dan akan terus menyuruh Anda untuk menjalankannya
apt-get -f install
meskipun perintah itu terus gagal.Dapatkan daftar gambar kernel dan tentukan apa yang dapat Anda lakukan tanpa. Perintah ini akan menampilkan kernel yang diinstal kecuali yang sedang berjalan
sudo dpkg --list 'linux-image*'|awk '{ if ($1=="ii") print $2}'|grep -v `uname -r`
. Perhatikan dua versi terbaru dalam daftar. Anda tidak perlu khawatir tentang yang sedang berjalan karena tidak tercantum di sini. Anda dapat memeriksanya denganuname -r
.Buat perintah untuk menghapus semua file di / boot untuk kernel yang tidak masalah bagi Anda menggunakan ekspansi brace untuk membuat Anda tetap waras. Ingatlah untuk mengecualikan gambar kernel terbaru dan terbaru. Contoh:
sudo rm -rf /boot/*-3.2.0-{23,45,49,51,52,53,54,55}-*
. Anda juga dapat menggunakan rentang dengan sintaks {80..84}.sudo apt-get -f install
untuk membersihkan apa yang membuat agak kesal tentang instalasi parsial.Jika Anda mengalami kesalahan yang menyertakan baris seperti "Kesalahan Internal: Tidak dapat menemukan gambar (/ boot / vmlinuz-3.2.0-56-generik)", kemudian jalankan perintah
sudo apt-get purge linux-image-3.2.0-56-generic
(dengan versi yang sesuai Anda).Terakhir,
sudo apt-get autoremove
untuk menghapus paket-paket kernel image lama yang telah yatim oleh boot manual.Saran, jalankan
sudo apt-get update
dansudo apt-get upgrade
untuk mengurus setiap upgrade yang mungkin telah dicadangkan sambil menunggu Anda menemukan partisi penuh / boot.Suggestion2, Tinjau https://help.ubuntu.com/community/AutomaticSecurityUpdates dan pertimbangkan pengaturan Unattended-Upgrade :: Remove-Unused-Dependencies menjadi true di /etc/apt/apt.conf.d/50unattended-upgrades. Ini akan sama dengan menjalankan autoremove setelah setiap pembaruan keamanan untuk memastikan Anda membersihkan kernel yang tidak digunakan tetapi juga akan menghapus hal-hal lain yang menurutnya tidak digunakan menyelamatkan Anda dari masalah ini di masa depan.
sumber
dpkg --purge
pada boot penuh Anda akan mendapatkan yang berikut$ sudo dpkg --purge linux-image-3.13.0-65-generic dpkg: dependency problems prevent removal of linux-image-3.13.0-65-generic: linux-image-extra-3.13.0-65-generic depends on linux-image-3.13.0-65-generic. dpkg: error processing package linux-image-3.13.0-65-generic (--purge): dependency problems - not removing Errors were encountered while processing: linux-image-3.13.0-65-generic
df -i
saya menemukan bahwa saya juga kehabisan inode pada/
karena sejumlah besar file untuk kode sumber kernel yang lebih tua di/usr/src
Ada dokumentasi tentang ini di https://help.ubuntu.com/community/RemoveOldKernels
Singkatnya: Gunakan
The
purge-old-kernels
alat dapat diinstal melaluisudo apt install byobu
. Berikut ini deskripsi dari halaman manualnya:Jika Anda menginginkan solusi salin-tempel, ReSearchIT Eng menyarankan yang berikut:
sumber
apt-get autoremove --purge
harus cukup.Saya menemukan bahwa jauh lebih mudah untuk meninggalkan partisi kecil dan pindah
/boot
ke root. Ini juga mencegah masalah ruang di luar di masa depan.Pertama-tama pindahkan data Anda dari partisi boot ke root (jalankan sebagai
sudo -s
):Hapus (atau komentar)
/boot
entri di/etc/fstab
:Perbarui grub dan pastikan semuanya benar:
apt
seharusnya sekarang dapat meningkatkan tanpa masalah.Ini menyisakan partisi 200MB yang tidak digunakan (yang bisa Anda gunakan untuk hal lain jika Anda merasa sepadan dengan masalahnya).
sumber
Menghapus kernel lama (untuk mengosongkan ruang / boot) lihat: http://askubuntu.com/questions/89710/how-do-i-free-up-more-space-in-boot
Lalu lari
sumber
sudo apt-get autoremove
Ini menghilangkan semua kecuali 2 kernel terakhir. Diuji pada Ubuntu 16,04 LTS ketika
/boot
berada pada kapasitas 100% danapt-get upgrade
gagal itu upgrade kernel terakhir. Kernel autoremove bersifat iteratif, jadi jika Anda memiliki beberapa kernel, kernel tersebut akan dihapus satu per satu. Jadi bersabarlah.sumber
Mengapa melakukannya dengan tangan ketika Anda bisa melakukannya dengan alat? Anda tahu Anda akan membutuhkannya lagi dalam 30 detik, karena dibutuhkan 30 detik bagi mereka untuk mendorong pembaruan kernal baru hari ini = P
Saya sarankan menggunakan alat ini, bootnukem
Kemudian
Hapus
--dry-run
setelah Anda mengonfirmasi itu terlihat amansumber