Pertanyaan Apa cara paling aman untuk membersihkan / partisi boot?


Saya memiliki 200 MB yang ditugaskan untuk /boot partisi. Setiap kali saya mencoba memperbarui kernel, saya menerima pesan galat yang pada dasarnya menyatakan /boot penuh.

Apa yang bisa saya lakukan untuk membersihkan /boot dan hapus / backup kernel yang lebih tua?


258
2017-09-14 19:41


asal


Lihat Wiki Komunitas Ubuntu - jarno


Jawaban:


Metode baris perintah:

Pertama periksa versi kernel Anda, jadi Anda tidak akan menghapus gambar kernel yang sedang digunakan, menjalankan:

uname -r

Sekarang jalankan perintah ini untuk daftar kernel yang diinstal:

dpkg --list 'linux-image*' | grep ^ii

dan hapus kernel yang tidak Anda inginkan / perlukan lagi dengan menjalankan ini:

sudo apt-get remove linux-image-VERSION

Ganti VERSION dengan versi kernel yang ingin Anda hapus.

Ketika Anda selesai menghapus kernel lama, Anda dapat menjalankan ini untuk menghapus paket yang tidak Anda perlukan lagi:

sudo apt-get autoremove

Dan akhirnya Anda dapat menjalankan ini untuk memperbarui daftar kernel grub:

sudo update-grub

312
2017-09-14 20:34



baris perintah berfungsi seperti pesona, terima kasih! - koba101
sudo dpkg --list 'linux-image*' | grep ^ii membuatnya lebih mudah untuk melihat hanya kernel yang terpasang. Saya juga berpikir update-grub tidak berbahaya tetapi tidak benar-benar diperlukan, yang dijalankan secara otomatis saat Anda menghapus kernel. - Nelson
Menggunakan 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 digunakan sudo apt-get remove. head -n -3 digunakan untuk menyimpan 3 kernel terbaru yang tersisa di sistem. - Sithsu
sudo apt-get autoremove harus cukup (biasanya meninggalkan Anda dengan 3 kernel terakhir) - mbx
Ini adalah jawaban yang bagus, tapi saya ragu itu bisa bekerja di sebagian besar (jika tidak semua) kasus: masalahnya adalah itu /boot penuh, jadi apt-get akan gagal dengan beberapa kode kesalahan atau lainnya. Jawaban di bawah ini sedikit "hackier" (saya harus mengakui bahwa saya harus menguatkan diri untuk mengeluarkan itu rm -rf di /boot) tetapi satu-satunya yang mungkin bekerja dalam situasi ini. - Marco


CATATAN: ini hanya jika Anda tidak dapat menggunakan apt to clean up karena 100% penuh / boot

Jika apt-get tidak berfungsi karena / boot Anda 100%, Anda harus membersihkan / boot terlebih dahulu. Ini mungkin telah menangkap upgrade kernel dalam instalasi parsial yang berarti cukup banyak membeku sepenuhnya dan akan terus memerintahkan 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 dijalankan 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 berjalan karena tidak tercantum di sini. Anda bisa memeriksanya dengan uname -r.

Buat perintah untuk menghapus semua file di / boot untuk kernel yang tidak penting bagi Anda menggunakan brace ekspansi untuk membuat Anda tetap waras. Ingat untuk mengecualikan dua 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 marah pada pemasangan parsial.

Jika Anda mengalami kesalahan yang mencakup garis seperti "Galat Internal: Tidak dapat menemukan gambar (/boot/vmlinuz-3.2.0-56-generic)", lalu jalankan perintah sudo apt-get purge linux-image-3.2.0-56-generic (dengan versi yang sesuai).

Akhirnya, sudo apt-get autoremove untuk menghapus paket gambar kernel lama yang telah menjadi yatim piatu oleh boot manual bersih.

Saran, jalankan sudo apt-get update dan sudo apt-get upgrade untuk mengurus semua peningkatan yang mungkin telah dicadangkan sambil menunggu Anda menemukan partisi penuh / boot.

Saran2, Ulasan 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 dianggap tidak berguna untuk menyelamatkan Anda dari masalah ini di masa mendatang.


254
2018-03-07 16:54



Dengan cara ini saya memiliki yang terbaru untuk reboot berikutnya dan kemudian yang sebelumnya untuk berjaga-jaga jika ada sesuatu yang rusak dalam yang satu itu. Biasanya saya memiliki banyak ruang sehingga tidak ada salahnya untuk memiliki beberapa dan itu memenuhi paranoia saya karena tidak memiliki cukup opsi cadangan dalam skenario yang diberikan. - flickerfly
Saya tidak pernah mengalami masalah yang disebabkan oleh peningkatan tanpa pengawasan. Saya dapat membayangkan skenario di mana ini bisa menjadi masalah sebagian besar di sekitar dependensi hilang pada pemasangan paket non-deb. Katakanlah Anda menginstal php, memutuskan untuk menghapus instalasi dan menginstal versi yang lebih baru dari sumber. Versi ini memiliki dependensi yang disediakan oleh instalasi sebelumnya, tetapi apt tidak menyadari bahwa itu masih diperlukan. Lain kali Anda menjalankan penghapusan otomatis, dependensi tersebut akan hilang. Jika otomatis, ini bisa sedikit membingungkan. Jika Anda tidak menginstal di luar repositori, saya yakin itu benar-benar aman. - flickerfly
Setelah melihat ini beberapa server virtual vsphere (di mana kernel sedang ditingkatkan secara otomatis tetapi tidak dihapus setelahnya), saya menulis a skrip python untuk mengotomatiskannya. Saya ingin memiliki lebih banyak mata di atasnya - EvanK
Jika Anda menggunakan dpkg --purge pada boot penuh Anda akan mendapatkan yang berikut ini $ 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 - flickerfly
Ini sangat membantu. bekerja untukku. - deepdive


Ada dokumentasi tentang ini di https://help.ubuntu.com/community/RemoveOldKernels

Singkatnya: Gunakan

sudo apt-get autoremove --purge
# and/or:
sudo purge-old-kernels

Itu purge-old-kernels alat dapat diinstal melalui sudo apt install byobu. Berikut adalah deskripsi dari man-page-nya:

Program ini akan menghapus paket kernel dan header lama dari   sistem, membebaskan ruang disk. Itu tidak akan pernah menghapus saat ini   menjalankan kernel. Secara default, ini akan menyimpan setidaknya 2 kernel terbaru,   tetapi pengguna dapat mengganti nilai tersebut menggunakan --keep  parameter.

Jika Anda ingin solusi copy-paste, ReSearchIT Eng menyarankan hal berikut:

sudo apt install -y byobu
sudo purge-old-kernels -y --keep 1
sudo apt-get -y autoremove --purge

43
2017-08-09 09:12



Dalam kasus saya apt tidak berfungsi karena kernel yang tertunda dan perbaikan yang disarankan adalah catch-22: - James Bowery
Saya harus memperbaiki paket yang rusak dulu askubuntu.com/a/304388/284313 Setelah itu solusi Anda berhasil. - James Bowery
Saya pikir ini harus menjadi solusi yang diterima seperti yang sekarang. - Fran Marzoa
ini jauh lebih aman daripada jawaban yang diterima. kupikir apt-get autoremove --purge harus cukup, meskipun. - Woodrow Barlow


Saya menemukan bahwa jauh lebih mudah untuk meninggalkan partisi kecil dan bergerak /boot ke root. Ini juga mencegah setiap masalah ruang keluar di masa depan.

Pertama, pindahkan data Anda dari partisi boot ke root (jalankan sebagai sudo -s):

cp -a /boot /boot2
umount /boot
rmdir /boot
mv /boot2 /boot

Hapus (atau komentar) /boot masuk /etc/fstab:

vim /etc/fstab

Perbarui grub dan pastikan semuanya benar:

update-grub

apt sekarang seharusnya dapat meningkatkan tanpa masalah.

Ini menyisakan partisi 200mb yang tidak terpakai (yang bisa Anda gunakan untuk hal lain jika Anda menganggapnya sepadan).


6
2018-04-14 07:43



Ini adalah ide yang bagus, tetapi tidak berfungsi jika Anda ingin memiliki enkripsi disk penuh untuk partisi root Anda. - Paŭlo Ebermann


Menghapus Kernel lama (untuk mengosongkan ruang / boot) Lihat: http://askubuntu.com/questions/89710/how-do-i-free-up-more-space-in-boot

sudo apt-get purge $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve "$(uname -r | sed -r 's/-[a-z]+//')")

Lalu lari

sudo apt-get update

3
2017-08-14 14:09



ini adalah satu-satunya yang bekerja .... solusi bagus - John
Jawaban Terbaik! Ini adalah satu-satunya solusi yang berhasil bagi saya; autoremove itu bodoh; itu mencoba untuk menginstal ulang kernel apapun dengan dependensi yang belum terpenuhi sebelum secara resmi menghapusnya. Saya akan berputar keluar ruang lagi dan lagi. Jawaban ini adalah emas. - Lonnie Best


sudo apt-get autoremove

Ini menghapus semua tetapi 2 kernel terakhir. Diuji pada Ubuntu 16.04 LTS kapan /boot berada pada kapasitas 100% dan apt-get upgrade gagal upgrade kernel terakhir. Autoremove kernel bersifat berulang, jadi jika Anda punya beberapa kernel, mereka akan dihapus satu per satu. Jadi bersabarlah.


2
2017-10-03 16:39





Mengapa melakukannya dengan tangan ketika Anda bisa melakukannya dengan alat? Anda tahu Anda akan membutuhkannya lagi dalam 30 detik, karena butuh 30 detik bagi mereka untuk mendorong pembaruan kernal baru akhir-akhir ini = P

Saya merekomendasikan menggunakan alat ini, bootnukem

git clone https://github.com/erichs/bootnukem.git
cd bootnukem
sudo ./install.sh

Kemudian

sudo bootnukem --dry-run

Menghapus --dry-run setelah Anda memastikannya terlihat aman


0
2018-05-04 17:28