كيف يمكنني إزالة إصدارات النواة القديمة لتنظيف القائمة التمهيد?

في كل مرة أقوم بتثبيت نواة لينكس جديدة ، يتم تركها في نكش_كونفيغ ، مما يجعل قائمة التمهيد أطول في كل مرة.

وأنا أعلم أنني يمكن البحث يدويا من خلال الحزم المثبتة وإزالتها.

هل توفر أوبونتو أي طريقة أسهل لتنظيفها أو منعها من الظهور في قائمة التمهيد?

16.04 والإصدارات الأحدث من أوبونتو

sudo apt autoremove

يزيل هذا الأمر الحزم التي تم تثبيتها تلقائيا لحل التبعية ، ولكنها لم تعد تعتمد عليها الآن. وهذا يشمل الإصدارات القديمة من linux-headers-* و linux-image-*. (كما أنها ذكية حول هذه العملية ، وترك نسخة احتياطية واحدة من النواة حولها كاحتياطي!)

11.10 والإصدارات الأحدث من أوبونتو

اليرقة 2 وعرضه من جميع حبات

أحدث الإصدارات من اليرقة2 المثبتة في أوبونتو عرض تلقائيا أحدث نواة ويخفي حبات القديمة التي قد قمت بتثبيتها.

GNU GRUB

إذا كنت لا ترى الخاص بك اليرقة - ثم تذكر أن تضغط Shift أثناء التمهيد.

كما ترى ، يتم عرض أحدث نواة فقط.

إذا قمت بتحديد الخيار المعروض (اضغط على Enter) ثم تصبح جميع النواة القديمة مرئية ومتاحة للتمهيد منها.

GNU GRUB Previous versions

كيفية حذف الألباب القديمة نهائيا

التمهيد الأول مع أحدث النواة المتاحة.

هناك عدد من الطرق لحذف النواة القديمة. شخصيا ، أنا لن أتطرق بواب الكمبيوتر منذ اعترف هذا لكسر جهاز الكمبيوتر الخاص بك مع اقتراحاتها.

متشابك

البديل هو متشابك (sudo apt install synaptic)

البحث عن لينكس-صورة، انقر بزر الماوس الأيمن فوق نواة واختر الإزالة الكاملة وأخيرا انقر فوق تطبيق زر لحذف النواة.

كرر البحث ولكن هذه المرة ل لينكس رأس - يمكنك حذف الرؤوس المرتبطة لصورة النواة المختارة سابقا.

متشابك على الرغم من أنه لن يحاول التحقق مما تحاول إزالته... هل يمكن حذف عن غير قصد أحدث نواة الخاص بك - أو حتى حذف كل من حبات الخاص بك عن طريق هذه الأداة ويترك لك مع غير قابل للتمهيد أوبونتو!.

تذكر للتحقق من النواة التي تستخدمها نوع:

uname -r

ستكون النتيجة مشابهة ل:

Terminal <uname -r>

تذكر النتيجة والرقم-تأكد من عدم حذف الصورة أو الرأس المقابل.

التوصية

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

أولا ، أعد تشغيل النظام للتأكد من أنه يستخدم أحدث نواة. ثم افتح المحطة الطرفية وتحقق من النواة الحالية:

uname -r 

لا تقم بإزالة هذه النواة!

بعد ذلك ، اكتب الأمر أدناه لعرض/سرد جميع النواة المثبتة على نظامك.

dpkg --list 'linux-image-*'

ابحث عن جميع النواة التي تقل عن النواة الحالية. عندما تعرف النواة التي تريد إزالتها ، تابع أدناه لإزالتها. قم بتشغيل الأوامر أدناه لإزالة النواة التي حددتها.

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

أخيرا ، قم بتشغيل الأوامر أدناه لتحديث اليرقة2

sudo update-grub2 

إعادة تشغيل النظام الخاص بك.

بلدي بطانة واحدة لإزالة حبات القديمة (وهذا يحرر أيضا مساحة القرص)

dpkg --list | grep linux-image | awk '{ print $2 }' | sort -V | sed -n '/'`uname -r`'/q;p' | xargs sudo apt-get -y purge

شرح (تذكر, | يستخدم إخراج الأمر السابق كمدخل إلى التالي)

  • dpkg --list يسرد جميع الحزم المثبتة
  • grep linux-image يبحث عن صور لينكس المثبتة
  • awk '{ print $2 }' فقط إخراج العمود 2 (وهو اسم الحزمة)
  • sort -V يضع العناصر بالترتيب حسب رقم الإصدار
  • sed -n '/'`uname -r`'/q;p' يطبع الخطوط قبل النواة الحالية
  • xargs sudo apt-get -y purge تطهير حبات وجدت

الفك sed الاحتجاج:

  • -n يقول sed أن تكون هادئة
  • `uname -r` إخراج الإصدار الحالي تثبيت النواة - نحن إدراجه في باكتيكس بحيث الإخراج هو يتضمن كجزء من الأمر (قد ترى أيضا هذا كما $(uname -r)
  • /something/q يقول توقف عند تطابق ' شيء ' (في هذه الحالة ، شيء هو إخراج uname -r)- ال / تحيط التعبير العادي
  • p هو طباعة
  • ال ; هو فصل الأوامر ، لذلك /something/q;p يقول إنهاء عند تطابق شيء, طباعة آخر

تماما, sed -n '/'`uname -r`'/q;p' هو طباعة الخطوط حتى يتطابق مع اسم النواة الحالي.

إذا كنت بجنون العظمة (مثلي) ، يمكنك جعل الجزء الأخير xargs echo sudo apt-get -y purge بحيث تتم طباعة الأمر لتطهير النواة القديمة ، يمكنك التحقق من عدم تضمين أي شيء غير متوقع قبل تشغيله.


نسخة معدلة لإزالة الرؤوس:

dpkg --list | grep 'linux-image' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs sudo apt-get -y purgedpkg --list | grep 'linux-headers' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs sudo apt-get -y purge

ملاحظة: ال sed يتم تعديل الاحتجاج. "$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")" مقتطفات فقط الإصدار (على سبيل المثال "3.2.0-44") ، دون "- عام " أو ما شابه ذلك من uname -r


إصدار الكل في واحد لإزالة الصور والرؤوس (يجمع بين الإصدارين أعلاه):

echo $(dpkg --list | grep linux-image | awk '{ print $2 }' | sort -V | sed -n '/'`uname -r`'/q;p') $(dpkg --list | grep linux-headers | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p') | xargs sudo apt-get -y purge

أوبونتو 16.04+:

$ sudo apt autoremove...The following packages will be REMOVED:  linux-headers-4.4.0-57 linux-headers-4.4.0-57-generic linux-image-4.4.0-57-generic linux-image-extra-4.4.0-57-generic linux-tools-4.4.0-57 linux-tools-4.4.0-57-generic

أوبونتو 15.10 وأدناه:

أجد أن هذا هو أسهل وأسرع طريقة. فإنه يحتفظ أحدث نواة فضلا عن اثنين آخرين:

sudo apt-get install bikeshedsudo purge-old-kernels

لتغيير عدد من حبات الإضافية التي يتم الاحتفاظ بها:

sudo purge-old-kernels --keep 3

إزالة إدخالات من نكش 2 يجب إزالة المحاولات عن طريق تحرير أو إزالة الملفات في / الخ / نكش.د مجلد. ال / تمهيد/نكش / نكش.ملف كفغ للقراءة فقط ، وينبغي أن لا تتطلب عادة التحرير.

حبات كثيرة جدا?

  • إذا لم تكن متأكدا من النواة التي تستخدمها حاليا ، في نوع المحطة الطرفية غير مسمى-ص.

  • حبات إزالتها عن طريق الرابطة (متشابك, &مثل;الرابطة بين الحصول على إزالة&مثل;, إلخ.) سيتم تحديث نكش تلقائيا.كفغ وليس هناك حاجة إلى إجراء المستخدم.

  • وهناك أداة عظيمة لإزالة حبات (وإدخالات القائمة) هو أوبونتو القرص ، التطبيق واجهة المستخدم الرسومية آمنة وسهلة الاستخدام.

  • تثبيت أوبونتو القرص

  • سوف أوبونتو قرص تكون متاحة تحت تطبيقات & طن; أدوات النظام.

إزالة إدخالات النواة القديمة

  • اختر & مثل; حزمة الأنظف & مثل;على اليسار و &مثل; نواة نظيفة&مثل; من اللوحة اليمنى.

  • اضغط على & مثل; إفتح & مثل; زر في أسفل اليمين, أدخل كلمة المرور الخاصة بك.

  • اختر من القائمة المعروضة صور النواة والرؤوس التي ترغب في إزالتها. النواة المستخدمة غير مدرجة.

  • اضغط على&مثل; تنظيف & مثل; زر في أسفل اليمين لإزالة الصور النواة المختارة ورؤوس.

إزالة أنظمة التشغيل من القائمة نكش

  • كما سيتم إزالة أنظمة التشغيل الأخرى التي تم إزالتها من الكمبيوتر من القائمة مرة واحدة &مثل;تحديث نكش&مثل; يتم تشغيل كجذر.

  • يتم وضع عناصر القائمة على القائمة نكش 2 عن طريق البرامج النصية. إذا كنت لا تريد أنظمة التشغيل الأخرى التي سيتم إدخالها في القائمة ، تعطيل /الخ/نكش.د / 30_أوسبروبر

  • قم بتشغيل هذا الأمر لإيقاف تشغيل البرنامج النصي
    sudo chmod -x /etc/grub.d/30_os-prober

  • تعطيل 30 أوس-بروبر= 'صحيح' في / الخ / الافتراضي/نكش

إزالة ميمتست 86+ من القائمة نكش
sudo chmod -x /etc/grub.d/20_memtest86+

  • قم بتشغيل أمر التحديث-اليرقة للسماح بإدراج التغييرات في اليرقة.سي إف جي

المصدر

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

طريقة بديلة لإزالة إدخالات النواة (قبل 10.04)

اليرقة لا اليرقة 2

مدير بدء التشغيل

يمكنك العثور عليه تحت نظام&غ ؛ &غ ؛ إدارة & غ ؛ & غ;



ترى في الصورة الثانية يمكنك تحديد عدد حبات لإظهار? أنا عموما مجرد الاحتفاظ بها على 1 ، ولكن عندما أحصل على ترقية النواة أنا دائما تغييره إلى 2 قبل إعادة تشغيل حتى أتمكن من تحديد النواة القديمة إذا كانت النواة الجديدة لديها مشاكل مع الأجهزة الخاصة بي. بمجرد أن أعرف أن النواة الجديدة تعمل بشكل جيد ، أقوم بتغييرها مرة أخرى إلى 1.

سطر الأوامر بحتة ، وهذا سوف إزالة جميع ولكن الحالي والثاني الأكثر الحالي (عن طريق" -2 " في الأمر الرأس أدناه):

OLD=$(ls -tr /boot/vmlinuz-* | head -n -2 | cut -d- -f2- |    awk '{print "linux-image-" $0 " linux-headers-" $0}' )if [ -n "$OLD" ]; then    apt-get -qy remove --purge $OLDfiapt-get -qy autoremove --purge

تحديث: purge-old-kernels هو مهمل الوقت الحاضر.

أنا جعلت السيناريو لتطهير حبات حتى في ظروف صعبة. يطلق عليه linux-purge ويمكنك العثور عليه هنا.

إذا كنت ترغب فقط في تطهير النواة (والحزم ذات الصلة) الأقدم من النواة المستخدمة حاليا ، عندما لا يتم كسر النظام، يمكنك استخدام هذا السيناريو.

وهناك أيضا صفحة وثائق أوبونتو التي ساهمت في بشأن إزالة حبات القديمة هنا.

يمكنك اتباع استخدام قسم حزمة "الترقيات غير المراقبة" من تحديثات الأمان التلقائية المادة على أوبونتو ويكي لأداء هذا.

تحتاج إلى تغيير السطر التالي في / الخ / الرابطة / الرابطة.أسيوط.د / 50 غير حاضر-ترقيات الملف;

//Unattended-Upgrade::Remove-Unused-Dependencies "false";

مع

Unattended-Upgrade::Remove-Unused-Dependencies "true";

لإزالة الحزم القديمة تلقائيا ، بما في ذلك النواة.

قم أيضا بإزالة السطر أو التعليق عليه

"^linux-image.*"; 

في قسم "نيفيروتورموف" من الملف / الخ / الرابطة / الرابطة.أسيوط.د/01إزالة تلقائية.

الطريقة الأسرع / الأبسط (قابلة للتطبيق على الأقل منذ 12.04) الممكنة التي تأتي بالفعل مع أوبونتو هي apt-get. قم بما يلي إذا كنت ترغب في إزالة جميع إصدارات النواة القديمة غير المستخدمة (باستثناء الإصدار السابق الذي لا تستخدمه. هذا هو للتأكد من أنه إذا فشل إصدار النواة الحالي في بعض الطريق ، لديك وسيلة للعودة إلى حالة سابقة). قم بما يلي:

sudo apt-get autoclean

سيؤدي هذا إلى القضاء على أي ملفات قديمة (بما في ذلك إصدارات النواة) قد تكون لديك. لاحظ أنه إذا كان لديك العديد من الإصدارات القديمة ، وسوف يستغرق بعض الوقت لأنه لديه للتأكد من أن إزالة إصدار النواة ليس لديه مشاكل. بالنسبة لي ، وإزالة آخر 12 إصدارات النواة استغرق حوالي 2 دقيقة. يمكنك أيضا القيام بما يلي:

sudo apt-get clean

والتي سوف تقضي على كل شيء تحميلها وتخزينها في مجلد ذاكرة التخزين المؤقت للرابطة. وأخيرا لديك:

sudo apt-get autoremove

والتي من شأنها التحقق من أي حزم غير مستخدمة وإزالتها إذا لزم الأمر. هذا شيء عظيم بالنسبة لتلك المكتبات وحزم التبعية التي لم تعد هناك حاجة بايت أي تطبيق مثبت.

لمعرفة ما يتم تثبيت حبات ورؤوس استخدام

dpkg -l | grep linux-imagedpkg -l | grep linux-headers

يمكنك بعد ذلك إزالتها واحدة تلو الأخرى أو معا ، فقط تأكد من الاحتفاظ بآخرها.

هناك أيضا بعض الأوامر والنصوص المفيدة لأتمتة الإزالة.

http://ubuntuforums.org/showthread.php?t=1658648

المطالبات التالية لإزالة كافة حبات ورؤوس غير المستخدمة:

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

(استخدام apt-get -y لإزالة دون سؤال)

هنا هو ما يحدث عند تشغيل على 18.04.1:

~$ dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'|grep -E "(image|headers|modules)" | xargs sudo apt-get -y purgeReading package lists... DoneBuilding dependency tree       Reading state information... DoneThe following packages will be REMOVED:  linux-headers-4.15.0-33* linux-headers-4.15.0-33-generic* linux-headers-4.15.0-34* linux-headers-4.15.0-34-generic* linux-image-4.15.0-33-generic* linux-image-4.15.0-34-generic*  linux-modules-4.15.0-33-generic* linux-modules-4.15.0-34-generic* linux-modules-extra-4.15.0-33-generic* linux-modules-extra-4.15.0-34-generic*0 upgraded, 0 newly installed, 10 to remove and 1 not upgraded.After this operation, 671 MB disk space will be freed.(Reading database ... 227403 files and directories currently installed.)Removing linux-headers-4.15.0-33-generic (4.15.0-33.36) ...Removing linux-headers-4.15.0-33 (4.15.0-33.36) ...Removing linux-headers-4.15.0-34-generic (4.15.0-34.37) ...Removing linux-headers-4.15.0-34 (4.15.0-34.37) ...Removing linux-modules-extra-4.15.0-33-generic (4.15.0-33.36) ...Removing linux-image-4.15.0-33-generic (4.15.0-33.36) .../etc/kernel/postrm.d/initramfs-tools:update-initramfs: Deleting /boot/initrd.img-4.15.0-33-generic/etc/kernel/postrm.d/zz-update-grub:Generating grub configuration file ...Found linux image: /boot/vmlinuz-4.15.0-36-genericFound initrd image: /boot/initrd.img-4.15.0-36-genericFound linux image: /boot/vmlinuz-4.15.0-34-genericFound initrd image: /boot/initrd.img-4.15.0-34-genericAdding boot menu entry for EFI firmware configurationdoneRemoving linux-modules-extra-4.15.0-34-generic (4.15.0-34.37) ...Removing linux-image-4.15.0-34-generic (4.15.0-34.37) ...I: /vmlinuz.old is now a symlink to boot/vmlinuz-4.15.0-36-genericI: /initrd.img.old is now a symlink to boot/initrd.img-4.15.0-36-generic/etc/kernel/postrm.d/initramfs-tools:update-initramfs: Deleting /boot/initrd.img-4.15.0-34-generic/etc/kernel/postrm.d/zz-update-grub:Generating grub configuration file ...Found linux image: /boot/vmlinuz-4.15.0-36-genericFound initrd image: /boot/initrd.img-4.15.0-36-genericAdding boot menu entry for EFI firmware configurationdoneRemoving linux-modules-4.15.0-33-generic (4.15.0-33.36) ...Removing linux-modules-4.15.0-34-generic (4.15.0-34.37) ...(Reading database ... 156180 files and directories currently installed.)Purging configuration files for linux-image-4.15.0-34-generic (4.15.0-34.37) ...Purging configuration files for linux-modules-4.15.0-33-generic (4.15.0-33.36) ...dpkg: warning: while removing linux-modules-4.15.0-33-generic, directory '/lib/modules/4.15.0-33-generic' not empty so not removedPurging configuration files for linux-modules-4.15.0-34-generic (4.15.0-34.37) ...Purging configuration files for linux-image-4.15.0-33-generic (4.15.0-33.36) ...Purging configuration files for linux-modules-extra-4.15.0-34-generic (4.15.0-34.37) ...Purging configuration files for linux-modules-extra-4.15.0-33-generic (4.15.0-33.36) ...~$ uname -r4.15.0-36-generic

‘سودو الرابطة بين الحصول على أوتورموف’ يجب أن تفعل خدعة على أوبونتو 14.04+

هناك أمر أوبونتو يسمى تطهير القديم حبات للقيام بهذه المهمة. انظر [إجابة] (grub2 - How do I remove old kernel versions to clean up the boot menu? - Ask Ubuntu) لمزيد من المعلومات.

وأظل العودة إلى هذه الصفحة… التعليق من قبل @ النتوءات يعمل فقط إذا كانت حبات الخاصة بك لصناعة السيارات في تثبيت-ولكن يمكنك جعل ‘سودو الرابطة بين الحصول على أوتورموف-تطهير’ * * الجواب * * باتباع المشورة ‘ملائمة مارك’ على https://help.ubuntu.com/community/RemoveOldKernels

تراكم حبات القديمة هو علة ، مع الإصلاح في التقدم: https://bugs.launchpad.net/bugs/1357093 . عند تحرير الإصلاح ، سيتم إزالة النواة القديمة تلقائيا بشكل افتراضي.

@ النتوءات الأمر لا تفعل خدعة بالنسبة لي في أوبونتو ستوديو 14.04 ، إذا لم يتم تثبيت حبات تلقائيا ، ولكن من قبل محدث البرنامج.

بالإضافة إلى إزالة النواة القديمة ، قم بإلغاء تعليق هذا السطر في "/إلخ/افتراضي / نكش "إذا كنت تريد التخلص من عناصر “الاسترداد” في القائمة: # نكش_تعطيل_لينوكس_الانتعاش=“صحيح”

في الإصدارات الأخيرة أوبونتو يخفي حبات في القائمة الفرعية نكش ، لذلك ليس هذا نافرة. ومع ذلك ، قد يكون من الجيد إزالة حبات إضافية لتوفير مساحة ، خاصة إذا كان لديك قسم صغير /تمهيد منفصل.

لا أستطيع العثور على أي إجابة من شأنها أن تساعد على إزالة حبات من الإصدار السابق بعد ترقية أوبونتو إلى إصدار أحدث ، حتى لو تم وضع علامة على سؤال محدد حول هذا الموضوع كنسخة مكررة من هذا [هنا] (grub2 - How do I remove old kernel versions to clean up the boot menu? - Ask Ubuntu). انظر أيضا ذات الصلة [تقرير الشوائب] (https://bugs.launchpad.net/ubuntu / + المصدر / بيكيشيد / + علة / 1586303)

لقد قدمت السيناريو الذي لا وظيفة. سأقوم بنشرها بعد الوصول إلى هدفي: Bountysource