вівторок, 31 січня 2012 р.

Fedora16: Вилучення старих/криво встановлених ядер Linux

Час від часу в репозитаріях (сховищах програмного забезпечення) вибраного вами дестрибутиву з'являються нові ядра Linux (Linux Kernel) які виправляють певні помилки та вразливості системи, покращується підтримка існуючих/добавляється підтримка нових пристроїв тощо. На появу нових ядер Linux необхідно якосьреагувати? З огляду на це виникає питання, як управляти всім цим різномаїттям...

Добавити нове ядро дуже просто (при умові, що воно вже є у сховищі):
Достатньо викликати термінал (Alt+1,"terminal",Enter) і виконати в ньому наступну команду:
$ sudo yum install kernel

При цьому в системі з'являється ще одне ядро (це видно у меню Grub2 при старті системи). Причому система стартує з найновішим ядром за замовчуванням.

Для чого в системі зберігаються попередні версії ядер Linux? Це зроблено за для нашої безпеки: а що, як нове ядро у нашому випадку запрацює не так, як очікувалось? А що як установка ядра була раптово  перервана (вимиканням світла, наприклад) і воно хоч і з'явилось у меню, але непрацездатне? (До речі такий випадок у мене мав місце).

Отже при додаванні ново ядра в систему маємо поступове збільшення їх кількості.
Але що робити, якщо в системі проінстальовано забагато ядер, якими ми не користуємось?

Насамперед переконаємось що ядер у нас справді "забагато" :) - тобто їх кількість може переповнити простір виділений на їх зберігання у файловій системі /boot (для цього в терміналі запускаємо 'df -h'):
Вивід:
$ df -h
Ф. система                        Розм   Вик  Дост Вик% змонтований на
rootfs                             43G  5,0G   36G  13% /
devtmpfs                          3,9G     0  3,9G   0% /dev
tmpfs                             3,9G  216K  3,9G   1% /dev/shm
tmpfs                             3,9G   49M  3,9G   2% /run
/dev/mapper/vg_tannenbaum-lv_root  43G  5,0G   36G  13% /
tmpfs                             3,9G   49M  3,9G   2% /run
tmpfs                             3,9G     0  3,9G   0% /sys/fs/cgroup
tmpfs                             3,9G     0  3,9G   0% /media
tmpfs                             3,9G   12K  3,9G   1% /tmp
/dev/sdc2                         497M   94M  379M  20% /boot
/dev/mapper/vg_tannenbaum-lv_home  22G  624M   20G   4% /home
В мене розділ /boot (виділено червоним) зайнятий на 20%, тож місце ще є.

Рішення №1. Вилучення вручну (yum)

Найкращим, на мою думку, рішення, буде ручне вилучення непотрібних ядер з системи. Спочатку давайте дізнаємось, яким ядром ми, наразі, користуємось. Для цього необхідно відкрити термінал (Alt+F1, "terminal", Enter) і виконати в ньому команду uname -r:
$ uname -r
3.2.2-1.fc16.x86_64
Зараз працюючим у нас є ядро Linux 3.2.2-1.fc16.x86_64

Тепер глянемо, що там у нас встановлено (для цього запустимо в терміналі команду: yum list kernel):
Вивід:
$ yum list kernel
Завантажені додатки: langpacks, presto, refresh-packagekit
Встановлені пакунки
kernel.x86_64               3.1.0-7.fc16               @anaconda-0
kernel.x86_64               3.2.1-3.fc16               @updates   
kernel.x86_64               3.2.2-1.fc16               @updates

Як видно, в моїй системі встановлено 3 ядра. Зазвичай добре зберігати останні 3-4 ядра для перестраховки. Мало що... Може якесь ваше обладнання відмовиться працювати з новим ядром.

Проте, якщо вже ми вирішили вилучати непотрібні ядра, давайте це робимо! :) В мене найстарішим є ядро 3.1.0-7.fc16 , яке встановилося ще з DVD інсталятором Аnacodna (про що ми й бачимо напис вище).

Щоб вилучити непотрібне ядро з системи достатньо в терміналі набрати наступну команду: sudo yum remove kernel-3.1.0-7.fc16 або su -c 'yum remove kernel-3.1.0-7.fc16'.Команда sudo спитає ваш власний пароль, команда su - пароль користувача root. Після чого yum ще раз перепитає (y/n) чи справді ми бажаємо продовжити.
$ sudo yum remove kernel-3.1.0-7.fc16
[sudo] password for vlad: 
Завантажені додатки: langpacks, presto, refresh-packagekit
Налаштування процесу вилучення
Розв’язання залежностей
--> Виконання перевірки операції
---> Пакунок kernel.x86_64 0:3.1.0-7.fc16 буде вилучено
--> Визначення залежностей завершено

Залежності розв’язано

================================================================================
 Пакунок        Архітектура    Версія                 Сховище             Розмір
================================================================================
Вилучення:
 kernel         x86_64         3.1.0-7.fc16           @anaconda-0         111 M

Резюме операції
================================================================================
Remove        1 Package

Розмір після встановлення: 111 M
Виконати дію? [y/N]: y
Звантаження пакунків:
Виконання перевірки операції
Запускається операція з перевірки
Операцію з перевірки успішно завершено
Виконання операції
  Вилучення      : kernel-3.1.0-7.fc16.x86_64                               1/1 

Вилучено:
  kernel.x86_64 0:3.1.0-7.fc16                                                  

Завершено!

Повторний запуск yum list kernel вказує, що справді, в нас в системі залишилось тільки 2 ядра:
$ yum list kernel
Завантажені додатки: langpacks, presto, refresh-packagekit
Встановлені пакунки
kernel.x86_64               3.2.1-3.fc16               @updates
kernel.x86_64               3.2.2-1.fc16               @updates

Ну і, звичайно, можна побачити, що місце на файловій системі /boot також звільнилось:
$ df -h /boot
Ф. система      Розм   Вик  Дост Вик% змонтований на
/dev/sdc2       497M   72M  401M  16% /boot

Рішення №2. Вилучення в напів-автоматичному режимі (package-cleanup):

Для тих, хто любить діяти, але не любить думати - ще один спосіб вилучення старих ядер з системи: команда package-cleanup. Ця команда використовується для вирішення різних проблем з локально встановленими пакетами rpm. Однією з фінкцій цієї системи є підчищення старих ядер (по замовчуванню ця команда залишає в системі 2 ядра (деталі див. man package-cleanup). Ось приклад виклику цієї команди:
$ sudo package-cleanup --oldkernels --count=2
Завантажені додатки: langpacks, presto, refresh-packagekit
No old kernels to remove
Якщо бажаємо зберігати в системі два найновіших ядра, параметр --count=2 можна не вказувати.

Рішення №3. Вилучення в автоматичному режимі (/etc/yum.conf):

Ну і, на послідок, для решти користувачів: ЗАЗВИЧАЙ, НІЧОГО РОБИТИ ВЗАГАЛІ НЕ ПОТРІБНО!!! "Федора" все вже продумала без нас. Гляньте в конфігураційний файл /etc/yum.conf, і побачите, що там встановлено ліміт на кількість завантажених ядер в кількості трьох штук:
$ cat /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=3
Всі старіші ядра автоматично буде вилучено при завантаженні нових. Якщо таке "свавілля" системи вам не до вподоби - змініть параметр installonly_limit на 0. В цьому випадку система нічого сама вилучати не буде.

На цім все! Шануйтесь!

Немає коментарів:

Дописати коментар