Tidak cukup ruang disk kosong saat memutakhirkan

142

Saya mendapatkan kesalahan dalam pembaruan perangkat lunak ketika saya mencoba dan melakukan pembaruan harian saya. ia mengatakan:

The upgrade needs a total of 25.3 M free space on disk `/boot`.
Please free at least an additional 25.3 M of disk space on `/boot`.
Empty your trash and remove temporary packages of former installations 
using `sudo apt-get clean`.

Saya mencoba mengetik di sudo apt-get cleanTerminal tetapi saya masih mendapatkan pesan. Semua halaman yang saya baca tampaknya untuk Ubuntuers berpengalaman. Saya menjalankan Ubuntu 12.10. Saya ingin meningkatkan ke 13,04 tetapi mengerti saya harus menyelesaikan ini dulu.

Ini adalah hasil dari mengetik di cat /etc/fstabTerminal:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/ubuntu-root /               ext4    errors=remount-ro 0       1
# /boot was on /dev/sda1 during installation
UUID=fa55c082-112d-4b10-bcf3-e7ffec6cebbc /boot           ext2    defaults        0       2
/dev/mapper/ubuntu-swap_1 none            swap    sw              0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto,exec,utf8 0       0
matty@matty-G41M-ES2L:~$ 

Output dari df -h:

Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu-root  915G   27G  842G   4% /
udev                     984M  4.0K  984M   1% /dev
tmpfs                    397M  1.1M  396M   1% /run
none                     5.0M     0  5.0M   0% /run/lock
none                     992M  1.8M  990M   1% /run/shm
none                     100M   52K  100M   1% /run/user
/dev/sda1                228M  222M     0 100% /boot
matty@matty-G41M-ES2L:~$ 

Dan dpkg -l | grep linux-imagememberi:

ii linux-image-3.5.0-17-generic 3.5.0-17.28 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-18-generic 3.5.0-18.29 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-19-generic 3.5.0-19.30 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-21-generic 3.5.0-21.32 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-22-generic 3.5.0-22.34 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-23-generic 3.5.0-23.35 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-24-generic 3.5.0-24.37 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-25-generic 3.5.0-25.39 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-26-generic 3.5.0-26.42 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
iF linux-image-3.5.0-28-generic 3.5.0-28.48 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
carmatt95
sumber
1
Juga, konten / etc / fstab Anda mungkin bermanfaat. Seperti apa itu / boot sudah terpasang pada partisi yang terpisah.
Chuck R
1
Seperti kata @Githlar, fstab Anda dapat memberi kami informasi tentang partisi hd Anda.
ssoto
1
fstab adalah file yang berisi informasi tentang partisi yang dipasang ketika Anda boot komputer Anda. Untuk menampilkan isi file ini, ketikkan cat /etc/fstabterminal. Salin output dan tambahkan ke pertanyaan Anda (Anda dapat mengedit pertanyaan Anda). Juga, salin output dari df -hdan dpkg -l | grep linux-image.
Alaa Ali
1
Masalah Anda adalah semua linux-image...file tambahan di /bootpartisi menggunakan ruang kosong - Anda hanya memiliki 6MB gratis di partisi. sudo dpkg -P purge 'older_linux_image_filename'untuk menghapus semua kecuali versi terbaru = 3.5.0-28.48 dan 3.5.0-26.42 Ini akan memungkinkan Anda untuk memperbarui / meningkatkan.
douggro
2
Saya hanya harus lari sudo apt-get autoremoveuntuk memperbaikinya.
Juampy NR

Jawaban:

192

Catatan: jawaban ini lebih dimaksudkan sebagai 'penjelasan' daripada memberikan cara terbaik / termudah untuk menghapus kernel lama. Untuk cara terbaik / termudah untuk menghapus kernel lama, silakan tinjau jawaban lainnya.

Oke, jadi dari output yang /etc/fstabAnda posting, tampaknya Anda /bootsudah terpasang pada partisi yang terpisah, dan dari output df -h, partisi itu sudah penuh. Ini karena ada kernel lama yang tidak diperlukan; Anda dapat mengetahui itu dengan melihat output dari dpkg -l | grep linux-imageyang Anda posting, di mana Anda dapat melihat lebih dari satu " linux-image " dengan versi yang berbeda. Kami perlu menghapus versi lama.

Pertama, saya ingin Anda menjalankan perintah uname -rdi terminal, ini akan menunjukkan kepada Anda versi kernel yang Anda gunakan saat ini. Kami tidak pernah ingin menghapus versi kernel itu. Perintah akan mengatakan sesuatu seperti ini . Mengambil catatan dari jumlah itu, ! Perintah berikut akan menganggap bahwa itu adalah kernel yang Anda jalankan.3.5.0-26-generic26

Perintah untuk menghapus versi kernel lama adalah:

sudo apt-get purge linux-image-x.x.x-xx-generic

... di mana x karakter adalah angka. Jadi, dalam kasus Anda, karena Anda memiliki banyak versi lama (17, 18, 19, dll ...), kami harus menjalankan perintah ini untuk setiap versi, seperti ini:

  • sudo apt-get purge linux-image-3.5.0-17-generic
  • sudo apt-get purge linux-image-3.5.0-18-generic
  • sudo apt-get purge linux-image-3.5.0-19-generic

...dan seterusnya. Tapi, ada cara untuk melakukan semua ini melalui satu perintah. Perintahnya adalah ini ( JANGAN LARI PERINTAH BELUM! Baca yang berikut ini. ):

sudo apt-get purge linux-image-3.5.0-{17,18,19,21,22,23,24}-generic

Perintah ini akan menghapus versi yang disebutkan dalam tanda kurung. Saya tidak menyertakan versi 25, 26 dan 28 karena alasan berikut:

  • Tidak termasuk 26 karena itu adalah versi kernel yang sedang Anda jalankan! Itu versi yang kita dapat dari perintah uname -r, ingat? Kami tidak pernah ingin menghapus itu!
  • Tidak termasuk 28 karena itulah yang ingin ditingkatkan ke upgrade Anda (Anda dapat mengetahui itu dari iFstatus di sebelahnya, artinya "setengah dikonfigurasi").
  • Tidak termasuk 25 karena biasanya merupakan praktik yang baik untuk meninggalkan setidaknya satu versi lama. Jadi karena Anda menjalankan 26, kami akan menyimpan 25, jadi kami tidak akan memasukkannya dalam perintah di atas.

Jadi, jika angka terakhir uname -radalah 26 (atau 28, atau bahkan 25), maka aman untuk menjalankan perintah di atas. Masukkan kata sandi Anda saat diminta, dan ketik ysaat ditanya. Ini akan menunjukkan banyak baris, dan pada akhirnya akan kembali ke command prompt (dalam kasus Anda, matty@matty-G41M-ES2L:~$), semoga tanpa kesalahan. Setelah selesai, lakukan df -hdan lihat baris terakhir, yang dimulai dengan /dev/sda1. Anda harus menemukan bahwa sekarang memiliki lebih banyak ruang, dan bahwa persentase yang digunakan kurang dari 100% seperti sebelumnya. Anda sekarang dapat melanjutkan dengan pembaruan Anda lagi.

Alaa Ali
sumber
1
Berhasil !!! Terima kasih banyak! Pertanyaan bonus: ketika saya pertama kali mendowload Ubuntu, saya tidak sengaja menghapus folder "gambar" di area rumah. Karena ini, tidak ada tab "gambar" di samping. Saya menyiasati ini hanya dengan membuat folder bernama "gambar" tetapi tidak muncul di bilah samping. Apakah Anda tahu cara mencapainya? Saya mencoba mengklik dan menarik, tetapi tidak berhasil. @Alaa
carmatt95
3
Sama-sama! Untuk pertanyaan lain, buat pertanyaan lain dan saya akan menjawabnya. Dengan cara ini, orang yang mencari masalah itu dapat menemukannya.
Alaa Ali
13
Saya berharap saya dapat membenarkan ini setiap kali saya kembali untuk referensi itu ... itu sudah banyak sekarang.
sevenseacat
4
ya, kembali ke sini lagi untuk referensi hal yang sama. Anda akan berpikir saya akan mengingatnya sekarang.
sevenseacat
2
Perintah yang lebih ringkas untuk membersihkan semua kernel lama adalah:sudo apt-get autoremove --purge
ctrueden
42

Anda dapat menginstal Ubuntu-Tweak. Untuk menginstal ikuti langkah-langkah berikut:

Buka terminal. Tambahkan repositori yang diperlukan dengan perintah:

sudo add-apt-repository ppa:tualatrix/ppa

Perbarui daftar perangkat lunak dengan perintah:

sudo apt-get update

Akhirnya, instal Ubuntu Jati dengan perintah:

sudo apt-get install ubuntu-tweak

Setelah itu, buka tanda hubung dan ketik "ubuntu tweak".

Dan kemudian pergi ke janitortab dan pilih Apps, Personaldan Systemcentang kotak dan klik cleantombol di kanan bawah.

αғsнιη
sumber
9
Jauh lebih baik daripada mengotak-atik baris perintah dan mencoba menghapus semua kernel tetapi tidak mutakhir ketika mereka memiliki versi yang bahkan berbeda (tidak hanya -32 di akhir) dan juga paket -extra. Tweak Ubuntu menyelamatkan saya 5 menit, terima kasih!
POMATu
Jauh lebih nyaman.
Saeed Amiri
Saya tidak bisa menambahkan PPA tetapi, saya mengunduh .debdari situs proyect's ubuntu-tweak.com
Luigi Siri
tidak perlu menambahkan PPA di ubuntu 14.04
Edward Torvalds
1
@edwardtorvalds Tentu saja Anda dapat menginstalnya tanpa menambahkan PPA-nya pada 14.04 dan juga 14.10 dengan .debpaketnya, tetapi ini bukan yang paling disukai. Alasan Anda ingin menginstalnya melalui PPA adalah karena memastikan pembaruan.
αғsнιη
17

Cara cepat untuk menghapus semua kernel dan header yang tidak digunakan (tidak termasuk kernel yang sedang berjalan) telah ditunjukkan oleh @Lekensteyn dalam jawabannya untuk pertanyaan Bagaimana cara membebaskan lebih banyak ruang dalam / 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]+//')") 

Ini akan membebaskan ruang yang cukup bagi Anda untuk meningkatkan.

marianoju
sumber
3

Pada sistem Ubuntu rumah saya, saya mengikuti metode yang mirip dengan yang diposting, tetapi sedikit lebih sederhana dan membersihkan lebih banyak ruang termasuk header kernel, dll.

  1. Saya memeriksa apa yang menjalankan kernel yang saya gunakan karena sangat penting untuk tidak mengganggu itu.

    uname -a
    
  2. Kemudian, saya melihat / boot dengan tujuan menghapus semua file terkait kernel yang tidak terkait langsung dengan kernel yang sedang berjalan. Ini memberi saya daftar semua versi kernel yang ingin saya hapus, misalnya: 3.5.0-17, 3.5.0-18

    ls -l /boot
    
  3. Sekarang saya mengambil versi kernel pertama dalam daftar pembersihan saya dan menemukan semua paket yang terkait dengannya.

    dpkg -l | grep 3.5.0-17
    
  4. Bersihkan mereka dari sistem

    sudo apt-get purge <list of packages separated by spaces>
    
  5. kembali ke 3 dan pilih versi kernel berikutnya dalam daftar pembersihan saya.

  6. Selesai

Kiat
sumber
1

Saya mendapatkan kesalahan ini, artikel ini membantu.

Saya dulu df -hmengidentifikasi bahwa boot sudah penuh, uname -runtuk versi, lalu menggunakan purgestring yang tercantum di atas untuk menghapus kernel lama. pembersihan kernel tunggal bekerja, multi tidak (untuk saya).

Saya menemukan file dalam hal windows; Saya tidak bisa menghapusnya, harus menggunakan terminal, tetapi itu menunjukkan kepada saya versi lama yang saya miliki di sana.

Saya tidak tahu mengapa / boot (sda2) dipartisi sama sekali dan mengapa begitu kecil. tapi sekarang saya bisa menggunakan Ubuntu updater lagi.

Saya memang memiliki beberapa keberhasilan kecil dengan sudo apt-get update, sudo apt-get upgrade, sudo apt-get clean, juga mencoba software Bleachbit bebas. Gunakan string pembersihan tetapi tidak pada versi Anda saat ini. Semoga ini bisa membantu seseorang.

Brian P
sumber
sunting: saya tidak berpikir Anda harus menambahkan "-generik" ke string pembersihan
Brian P
0

Apakah Anda memiliki paket image kernel lama yang diinstal, yang tidak digunakan? Mereka dapat mengambil ruang di / boot. Saya akan merekomendasikan meninjau set paket kernel yang diinstal dengan perintah seperti berikut:

dpkg -l "linux-image*" | grep "^i"

Itu seharusnya memberikan gambaran tentang paket paket kernel yang diinstal Untuk paket - paket linux-image yang tidak digunakan dan yang tidak diharapkan diperlukan untuk tujuan pemulihan - misalnya, misalnya saya ingin menyimpan setidaknya satu versi kernel di belakang versi aktif yang diinstal, untuk pemulihan - jika tidak, Anda dapat menghapus paket yang tidak digunakan tersebut, menggunakan alat pengemasan favorit Anda, seperti aptitude.

Saya juga merekomendasikan untuk melihat inux-header terkait , linux-image-extras (jika ada), juga paket linux-source , dan linux-tools , sehingga dapat diinstal bersama dengan paket linux-image yang tidak digunakan .

Sean Champ
sumber
0

Saya ragu banyak, jika ada, orang akan mengalami masalah ini, tetapi saya meletakkannya di sini untuk dokumentasi jika ada yang membutuhkannya.

Masalah saya adalah bahwa saya mengkompilasi kernel custom yang berbeda sampai saya kehabisan ruang. Cara saya harus membersihkan ruang adalah dengan memasukkan setiap direktori kernel yang telah saya kerjakan dan jalankan a sudo make clean.

  • $ cd /usr/src Direktori tempat sumber kernel
  • $ cd linux-image-custom_kernel_name
  • $ sudo make clean
Jacksonkr
sumber
0

Jawaban dari marianoju sangat membantu, kecuali saya mendapat kesalahan saat menggunakannya apt purge. Saya tidak dapat menemukan opsi kekuatan.

Menggabungkan dpkg level bawah memungkinkan saya untuk melanjutkan:

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

Anda dapat mencoba dengan perintah di bawah ini untuk menghapus paket-paket kernel image lama jika Anda mengalami hal-hal itu.

sudo apt autoremove

Setelah itu Anda bisa melakukan pembaruan

Dinusha Dilanka
sumber