سؤال كيف يمكنني تحرير مساحة أكبر في / boot؟


لي /boot التقسيم ممتلئ تمامًا وأحصل على تحذير في كل مرة أعيد فيها تشغيل نظامي. لقد قمت بالفعل بحذف حزم kernel القديمة (linux-headers ...) ، وفعلت ذلك بالفعل لتثبيت إصدار أحدث من النواة جاء مع التحديثات التلقائية.

بعد تثبيت هذا الإصدار الجديد ، يكون القسم ممتلئًا مرة أخرى تقريبًا. ما الذي يمكنني حذفه أيضًا؟ هل هناك بعض الملفات الأخرى المرتبطة بصور النواة القديمة؟

وهنا لائحة من الملفات الموجودة على بلدي /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


الأصل


تجدر الإشارة إلى أنه لن يكون لكل تثبيت من نوع Ubuntu قسمًا منفصلًا / تمهيدًا - فغالبًا ما يكون جزءًا كبيرًا. تنطبق هذه الإجابة على أولئك الذين لديهم قسم منفصل / التمهيد. يحتاج أولئك الذين يستخدمون تشفير LVM أو "القرص الكامل" إلى منفصلة / boot ، وإلا فقد يكون اختياريًا. - thomasrutter
إذا كان لدى أي شخص آخر نفس المشكلة التي يواجهها: بعد انتهاء / التمهيد لا توجد مساحة متبقية "apt-get upgrade" ستفشل عند إعادة إنشاء ملفات initrd للنواة التي تم تثبيتها أو التي يعتقد أن البرنامج النصي update-initramfs مثبت من خلال فحص محتويات / var / lib / initramfs-tools. في هذه الحالة ، لا يمكن إزالة الحواف القديمة باستخدام apt-get لأن قسم fscking / boot ليس له مساحة على الجهاز. يمكن للمرء القيام بذلك باستخدام "dpkg -P" متبوعاً بتنظيف الإدخال المقابل في / boot (إلى مساحة حرة) و / var / lib / initramfs-tools (لن يتم إنشاء صورة initrd). - wojci
النقطة الأساسية للإجابات الصحيحة هي أنهم يطلبون منك إزالة حزم تحتوي على الإصدارات القديمة من النواة. توصي العديد من صفحات الويب التي تتناول هذه المشكلة بإزالة ملفات في قسم التمهيد قد يعمل هذا لفترة من الوقت ، ولكن قد تقوم في النهاية بتحديث حزمة تقوم بإعادة إنشاء الملفات المفقودة لنسخ kernel التي تحتوي على حزم ، وبالتالي تقوم بتشغيلها خارج المساحة. - 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 ويتم استخدامها عند بناء وحدات نواة خارجية (مثل برنامج تشغيل nvidia الخاص و virtualbox). يجب على معظم المستخدمين إزالة حزم الرأس هذه إذا كانت حزمة kernel المطابقة (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
إذا فشل apt-get purge بسبب تبعيات غير ملباة ، فيمكنك اتباع النصيحة على askubuntu.com/questions/171209/... - svandragt
إجابة دقيقة للغاية ولا تزال تعمل ... ومازالت بحاجة إليها في عام 2014. مما يثير الدهشة أنه لا يزال يتم تلقائيًا بواسطة أدوات واجهة المستخدم الرسومية. - allprog
@ byf-ferdy يعد kernel جزءًا أساسيًا من نظام التشغيل ، إذا لم يعمل الإصدار الأحدث بطريقة ما مع جهازك ، فلا يزال بإمكانك اختيار جهاز مختلف للإقلاع منه. من المحتمل أن تكون إحدى الميزات الرائعة هي التي تزيل جميع الحبيبات المثبتة أوتوماتيكيا والتي يزيد عمرها عن شهر (باستثناء أحدث اثنتين). - Lekensteyn


قسم التمهيد الخاص بك ممتلئ. بما أن هذا هو تحديث kernel ، سيتم نسخ هذه الملفات إلى قسم التمهيد حتى تحتاج إلى تنظيفه. هنا مشاركة مدونة التي ستوضح لك كيفية مسح صور kernel القديمة بأمر واحد. سوف أعطي خلاصة أساسية للطريقة. استخدم هذا الأمر لطباعة الإصدار الحالي من kernel:

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
يبدو الأمر جيدًا ، ولكن عندما أقوم بتشغيله ، أحصل على نفس الخطأ الذي أحصل عليه عندما أرغب في تثبيت شيء ما ولا يمكنه فعله لأن الحذاء ممتلئ: --------------- ----------- الحزم التالية لها تبعيات غير ملباة: linux-image-extra-4.2.0-27-general: تعتمد: linux-image-4.2.0-27-generic ولكنها لن ليتم تثبيته linux-image-extra-4.2.0-30-general: يعتمد: linux-image-4.2.0-30-general ولكنه لن يتم تثبيته - Alex


sudo apt-get autoremove

هذا الأمر يقوم بالمهمة تلقائيا.


94
2017-11-05 05:58



كما يوحي الاسم ، apt-get AUTOremove هي عملية آلية حيث يأخذ النظام "أفضل تخمين" ما تحاول تحقيقه. لا ينبغي أن تستخدم كبديل لإدارة نظام الحس السليم. المشكلة في هذا الأسلوب: إذا قمت (أو تحديثًا) بإزالة حزمة تعتبر جزءًا من قائمة التبعية هذه ، تريد وظيفة الإزالة التلقائية إزالة جميع الحزم الأخرى في قائمة التبعية ، مما يترك لك نظامًا بدون سطح مكتب يعمل (وأحيانًا حتى مع وجود نظام مكسور تماما). - Rinzwind
المرجع: 1 من العديد من المصادر لهذا التعليق أعلاه: linuxquestions.org/questions/debian-26/... - Rinzwind
إذا تم تثبيت linux-image-generic ولم يتم تثبيت النواة الجديدة بشكل صريح ، سيؤدي ذلك إلى إزالة الحبيبات القديمة. الحس السليم هو عدم قبول أي تغييرات على النظام دون قراءتها أولاً. إذا تم استخدام الحس السليم قبل استخدام هذا الأمر فلن تكون هناك مشكلة. - mchid
Rinzwind - أفرغ هذا الأمر 250 ميغابايت من المساحة على القرص بإزالة "رؤوس linux" القديمة - Chinmaya B
autoremove يعمل إذا استخدمت قبل يوجد شرط خارج الفضاء. ومع ذلك ، عندما تنفد مساحة ملائمة من المساحة والإحباط (ويلاحظ المستخدم المشكلة أخيراً) ، يكون قد فات الأوان على تشغيل autremove أو أي حل آخر يستند إلى apt. إذا كان هذا هو الحال بالنسبة لك ، فجرّب أحد الحلول القائمة على dpkg. - user535733


يمكن استخدام برنامج Synaptic Package Manager لتحديد صور النواة القديمة وإزالتها بسهولة. Screenshot of Synaptic Package Manager

إذا لم يكن لديك Synaptic مثبتًا بالفعل:

sudo apt-get install synaptic

ابدأ التطبيق وحدد الخيارات المعروضة.

يجب أن تكون قادراً على تمييز كافة حزم "linux-" بالإصدار "2.6.x" حيث x يتراوح بين 31 إلى 38 وفقاً للملفات الموجودة في مجلد التمهيد.

انقر بزر الماوس الأيمن فوق كل حزمة من حزم linux هذه واختر الخيار "Mark for Complete Removal". أخيرا انقر فوق الزر "تطبيق". سيؤدي ذلك إلى إزالة جميع الملفات وأي ملفات مرتبطة بها. ك /boot يجب أن يكون المجلد الآن مرتبكًا بعض الشيء.


38
2017-12-24 14:34



أنا في 14.04. لقد تعاملت مع هذا الموقف في الماضي عبر سطر الأوامر ، لكنني قررت تجربة هذه الطريقة اليوم ... بالنسبة لي ، كانت صور لينكس الخاصة بي تحت تثبيت (دليل) ، غير مثبتة (محلية أو بالية) - Ryan
أوه لا. لا يمكنني تثبيت Synaptic نظرًا لعدم وجود مساحة على /boot! - John McGehee
JohnMcGehee fsck and parted should solve this issue for you. - FlipMcF


نشكركم على مشاركتكم التفصيلية لمشكلتك ، وهذا ساعدني على المضي قدمًا في الاتجاه الصحيح. على الرغم من أنه من المفيد الاحتفاظ بملفات kernel السابقة ، يمكنك إزالة جميع الملفات دفعة واحدة ، تحقق من هذه المشاركة:
كيفية إزالة جميع غير معروف لينكس نواة الرؤوس والصور والوحدات

تم عبر سطر الأوامر. إذا كنت تفعل ذلك عن طريق استخدام عن بعد شيء مثل 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" ، ومن هنا تكون هناك ثلاث نقرات:

Ubuntu tweak janitor for old kernels

من الأفضل ترك النواة الأخيرة (أنت لا تعرف أبدًا) أو نواة معروفة للعمل من أجل السلامة ؛ لكن هذا قابل للتخصيص بسهولة.

يمكنك استخدام نفس الأداة لتنظيف الكثير من الأشياء --- فقط تذكر أنه إذا قمت بتنظيف ذاكرة التخزين المؤقت المصغرة أو ذاكرة التخزين المؤقت من TB ، فسيتعين على النظام إعادة بنائها إذا لزم الأمر.


22
2017-11-25 13:11



حاولت تثبيت Ubuntu قرص وأيضا الذهاب إلى موقع مستودع. تقول أنها فقط ل 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


يمكنك التوقف عن استخدام قسم منفصل / تمهيد ، فلن يكون لديك مساحة محدودة هناك. للقيام بذلك ، قم بإلغاء تحميل القسم ، ثم قم بتركيبه في مكان آخر وقم بنسخ كافة الملفات إلى الدليل / boot في قسم الجذر ، ثم قم بإزالة الإدخال من / etc / fstab وأعد تثبيت grub. على سبيل المثال (ستحتاج إلى استخدام القسم الصحيح):

sudo -s
umount /boot
mount /dev/sda2 /mnt
cp -a /mnt/* /boot/
umount /mnt
gedit /etc/fstab
grub-install /dev/sda

يمكنك بعد ذلك استخدام gparted لحذف قسم التمهيد / القديم ، وربما توسيع قسم الجذر لاستخدام تلك المساحة. لتوسيع قسم الجذر ، ستحتاج إلى التمهيد من livecd ، ويجب أن تكون المساحة الخالية على اليمين مباشرة. إذا كان القسم / التمهيد موجودًا حاليًا على يسار قسم الجذر ، فستحتاج أولاً إلى نقل قسم الجذر إلى اليسار ، ثم تمديده ، ولكن قد يستغرق هذا وقتًا طويلاً جدًا ، لذا قد لا يستحق مشكلة.


11
2017-12-22 16:38



الانتقال / التمهيد إلى القسم الرئيسي الخاص بي ليس حلاً بالنسبة لي لأن كل شيء ما عدا التمهيد / مشفر. لا يمكنك معرفة ذلك من سؤالي ، آسف. - user6722
هذا حل جيد إذا لم تنجح الحلول أعلاه نظرًا لعدم وجود مساحة على الإطلاق على وحدة تخزين التمهيد ، أو إذا كان لديك مشكلة "خارج الفضاء" بشكل متكرر. الرجاء قراءة أولاً لماذا يلزم أحيانًا وجود قسم تمهيد / تمهيد على الرغم من: (help.ubuntu.com/community/DiskSpace) - svandragt
svandragt ، هناك في الأساس لا يوجد سبب اليسار بحاجة إلى قسم التمهيد في هذه الأيام. حول الوحيد المتبقي هو إذا كان السير الخاص بك مكسورة ولا يمكن رؤية القرص بأكمله ، ولا يوجد أي جهاز تم إجراؤه في العقد الأخير على هذا القيد. الحالات الأخرى الموروثة مثل استخدام الغارة أو LVM يتم التعامل معها بشكل صحيح الآن بواسطة grub2. - psusi
هناك عدة أسباب لوجود قسم تشغيل منفصل. ولكنني لست متأكدًا من أن الفوائد تستحق الإعداد المعقد المتزايد. 1. نظام التشغيل يمكن أن تستفيد من التمهيد أسرع عبر ext2. 2. يمكن زيادة الأمن عن طريق تصاعد / التمهيد كما RO. (رووتكيتس ، إلخ) ، أو حتى تظل غير المحمود في وقت التشغيل. 3. يحتوي grub (1) (كان) بعض المشاكل مع ext4 مازال. 4. مطلوب لتشغيل LVM (grubv1). على الرغم من أن هذا لا ينطبق على الإعداد الافتراضي أوبونتو. - David Cahill
lsblk يمكن استخدامها لتحديد أي قسم هو ما - Mr Purple