Câu hỏi Cách an toàn nhất để dọn dẹp / phân vùng khởi động là gì?


Tôi đã gán 200 MB cho /boot vách ngăn. Bất cứ khi nào tôi cố gắng cập nhật hạt nhân, tôi nhận được thông báo lỗi về cơ bản /boot đã đầy.

Tôi có thể làm gì để dọn dẹp /boot và loại bỏ / sao lưu các hạt nhân cũ?


258
2017-09-14 19:41


gốc


Xem Cộng đồng Ubuntu Wiki - jarno


Các câu trả lời:


Phương thức dòng lệnh:

Trước hết hãy kiểm tra phiên bản hạt nhân của bạn, vì vậy bạn sẽ không xóa ảnh hạt nhân đang sử dụng, chạy:

uname -r

Bây giờ chạy lệnh này cho một danh sách các hạt nhân đã cài đặt:

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

và xóa các hạt nhân bạn không muốn / cần nữa bằng cách chạy lệnh này:

sudo apt-get remove linux-image-VERSION

Thay thế VERSION bằng phiên bản hạt nhân bạn muốn xóa.

Khi bạn đã hoàn thành việc xóa các hạt nhân cũ hơn, bạn có thể chạy nó để loại bỏ các gói mà bạn không cần nữa:

sudo apt-get autoremove

Và cuối cùng bạn có thể chạy nó để cập nhật danh sách hạt nhân grub:

sudo update-grub

313
2017-09-14 20:34



dòng lệnh hoạt động như một sự quyến rũ, cảm ơn! - koba101
sudo dpkg --list 'linux-image*' | grep ^ii làm cho nó dễ dàng hơn một chút để chỉ xem hạt nhân đã cài đặt. Tôi cũng nghĩ update-grub là vô hại nhưng không thực sự cần thiết, được chạy tự động khi bạn gỡ cài đặt hạt nhân. - Nelson
Sử dụng sudo dpkg --list 'linux-image*' | grep ^ii | awk '{print $2}' | sort | egrep "[0-9]-generic" | head -n -3 | tr '\n' ' '; echo "" để có được danh sách các tên gói được sử dụng với sudo apt-get remove. head -n -3 được sử dụng để giữ 3 hạt gần đây nhất còn lại trong hệ thống. - Sithsu
sudo apt-get autoremove nên đủ (thường để lại cho bạn với 3 hạt nhân cuối cùng) - mbx
Đây là một câu trả lời tốt, nhưng tôi nghi ngờ nó có thể làm việc trong hầu hết (nếu không phải tất cả) trường hợp: vấn đề là /boot là đầy đủ, vì vậy apt-get sẽ thất bại với một số mã lỗi hoặc khác. Câu trả lời dưới đây là một chút "tin tặc" (tôi phải thú nhận rằng mình phải tự mình đưa ra rm -rf trong /boot) nhưng là người duy nhất có khả năng làm việc trong tình huống này. - Marco


LƯU Ý: đây là chỉ khi bạn không thể sử dụng apt để dọn dẹp do 100% đầy đủ / boot

Nếu apt-get không hoạt động bởi vì / boot của bạn là 100%, bạn cần dọn dẹp / khởi động trước. Điều này có thể đã bắt gặp một nâng cấp hạt nhân trong một phần cài đặt có nghĩa là apt có khá nhiều đóng băng hoàn toàn và sẽ tiếp tục nói với bạn để chạy apt-get -f install mặc dù lệnh đó vẫn không thành công.

Lấy danh sách các hình ảnh hạt nhân và xác định những gì bạn có thể làm mà không cần. Lệnh này sẽ hiển thị các hạt nhân đã cài đặt, ngoại trừ các hạt nhân đang chạy sudo dpkg --list 'linux-image*'|awk '{ if ($1=="ii") print $2}'|grep -v `uname -r`. Lưu ý hai phiên bản mới nhất trong danh sách. Bạn không cần phải lo lắng về việc chạy vì nó không được liệt kê ở đây. Bạn có thể kiểm tra với uname -r.

Tạo một lệnh để xóa tất cả các tệp trong / boot cho các hạt nhân không quan trọng với bạn bằng cách sử dụng mở rộng dấu ngoặc nhọn để giữ cho bạn lành mạnh. Hãy nhớ loại trừ ảnh hiện tại và hai ảnh hạt nhân mới nhất. Thí dụ: sudo rm -rf /boot/*-3.2.0-{23,45,49,51,52,53,54,55}-*. Bạn cũng có thể sử dụng một phạm vi với cú pháp {80..84}.

sudo apt-get -f install để làm sạch những gì làm cho apt grumpy về một phần cài đặt.

Nếu bạn gặp lỗi bao gồm một dòng như "Lỗi nội bộ: Không thể tìm thấy hình ảnh (/boot/vmlinuz-3.2.0-56-generic)", hãy chạy lệnh sudo apt-get purge linux-image-3.2.0-56-generic (với phiên bản thích hợp của bạn).

Cuối cùng, sudo apt-get autoremove để xóa các gói ảnh cũ của hạt nhân đã bị mồ côi bởi quá trình khởi động thủ công.

Đề xuất, chạy sudo apt-get update và sudo apt-get upgrade để chăm sóc bất kỳ bản nâng cấp nào có thể đã sao lưu trong khi chờ bạn khám phá phân vùng đầy đủ / khởi động.

Suggestion2, Review https://help.ubuntu.com/community/AutomaticSecurityUpdates và xem xét thiết lập Unattended-Upgrade :: Remove-Unused-Dependencies thành true trong /etc/apt/apt.conf.d/50unattended-upgrades. Điều này sẽ tương đương với việc chạy autoremove sau mỗi lần cập nhật bảo mật để chắc chắn rằng bạn xóa sạch các hạt chưa sử dụng nhưng cũng sẽ loại bỏ những thứ khác mà nó cho là không sử dụng để tiết kiệm cho bạn khỏi vấn đề này trong tương lai.


254
2018-03-07 16:54



Bằng cách này tôi có mới nhất cho khởi động lại tiếp theo và sau đó là một trong những trước khi chỉ trong trường hợp một cái gì đó phá vỡ trong đó. Thông thường tôi có rất nhiều phòng vì vậy nó không đau để có một vài và nó đáp ứng paranoia của tôi vì không có đủ tùy chọn sao lưu trong bất kỳ kịch bản nhất định. - flickerfly
Tôi chưa bao giờ gặp sự cố do nâng cấp không giám sát. Tôi có thể tưởng tượng các kịch bản mà đây có thể là một vấn đề chủ yếu xung quanh các phụ thuộc bị mất trên các cài đặt không được đóng gói deb Nói rằng bạn cài đặt php, quyết định gỡ cài đặt nó và cài đặt phiên bản mới hơn từ nguồn. Phiên bản này có các phụ thuộc được cung cấp bởi bản cài đặt trước đó, nhưng apt không biết rằng nó vẫn được yêu cầu. Lần tiếp theo bạn chạy tự động xóa những phụ thuộc đó sẽ biến mất. Nếu tự động, điều này có thể hơi khó hiểu. Nếu bạn không cài đặt bên ngoài kho, tôi tin rằng nó hoàn toàn an toàn. - flickerfly
Sau khi nhìn thấy điều này trong một số máy chủ ảo vsphere (nơi hạt nhân đã được tự động nâng cấp nhưng không được gỡ bỏ sau đó), tôi đã viết một python script để tự động hóa nó. Tôi muốn có nhiều ánh mắt hơn - EvanK
Nếu bạn dùng dpkg --purge trên một khởi động đầy đủ, bạn sẽ nhận được như sau $ 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
Điều này rất hữu ích. đã làm cho tôi. - deepdive


Có tài liệu về điều này tại https://help.ubuntu.com/community/RemoveOldKernels

Tóm lại: Sử dụng

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

Các purge-old-kernels công cụ có thể được cài đặt thông qua sudo apt install byobu. Đây là mô tả từ trang của nó:

Chương trình này sẽ loại bỏ các gói phần mềm và hạt nhân cũ khỏi   hệ thống, giải phóng dung lượng đĩa. Nó sẽ không bao giờ loại bỏ hiện tại   chạy hạt nhân. Theo mặc định, nó sẽ giữ ít nhất 2 hạt nhân mới nhất,   nhưng người dùng có thể ghi đè giá trị đó bằng cách sử dụng --keep  tham số.

Nếu bạn muốn có giải pháp sao chép-dán, ReSearchIT Eng đã đề xuất những điều sau:

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

44
2017-08-09 09:12



Trong trường hợp của tôi apt không hoạt động do một hạt nhân đang chờ xử lý và sửa lỗi được đề xuất là một catch-22: - James Bowery
Trước tiên tôi phải sửa các gói bị hỏng askubuntu.com/a/304388/284313 Sau đó giải pháp của bạn hoạt động. - James Bowery
Tôi nghĩ rằng đây sẽ là giải pháp được chấp nhận kể từ bây giờ. - Fran Marzoa
điều này an toàn hơn nhiều so với câu trả lời được chấp nhận. tôi nghĩ apt-get autoremove --purge nên là đủ, mặc dù. - Woodrow Barlow


Tôi thấy rằng việc bỏ phân vùng nhỏ và di chuyển dễ dàng hơn nhiều /boot vào thư mục gốc. Điều này cũng ngăn chặn mọi vấn đề không gian trong tương lai.

Đầu tiên di chuyển dữ liệu của bạn từ phân vùng khởi động vào thư mục gốc (chạy dưới dạng sudo -s):

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

Xóa (hoặc nhận xét) /boot nhập vào /etc/fstab:

vim /etc/fstab

Cập nhật grub và đảm bảo mọi thứ đều chính xác:

update-grub

apt bây giờ có thể nâng cấp mà không gặp vấn đề gì.

Điều này để lại một phân vùng 200MB không sử dụng (mà bạn có thể sử dụng cho một cái gì đó khác nếu bạn thấy nó có giá trị rắc rối).


6
2018-04-14 07:43



Đây là một ý tưởng hay nhưng không hoạt động nếu bạn muốn mã hóa toàn bộ đĩa cho phân vùng gốc của bạn. - Paŭlo Ebermann


Xóa hạt nhân cũ (để giải phóng dung lượng trên / khởi động) xem: 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]+//')")

Sau đó chạy

sudo apt-get update

3
2017-08-14 14:09



đây là người duy nhất làm việc .... giải pháp tuyệt vời - John
Câu trả lời hay nhất! Đây là giải pháp duy nhất làm việc cho tôi; autoremove là ngu ngốc; nó cố gắng cài đặt lại bất kỳ hạt nhân nào với các phụ thuộc chưa được đáp ứng trước khi nó chính thức loại bỏ chúng. Tôi đã đi trong vòng tròn chạy ra khỏi không gian hơn và hơn nữa. Câu trả lời này là vàng. - Lonnie Best


sudo apt-get autoremove

Thao tác này sẽ xóa tất cả trừ 2 hạt nhân cuối cùng. Thử nghiệm trên Ubuntu 16.04 LTS khi /boot có công suất 100% và apt-get upgrade không thành công khi nâng cấp hạt nhân cuối cùng. Các autoremove hạt nhân là lặp đi lặp lại, vì vậy nếu bạn đã có một số hạt nhân, họ sẽ được loại bỏ một tại một thời điểm. Vì vậy, hãy kiên nhẫn.


2
2017-10-03 16:39





Tại sao làm điều đó bằng tay khi bạn có thể làm điều đó với một công cụ? Bạn biết bạn sẽ cần nó một lần nữa trong 30 giây, bởi vì phải mất 30 giây để họ đẩy một bản cập nhật mới vào những ngày này = P

Tôi khuyên bạn nên sử dụng công cụ này, bootnukem

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

Sau đó

sudo bootnukem --dry-run

Tẩy --dry-run một khi bạn xác nhận nó có vẻ an toàn


0
2018-05-04 17:28