सवाल विभाजन को बूट / बूट करने का सबसे सुरक्षित तरीका क्या है?


मेरे पास 200 एमबी के लिए असाइन किया गया है /boot विभाजन। जब भी मैं कर्नेल को अद्यतन करने का प्रयास करता हूं, मुझे एक त्रुटि संदेश मिलता है जो मूल रूप से बताता है /boot पूर्ण है।

सफाई के लिए मैं क्या कर सकता हूं /boot और पुरानी कर्नेल को हटाएं / बैकअप लें?


258
2017-09-14 19:41


मूल


देखें उबंटू सामुदायिक विकी - jarno


जवाब:


कमांड लाइन विधि:

सबसे पहले अपने कर्नेल संस्करण की जांच करें, ताकि आप इन-प्रयोग कर्नेल छवि को हटा नहीं पाएंगे:

uname -r

अब स्थापित कर्नल्स की सूची के लिए यह आदेश चलाएं:

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

और उन कर्नल को हटाएं जिन्हें आप नहीं चाहते / इसे चलाने के द्वारा अब और आवश्यकता है:

sudo apt-get remove linux-image-VERSION

उस कर्नेल के संस्करण के साथ संस्करण बदलें जिसे आप निकालना चाहते हैं।

जब आप पुराने कर्नेल को हटाते हैं, तो आप इसे कभी भी पैकेजों को हटाने के लिए चला सकते हैं जिनकी आपको आवश्यकता नहीं होगी:

sudo apt-get autoremove

और अंततः आप इसे ग्रब कर्नेल सूची अद्यतन करने के लिए चला सकते हैं:

sudo update-grub

313
2017-09-14 20:34



कमांड लाइन एक आकर्षण की तरह काम किया, धन्यवाद! - koba101
sudo dpkg --list 'linux-image*' | grep ^ii केवल स्थापित कर्नेल को देखने में थोड़ा आसान बनाता है। मुझे भी लगता है कि update-grub हानिरहित है लेकिन कड़ाई से जरूरी नहीं है, जब आप कर्नेल को अनइंस्टॉल करते हैं तो स्वचालित रूप से चलाया जाता है। - Nelson
उपयोग sudo dpkg --list 'linux-image*' | grep ^ii | awk '{print $2}' | sort | egrep "[0-9]-generic" | head -n -3 | tr '\n' ' '; echo "" पैकेज नामों की सूची का उपयोग करने के लिए sudo apt-get remove। head -n -3 सिस्टम में 3 सबसे हालिया कर्नेल छोड़ने के लिए प्रयोग किया जाता है। - Sithsu
sudo apt-get autoremove पर्याप्त होना चाहिए (आमतौर पर आपको अंतिम 3 कर्नल के साथ छोड़ना) - mbx
यह एक अच्छा जवाब है, लेकिन मुझे संदेह है कि यह ज्यादातर (यदि सभी नहीं) मामलों में काम कर सकता है: मुद्दा यह है कि /boot पूरा है, तो apt-get कुछ त्रुटि कोड या अन्य के साथ विफल हो जाएगा। नीचे दिया गया जवाब थोड़ा "हैकर" है (मुझे कबूल करना होगा कि मुझे इसे जारी करने के लिए खुद को स्टील करना था rm -rf में /boot) लेकिन एकमात्र ऐसा जो इस स्थिति में काम करने की संभावना है। - Marco


नोट: यह तभी होता है जब आप 100% पूर्ण / बूट के कारण साफ करने के लिए उपयुक्त उपयोग नहीं कर सकते

अगर एपीटी-गेट काम नहीं कर रहा है क्योंकि आपका / बूट 100% पर है, तो आपको पहले साफ़ / बूट करना होगा। इसने आंशिक इंस्टॉल में कर्नेल अपग्रेड पकड़ा है जिसका अर्थ है कि एपीटी पूरी तरह से बहुत ज्यादा जम गया है और आपको दौड़ने के लिए कह रहा है apt-get -f install भले ही वह आदेश विफल रहता है।

कर्नेल छवियों की सूची प्राप्त करें और निर्धारित करें कि आप बिना क्या कर सकते हैं। यह आदेश वर्तमान में चल रहे एक को छोड़कर स्थापित कर्नेल दिखाएगा sudo dpkg --list 'linux-image*'|awk '{ if ($1=="ii") print $2}'|grep -v `uname -r`। सूची में दो नवीनतम संस्करणों पर ध्यान दें। आपको दौड़ने वाले व्यक्ति के बारे में चिंता करने की आवश्यकता नहीं है क्योंकि यह यहां सूचीबद्ध नहीं है। आप इसे देख सकते हैं uname -r

सभी फ़ाइलों को कर्नेल के लिए बूट / बूट करने के लिए कमांड तैयार करें जो आपको सचेत रखने के लिए ब्रेस विस्तार का उपयोग करके आपके लिए कोई फर्क नहीं पड़ता। वर्तमान और दो नवीनतम कर्नेल छवियों को बाहर करना याद रखें। उदाहरण: sudo rm -rf /boot/*-3.2.0-{23,45,49,51,52,53,54,55}-*। आप सिंटैक्स {80..84} के साथ एक श्रेणी का भी उपयोग कर सकते हैं।

sudo apt-get -f install आंशिक इंस्टॉल के बारे में क्या अजीब चीज बना रहा है उसे साफ करने के लिए।

यदि आप किसी त्रुटि में भागते हैं जिसमें "आंतरिक त्रुटि:" छवि नहीं मिली (/boot/vmlinuz-3.2.0-56-generic) ", तो आदेश चलाएं sudo apt-get purge linux-image-3.2.0-56-generic (आपके उचित संस्करण के साथ)।

आखिरकार, sudo apt-get autoremove मैन्युअल बूट क्लीन द्वारा अनाथ किए गए पुराने कर्नेल छवि संकुल को साफ़ करने के लिए।

सुझाव, भागो sudo apt-get update तथा sudo apt-get upgrade पूर्ण / बूट विभाजन खोजने के लिए प्रतीक्षा करते समय बैक अप लेने वाले किसी भी अपग्रेड की देखभाल करने के लिए।

सुझाव 2, समीक्षा https://help.ubuntu.com/community/AutomaticSecurityUpdates और unetended-upgrade :: निकालें- अप्रयुक्त-निर्भरता को /etc/apt/apt.conf.d/50unattended-upgrades में सत्य पर सेट करने पर विचार करें। यह सुनिश्चित करने के लिए कि आप अप्रयुक्त कर्नेल को साफ़ करते हैं, लेकिन भविष्य में इस समस्या से आपको बचाए जाने वाले अन्य चीजों को छोड़कर अन्य सुरक्षा अद्यतनों के बाद यह ऑटोरेमोव चलाने के बराबर होगा।


254
2018-03-07 16:54



इस तरह मेरे पास अगले रीबूट के लिए नवीनतम है और फिर उसमें कुछ तोड़ने के मामले में पहले। आम तौर पर मेरे पास बहुत सारे कमरे हैं इसलिए इससे कुछ नुकसान नहीं होता है और यह किसी भी परिदृश्य में पर्याप्त बैकअप विकल्पों के लिए मेरे पायरानिया को संतुष्ट करता है। - flickerfly
मुझे अप्रत्याशित उन्नयन के कारण कोई समस्या नहीं हुई है। मैं परिदृश्यों की कल्पना कर सकता हूं जहां यह गैर-डेब पैक किए गए इंस्टॉलेशन पर खोए जा रहे निर्भरताओं के आसपास एक मुद्दा हो सकता है कहें कि आप php इंस्टॉल करें, इसे अनइंस्टॉल करने का निर्णय लें और स्रोत से एक नया संस्करण स्थापित करें। इस संस्करण में पिछले इंस्टॉल द्वारा प्रदान की गई निर्भरताएं हैं, लेकिन एपीटी इस बात से अनजान है कि इसकी अभी भी आवश्यकता है। अगली बार जब आप स्वतः निर्भर करते हैं तो उन निर्भरताओं को हटा दिया जाएगा। अगर स्वचालित हो, तो यह थोड़ा उलझन में हो सकता है। यदि आप रिपॉजिटरीज के बाहर स्थापित नहीं करते हैं तो मुझे लगता है कि यह पूरी तरह से सुरक्षित है। - flickerfly
इसे देखने के बाद कई बनाम वर्चुअल सर्वर (जहां कर्नेल स्वचालित रूप से अपग्रेड किए जा रहे थे लेकिन बाद में नहीं हटाए गए), मैंने एक लिखा पायथन लिपि इसे स्वचालित करने के लिए। मुझे इस पर और अधिक आंखें पसंद हैं - EvanK
यदि तुम प्रयोग करते हो dpkg --purge एक पूर्ण बूट पर आपको निम्नलिखित मिलेंगे $ 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
यह बहुत उपयोगी है। मेरे लिए काम किया - deepdive


इसके बारे में दस्तावेज है https://help.ubuntu.com/community/RemoveOldKernels

संक्षेप में: उपयोग करें

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

purge-old-kernels उपकरण के माध्यम से स्थापित किया जा सकता है sudo apt install byobu। यहां अपने मैन-पेज से विवरण दिया गया है:

यह प्रोग्राम पुराने कर्नेल और हेडर पैकेज को हटा देगा   सिस्टम, डिस्क स्थान मुक्त। यह वर्तमान में कभी नहीं हटाएगा   कर्नेल चल रहा है। डिफ़ॉल्ट रूप से, यह कम से कम नवीनतम 2 कर्नल रखेगा,   लेकिन उपयोगकर्ता उस मान को ओवरराइड कर सकता है --keep  पैरामीटर।

यदि आप एक कॉपी-पेस्ट समाधान चाहते हैं, तो ReSearchIT Eng ने निम्न का सुझाव दिया:

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

44
2017-08-09 09:12



मेरे मामले में एपीटी लंबित कर्नेल के कारण काम नहीं कर रहा है और सुझाए गए फिक्स कैच -22 है: - James Bowery
मुझे पहले टूटे हुए पैकेज को ठीक करना था askubuntu.com/a/304388/284313 उसके बाद आपका समाधान काम किया। - James Bowery
मुझे लगता है कि यह अब तक स्वीकार्य समाधान होना चाहिए। - Fran Marzoa
यह स्वीकार्य उत्तर से कहीं अधिक सुरक्षित है। मुझे लगता है apt-get autoremove --purge हालांकि, पर्याप्त होना चाहिए। - Woodrow Barlow


मैंने पाया कि छोटे विभाजन को छोड़ना और स्थानांतरित करना कहीं अधिक आसान है /boot जड़ के लिए। यह भविष्य में किसी भी अंतरिक्ष के मुद्दों से भी बचाता है।

सबसे पहले अपने विभाजन को बूट विभाजन से रूट पर ले जाएं (के रूप में चलाएं sudo -s):

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

निकालें (या टिप्पणी) /boot में प्रवेश /etc/fstab:

vim /etc/fstab

ग्रिब अपडेट करें और सुनिश्चित करें कि सब कुछ सही है:

update-grub

apt अब समस्याओं के बिना अपग्रेड करने में सक्षम होना चाहिए।

यह एक अप्रयुक्त 200 एमबी विभाजन छोड़ देता है (यदि आप परेशानी के लायक पाते हैं तो आप किसी और चीज के लिए उपयोग कर सकते हैं)।


6
2018-04-14 07:43



यह एक अच्छा विचार है, लेकिन यदि आप अपने रूट विभाजन के लिए पूर्ण-डिस्क एन्क्रिप्शन चाहते हैं तो काम नहीं करता है। - Paŭlo Ebermann


पुराने कर्नेल को हटा रहा है (/ स्पेस पर खाली स्थान) देख: 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]+//')")

तो भागो

sudo apt-get update

3
2017-08-14 14:09



यह एकमात्र ऐसा था जो काम करता था .... महान समाधान - John
सबसे बढ़िया उत्तर! यह एकमात्र समाधान है जो मेरे लिए काम करता है; autoremove बेवकूफ है; यह आधिकारिक रूप से उन्हें हटाए जाने से पहले किसी भी कर्नेल को अनमेट निर्भरताओं के साथ पुनर्स्थापित करने का प्रयास करता है। मैं बार-बार अंतरिक्ष से बाहर चलने वाली मंडलियों में जा रहा था। यह जवाब सोना है। - Lonnie Best


sudo apt-get autoremove

यह पिछले 2 कर्नेल के अलावा सभी को हटा देता है। जब उबंटू 16.04 एलटीएस पर परीक्षण किया गया /boot 100% क्षमता पर था और apt-get upgrade यह अंतिम कर्नेल अपग्रेड विफल रहा है। कर्नेल ऑटोरेमोव पुनरावृत्त है, इसलिए यदि आपके पास कई कर्नल हैं, तो उन्हें एक समय में हटा दिया जाएगा। तो धैर्य रखें।


2
2017-10-03 16:39





हाथ से ऐसा क्यों करते हैं जब आप इसे किसी उपकरण के साथ कर सकते हैं? आप जानते हैं कि आपको 30 सेकंड में फिर से इसकी आवश्यकता होगी, क्योंकि इन दिनों एक नया कर्नल अपडेट धक्का देने में 30 सेकंड लगते हैं = पी

मैं इस उपकरण का उपयोग करने की सलाह देते हैं, bootnukem

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

फिर

sudo bootnukem --dry-run

हटाना --dry-run एक बार जब आप पुष्टि करते हैं कि यह सुरक्षित दिखता है


0
2018-05-04 17:28