सवाल मैं / boot में और अधिक जगह कैसे मुक्त करूं?


मेरे /boot विभाजन लगभग पूरा हो गया है और हर बार जब मैं अपने सिस्टम को रीबूट करता हूं तो मुझे चेतावनी मिलती है। मैंने पुराने कर्नेल पैकेज (लिनक्स-हेडर ...) को पहले ही हटा दिया है, वास्तव में मैंने स्वचालित कर्नेल संस्करण स्थापित करने के लिए ऐसा किया है जो स्वचालित अपडेट के साथ आया था।

उस नए संस्करण को स्थापित करने के बाद, विभाजन लगभग पूर्ण हो गया है। तो मैं और क्या हटा सकता हूँ? पुरानी कर्नेल छवियों से जुड़े कुछ अन्य फाइलें हैं?

यहां फाइलों की एक सूची दी गई है जो मेरे हैं /boot विभाजन:

:~$ ls /boot/
abi-2.6.31-21-generic         lost+found
abi-2.6.32-25-generic         memtest86+.bin
abi-2.6.38-10-generic         memtest86+_multiboot.bin
abi-2.6.38-11-generic         System.map-2.6.31-21-generic
abi-2.6.38-12-generic         System.map-2.6.32-25-generic
abi-2.6.38-8-generic          System.map-2.6.38-10-generic
abi-3.0.0-12-generic          System.map-2.6.38-11-generic
abi-3.0.0-13-generic          System.map-2.6.38-12-generic
abi-3.0.0-14-generic          System.map-2.6.38-8-generic
boot                          System.map-3.0.0-12-generic
config-2.6.31-21-generic      System.map-3.0.0-13-generic
config-2.6.32-25-generic      System.map-3.0.0-14-generic
config-2.6.38-10-generic      vmcoreinfo-2.6.31-21-generic
config-2.6.38-11-generic      vmcoreinfo-2.6.32-25-generic
config-2.6.38-12-generic      vmcoreinfo-2.6.38-10-generic
config-2.6.38-8-generic       vmcoreinfo-2.6.38-11-generic
config-3.0.0-12-generic       vmcoreinfo-2.6.38-12-generic
config-3.0.0-13-generic       vmcoreinfo-2.6.38-8-generic
config-3.0.0-14-generic       vmcoreinfo-3.0.0-12-generic
extlinux                      vmcoreinfo-3.0.0-13-generic
grub                          vmcoreinfo-3.0.0-14-generic
initrd.img-2.6.31-21-generic  vmlinuz-2.6.31-21-generic
initrd.img-2.6.32-25-generic  vmlinuz-2.6.32-25-generic
initrd.img-2.6.38-10-generic  vmlinuz-2.6.38-10-generic
initrd.img-2.6.38-11-generic  vmlinuz-2.6.38-11-generic
initrd.img-2.6.38-12-generic  vmlinuz-2.6.38-12-generic
initrd.img-2.6.38-8-generic   vmlinuz-2.6.38-8-generic
initrd.img-3.0.0-12-generic   vmlinuz-3.0.0-12-generic
initrd.img-3.0.0-13-generic   vmlinuz-3.0.0-13-generic
initrd.img-3.0.0-14-generic   vmlinuz-3.0.0-14-generic

वर्तमान में, मैं इसका उपयोग कर रहा हूँ 3.0.0-14-generic गिरी।


524
2017-12-22 10:06


मूल


यह उल्लेखनीय है कि प्रत्येक उबंटू स्थापना में एक अलग / बूट विभाजन नहीं होगा - अक्सर यह सब एक बड़ा विभाजन होगा। यह उत्तर उन लोगों के लिए लागू होता है जिनके पास अलग / बूट विभाजन होता है। एलवीएम या "पूर्ण डिस्क" एन्क्रिप्शन का उपयोग करने वाले लोगों को एक अलग / बूट की आवश्यकता होती है, अन्यथा यह वैकल्पिक हो सकती है। - thomasrutter
अगर किसी और के पास मेरे जैसा ही समस्या है: बाद / बूट में "apt-get upgrade" छोड़ा गया कोई स्थान नहीं है, तो स्थापित होने वाले कर्नेल के लिए initrd फ़ाइलों को पुन: उत्पन्न करते समय या अद्यतन-initramfs स्क्रिप्ट का मानना ​​है कि जांच कर स्थापित किया गया है / var / lib / initramfs-tools की सामग्री। इस स्थिति में कोई एपीटी-प्राप्त का उपयोग कर पुराने कर्नेल को हटा नहीं सकता है क्योंकि fscking / boot विभाजन में डिवाइस पर कोई स्थान नहीं छोड़ा गया है। कोई भी "dpkg -P" का उपयोग करके / boot (मुक्त स्थान पर) और / var / lib / initramfs-tools (initrd छवि जेनरेट नहीं की जाएगी) में इसी प्रविष्टि को साफ करके कर सकता है। - wojci
सही उत्तरों के लिए एक महत्वपूर्ण बिंदु यह है कि वे आपको हटाने के लिए कहते हैं संकुल कर्नेल के पुराने संस्करण हैं। इस समस्या को हल करने वाले कई वेब पेज सीधे हटाने को अनुशंसा करते हैं फ़ाइलें / बूट विभाजन में; जो थोड़ी देर के लिए काम कर सकता है, लेकिन आप अंततः एक पैकेज को अद्यतन कर सकते हैं जो संकुल वाले कर्नेल संस्करणों के लिए अनुपलब्ध फ़ाइलों को फिर से बनाता है, जिससे आप अंतरिक्ष से बाहर निकलते हैं। - kgrittn
help.ubuntu.com/community/RemoveOldKernels - jarno


जवाब:


आपके पास बहुत अप्रयुक्त कर्नेल हैं। आखिरी कर्नेल के साथ सभी को हटा दें:

sudo apt-get purge linux-image-{3.0.0-12,2.6.3{1-21,2-25,8-{1[012],8}}}

यह इसके लिए लघुरूप है:

sudo apt-get purge linux-image-3.0.0-12 linux-image-2.6.31-21 linux-image-2.6.32-25 linux-image-2.6.38-10 linux-image-2.6.38-11 linux-image-2.6.38-12 linux-image-2.6.38-8

हटा रहा है linux-image-x.x.x-x पैकेज भी हटा देगा linux-image-x.x.x-x-generic

हेडर स्थापित हैं /usr/src और आउट-पेड़ कर्नेल मॉड्यूल (मालिकाना एनवीडिया ड्राइवर और वर्चुअलबॉक्स की तरह) बनाने के दौरान उपयोग किया जाता है। मिलान करने वाले कर्नेल पैकेज (यदि उपयोगकर्ता मेलिंग कर्नेल पैकेज (linux-image-*) स्थापित नहीं किया गया।

सभी स्थापित कर्नेल सूचीबद्ध करने के लिए, चलाएं:

dpkg -l linux-image-\* | grep ^ii

एक आदेश जो सभी कर्नल और हेडर दिखाता है जिन्हें हटाया जा सकता है वर्तमान कर्नेल चल रहा है:

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

यह शुरू होने वाले सभी संकुल का चयन करता है linux-headers-<some number> या linux-image-<some number>, स्थापित संकुल के लिए पैकेज नाम मुद्रित करता है और फिर इसे बाहर करता है वर्तमान लोड / चल रहे कर्नेल (जरूरी नहीं है नवीनतम गिरी!)। यह पुराने, जाने-माने काम करने वाले कर्नेल को हटाने से पहले एक नए कर्नेल का परीक्षण करने की सिफारिश में फिट बैठता है।

तो, कर्नेल को अपग्रेड करने और इसे जांचने के लिए रीबूट करने के बाद, आप अन्य सभी कर्नेल को हटा सकते हैं:

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

600
2017-12-24 14:34



शानदार जवाब। जानकारी का एक और टुकड़ा मदद करेगा: आप कैसे कह सकते हैं (निश्चित रूप से) आप कौन से कर्नेल का उपयोग कर रहे हैं? संभवतः आप यह नहीं मान सकते कि यह आखिरी है ... संपादित करें: और यह दिखता है जवाब की तरह है uname -a। शायद यह सुनिश्चित करने के लिए सबसे अच्छा है कि आपके पास लंबित रीस्टार्ट-टू-इंस्टॉल-नया-कर्नेल लंबित नहीं है (जैसा मैंने किया था, लेकिन मैंने बीच में मेल नहीं देखा uname -a और "नवीनतम" कर्नेल)। - T.J. Crowder
@freddyb हो गया। ध्यान दें कि आदेश प्रिंट / हटाते हैं भारित / बूट किए गए के अलावा कर्नल। - Lekensteyn
अगर एपीटी-पर्ज शुद्धता असमान निर्भरताओं के कारण विफल रहता है तो आप सलाह का पालन कर सकते हैं askubuntu.com/questions/171209/... - svandragt
बहुत गहन उत्तर और अभी भी काम करता है ... और 2014 में अभी भी जरूरी है। किंडा हास्यास्पद है कि यह अभी भी जीयूआई उपकरणों द्वारा स्वचालित रूप से नहीं किया जाता है। - allprog
@ byf-ferdy कर्नेल ओएस का एक अनिवार्य हिस्सा है, यदि नवीनतम संस्करण किसी भी तरह से आपके हार्डवेयर के साथ पूरी तरह से काम नहीं करता है, तो आप अभी भी बूट करने के लिए एक अलग चुन सकते हैं। एक अच्छी सुविधा शायद कुछ ऐसा होगा जो एक महीने से अधिक पुराने स्वचालित रूप से स्थापित कर्नेल को हटा देता है (नवीनतम दो को छोड़कर)। - Lekensteyn


आपका बूट विभाजन भरा हुआ है। चूंकि यह एक कर्नेल अद्यतन है, इसलिए इन फ़ाइलों को बूट विभाजन में कॉपी किया जाएगा ताकि आपको साफ़ करने की आवश्यकता हो। यहां है ब्लॉग पोस्ट जो आपको दिखाएगा कि पुरानी कर्नेल छवियों को एक कमांड के साथ कैसे साफ़ किया जाए। मैं विधि का एक बुनियादी सारांश दे दूंगा। अपने कर्नेल के वर्तमान संस्करण को मुद्रित करने के लिए इस कमांड का प्रयोग करें:

uname -r

फिर अपने आदेशों को मुद्रित करने के लिए इस कमांड का उपयोग करें जो आपके नवीनतम कर्नेल नहीं हैं:

dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]'

सुनिश्चित करें कि आपका वर्तमान कर्नेल उस सूची पर नहीं है। ध्यान दें कि यह अंतिम आदेश (नीचे नीचे) का बहुमत है। इन पुरानी कर्नेल को अनइंस्टॉल और हटाने के लिए आप इन तर्कों को पाइप करना चाहेंगे:

sudo apt-get -y purge

अब हम इन आखिरी दो आज्ञाओं को इस अपवित्र गड़बड़ी में जोड़कर जो भी चाहते हैं हम कर सकते हैं:

dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]' | xargs sudo apt-get -y purge

और वह एक आदेश आपके लिए सबकुछ का ख्याल रखेगा। मैं पुष्टि करूंगा कि यह पूरी तरह से काम करता है लेकिन इंटरनेट पर किसी पर भी भरोसा नहीं करता है। :) अधिक जानकारी के लिए, ब्लॉग पोस्ट कमांड के प्रत्येक भाग को इसके माध्यम से पढ़ने के बारे में बहुत अच्छी व्याख्या देता है ताकि आप संतुष्ट हो जाएं कि यह वही करता है जो आप करना चाहते हैं।


200
2018-02-21 03:38



यह बहुत अच्छा काम किया, धन्यवाद। - Michael Durrant
यह linux-libc-dev से मेल खाता है: amd64 - Frederick Nord
"linux-libc-dev: amd64" का अनजान निष्कासन क्या होगा? - ConfusedStack
@FrederickNord सिर के लिए धन्यवाद। इसे फिक्स्ड इससे सी कार्यक्रमों को संकलित करने में कुछ कठिनाइयों का कारण बनता। - dward
आदेश अच्छा लगता है, लेकिन जब मैं इसे चलाता हूं तो मुझे वही त्रुटि मिलती है जो मुझे कुछ इंस्टॉल करना चाहते हैं और यह ऐसा नहीं कर सकता क्योंकि बूट पूर्ण है: --------------- ----------- निम्नलिखित संकुलों में अनमेट निर्भरताएं हैं: लिनक्स-छवि-अतिरिक्त-4.2.0-27-जेनेरिक: निर्भर करता है: लिनक्स-छवि-4.2.0-27-जेनेरिक लेकिन यह नहीं जा रहा है लिनक्स-छवि-अतिरिक्त-4.2.0-30-जेनेरिक स्थापित करने के लिए: निर्भर करता है: linux-image-4.2.0-30-जेनेरिक लेकिन यह स्थापित नहीं किया जा रहा है - Alex


sudo apt-get autoremove

यह आदेश स्वचालित रूप से नौकरी कर रहा है।


94
2017-11-05 05:58



जैसा कि नाम से पता चलता है, एट्रोमोव प्राप्त करें स्वचालित ऑपरेशन है जहां सिस्टम इसे "सर्वोत्तम अनुमान" लेता है जिसे आप प्राप्त करने का प्रयास कर रहे हैं। इसे सामान्य ज्ञान प्रणाली प्रशासन के लिए एक विकल्प के रूप में उपयोग नहीं किया जाना चाहिए। इस दृष्टिकोण के साथ समस्या: यदि आप (या एक अद्यतन) इस निर्भरता सूची का हिस्सा है जो एक पैकेज को हटा देता है तो स्वत: निकालने का कार्य निर्भरता सूची में अन्य सभी संकुल को हटाना चाहता है, जिससे आपको डेस्कटॉप के बिना सिस्टम (और कभी-कभी पूरी तरह टूटी हुई प्रणाली के साथ भी)। - Rinzwind
संदर्भ: उपरोक्त इस टिप्पणी के लिए कई स्रोतों में से 1: linuxquestions.org/questions/debian-26/... - Rinzwind
यदि लिनक्स-छवि-जेनेरिक स्थापित है और नए कर्नेल स्पष्ट रूप से स्थापित नहीं किए गए थे, तो यह पुराने कर्नेल को हटा देगा। सामान्य ज्ञान उन्हें पढ़ने के बिना सिस्टम में किसी भी बदलाव को स्वीकार नहीं करना है। यदि इस आदेश का उपयोग करने से पहले सामान्य ज्ञान का उपयोग किया गया है तो कोई परेशानी नहीं होगी। - mchid
@Rinzwind - इस आदेश ने पुरानी 'लिनक्स हेडर' को हटाकर अपनी डिस्क स्पेस के 250 एमबी खाली कर दिया - Chinmaya B
अगर इस्तेमाल किया जाता है तो autoremove काम करता है से पहले एक अंतरिक्ष की स्थिति मौजूद है। हालांकि, एक बार एपीटी स्पेस और एबॉर्ट्स से बाहर चला जाता है (और उपयोगकर्ता अंततः समस्या को नोटिस करता है), ऑटोमॉव या किसी अन्य एपीटी-आधारित समाधान को चलाने में बहुत देर हो चुकी है। यदि आपके लिए यह मामला है, तो डीपीकेजी-आधारित समाधानों में से एक आज़माएं। - user535733


सिनैप्टिक पैकेज मैनेजर का उपयोग पुरानी कर्नेल छवियों को आसानी से चुनने और निकालने के लिए किया जा सकता है। Screenshot of Synaptic Package Manager

यदि आपके पास पहले से ही सिनैप्टिक इंस्टॉल नहीं है:

sudo apt-get install synaptic

एप्लिकेशन शुरू करें और दिखाए गए विकल्पों का चयन करें।

आपको "2.6.x" संस्करण के साथ सभी "linux-" संकुल को हाइलाइट करने में सक्षम होना चाहिए, जहां x आपके / बूट फ़ोल्डर में फ़ाइलों के अनुसार 31 से 38 के बीच है।

उन लिनक्स पैकेजों में से प्रत्येक पर राइट-क्लिक करें और "पूर्ण निष्कासन के लिए चिह्नित करें" विकल्प चुनें। अंत में लागू बटन पर क्लिक करें। यह सभी फाइलों और किसी भी संबंधित फाइलों को हटा देगा। तुंहारे /boot फ़ोल्डर अब थोड़ा सा होना चाहिए।


38
2017-12-24 14:34



मैं 14.04 पर हूं। मैंने कमांड लाइन के माध्यम से अतीत में इस स्थिति को संभाला है, लेकिन मैंने आज इस विधि को आजमाने का फैसला किया है ... मेरे लिए, मेरी लिनक्स छवियां इंस्टॉल (मैनुअल) के तहत स्थित थीं, इंस्टॉल नहीं की गईं (स्थानीय या अप्रचलित) - Ryan
अरे नहीं। मैं सिनैप्टिक स्थापित नहीं कर सकता क्योंकि वहां कोई जगह नहीं है /boot! - John McGehee
@JohnMcGhehee fsck और parted आपके लिए उस मुद्दे को हल करना चाहिए। - FlipMcF


आपकी समस्या के विस्तृत विवरण के लिए धन्यवाद, यह मुझे सही दिशा में जा रहा है। हालांकि यह पिछले कर्नेल फ़ाइलों को रखने के लिए उपयोगी है, लेकिन आप सभी को एक ही बार में हटा सकते हैं, इस पोस्ट को जांचें:
सभी अप्रयुक्त लिनक्स कर्नेल शीर्षलेख, छवियों और मॉड्यूल को कैसे निकालें

कमांड लाइन के माध्यम से किया गया। यदि आप दूरस्थ उपयोग के माध्यम से ऐसा कर रहे हैं तो WINSCP जैसे टर्मिनल सत्र खोलने के लिए और इसे पेस्ट करें, बहुत अच्छी तरह से काम करता है।

यहां इसे लेख लिंक से कॉपी किया गया है, मेरा सुझाव है कि आप पूरा लेख पढ़ लें:

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge

24
2018-06-01 12:53





यह पुराने प्रश्न का एक नया जवाब है, लेकिन इस चीज़ को साफ करने का एक आसान तरीका (और अधिक) स्थापित करना है उबंटू ट्वीक। सेवा मेरे इसे स्थापित करो:

sudo add-apt-repository ppa:tualatrix/ppa
sudo apt-get update
sudo apt-get install ubuntu-tweak

तो आप उबंटू ट्वीक को चला सकते हैं, "जेनिटर" टैब पर जा सकते हैं, और यहां से यह तीन क्लिकों का मामला है:

Ubuntu tweak janitor for old kernels

सुरक्षा के लिए अंतिम कर्नेल (जिसे आप कभी नहीं जानते) या एक प्रसिद्ध काम करने वाले कर्नेल को छोड़ना बेहतर है, हालांकि; लेकिन यह आसानी से अनुकूलन योग्य है।

आप बहुत सारी चीजों को साफ करने के लिए एक ही टूल का उपयोग कर सकते हैं --- बस याद रखें कि अगर आप थंबनेल कैश या टीबी कैश साफ़ करते हैं तो सिस्टम को उनकी आवश्यकता होने पर उन्हें पुनर्निर्माण करना होगा।


22
2017-11-25 13:11



मैंने उबंटू चिमटा स्थापित करने और रिपोजिटरी वेबसाइट पर जाने की कोशिश की। यह कहता है कि यह केवल 13.10 और इससे पहले के लिए है। क्या आपके पास 15.04 के लिए एक अद्यतन संस्करण है? - JayCouture.com
@ JayCouture.com साइट का संस्करण 14.04 के लिए है ("13.10 और इससे पहले" पुरानी रिलीज का लिंक है)। अगर मैं 14.10 या 15.04 के लिए कोई संस्करण है तो मैं अनदेखा करता हूं। - Rmano


मैं उपयोग करके समस्या को ठीक करने में सक्षम था dpkg सीधे संकुल को हटाने के लिए। हालांकि संकुल अभी भी सूचीबद्ध हैं dpkg -l, फ़ाइलों को हटा दिया जाता है /boot, अंतरिक्ष मुक्त कर रहा है।

phrogz@planar:/boot$ sudo dpkg --remove linux-image-2.6.32-30-server
(Reading database ... 145199 files and directories currently installed.)
Removing linux-image-2.6.32-30-server ...
Running postrm hook script /usr/sbin/update-grub.
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-35-server
Found linux image: /boot/vmlinuz-2.6.32-34-server
Found initrd image: /boot/initrd.img-2.6.32-34-server
Found linux image: /boot/vmlinuz-2.6.32-33-server
Found initrd image: /boot/initrd.img-2.6.32-33-server
Found linux image: /boot/vmlinuz-2.6.32-32-server
Found initrd image: /boot/initrd.img-2.6.32-32-server
Found linux image: /boot/vmlinuz-2.6.32-31-server
Found initrd image: /boot/initrd.img-2.6.32-31-server
Found memtest86+ image: /memtest86+.bin
done

# Repeat for kernels -31 and -32 and -33, up to (but not including)
# the version listed by `uname -a`

इसके बाद, apt-get -f install मेरी निर्भरता समस्याओं को ठीक किया, और सब दुनिया के साथ अच्छी तरह से था।

मैं अपने इस जवाब को स्वीकार नहीं करूँगा, हालांकि, मुझे अभी भी यह जानने की जरूरत है कि मुझे अपना बढ़ाना चाहिए या नहीं /boot आकार या कुछ और कर रहे हैं।


17
2017-12-03 18:47



आपके पास पहले स्थान पर अलग / बूट विभाजन नहीं होना चाहिए, या आपको अपना आकार बढ़ाना चाहिए क्योंकि 100 एमबी बहुत छोटा है। - psusi
धन्यवाद, मैं इसके माध्यम से हटाता हूं: sudo dpkg --remove linux-headers-3.5.0-28* - TiloBunt
तथा sudo dpkg --remove linux-image-3.5.0-28* छवि के लिए, के माध्यम से चेक किया df -h - TiloBunt