چگونه می توان نسخه های قدیمی هسته را پاک کردم تا منوی بوت را تمیز کنم؟


به جواب پذیرفته شده بروید




هر بار که هسته جدید لینوکس را نصب می کنم ، در grub_config باقی می ماند و هر بار منوی بوت طولانی تر می شود.

من می دانم که می توانم به صورت دستی از طریق بسته های نصب شده جستجو کرده و آنها را حذف کنم.

آیا اوبونتو روش ساده تری برای تمیز کردن آنها یا جلوگیری از نمایش آنها در لیست چکمه فراهم می کند؟


707









30 :تعداد پاسخها


نسخه 16.04 و جدیدتر اوبونتو

 sudo apt autoremove
 

این دستور بسته هایی را که به طور خودکار نصب شده اند برای رفع یک وابستگی حذف می کند ، اما اکنون دیگر به آنها وابسته نیست. این شامل نسخه های قدیمی linux-headers-* و linux-image-* . (همچنین در مورد این فرآیند هوشمند است ، و یک نسخه اضافی کرنل را به عنوان یک برگردان پشت سر می گذارد!)

11.10 و نسخه های جدید اوبونتو

GRUB2 و نمایش آن از همه هسته ها

آخرین نسخه های Grub2 نصب شده در اوبونتو به طور خودکار جدیدترین هسته را نشان می دهد و هسته های قدیمی تر را که احتمالاً نصب کرده اید پنهان می کند.


گنو GRUB

اگر کباب خود را نمی بینید - پس بیاد داشته باشید که را فشار دهید Shift.

همانطور که مشاهده می کنید ، فقط جدیدترین هسته نمایش داده می شود.

اگر گزینه نشان داده شده (مطبوعات Enter) را انتخاب کنید ، سپس همه هسته های قدیمی قابل مشاهده و در دسترس هستند تا بتوانید از آن استفاده کنید.


GNU GRUB نسخه های قبلی

نحوه حذف دائمی هسته های قدیمی

اولین بوت با آخرین هسته موجود.

چندین روش برای پاک کردن هسته های قدیمی وجود دارد. من شخصاً به Computer Janitor لمسی نخواهم کرد زیرا این امر تأیید شده است که رایانه شما را با پیشنهادات خود خراب کند.

سیناپسی

جایگزین Synaptic است ( sudo apt install synaptic )

تصویر linux را جستجو کنید ، روی یک هسته کلیک راست کنید و حذف کامل را انتخاب کنید و در آخر بر روی دکمه Apply کلیک کنید تا هسته را پاک کنید.


مدیر بسته بندی سیناپسی

تکرار جستجو اما این بار برای سربرگ linux - می توانید هدر های مربوط به تصویر هسته قبلی را انتخاب کنید.

اگرچه Synaptic تلاش نخواهد کرد تا آنچه را که می خواهید حذف کنید ، تأیید کند ... شما ناخواسته می توانید جدیدترین هسته خود را حذف کنید - یا حتی همه هسته های خود را از طریق این ابزار حذف کنید و شما را با یک Ubuntu غیر قابل کنترل ترک کنید.

به یاد داشته باشید که از چه نوع هسته ای استفاده می کنید:

 uname -r
 

نتیجه شبیه به:




">

نتیجه و شماره را به خاطر بسپارید - مطمئن شوید که تصویر یا هدر مربوطه را حذف نمی کنید.

توصیه

توصیه من این است که حداقل دو یا ترجیحا سه هسته از جمله جدیدترین ها را نگه دارید. دلیل این توصیه این است که شما حداقل یک یا دو هسته دیگر برای بوت شدن در اختیار دارید ، اگر به هر دلیلی آخرین هسته شما قادر به بوت شدن یا معرفی قابلیت ردیابی مانند بی سیم شکسته نیستید.


605



ابتدا سیستم خود را راه اندازی مجدد کنید تا مطمئن شوید که از آخرین هسته استفاده می کند. سپس ترمینال را باز کرده و هسته فعلی خود را بررسی کنید:

 uname -r 
 

این برنامه را حذف نکنید!

در مرحله بعدی ، دستور زیر را تایپ کنید تا تمام هسته های نصب شده روی سیستم خود را مشاهده / لیست کنید.

 dpkg --list 'linux-image-*'
 

تمام هسته های پایین تر از هسته فعلی خود را پیدا کنید. وقتی می دانید کدام هسته را حذف می کنید ، برای حذف آن در زیر ادامه دهید. دستورات زیر را اجرا کنید تا هسته ای که انتخاب کرده اید حذف شود.

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

در آخر ، دستورالعمل های زیر را اجرا کنید تا grub2 به روز شود

 sudo update-grub2 
 

راه اندازی مجدد سیستم خود را.


386



تک لاین من برای حذف هسته های قدیمی (این فضای دیسک را نیز آزاد می کند)

 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 چاپ است
  • ; separtor فرمان است، بنابراین /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 purge
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
 

توجه: 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
 

284



اوبونتو 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 bikeshed
sudo purge-old-kernels
 

برای تغییر تعداد هسته های اضافی که نگهداری می شود:

 sudo purge-old-kernels --keep 3
 

61



با حذف ویرایش یا حذف پرونده ها در پوشه /etc/grub.d ، باید ورودی های Grub 2 را حذف کنید. پرونده /boot/grub/grub.cfg فقط خواندنی است و به طور معمول نیاز به ویرایش ندارد.

هسته های خیلی زیادی دارید؟

  • اگر از هسته ای که در حال استفاده از آن مطمئن نیستید ، در یک نوع ترمینال uname -r استفاده کنید .

  • هسته های حذف شده از طریق APT (Synaptic ، "apt-get remove" و غیره) بطور خودکار grub.cfg را بروزرسانی می کنند و نیازی به اقدام کاربر نیست.

  • یک ابزار عالی برای از بین بردن هسته ها (و ورودی های منو) Ubuntu-Tweak است ، یک برنامه رابط کاربری گرافیکی ایمن و آسان برای استفاده.

  • نیشگون گرفتن و کشیدن اوبونتو را نصب کنید

  • Ubuntu-Tweak تحت برنامه ها> ابزارهای سیستم در دسترس خواهد بود.

ورودی های قدیمی تر هسته را حذف کنید

  • "پاکت تمیز کننده" را در سمت چپ و "هسته تمیز" را از پانل سمت راست انتخاب کنید.

  • دکمه "باز کردن" را در پایین سمت راست فشار دهید ، رمز عبور خود را وارد کنید.

  • تصاویر و هدرهایی را که می خواهید حذف کنید از لیست نمایش داده شده انتخاب کنید. کرنل مورد استفاده ذکر نشده است.

  • دکمه "پاکسازی" را در سمت راست پایین فشار دهید تا تصاویر و هدرهای انتخاب شده هسته حذف شود.

سیستم های عامل را از فهرست Grub حذف کنید

  • سیستم های عامل دیگری که از رایانه حذف شده اند نیز پس از اجرای برنامه "به روز رسانی-grub" از طریق فهرست ، از فهرست حذف می شوند.

  • موارد منو توسط اسکریپت ها در فهرست Grub2 قرار می گیرند. اگر نمی خواهید سایر سیستم عامل ها در منو وارد شوند ، /etc/grub.d/30_osprober را غیرفعال کنید

  • برای جلوگیری از اجرای اسکریپت این دستور را اجرا کنید
    sudo chmod -x /etc/grub.d/30_os-prober

  • DISABLE_30_OS-PROBER = 'صحیح' در / etc / پیش فرض / شبکه

Memtest86 + را از فهرست Grub حذف کنید
sudo chmod -x /etc/grub.d/20_memtest86+

  • دستور update-grub را اجرا کنید تا اجازه دهید تغییرات در grub.cfg درج شود

منبع

توجه: پس از به روزرسانی های هسته ، ورودی جدیدی به منوی GRUB اضافه شده است. در صورت تمایل می توانید قدیمی تر را حذف کنید. هرچند که ، اکثر کاربران باتجربه به شما توصیه می کنند در صورت بروز خطایی در بروزرسانی ، حداقل یک ورودی اضافی را حفظ کنید. برای اهداف عیب یابی باید نسخه هسته قدیمی را بوت کنید.

روش جایگزین برای حذف ورودی های هسته (قبل از 10.04)

برای GRUB نه GRUB2

مبتدی
شروع کننده را نصب کنید

شما می توانید آن را در سیستم >> مدیریت >> پیدا
متن جایگزین



متن جایگزین


کنید. در تصویر دوم می توانید تعداد دانه ها را برای نمایش انتخاب کنید؟ من معمولاً فقط 1 را نگه می دارم ، اما وقتی یک هسته به روزرسانی می کنم ، همیشه قبل از شروع مجدد ، آن را به 2 تغییر می دهم تا اگر هسته جدید با سخت افزار من مشکل داشته باشد ، می توانم هسته قدیمی را انتخاب کنم. وقتی می دانم هسته جدید خوب کار می کند ، آن را به 1 تغییر می دهم.


43



مطمئناً از خط فرمان ، این همه جریان فعلی و دوم فعلی را حذف می کند (از طریق "-2" در فرمان head):

 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 $OLD
fi
apt-get -qy autoremove --purge
 

39



بروزرسانی: امروزه مستهلک purge-old-kernels می شود .

من یک اسکریپت درست کردم تا هسته ها را حتی در شرایط دشوار پاکسازی کنم. نامیده می شود linux-purge و می توانید آن را در اینجا بیابید .

اگر فقط می خواهید هسته ها (و بسته های مرتبط) قدیمی تر از هسته فعلی استفاده شده را پاک کنید ، وقتی سیستم خراب نیست ، می توانید از این اسکریپت استفاده کنید .

همچنین یک صفحه مستندات اوبونتو وجود دارد که من در مورد حذف هسته های قدیمی در اینجا نقش داشته ام .


36



شما می توانید دنبال استفاده از "بی مراقب-ارتقاء" بخش بسته از به روز رسانی های امنیتی به صورت خودکار مقاله در اوبونتو ویکی برای انجام این.

شما باید خط زیر را در پرونده /etc/apt/apt.conf.d/50unattended-upgrades تغییر دهید .

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

با

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

برای حذف خودکار بسته های قدیمی ، از جمله هسته.

همچنین خط را حذف یا نظر دهید

 "^linux-image.*"; 
 

در بخش "NeverAutoRemove" پرونده /etc/apt/apt.conf.d/01autoremove.


29



سریعترین / ساده ترین روش (قابل اجرا حداقل از تاریخ 12.04) که ممکن است در حال حاضر همراه با اوبونتو باشد apt-get . اگر می خواهید تمام نسخه های قدیمی هسته که در حال استفاده نیستند حذف کنید (به جز نسخه قبلی که در حال استفاده نیستید) این کار را انجام دهید تا این اطمینان حاصل شود که اگر نسخه هسته فعلی به نوعی از کار بیفتد ، راهی برای پیشبرد شما وجود دارد. بازگشت به حالت قبلی) موارد زیر را انجام دهید:

 sudo apt-get autoclean
 

این پرونده های قدیمی را حذف می کند (از جمله نسخه های هسته) که ممکن است داشته باشید. توجه داشته باشید که اگر نسخه های قدیمی زیادی دارید ، مدتی طول خواهد کشید تا مطمئن شوید که حذف نسخه هسته هیچ مشکلی ندارد. برای من حذف 12 نسخه آخر هسته حدود 2 دقیقه طول کشید. همچنین می توانید موارد زیر را انجام دهید:

 sudo apt-get clean
 

که همه چیزهای بارگیری و ذخیره شده در پوشه حافظه نهان را از بین می برد. آخر اینکه:

 sudo apt-get autoremove
 

که می تواند هر بسته استفاده نشده را بررسی کند و در صورت لزوم آنها را حذف کند. این عالی است برای آن دسته از کتابخانه ها و بسته های وابستگی که دیگر نیازی به نصب هیچ برنامه ای نیست.


27



10.04 روش GUI

Computer Janitor می تواند هسته های قدیمی را تمیز کند و من معتقدم که به طور پیش فرض در اوبونتو نصب شده است (اما نه کوبونتو).

GRUB 1 ، اگر از آن استفاده می کنید ، گزینه ای را /boot/grub/menu.lst برای مشخص کردن حداکثر تعداد هسته های موجود در آن وجود دارد. GRUB 2 ، تا آنجا که من می توانم بگویم ، چنین نمی کند.


25



برای تشخیص اینکه چه هسته و هدر نصب شده است ، استفاده کنید

 dpkg -l | grep linux-image

dpkg -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 purge
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The 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-generic
Found initrd image: /boot/initrd.img-4.15.0-36-generic
Found linux image: /boot/vmlinuz-4.15.0-34-generic
Found initrd image: /boot/initrd.img-4.15.0-34-generic
Adding boot menu entry for EFI firmware configuration
done
Removing 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-generic
I: /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-generic
Found initrd image: /boot/initrd.img-4.15.0-36-generic
Adding boot menu entry for EFI firmware configuration
done
Removing 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 removed
Purging 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 -r
4.15.0-36-generic
 

25



برای از بین بردن هسته های قدیمی تر تصویر لینوکس ، ابتدا هسته ای را که می خواهید نگهداری کنید بوت کنید.

همچنین می توانید نسخه هسته را با استفاده از دستور بررسی uname -r کنید تا اشتباه آن را به اشتباه مرتفع نکنید.

اکنون به مدیر بسته synaptic بروید linux-image و نسخه های قدیمی تر را بجز نسخه نشان داده شده توسط دستور بالا جستجو و حذف کنید. معمولاً ترجیح می دهم با جدیدترین ها بروم.

اکنون هنگام راه اندازی مجدد ، منوی تمیز کننده تری خواهید دید.


16



می توانید ubuntu-tweak را نصب کنید و سپس به برنامه ها بروید -> ابزار سیستم -> ubuntu tweak و


توضیحات تصویر را اینجا وارد کنید

روی بسته های تمیز کننده و مغز تمیز کلیک کنید. این هسته هسته مورد استفاده را نشان نمی دهد ، بنابراین شما همیشه در امان خواهید بود.


14



من شخصا دوست دارم با استفاده از Synaptic . این باعث می شود احساس امنیت بیشتری نسبت به اتفاقات داشته باشم. تنها برنامه ای که من استفاده کرده ام که گزینه ای برای حذف هسته های قدیمی دارد ، Ubuntu Tweak است .

نحوه حذف هسته هایی که استفاده نمی کنید:

  • UbuntuTweak را باز کنید
  • در صفحه سمت چپ روی "بسته تمیز کننده" در زیر "برنامه ها" کلیک کنید
  • در سمت راست "نمای تمیز کردن" مطبوعات "هسته های تمیز" را فشار دهید
  • همه هسته ها را انتخاب کنید - فکر می کنم یکی از موارد استفاده شده در لیست نیست بلکه فقط در صورت بررسی عملکرد uname -a در یک ترمینال است

8



linux-image-... با استفاده از Synaptic می توانید هسته های قدیمی ( بسته ها) را حذف کنید ، و آنها را از منوی بوت حذف می کند. مواظب باشید که هسته در حال اجرا از بین نرود (نسخه آن را با آن بررسی کنید uname -r ).

بخاطر داشته باشید که اگر خطایی پیش آمد ، داشتن یک یا دو نسخه قدیمی می تواند به شما در رفع عیب یابی کمک کند.

از طرف دیگر ، می توانید مدخل ها را به صورت دستی ویرایش / حذف کنید ( gksu gedit /boot/grub/grub.cfg ) ، اما هنگامی که به هسته جدیدتر می شوید ، آنها دوباره تولید می شوند. اگر به فکر حذف recovery mode گزینه ها هستید - این کار را نکنید. در صورت شکستن چیزی که مانع از بوت شدن می شود ، آنها می توانند مفید باشند.


به این صفحه مراجعه کنید .


6



این یک راه حل خط فرمان خالص است.

ابتدا لیستی از تمام نسخه های هسته نصب شده به جز هسته در حال اجرا را ایجاد کنید:

 dpkg-query -W -f='${Package}\n' |
  grep -f <(ls -1 /boot/vmlinuz* | cut -d- -f2,3 |
    grep -v $(uname -r | cut -d- -f1,2))
 

همچنین یک لیست از همه نسخه های هسته نصب شده به جز دو مورد آخر ایجاد کنید:

 dpkg-query -W -f='${Package}\n' |
  grep -f <(ls -1 /boot/vmlinuz* | cut -d- -f2,3 |
    sort -V | head -n -2)
 

لیست را بررسی کنید. اطمینان حاصل کنید که نسخه های هسته ای که می خواهید نگه دارید بخشی از این لیست نیستند. uname -r برای دیدن نسخه هسته فعلی در حال اجرا از این دستور استفاده کنید.

اگر از نتایج رضایت دارید می توانید از آنها apt-get برای حذف بسته ها استفاده کنید.

ابتدا یک مرحله خشک (با استفاده از اولین ژنراتور به عنوان مثال):

 sudo apt-get --dry-run purge $(
  dpkg-query -W -f='${Package}\n' |
    grep -f <(ls -1 /boot/vmlinuz* | cut -d- -f2,3 |
      grep -v $(uname -r | cut -d- -f1,2)))
 

سپس یک اجرای واقعی:

 sudo apt-get purge $(
  dpkg-query -W -f='${Package}\n' |
    grep -f <(ls -1 /boot/vmlinuz* | cut -d- -f2,3 |
      grep -v $(uname -r | cut -d- -f1,2)))
 

اگر می خواهید فرآیند را خودکار کنید ، --yes پارامتر را اضافه کنید :

 sudo apt-get --yes purge $(
  ...)
 

4



مزیت این پاسخ بومی Ubuntu Bash بدون نصب برنامه های شخص ثالث است. کاربران هسته های سفارشی که استفاده نکرده اند apt و یا dpkg می توانند از این اسکریپت bash متناسب با نیاز خود تغییر دهند. این پاسخ مبتنی بر ( چگونه بطور انتخابی هسته های قدیمی را همه یكباره تمیز كنیم ) است.

راه حل مبتنی بر زینت

Zenity برای پردازش لیست و انتخاب موارد با دکمه های رادیویی ، رابط کاربری GUI خوبی را به ترمینال ارائه می دهد :


هسته های rm 1

همانطور که عنوان نشان می دهد هسته فعلی شما با استفاده از آن را نمی توان حذف کرد و در لیست گنجانده نشده است. اندازه گزارش شده چقدر در /boot فهرست ذخیره می شود . تعداد بیشتری در دیسک شما ذخیره می شود زیرا باینری های هسته در مناطق دیگر نیز ساکن هستند. 27 ژوئیه 2017 توجه: فهرست ها /usr/src/*kernel_version* و /lib/modules/*kernel_version* هم اکنون نیز گنجانده شده اند.

تاریخ تغییر با استفاده از کشف stat فرمان. در سیستم من ، این تاریخ هر بار که هسته با استفاده از این "بوت " می شود "لمس می شود" ( چگونه می فهمید آخرین نسخه هسته برای آخرین بار استفاده شده است؟ ) اسکریپت راه اندازی مجدد cron . با این حال ، در سیستم شما تاریخ تاریخ انتشار هسته خواهد بود ، نه آخرین باری که شما آن را بوت کردید.

apt-get purge به شما امکان سقط جنین را می دهد

به شما فرصت نهایی داده می شود تا همه چیزهایی را که پاک می شود مشاهده کنید و فضای کل دیسک (تا حدودی گمراه کننده) بازیابی شده را مشاهده کنید:

 The following packages will be REMOVED:
  linux-headers-4.7.1-040701* linux-headers-4.7.1-040701-generic*
  linux-headers-4.7.2-040702* linux-headers-4.7.2-040702-generic*
  linux-headers-4.7.3-040703* linux-headers-4.7.3-040703-generic*
  linux-headers-4.8.1-040801* linux-headers-4.8.1-040801-generic*
  linux-headers-4.8.10-040810* linux-headers-4.8.10-040810-generic*
  linux-headers-4.8.11-040811* linux-headers-4.8.11-040811-generic*
  linux-headers-4.8.4-040804* linux-headers-4.8.4-040804-generic*
  linux-headers-4.8.5-040805* linux-headers-4.8.5-040805-generic*
  linux-image-4.7.1-040701-generic* linux-image-4.7.2-040702-generic*
  linux-image-4.7.3-040703-generic* linux-image-4.8.1-040801-generic*
  linux-image-4.8.10-040810-generic* linux-image-4.8.11-040811-generic*
  linux-image-4.8.4-040804-generic* linux-image-4.8.5-040805-generic*
0 upgraded, 0 newly installed, 24 to remove and 2 not upgraded.
After this operation, 2,330 MB disk space will be freed.
Do you want to continue? [Y/n] 
 

کد

این کد را کپی کنید به یک فایل اجرایی به نام rm-kernels در /usr/local/bin :

 #!/bin/bash

# NAME: rm-kernels
# PATH: /usr/local/bin
# DESC: Provide zenity item list of kernels to remove

# DATE: Mar 10, 2017. Modified Jul 28, 2017.

# NOTE: Will not delete current kernel.

#       With 10 kernels on an SSD, empty cache from sudo prompt (#) using:
#       # free && sync && echo 3 > /proc/sys/vm/drop_caches && free
#       First time for `du` 34 seconds.
#       Second time for `du` 1 second.

# PARM: If any parm 1 passed use REAL kernel size, else use estimated size.
#       By default `du` is not used and estimated size is displayed.

# Must be running as sudo
if [[ $(id -u) != 0 ]]; then
    zenity --error --text "root access required. Use: sudo rm-kernels"
    exit 99
fi

OLDIFS="$IFS"
IFS="|"
choices=()

current_version=$(uname -r)

for f in /boot/vmlinuz*
do
    if [[ $f == *"$current_version"* ]]; then continue; fi # skip current version
    [[ $f =~ vmlinuz-(.*) ]]
    v=${BASH_REMATCH[1]}        # example: 4.9.21-040921-generic
    v_main="${v%-*}"            # example: 4.9.21-040921

    # Kernel size in /boot/*4.9.21-040921-generic*
    s=$(du -ch /boot/*-$v* | awk '/total/{print $1}')

    if [[ $# -ne 0 ]] ; then    # Was a parameter passed?
        if [[ -d "/usr/src/linux-headers-"$v_main ]] ; then
             # Kernel headers size in /usr/src/*4.9.21-040921*
             s2=$(du -ch --max-depth=1 /usr/src/*-$v_main* | awk '/total/{print $1}')
        else
             s2="0M"            # Linux Headers are not installed
        fi
        # Kernel image size in /lib/modules/4.9.21-040921-generic*
        s3=$(du -ch --max-depth=1 /lib/modules/$v* | awk '/total/{print $1}')
    else
        # Estimate sizof of optional headers at 125MB and size of image at 220MB
        if [[ -d "/usr/src/linux-headers-"$v_main ]] ; then
             s2="125M"
        else
             s2="0M"            # Linux Headers are not installed
        fi
        s3="220M"
    fi

    # Strip out "M" provided by human readable option of du and add 3 sizes together
    s=$(( ${s//[^0-9]*} + ${s2//[^0-9]*} + ${s3//[^0-9]*} ))
    t=$(( t + s ))
    s=$s" MB"
    d=$(date --date $(stat -c %y $f) '+%b %d %Y') # Last modified date for display
    choices=("${choices[@]}" false "$v" "$d" "$s")
done

# adjust width & height below for your screen 640x480 default for 1920x1080 HD screen
# also adjust font="14" below if blue text is too small or too large

choices=(`zenity \
        --title "rm-kernels - Total: $t MB excluding: $current_version" \
        --list \
        --separator="$IFS" \
        --checklist --multiple \
        --text '<span foreground="blue" font="14">Check box next to kernel(s) to remove</span>' \
        --width=640 \
        --height=480 \
        --column "Select" \
        --column "Kernel Version Number" \
        --column "Modified Date" \
        --column " Size " \
        "${choices[@]}"`)
IFS="$OLDIFS"

i=0
list=""
for choice in "${choices[@]}" ; do
    if [ "$i" -gt 0 ]; then list="$list- "; fi # append "-" from last loop
    ((i++))

    short_choice=$(echo $choice | cut -f1-2 -d"-")
    header_count=$(find /usr/src/linux-headers-$short_choice* -maxdepth 0 -type d | wc -l)

    # If -lowlatency and -generic are purged at same time the _all header directory
    # remains on disk for specific version with no -generic or -lowlatency below.
    if [[ $header_count -lt 3 ]]; then
        # Remove all w.x.y-zzz headers
        list="$list""linux-image-$choice- linux-headers-$short_choice"
    else
        # Remove w.x.y-zzz-flavour header only, ie -generic or -lowlatency
        list="$list""linux-image-$choice- linux-headers-$choice" 
    fi

done

if [ "$i" -gt 0 ] ; then
     apt-get purge $list
fi
 

توجه: برای ایجاد پرونده به استفاده مجوز نیاز دارید:

 gksu gedit /usr/local/bin/rm-kernels
 

برای استفاده اجرایی پرونده:

 sudo chmod +x /usr/local/bin/rm-kernels
 

نسخه سرور

rm-kernels-server نسخه سرور است که به طور انتخابی هسته ها را یکجا حذف می کند. به جای کادر محاوره ای GUI (گرافیکی) ، از کادر محاوره ای مبتنی بر متن برای انتخاب هسته ها برای پاکسازی استفاده می شود.

  • قبل از اجرای اسکریپت باید عملکرد گفتگو را با استفاده از:

    sudo apt install dialog

Dialog در نصب پیش فرض اوبونتو دسکتاپ است اما در سرور اوبونتو نیست.

صفحه نمایش نمونه


rm-kernels-server 1

rm-kernels-server کد bash

 #!/bin/bash

# NAME: rm-kernels-server
# PATH: /usr/local/bin
# DESC: Provide dialog checklist of kernels to remove
#       Non-GUI, text based interface for server distro's.

# DATE: Mar 10, 2017. Modified Jul 28, 2017.

# NOTE: Will not delete current kernel.

#       With 10 kernels on an SSD, empty cache from sudo prompt (#) using:
#       # free && sync && echo 3 > /proc/sys/vm/drop_caches && free
#       First time for `du` 34 seconds.
#       Second time for `du` 1 second.

# PARM: If any parm 1 passed use REAL kernel size, else use estimated size.
#       By default `du` is not used and estimated size is displayed.

# Must be running as sudo
if [[ $(id -u) != 0 ]]; then
    echo "root access required. Use: sudo rm-kernels-server"
    exit 99
fi

# Must have the dialog package. On Servers, not installed by default
command -v dialog >/dev/null 2>&1 || { echo >&2 "dialog package required but it is not installed.  Aborting."; exit 99; }

OLDIFS="$IFS"
IFS="|"
item_list=() # Deviate from rm-kernels here.

current_version=$(uname -r)
i=0
for f in /boot/vmlinuz*
do
    if [[ $f == *"$current_version"* ]]; then continue; fi # skip current version
    [[ $f =~ vmlinuz-(.*) ]]
    ((i++)) # Item List
    v=${BASH_REMATCH[1]}        # example: 4.9.21-040921-generic
    v_main="${v%-*}"            # example: 4.9.21-040921

    # Kernel size in /boot/*4.9.21-040921-generic*
    s=$(du -ch /boot/*-$v* | awk '/total/{print $1}')

    if [[ $# -ne 0 ]] ; then    # Was a parameter passed?
        if [[ -d "/usr/src/linux-headers-"$v_main ]] ; then
             # Kernel headers size in /usr/src/*4.9.21-040921*
             s2=$(du -ch --max-depth=1 /usr/src/*-$v_main* | awk '/total/{print $1}')
        else
             s2="0M"            # Linux Headers are not installed
        fi
        # Kernel image size in /lib/modules/4.9.21-040921-generic*
        s3=$(du -ch --max-depth=1 /lib/modules/$v* | awk '/total/{print $1}')
    else
        # Estimate sizof of optional headers at 125MB and size of image at 220MB
        if [[ -d "/usr/src/linux-headers-"$v_main ]] ; then
             s2="125M"
        else
             s2="0M"            # Linux Headers are not installed
        fi
        s3="220M"
    fi

    # Strip out "M" provided by human readable option of du and add 3 sizes together
    s=$(( ${s//[^0-9]*} + ${s2//[^0-9]*} + ${s3//[^0-9]*} ))
    t=$(( t + s ))
    s=$s" MB"
    d=$(date --date $(stat -c %y $f) '+%b %d %Y') # Last modified date for display
    item_list=("${item_list[@]}" "$i" "$v ! $d ! $s" off)
done

cmd=(dialog --backtitle "rm-kernels-server - Total: $t MB excluding: $current_version" \
    --title "Use space bar to toggle kernel(s) to remove" \
    --column-separator "!" \
    --separate-output \
    --ascii-lines \
    --checklist "         Kernel Version --------- Modified Date  Size" 20 60 15)

selections=$("${cmd[@]}" "${item_list[@]}" 2>&1 >/dev/tty)

IFS=$OLDIFS

if [ $? -ne 0 ] ; then
    echo cancel selected
    exit 1
fi

i=0
choices=()

for select in $selections ; do
    ((i++))
    j=$(( 1 + ($select - 1) * 3 ))
    choices[i]=$(echo ${item_list[j]} | cut -f1 -d"!")
done

i=0
list=""
for choice in "${choices[@]}" ; do
    if [ "$i" -gt 0 ]; then list="$list- "; fi # append "-" from last loop
    ((i++))

    short_choice=$(echo $choice | cut -f1-2 -d"-")
    header_count=$(find /usr/src/linux-headers-$short_choice* -maxdepth 0 -type d | wc -l)

    # If -lowlatency and -generic are purged at same time the _all header directory
    # remains on disk for specific version with no -generic or -lowlatency below.
    if [[ $header_count -lt 3 ]]; then
        # Remove all w.x.y-zzz headers
        list="$list""linux-image-$choice- linux-headers-$short_choice"
    else
        # Remove w.x.y-zzz-flavour header only, ie -generic or -lowlatency
        list="$list""linux-image-$choice- linux-headers-$choice" 
    fi

done

if [ "$i" -gt 0 ] ; then
    apt-get purge $list
fi
 

توجه: در فراخوان به dialog بخشنامه --ascii-lines منتقل شده است تا مجموعه کاراکترهای کشیده شده خط (که ssh دوست ندارد) با "+ ----- +" برای جعبه های نقاشی جایگزین شود . اگر این ظاهر را دوست ندارید می توانید --no-lines به هیچ وجه از بخشنامه استفاده کنید.


به روزرسانی های 28 ژوئیه 2017

اندازه محاسبه شده هر هسته از /boot/*kernel_version* 5 پرونده در مجموع 50 پوند مگابایت گرفته شد. فرمول تغییر یافته است تا پرونده ها را در /usr/src/*kernel_version* و وارد کنید /lib/modules/*kernel_version* . اندازه محاسبه شده برای هر هسته اکنون 400 پوند مگابایت است. کد بالا را برای rm-kernels و rm-kernels-server به روز شده است. با این حال ، صفحه های نمونه بالا هنوز این تغییرات را منعکس نمی کنند.

پیش فرض تخمین اندازه پرونده ها برای هدر های لینوکس در 125 مگابایت و تصویر linux در 220 مگابایت است زیرا du می تواند بسیار دردناک باشد مگر اینکه پرونده ها در حافظه نهان باشند. برای بدست آوردن اندازه واقعی با استفاده از du عبور هر پارامتر به اسکریپت.

تعداد کل اندازه های هسته (به استثنای نسخه فعلی در حال اجرا که نمی تواند حذف شود) اکنون در نوار عنوان نشان داده شده است.

کادر گفتگوی مورد استفاده برای نمایش آخرین تاریخ دسترسی کرنل . این تاریخ می تواند برای همه هسته ها در حین تهیه نسخه پشتیبان یا عملیات مشابه رونویسی شود. کادر گفتگو اکنون به جای آن تاریخ اصلاح شده را نشان می دهد .


4



یک راه آسان برای خلاص شدن از شر تقریباً تمام بسته های منسوخ ، بسته هایی که دیگر در هیچ لیست بسته ها وجود ندارند ، همراه با هسته های منسوخ ، انجام یکی از موارد زیر است:

 dpkg --purge $(aptitude search ?obsolete)
 

با این حال ، این بسته هایی را که هنوز توسط بسته های دیگر توصیه می شود ، از دست می دهند و استدلال -R / - بدون توصیه ، این مشکل را برطرف نمی کند.

پس از تغییر حالت مرتب سازی بر اساس "o" ، همه بسته های منسوخ از جمله مواردی که از دست می دهند را نشان می دهد ، اما بعضی از افراد دوست ندارند از آن استفاده کنند.


2



پاسخ پذیرفته شده با استفاده از sed برای حذف هسته های قدیمی به طور دائمی دارای نقص هایی است ، در صورتی که کسی پس از به روزرسانی هسته ، رایانه را مجدداً راه اندازی نکرده باشد ، دستور هسته جدیدتر را نیز حذف می کند.

در اینجا یک راه حل جایگزین وجود دارد که تمام موقعیت ها را برای حذف هسته های قدیمی تر در نظر می گیرد:

 #!/bin/bash
kernels=( $(grep -Po "^linux-image-[^-]+-[^-]+-generic\b" < <(dpkg --get-selections)) )
cur_rel=$(grep -Po ".*(?=-[a-z]*$)" < <(uname -r))

for kernel in "${kernels[@]}"; do
    ker_rel=$(grep -Po "[0-9].*(?=-[a-z]*)" <<< "$kernel")
    dpkg --compare-versions "$ker_rel" gt "$cur_rel" && echo "Please Restart your computer first" && break
    dpkg --compare-versions "$ker_rel" lt "$cur_rel" && sudo apt-get remove "$kernel"
done
 

اگر نسخه دیگری جدیدتر از نسخه فعلی داشته باشید ، این هشدار را برای شروع مجدد کامپیوتر شما به شما هشدار می دهد. همچنین توجه داشته باشید که هسته های قدیمی به دلیل خوبی حفظ می شوند و این بدان معناست که اگر هسته هسته فعلی خود را به نوعی خراب کرده و سیستم خود را ناپایدار سازید ، باید بتوانید به هر هسته قدیمی دیگری بوت شوید.


2



برای به روزرسانی و حذف هسته های قدیمی می توانید از ukuu - همه GUI استفاده کنید. برای من کار می کند!

فقط بخاطر بسپار که هسته 2 در حال اجرا را ترک کرده و بدیهی است.

همچنین می توانید ukuu را تنظیم کنید تا فقط نسخه های اصلی ، حتی هسته های RC را نشان دهد ، انتشار نسخه های پنهان.


ukuu

می توانید ukuu را در Synaptic پیدا کنید ، یا دستورالعمل ها در اینجا آمده است:

دستورالعمل نصب OMG! Ubuntu ukuu


2



ailurus ویژگی حذف هسته های قدیمی و همچنین تنظیمات استفاده نشده را دارد. من شخصاً آن را به صورت دستی از سیناپسی جدا می کنم. می توانید ailurus را از getdeb و همچنین ppa نصب کنید


1



من یک اسکریپت برای این کار دارم که نیازی به تجزیه رشته خیلی فانتزی ندارد.

برای انتشار فضا ، هدرها و تصاویر را بجز موارد فعلی حذف کنید

 sudo apt-get autoremove --purge 'linux-headers-[0-9].*' linux-headers-$(uname -r)+ linux-headers-$(uname -r | cut -d- -f1,2)+ 'linux-image-[0-9].*' linux-image-$(uname -r)+
 

1



براساس پاسخ قبلی دیوید کمپ ، فیلمنامه زیر تمام هدرها و تصاویر را به جز 2 نسخه آخر پاک می کند .

 #!/bin/sh
# This script assumes that the installed linux-image and linux-headers packages
# share the same versions (i.e. if a linux-image version number is installed,
# the corresponding linux-headers package will also be installed, and vice
# versa.)

SECONDTOLASTVER=$(dpkg --list | grep linux-image | awk '{ print $2 }' | sort -r -n | sed '/^[^0-9]\+$/d' | sed 's/^.*-\([0-9\.]\+-[0-9]\+\).*/\1/' | uniq | sed -n 2p)

# get a list of package names matching the argument passed to the function, and
# return only those package names which should be removed
get_pkgs_to_remove_matching () {
    if [ -n "$SECONDTOLASTVER" ]; then
        echo $(dpkg --list | grep $1 | awk '{ print $2 }' | sort | sed -n '/'"$SECONDTOLASTVER"'/q;p')
    fi
}

echo $(get_pkgs_to_remove_matching linux-image) $(get_pkgs_to_remove_matching linux-headers) | xargs sudo apt-get purge
 

(استفاده apt-get -y برای حذف بدون سوال)


1



در اینجا خلاصه ای از کارهایی که انجام داده ام است ، با توجه به اینکه من متخصص لینوکس نیستم ، مطمئن باشید که می دانید چه کاری انجام می دهید و از پرونده هایی که اصلاح می کنید پشتیبان تهیه کرده اید.

 gedit /boot/grub/grub.cfg
 

سپس نوشته هایی را که می خواهید نگه دارید پیدا کنید ، آنها را برجسته و کپی می کنیم

 cd /etc/grub.d
ls
 

لیستی از پرونده هایی مانند 10_linux و 30_os-prober را مشاهده خواهید کرد

 sudo chmod -x 10_linux
 

این متوقف خواهد شد خودکار اضافه کردن همه ورودی های linux به منوی بوت grub.

 gksudo gedit 40_custom
 

پرونده منوی بوت سفارشی را باز کنید ، سپس به grub.cfg (که هنوز باید در gedit باز باشد) بازگردید ، و نوشته هایی را که می خواهید نگه دارید کپی کنید ... مانند

 menuentry "My Default Karmic" {
  set root=(hd0,1)
  search --no-floppy --fs-uuid --set cb201140-52f8-4449-9a95-749b27b58ce8
  linux /boot/vmlinuz-2.6.31-11-generic root=UUID=cb201140-52f8-4449-9a95-749b27b58ce8 ro quiet splash
  initrd /boot/initrd.img-2.6.31-11-generic
}
 

آنها را درون چسباندن 40_custom ، و سپس آن را ذخیره کنید.

 sudo chmod 755 40_custom
 

آن را قابل اجرا می کند ، سپس در نهایت grub را به روز می کنیم که پرونده grub.cfg را تغییر می دهد:

 sudo update-grub
 

اکنون ، توجه داشته باشید ، اگر هسته یا سیستم عامل خود را به روز می کنید ، احتمالاً منوی بوت شما به روز نمی شود ... شما باید این کار را بصورت دستی انجام دهید. اما انجام این روش به شما امکان می دهد تا منوی بوت را کمی بیشتر سفارشی کنید ، مانند حذف نسخه هسته و فقط نام اوبونتو را بگذارید ... یعنی اوبونتو لوسید 10.04 و غیره ...

امیدوارم کسی این موضوع را مفید پیدا کند ، چون مدت زمان زیادی طول کشید تا متوجه شود ... این راه حل را در جایی ندیده است ...


0



مدیر بسته سیناپسی را نصب کنید و به تب فیلترها بروید (فکر می کنم فیلترها ، اگر همه 5 را امتحان نکنید) و "محلی" را انتخاب کنید. با این کار بسته های یتیم شده روی سیستم خود مانند هسته را به شما نشان می دهد. بعد از حذف آنها ، اجرا کنید update-grub . این فرمان لیست گزینه های بوت برای grub را به روز می کند.

در صورت عدم موفقیت ، همیشه می توانید امتحان کنید apt-get remove linux-image-version-generic .


0



برای اینکه کمی کنترل بیشتری بر روی آن نسخه ها داشته باشید ، صریحاً مواردی را که می خواهید حذف کنید انتخاب کنید. برای مثال اگر می خواهید نسخه های 3.2.0 هسته را حذف کنید. [49-53] ، از یک for حلقه ساده استفاده کنید :

 for k in 49 51 52 53 ; do aptitude remove --purge linux-image-3.2.0-${k}-generic ; done
 

لیست نسخه های هسته را متناسب با آن تنظیم کنید.


0



این را امتحان کن. آن را به صورت ریشه اجرا کنید.

این اسکریپت را به عنوان بگویید ، ذخیره کنید. /keep-n-kernels.sh

به عنوان یک استدلال خط فرمان ، تعداد جدیدترین هسته هایی را که می خواهید حفظ کنید ، تصویب کنید.

    
#! / bin / bash

# pass n به عنوان آرگومان خط فرمان ، و تمام نصب شده را پیدا می کند
# هسته را نگه داشته و فقط جدیدترین آنها را نگه دارید => همه قدیمی ها را حذف کنید

# dpkg -l 'linux- *' | sed '/ ^ ii /! d؛ /' "$ (uname -r | sed" s /*(.**)-*(^^ 0-9] \ + \) / \ 1 / ")" "/ d؛ s / ^ [^] * [^] * \ ([^] * \). * / \ 1 /؛ / [0-9] /! d '
# این دستور لیست کلیه بسته های EXCEPT را برای آخرین هسته ارائه می دهد.
# منبع: https://help.ubuntu.com/community/Lubuntu/Documentation/RemoveOldKernels

n = 1 دلار

# نسخه های هسته نصب شده را بیابید:
# dpkg-query -W -f = '$ {نسخه} \ n' 'linux-image- *' | سلام | مرتب سازی بر اساس
# شماره نسخه ها را می دهد ، در هر خط یک
# dpkg-query -W -f = '$ {نسخه} \ n' 'linux-image- *' | سلام | sed 's /*...$// g' | grep -v '\ ... $' | مرتب سازی
# فقط مواردی را که در تصویر linux ظاهر می شوند ، می دهد

# پسوند ، به عنوان مثال-generic-pae
# نوع دانه ای که شما به آن بوت می شوید
پسوند = $ (uname -r | sed 's: ^ [0-9] \. [0-9] \. [0-9] \ - [0-9] \ {2 \} :: g')

دستور = "پاکسازی مناسب"

برای نسخه در $ (dpkg-query -W -f = '$ {نسخه \ n' 'linux-image- *' | grep. | sed 's /*...^// g' | grep -v ' \ ... $ '| مرتب سازی -u | سر -n - $ {n})
انجام دادن
    command = $ {command "^ linux-image - $ {نسخه} $ {پسوند}"
انجام شده

فرمان $

استفاده از نمونه:

# ./keep-n-kernels.sh 4 # دستور apt-get را اجرا کنید تا همه 4 هسته اخیر حذف شوند

اگر می خواهید [و در معرض خطر خود] ، می توانید یک -y (یا یک پرچم نیرو) را به دستور apt-get اضافه کنید و آن را غیر تعاملی کنید.


0



من از دسک تاپ KDE استفاده می کنم و ساده ترین گزینه ای که پیدا کردم استفاده از برنامه kde-config-grub2 است که در اینجا پیشنهاد شد: https://www.kubuntuforums.net/showthread.php؟58075-remove-old-linux-versions (که قبلاً برای تنظیم تصویر پس زمینه ، گزینه پیش فرض بوت و موارد مشابه آن نصب کرده بودم). در کنار کادر کشویی که می توانید ورودی پیش فرض را انتخاب کنید ، دکمه "حذف Old Entries" وجود دارد. با کلیک بر روی این دکمه لیستی از همه هسته های نصب شده به شما ارائه می دهد و می توانید کدام یک از آنها را حذف کنید. وقتی تغییرات را اعمال می کنید از dpkg استفاده می کند تا در واقع آنها را از سیستم و همچنین منوی GRUB حذف کنید.


0



فقط برای ایجاد صدا ، می توانید مسئله را صادر کنید

apt-get remove linux-{image,headers}-x.y.z-{1,2,...,n}

به عنوان ریشه ، و کار انجام می شود.


0



اگر برای کنترل ماشین ها از Ansible استفاده می کنید ، ممکن است این لیست پخش مفید باشد.

 ---
 - hosts: all
   become: yes
   tasks:
    - name: "Run apt-get autoremove"
      apt: 
        name: linux-image-generic
        autoremove: yes
        state: present 
        update_cache: yes
        cache_valid_time: 3600
 

0



انتشارات مرتبط


امن ترین راه برای تمیز کردن / پارتیشن بندی بوت چیست؟

پارتیشن من / بوت 100٪ است و اکنون نمی توانم آن را ارتقا دهم. برای ایجاد فضای اتاق ، هسته های قدیمی قابل حذف نیست

چگونه نسخه PHP را به آخرین نسخه منتشر شده با ثبات ارتقا دهم؟

چگونه می توانم تاریخ را در کنار زمان در پنل با gnome-shell نشان دهم؟

روش مناسب برای تمیز کردن سیستم (و Bleachbit بی خطر است) در اوبونتو 14.04 چیست؟

چگونه می توان هسته های قدیمی را حذف و نصب های جدید را هنگام پر شدن / boot نصب کرد؟

چگونه می توان نسخه های قدیمی هسته را پاک کردم تا منوی بوت را تمیز کنم؟

چگونه می توان نسخه های قدیمی هسته را پاک کردم تا منوی بوت را تمیز کنم؟

آیا این دستور برای حذف هسته های قدیمی برای استفاده مناسب است؟

چگونه می توان نسخه های قدیمی هسته را پاک کردم تا منوی بوت را تمیز کنم؟

[grub2] سوال برچسب


چگونه می توانم با استفاده از ترمینال ، محتوای پوشه را در پوشه دیگری در یک پوشه دیگر کپی کنید؟

چگونه فضای بیشتری را در / boot ایجاد کنم؟

چگونه با استفاده از ntp یک بروزرسانی ساعت را مجبور کنیم؟

نحوه بررسی عملکرد دیسک سخت

چگونه می توانم توافق نامه Microsoft EULA را برای نصب ttf-mscorefonts-installer بپذیرم؟

آیا می توانم پرتابگر Unity را جابجا کنم؟

چگونه راه اندازی مجدد X Window Server از خط فرمان؟

چگونه می توانم پرونده SHA1 یک پرونده را بررسی کنم؟

چگونه می توان نسخه مختلف PHP (ارتقا یا پایین آمدن) PHP را در نسخه Ubuntu پشتیبانی هنوز نصب کرد؟