با گذر زمان همواره آپدیت‌های جدیدی برای کرنل لینوکس 16.04 یا 18.04 LTS server ارائه می‌شود. نصب این آپدیت‌ها امری ضروری برای بروز نگه‌داشتن سرور و حفظ امنیت آن است. اما به مرور پکیج‌هایی که برای آپدیت کرنل دانلود می‌کنید، افزایش پیدا کرده و سبب اشغال بی‌مورد فضای دیسک سرور می‌گردد. حذف کرنل‌های قدیمی و بدون استفاده می‌تواند به شما در مدیریت بهینه فضای دیسک کمک کند. با ما همراه باشید.


حذف کرنل‌های بدون استفاده و قدیمی در اوبونتو 18.04

روالی که برای حذف تمامی کرنل‌های قدیمی و بدون استفاده باید طی شود به شرح زیر است:

1) در گام نخست باید سرور را با جدیدترین نسخه کرنل بوت کنید.

2) با استفاده از دستور dpkg تمامی کرنل‌های قدیمی را لیست کنید.

3) با اجرای دستور df -H میزان استفاده از فضای دیسک سیستم را یادداشت کنید.

4) تمامی کرنل‌های بدون استفاده و قدیمی را حذف کنید.

5) تایید کنید.


چگونه لیست تمامی کرنل‌های نصب شده را بدست آوریم؟

با استفاده از دو دستور dpkg و egrep بصورت زیر، می‌توانید لیستی از تمامی کرنل‌های نصب شده تهیه کنید:

sudo dpkg --list | egrep -i --color 'linux-image|linux-headers'

لیست کرنل‌های قدیمی بدون استفاده

در تصویر بالا لیستی از کرنل‌های بدون استفاده و قدیمی را مشاهده می‌کنید که باید از روی سیستم پاک شوند. برای بدست آوردن تعداد ایمیج-کرنل‌هایی که روی سیستم شما نصب است، دستور زیر را اجرا نمایید:

sudo dpkg --list | egrep -i --color 'linux-image|linux-headers' | wc -l

 

نمونه خروجی:

// Output: 57

با اجرای دستور زیر، میزان فضای دیسکِ آزادِ فایل سیستم را بدست آورید:

df -H

فضای آزاد موجود در فایل سیستم


چطور کرنل‌های قدیمی را در اوبونتو ورژن 18.04 و بالاتر حذف کنیم؟

با استفاده از دستور apt به دو طریق می‌توان اینکار را انجام داد:

 
sudo apt --purge autoremove
// OR
sudo apt-get --purge autoremove

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

در خروجی دستور فوق مشاهده می‌کنید که تمامی نسخه‌های قدیمی و بدون استفاده کرنل لیست شده‌اند و می‌توانید آن‌ها را پاک کنید.


حذف کرنل‌های بدون استفاده در اوبونتو 16.04 LTS و قدیمی‌تر

ابتدا کرنل‌ در حال اجرا را پیدا کنید:

 
v="$(uname -r | awk -F '-virtual' '{ print $1}')"
echo "$v"

خروجی نمونه:

 
4.15.0-65-generic

 

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

i="linux-headers-virtual|linux-image-virtual|linux-headers-generic-hwe-|linux- 
image-generic-hwe-|linux-headers-${v}|linux-image-$(uname -r)|linux-image- 
generic|linux-headers-generic"
echo "$i"

نمونه خروجی (کرنلی که قرار است روی سیستم نگه دارید باید در این خروجی مشخص باشد):

 
linux-headers-virtual|linux-image-virtual|linux-headers-generic-hwe-|linux-image-generic-hwe-|linux- 
headers-4.15.0-65-generic|linux-image-4.15.0-65-generic|linux-image-generic|linux-headers-generic

 

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

 
dpkg --list | egrep -i 'linux-image|linux-headers' | awk '/ii/{ print $2}' | egrep -v "$i"

نمونه خروجی:

 
linux-headers-4.15.0-45
linux-headers-4.15.0-45-generic
linux-headers-4.15.0-64
linux-headers-4.15.0-64-generic
linux-headers-4.15.0-65
linux-headers-4.4.0-165
linux-headers-4.4.0-165-generic
linux-image-4.10.0-27-generic
linux-image-4.10.0-33-generic
linux-image-4.10.0-35-generic
linux-image-4.10.0-37-generic
linux-image-4.10.0-38-generic
linux-image-4.10.0-40-generic
linux-image-4.10.0-42-generic
linux-image-4.13.0-26-generic
linux-image-4.13.0-31-generic
linux-image-4.13.0-36-generic
linux-image-4.13.0-37-generic
linux-image-4.13.0-38-generic
linux-image-4.13.0-39-generic
linux-image-4.13.0-41-generic
linux-image-4.13.0-43-generic
linux-image-4.13.0-45-generic
linux-image-4.15.0-30-generic
linux-image-4.15.0-32-generic
linux-image-4.15.0-33-generic
linux-image-4.15.0-34-generic
linux-image-4.15.0-36-generic
linux-image-4.15.0-38-generic
linux-image-4.15.0-39-generic
linux-image-4.15.0-42-generic
linux-image-4.15.0-43-generic
linux-image-4.15.0-45-generic
linux-image-4.15.0-64-generic
linux-image-4.4.0-165-generic

 


چگونه کرنل‌های بدون استفاده و قدیمی را در اوبونتو (Linux 16.04 LTS server) حذف کنیم؟

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

 
$ sudo -i
# apt-get --purge remove $(dpkg --list | egrep -i 'linux-image|linux-headers' | awk '/ii/{ print $2}' | egrep -v "$i")

حذف تمامی کرنل‌های بدون استفاده از روی سیستم

نتیجه:

دوباره دستور df را اجرا کنید:

 
df -H

خروجی نمونه:

 
Filesystem      Size  Used Avail Use% Mounted on
udev            1.1G     0  1.1G   0% /dev
tmpfs           210M  6.0M  204M   3% /run
/dev/vda1        42G  6.7G   35G  17% /
tmpfs           1.1G     0  1.1G   0% /dev/shm
tmpfs           5.3M     0  5.3M   0% /run/lock
tmpfs           1.1G     0  1.1G   0% /sys/fs/cgroup
tmpfs           103k     0  103k   0% /var/lib/lxd/shmounts
tmpfs           103k     0  103k   0% /var/lib/lxd/devlxd
tmpfs           210M     0  210M   0% /run/user/0

بدین ترتیب شما از شر کرنل‌های قدیمی و بدون استفاده راحت شدید و فضای اشغال شده توسط آن‌ها به فضای در دسترس سیستم شما اضافه شد. امیدواریم که این مطلب به شما کمک کرده باشد.