با گذر زمان همواره آپدیتهای جدیدی برای کرنل لینوکس 16.04 یا 18.04 LTS server ارائه میشود. نصب این آپدیتها امری ضروری برای بروز نگهداشتن سرور و حفظ امنیت آن است. اما به مرور پکیجهایی که برای آپدیت کرنل دانلود میکنید، افزایش پیدا کرده و سبب اشغال بیمورد فضای دیسک سرور میگردد. حذف کرنلهای قدیمی و بدون استفاده میتواند به شما در مدیریت بهینه فضای دیسک کمک کند. با ما همراه باشید.
حذف کرنلهای بدون استفاده و قدیمی در اوبونتو 18.04
روالی که برای حذف تمامی کرنلهای قدیمی و بدون استفاده باید طی شود به شرح زیر است:
1) در گام نخست باید سرور را با جدیدترین نسخه کرنل بوت کنید.
2) با استفاده از دستور dpkg تمامی کرنلهای قدیمی را لیست کنید.
3) با اجرای دستور df -H میزان استفاده از فضای دیسک سیستم را یادداشت کنید.
4) تمامی کرنلهای بدون استفاده و قدیمی را حذف کنید.
5) تایید کنید.
چگونه لیست تمامی کرنلهای نصب شده را بدست آوریم؟
با استفاده از دو دستور dpkg و egrep بصورت زیر، میتوانید لیستی از تمامی کرنلهای نصب شده تهیه کنید:
[php]sudo dpkg –list | egrep -i –color ‘linux-image|linux-headers'[/php]

در تصویر بالا لیستی از کرنلهای بدون استفاده و قدیمی را مشاهده میکنید که باید از روی سیستم پاک شوند. برای بدست آوردن تعداد ایمیج-کرنلهایی که روی سیستم شما نصب است، دستور زیر را اجرا نمایید:
[php]sudo dpkg –list | egrep -i –color ‘linux-image|linux-headers’ | wc -l[/php]
نمونه خروجی:
[php]// Output: 57[/php]
با اجرای دستور زیر، میزان فضای دیسکِ آزادِ فایل سیستم را بدست آورید:
[php]df -H[/php]

چطور کرنلهای قدیمی را در اوبونتو ورژن 18.04 و بالاتر حذف کنیم؟
با استفاده از دستور apt به دو طریق میتوان اینکار را انجام داد:
[php]
sudo apt –purge autoremove
// OR
sudo apt-get –purge autoremove
[/php]

در خروجی دستور فوق مشاهده میکنید که تمامی نسخههای قدیمی و بدون استفاده کرنل لیست شدهاند و میتوانید آنها را پاک کنید.
حذف کرنلهای بدون استفاده در اوبونتو 16.04 LTS و قدیمیتر
ابتدا کرنل در حال اجرا را پیدا کنید:
[php]
v="$(uname -r | awk -F ‘-virtual’ ‘{ print $1}’)"
echo "$v"
[/php]
خروجی نمونه:
[php]
4.15.0-65-generic
[/php]
در گام بعدی، لیستی درست کنید و در آن مشخصا اعلام کنید که کرنل در حال اجرا نباید پاک شود:
[php]
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"
[/php]
نمونه خروجی (کرنلی که قرار است روی سیستم نگه دارید باید در این خروجی مشخص باشد):
[php]
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
[/php]
با اجرای دستور زیر، لیست کرنلهایی که باید حذف شوند را مشخص کنید:
[php]
dpkg –list | egrep -i ‘linux-image|linux-headers’ | awk ‘/ii/{ print $2}’ | egrep -v "$i"
[/php]
نمونه خروجی:
[php]
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
[/php]
چگونه کرنلهای بدون استفاده و قدیمی را در اوبونتو (Linux 16.04 LTS server) حذف کنیم؟
سرانجام، با اجرای دستور زیر همه کرنلهای بدون استفاده که بصورت ناخواسته فضای سرور را اشغال کردهاند، حذف کنید:
[php]
$ sudo -i
# apt-get –purge remove $(dpkg –list | egrep -i ‘linux-image|linux-headers’ | awk ‘/ii/{ print $2}’ | egrep -v "$i")
[/php]

نتیجه:
دوباره دستور df را اجرا کنید:
[php]
df -H
[/php]
خروجی نمونه:
[php]
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
[/php]
بدین ترتیب شما از شر کرنلهای قدیمی و بدون استفاده راحت شدید و فضای اشغال شده توسط آنها به فضای در دسترس سیستم شما اضافه شد. امیدواریم که این مطلب به شما کمک کرده باشد.