Назначения базовых пакетов linux

Asked by Tony Sam

Разъясните, пожалуйста, в каких пакетах заключено ядро linux. Что содержат в себе пакеты со словами headers, kernel, linux-restricted, modules, image. Какие из них за что отвечают, когда могут быть полезны, почему не все устанавливаются по умолчанию. Спасибо.

Question information

Language:
Russian Edit question
Status:
Solved
For:
Ubuntu linux-kernel-headers Edit question
Assignee:
No assignee Edit question
Solved by:
Artem Popov
Solved:
Last query:
Last reply:
Revision history for this message
Artem Popov (artfwo) said :
#1

Ядро "заключено" во всех этих пакетах.

headers - это заголовочные файлы, необходимые для компиляции ядра и программ, которые непосредственно к ядру обращаются.

image - непосредственно образ ядра и основные модули (драйверы). это наиболее важный пакет.

restricted-modules - несвободные драйверы (отсутствует исходный код или есть другие ограничения).

Компоненты ядра входят в пакеты, включающие в имя номер версии, например linux-image-2.6.27-9-generic. Пакеты вида linux-image-generic - метапакеты (пустые). Они всегда зависят от последней версии ядра для удобства обновления.

Revision history for this message
Tony Sam (samant-ua) said :
#2

1) А почему не все эти пакеты ставятся при установке системы?
2) Почему в репозиториях доступны сразу несколько разных версий этих пакетов? Например, я ставлю какую-то программу, она по зависимостям требует установки linux-image новой версии. После этого у меня получились установленными две версии linux-image, т.к. одна уже стояла. Могу ли я удалить старую? Если да, то почему она автоматически не удаляется (по зависимостям) при установке новой версии и при перезагрузке grub отображает выбор запуска нескольких ядер.
3) И почему вообще существует возможность удалить ядро системы?!
В общем, главная цель моих вопросов: я не хочу держать в системе ненужные мне пакеты. Вот и хочу понять, какие за что отвечают и какие можно удалить. Спасибо.

Revision history for this message
Best Artem Popov (artfwo) said :
#3

При обновлении ядра существует риск, что новое ядро не заработает со специфическим оборудованием и т.д.

Поэтому после установки нового ядра оба ядра (старое и новое) доступны в меню загрузчика - не заработало новое, включаем старое...

Схема зависимостей у пакетов ядра выглядит допустим так:
linux-image-generic <- linux-image-2.6.27-9-generic

После гипотетического обновления до 2.6.28:
linux-image-generic <- linux-image-2.6.28-1-generic

Но ядро 2.6.27-9 останется в системе на случай сбоя. При условии корректной работы нового ядра, старое можно безопасно удалить.

Пакеты linux-image-generic, -virtual, -server и -rt являются взаимозаменяемыми и предназначены для специфических задач (базовое ядро, ядро для запуска в ВМ, серверное и реалтаймовое). Поэтому от конкретных пакетов ядра ничего не зависит и менеджер пакетов позволяет их удалять.

Все эти пакеты не имеет смысла ставить при установке системы, т. к. заголовки нужны например только для компиляции, а restricted-драйверы только для специфического железа и так далее... В gobuntu, где всё ПО свободное на 100% restricted-модули скажем не устанавливаются.

Для автоматического же удаления старых ядер можно к примеру установить пакет system-cleaner (графическая версия именуется system-cleaner-gtk).

Revision history for this message
Tony Sam (samant-ua) said :
#4

Thanks Артём Попов, that solved my question.

Revision history for this message
Tony Sam (samant-ua) said :
#5

Пакеты -headers нужны только для компиляции. Компиляции чего? Например, если я захочу руками пересобирать ядро? Или в каких ещё случаях может она потребоваться?

Revision history for this message
Artem Popov (artfwo) said :
#6

Для сборки драйверов, не вошедших в restricted-modules (например для радеонов, которые начиная с 8.10 поставляются в исходниках и автоматически компилируются всякий раз при установке/обновлении ядра), модулей virtualbox и т. п. штуковин...