در سیستمهایی که با محدودیت حجم رو به رو هستند یا از LVM استفاده شده یا اینکه رمزگذاری شدهاند، برای جلوگیری از پر شدن پارتیشن /boot معمولاً نیاز دارید که هسته های قدیمی سیستم عامل را پاک کنید.
حذف هسته های قدیمی کار سادهای است. این کار را هم به صورت دستی میتوان انجام داد و هم اینکه سیستم را طوری تنظیم کرد که این کار را به طور اتوماتیک انجام دهد.
برای شروع ترمینال را از لانچر یا با کلید های Ctrl + Alt +T باز و مراحل زیر را دنبال کنید:
حذف هسته هایی که خودکار نصب شده اند:
۱- برای حذف هسته هایی که هنگام به روزرسانی سیستم عامل خودکار نصب شدهاند، دستور زیر را اجرا کنید:
sudo apt autoremove --purge
این دستور از شما خواهد خواست تا پسورد خود را وارد کنید تا هسته های قدیمی و هر پکیجی که دیگر در سیستم مورد نیاز نیست را حذف کند.
۲- برای فعال سازی حذف خودکار هسته های قدیمی مراحل زیر را دنبال کنید:
اگر پکیج منیجر سیستم عامل دچار تداخل شده باشد، فعال کردن حذف خودکار هسته ممکن است باعث بروز مشکلاتی شود: لینک
دستور زیر را برای فعال سازی به روزرسانی خودکار سیستم عامل اجرا کنید:
sudo dpkg-reconfigure unattended-upgrade
فایل کانفیگ پکیج منیجر را با دستور زیر باز کنید (ابتدا gksu را با دستور sudo apt install gksu نصب کنید) :
gksudo gedit /etc/apt/apt.conf.d/50unattended-upgrades
بعد از باز کردن فایل خط زیر را با حذف دو اسلش ابتدایی خط از حالت توضیح در آورده و مقدار false آن را به true تبدیل کنید:
//Unattended-Upgrade::Remove-Unused-Dependencies "false";
پس در نهایت چنین چیزی خواهیم داشت:
حذف هسته های قدیمی به صورت دستی:
اگر هسته ی خود را از Kernel PPA نصب کردهاید یا آن را با پچ ها آپدیت کرده اید، اسکریپت purge-old-kernels میتواند بهترین و سادهترین روش برای حذف هسته ی قدیمی باشد
۱- این اسکریپت در پکیجی به نام byobu نگهداری میشود، پس اول باید آن را نصب کنیم:
sudo apt install byobu
۲- سپس برای حذف هسته ی قدیمی اسکریپت را اجرا می کنیم:
sudo purge-old-kernels
حذف هسته های قدیمی با DPKG
اگر پارتیشن /boot در هنگام آپگرید یا نصب پکیج ها پر شده، یا اینکه apt (اسکریپت بالا از apt استفاده می کند) به علت وجود ناسازگاری در وابستگیها نمیتواند پکیجی را حذف کند، میتوانید به صورت دستی پکیج ها را پیدا و با DPKG حذف کنید:
۱- برای اینکه از ورژن هسته ی فعلی خود آگاه شوید دستور زیر را اجرا کنید:
uname -r
۲- دستور زیر لیستی شامل کرنل های موجود را می دهد، البته به جز کرنلی که در حال حاضر سیستم با آن بوت شده است.
dpkg -l | tail -n +6 | grep -E 'linux-image-[0-9]+' | grep -Fv $(uname -r)
نمونهای از خروجی:
rc linux-image-4.4.0-15-generic 4.4.0-15.31 amd64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP ii linux-image-4.4.0-18-generic 4.4.0-18.34 amd64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP rc linux-image-4.6.0-040600rc3-generic 4.6.0-040600rc3.201604120934 amd64 Linux kernel image for version 4.6.0 on 64 bit x86 SMP
در خروجی بالا سه نوع وضعیت وجود دارد:
rc: این وضعیت یعنی این مورد حذف شده است
ii: این وضعیت یعنی این ورژن نصب شده و میتواند حذف شود
iU: این مورد را حذف نکنید! معنای آن این است که این مورد نصب نشده ولی در لیست انتظار APT برای نصب قرار دارد.
۳- هسته های قدیمی با وضعیت ii را میتوانید حذف کنید. در مثال بالا ای مورد linux-image-4.4.0-18-generic است:
sudo dpkg --purge linux-image-4.4.0-18-generic
اگر دستور بالا با شکست مواجه شد پکیج های وابسته به آن را که در خروجی قبل دیده میشود را با این دستور حذف کنید:
sudo dpkg --purge PACKAGE
همچنین فایلهای هدر مربوطه را حذف کنید(اگر دستور با شکست مواجه شد نگران نشوید):
sudo dpkg --purge linux-image-4.4.0-18-header linux-image-4.4.0-18
در نهایت ممکن است به علت تغییراتی که در سیستم اعمال کردیم ناسازگاری هایی بین پکیج ها به وجود آمده باشد، دستور زیر را برای رفع ناسازگاری ها اجرا کنید:
sudo apt -f install
از این روش ها برای حذف کرنل در کامپیوترهای تک بردی یا سینگل کامیپوتر ها همانند رزبری پای،بیگل بن و odroid ها نیز میتوانید استفاده نمایید.