گنو/لینوکس

چگونه هسته های قدیمی را در اوبونتو ۱۶٫۰۴ حذف کنیم؟

نوشته شده توسط اروند طباطبایی

در سیستم‌هایی که با محدودیت حجم رو به رو هستند یا از LVM استفاده شده یا اینکه رمزگذاری شده‌اند، برای جلوگیری از پر شدن پارتیشن /boot معمولاً نیاز دارید که هسته های قدیمی سیستم عامل را پاک کنید.

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

برای شروع ترمینال را از لانچر یا با کلید های Ctrl + Alt +T باز و مراحل زیر را دنبال کنید:

حذف هسته هایی که خودکار نصب شده اند:

۱- برای حذف هسته هایی که هنگام به روزرسانی سیستم عامل خودکار نصب شده‌اند، دستور زیر را اجرا کنید:

sudo apt autoremove --purge

این دستور از شما خواهد خواست تا پسورد خود را وارد کنید تا هسته های قدیمی و هر پکیجی که دیگر در سیستم مورد نیاز نیست را حذف کند.

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";

پس در نهایت چنین چیزی خواهیم داشت:

gksudo-gedit-unattended-upgrades

حذف هسته های قدیمی به صورت دستی:

اگر هسته ی خود را از 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 ها نیز میتوانید استفاده نمایید.

درباره نویسنده

اروند طباطبایی

بنیانگذار دیجی اسپارک: اولین مرجع تخصصی امبدد سیستم به زبان فارسی / کارشناس سئو و تولید محتوا

هرچه می آموزم میبینم که خیلی کم آموختم. علاقه به رباتیک و تکنولوژی دارم. امیدوارم بتونم دانشی را که آموخته‌ام، به روش‌های مختلفی به کاربران علاقمند منتقل کنم.

تبادل نظر و رفع عیب با ثبت دیدگاه