Không đủ dung lượng đĩa trống khi nâng cấp


142

Tôi đang gặp lỗi trong trình cập nhật phần mềm khi tôi thử và thực hiện các cập nhật hàng ngày của mình. nó nói rằng:

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`.

Tôi đã thử gõ sudo apt-get cleanvào Terminal nhưng tôi vẫn nhận được tin nhắn. Tất cả các trang tôi đọc dường như là dành cho các Ubuntu có kinh nghiệm. Tôi đang chạy Ubuntu 12.10. Tôi muốn nâng cấp lên 13.04 nhưng hiểu rằng tôi phải hoàn thành những thứ này trước.

Đây là đầu ra từ việc nhập cat /etc/fstabvào Terminal:

# /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:~$ 

Đầu ra của 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:~$ 

dpkg -l | grep linux-imageđưa ra:

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

1
Ngoài ra, nội dung của / etc / fstab của bạn có thể hữu ích. Điều có vẻ như là / boot được gắn trên một phân vùng riêng.
Chuck R

1
Giống như nói @Githlar fstab của bạn có thể cung cấp cho chúng tôi thông tin về các phân vùng hd của bạn.
ssoto

1
fstab là một tệp chứa thông tin về các phân vùng được gắn kết khi bạn khởi động máy tính. Để hiển thị nội dung của tệp này, nhập cat /etc/fstabvào một thiết bị đầu cuối. Sao chép đầu ra và thêm nó vào câu hỏi của bạn (bạn có thể chỉnh sửa câu hỏi của mình). Ngoài ra, sao chép đầu ra của df -hdpkg -l | grep linux-image.
Alaa Ali

1
Vấn đề của bạn là tất cả các linux-image...tệp bổ sung trong /bootphân vùng sử dụng hết dung lượng - bạn chỉ có 6MB miễn phí trên phân vùng. sudo dpkg -P purge 'older_linux_image_filename'để xóa tất cả trừ các phiên bản mới nhất = 3.5.0-28.48 và 3.5.0-26.42 Điều này sẽ cho phép bạn cập nhật / nâng cấp.
douggro

2
Tôi chỉ phải chạy sudo apt-get autoremoveđể sửa lỗi này.
Khu bảo tồn Juampy

Câu trả lời:


192

Lưu ý: câu trả lời này có nghĩa là nhiều hơn một 'lời giải thích' hơn là cung cấp cách tốt nhất / dễ nhất để loại bỏ hạt nhân cũ. Để biết cách tốt nhất / dễ nhất để loại bỏ các hạt nhân cũ, vui lòng xem lại các câu trả lời khác.

Được rồi, do đó, từ đầu ra của /etc/fstabbạn được đăng, có vẻ như bạn /bootđược gắn trên một phân vùng riêng và từ đầu ra của df -hphân vùng đó đã đầy. Điều này là do có các hạt nhân cũ được cài đặt không cần thiết; bạn có thể nói rằng bằng cách nhìn vào đầu ra dpkg -l | grep linux-imagemà bạn đã đăng, nơi bạn có thể thấy nhiều hơn một " hình ảnh linux " với các phiên bản khác nhau. Chúng tôi cần phải loại bỏ các phiên bản cũ.

Đầu tiên, tôi muốn bạn chạy lệnh uname -rtrong một thiết bị đầu cuối, điều này sẽ cho bạn thấy phiên bản kernel mà bạn hiện đang sử dụng. Chúng tôi không bao giờ muốn loại bỏ phiên bản kernel đó. Lệnh sẽ nói một cái gì đó như thế này . Hãy ghi lại số đó ! Các lệnh sau sẽ cho rằng đó là kernel bạn đang chạy.3.5.0-26-generic26

Lệnh xóa phiên bản kernel cũ là:

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

... Trong đó các ký tự x là số. Vì vậy, trong trường hợp của bạn, vì bạn có rất nhiều phiên bản cũ (17, 18, 19, v.v ...), chúng tôi sẽ phải chạy lệnh này cho từng phiên bản, như sau:

  • 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

... và cứ thế. Nhưng, có một cách để làm tất cả những điều này thông qua một lệnh. Lệnh này là ( KHÔNG CHẠY YET YÊU CẦU! Đọc phần sau. ):

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

Lệnh này sẽ loại bỏ các phiên bản được đề cập trong ngoặc. Tôi không bao gồm các phiên bản 25, 26 và 28 vì những lý do sau:

  • Rõ ràng không bao gồm 26 vì đó là phiên bản kernel mà bạn hiện đang chạy! Đó là phiên bản chúng tôi nhận được từ lệnh uname -r, nhớ chứ? Chúng tôi không bao giờ muốn loại bỏ điều đó!
  • Không bao gồm 28 vì đó là bản nâng cấp của bạn đang cố nâng cấp lên (bạn có thể nói rằng từ iFtrạng thái bên cạnh, có nghĩa là "đã được cấu hình một nửa").
  • Không bao gồm 25 vì thông thường nên để lại ít nhất một phiên bản cũ. Vì vậy, vì bạn đang chạy 26, chúng tôi sẽ giữ 25, vì vậy chúng tôi sẽ không đưa nó vào lệnh trên.

Vì vậy, nếu số cuối cùng uname -rlà 26 (hoặc 28 hoặc thậm chí 25), thì việc chạy lệnh trên là an toàn. Nhập mật khẩu của bạn khi được nhắc và nhập ykhi được hỏi. Điều này sẽ hiển thị một loạt các dòng, và cuối cùng sẽ quay trở lại dấu nhắc lệnh (trong trường hợp của bạn, matty@matty-G41M-ES2L:~$), hy vọng không có lỗi. Khi xong, hãy làm df -hvà nhìn vào dòng cuối cùng, dòng bắt đầu bằng /dev/sda1. Bạn sẽ thấy rằng nó bây giờ có nhiều không gian hơn, và tỷ lệ phần trăm được sử dụng ít hơn 100% như trước đây. Bây giờ bạn có thể tiến hành cập nhật lại.


1
Nó đã làm việc!!! Cám ơn rất nhiều! Câu hỏi về phần thưởng: khi tôi tải xuống Ubuntu lần đầu tiên, tôi đã vô tình xóa thư mục "ảnh" trong khu vực nhà. Do đó, không có tab "hình ảnh" nào ở bên cạnh. Tôi đã khắc phục điều này bằng cách chỉ tạo một thư mục có tên là "hình ảnh" nhưng nó không hiển thị trong thanh bên. Bạn có biết làm thế nào để có được nó ở đó? Tôi đã thử nhấp và kéo, nhưng không có kết quả. @Alaa
carmatt95

3
Không có gì! Đối với câu hỏi khác, tạo một câu hỏi khác và tôi sẽ trả lời nó. Bằng cách này, những người đang tìm kiếm vấn đề đó có thể tìm thấy nó.
Alaa Ali

13
Tôi ước tôi có thể nâng cao điều này mỗi khi tôi quay lại để tham khảo nó ... bây giờ nó có rất nhiều.
Sevenseacat

4
vâng, trở lại đây một lần nữa để tham khảo điều tương tự. Bạn nghĩ rằng tôi sẽ nhớ nó bây giờ.
Sevenseacat

2
Một lệnh ngắn gọn hơn để thanh lọc tất cả các hạt nhân cũ là:sudo apt-get autoremove --purge
ctrueden

42

Bạn có thể cài đặt Ubuntu-Tweak.Để cài đặt theo các bước sau:

Mở thiết bị đầu cuối. Thêm kho lưu trữ cần thiết bằng lệnh:

sudo add-apt-repository ppa:tualatrix/ppa

Cập nhật danh sách phần mềm bằng lệnh:

sudo apt-get update

Cuối cùng, cài đặt Ubuntu Teak bằng lệnh:

sudo apt-get install ubuntu-tweak

Sau đó, mở dấu gạch ngang và gõ "tinh chỉnh Ubuntu".

Và sau đó đi đến janitortab và chọn Apps, Personalvà chọn Systemhộp và nhấp vào cleannút ở dưới cùng bên phải.


9
Tốt hơn nhiều so với việc làm rối với dòng lệnh và cố gắng xóa tất cả các hạt nhân nhưng không hiện tại khi chúng có các phiên bản khác nhau (không chỉ -32 ở cuối) và cả các gói -extra. Tinh chỉnh Ubuntu đã giúp tôi tiết kiệm được 5 phút, cảm ơn!
POMATu

Thuận tiện hơn nhiều.
Saeed Amiri

Tôi không thể thêm PPA nhưng, tôi đã tải xuống .debtừ trang web của proyect ubfox-tweak.com
Luigi Siri

không cần thêm PPA trên Ubuntu 14.04
Edward Torvalds

1
@edwardtorvalds Tất nhiên bạn có thể cài đặt nó mà không cần thêm PPA vào ngày 14.04 và 14.10 theo .debgói của nó , nhưng nó không phải là cách tốt nhất. Lý do mà bạn muốn cài đặt thông qua PPA của nó là vì nó đảm bảo cập nhật.
αғsнιη

17

Một cách nhanh chóng để loại bỏ tất cả các hạt nhân và tiêu đề không sử dụng (không bao gồm kernel đang chạy hiện tại) đã được @Lekensteyn chỉ ra trong câu trả lời của anh ấy cho câu hỏi Làm thế nào để tôi giải phóng thêm dung lượng trong / 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]+//')") 

Điều này sẽ giải phóng đủ không gian để bạn nâng cấp.



3

Trên hệ thống Ubuntu tại nhà của tôi, tôi làm theo một phương pháp tương tự như đã đăng, nhưng nó đơn giản hơn một chút và xóa nhiều tiêu đề inc kernel hơn, v.v.

  1. Tôi kiểm tra xem tôi đang sử dụng kernel nào vì nó không bắt buộc phải can thiệp vào điều đó.

    uname -a
    
  2. Sau đó, tôi xem xét / khởi động với mục đích loại bỏ tất cả các tệp liên quan đến kernel không liên quan trực tiếp đến kernel đang chạy. Điều này cho tôi một danh sách tất cả các phiên bản kernel mà tôi muốn loại bỏ, ví dụ: 3.5.0-17, 3.5.0-18

    ls -l /boot
    
  3. Bây giờ tôi lấy phiên bản kernel đầu tiên trong danh sách thanh lọc của mình và tìm tất cả các gói liên quan đến nó.

    dpkg -l | grep 3.5.0-17
    
  4. Thanh lọc chúng khỏi hệ thống

    sudo apt-get purge <list of packages separated by spaces>
    
  5. quay lại 3 và chọn phiên bản kernel tiếp theo trong danh sách thanh lọc của tôi.

  6. Làm xong


1

Tôi đã nhận được lỗi này, bài viết này đã giúp.

Tôi đã sử dụng df -hđể xác định rằng boot đã đầy, uname -rđối với phiên bản, sau đó sử dụng purgechuỗi được liệt kê ở trên để loại bỏ các hạt nhân cũ. thanh lọc hạt nhân duy nhất làm việc, đa không (đối với tôi).

Tôi tìm thấy các tập tin trong cửa sổ điều; Tôi không thể xóa chúng, phải sử dụng thiết bị đầu cuối, nhưng nó đã cho tôi thấy các phiên bản cũ tôi có trong đó.

Tôi không biết tại sao / boot (sda2) lại được phân vùng và tại sao nó quá nhỏ. nhưng bây giờ tôi có thể sử dụng lại trình cập nhật Ubuntu.

Tôi đã có một số thành công nhỏ với sudo apt-get update, sudo apt-get upgrade, sudo apt-get clean, cũng đã cố gắng BleachBit phần mềm miễn phí. Sử dụng chuỗi thanh lọc nhưng không phải trên phiên bản hiện tại của bạn. Hy vọng điều này sẽ giúp được ai đó.


chỉnh sửa: tôi không nghĩ bạn phải thêm "-generic" vào chuỗi thanh trừng
Brian P

0

Bạn đã cài đặt bất kỳ gói hình ảnh kernel cũ nào chưa được sử dụng chưa? Những người có thể chiếm không gian trên / khởi động. Tôi khuyên bạn nên xem lại tập hợp các gói kernel đã cài đặt bằng một lệnh như sau:

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

Điều đó sẽ cung cấp một cái nhìn tổng quan về tập hợp các gói hình ảnh kernel được cài đặt. Đối với các gói hình ảnh linux không được sử dụng và sẽ không cần thiết cho mục đích khôi phục - ví dụ: tôi muốn giữ ít nhất một phiên bản kernel phía sau phiên bản hoạt động, để phục hồi - nếu không, bạn có thể loại bỏ bất kỳ gói không sử dụng nào như vậy, bằng cách sử dụng công cụ đóng gói yêu thích của bạn, chẳng hạn như aptitude.

Tôi cũng khuyên bạn nên xem qua các tiêu đề đầu vào có liên quan , các phần bổ sung hình ảnh linux (nếu có), cũng như các gói linux-sourcelinux-tools , như vậy có thể được cài đặt cùng với bất kỳ gói hình ảnh linux nào chưa sử dụng .


0

Tôi nghi ngờ nhiều người, nếu có, mọi người sẽ gặp phải vấn đề này nhưng tôi sẽ đưa nó lên đây để làm tài liệu trong trường hợp có ai cần nó.

Vấn đề của tôi là tôi đã biên dịch các hạt nhân tùy chỉnh khác nhau cho đến khi tôi hết dung lượng. Cách tôi phải dọn sạch không gian là vào từng thư mục kernel mà tôi đã làm việc và chạy a sudo make clean.

  • $ cd /usr/src Thư mục chứa nguồn kernel
  • $ cd linux-image-custom_kernel_name
  • $ sudo make clean

0

Câu trả lời của marianoju thực sự có ích, ngoại trừ việc tôi gặp lỗi khi sử dụng apt purge. Tôi không thể tìm thấy một lựa chọn lực lượng.

Kết hợp dpkg cấp thấp hơn cho phép tôi tiến hành:

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

0

Bạn có thể thử với lệnh bên dưới để loại bỏ các gói hình ảnh kernel cũ nếu bạn đang có những thứ đó.

sudo apt autoremove

Sau đó, bạn có thể cập nhật

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.