Что такое «ядро» и зачем оно

Ядро: монолитный программный компонент, который постоянно находится в памяти и выполняет основные функции ОС — унификацию, разделение и учёт доступа к ресурсам компьютера. Поскольку ядро отвечает за работу с внешними устройствами, слишком старое ядро может не распознать слишком новое «железо» (и наоборот).

Что такое ядро?

В мультипрограммном режиме работы одновременно выполняются несколько задач, но так каких явно больше, чем количество процессоров (который может быть и один), в действительности ими управляет планировщик:

Это очень упрощённая схема унификации, разделения и учёта машинного времени (Вытесняющая многозадачность)

Пример — запуск top: сколько процессов, и у каких из них статус R.

Ещё одна задача мультипрограммного режима — унификация, разделение и учёт работы с оперативной памятью: если давать всем задачам одинаковый доступ ко всей памяти, любая ошибка может испортить всё.

Большинство современных процессоров поддерживают два т. п. уровня выполнения:

  1. Если код выполняется на уровне supervisor, ему доступна вся оперативная память, а также специальные ячейки, отвечающие за сохранения контекста процессов
  2. Если код выполняется на уровне user, вместо всей оперативной памяти ему доступна только её часть, причём для удобства она представлена для всех процессов одинаково (с использованием механизма виртуальной памяти)

    • attachment:VirtualMemory.svg

В традиционной ОС единственный процесс, который работает на уровне supervisor — это ядро. Отсюда и вся его специфика

Ядро Linux создаётся большим сообществом профессоналов, в которое входят и индивидуальные разработчики, и организации. Лицензия на него свободная — GPLv2. Сообщество имеет иерархическую структуру, определяемую самим сообществом.

Ядро, драйверы устройств и «прошивки»

Доступ к большинству внешних устройств также разрешён на уровне supervisor, и не разрешён на уровне user. Это значит, что доступ обычного процесса к периферии часто управляется ядром — если оно знает, как это делать, то есть включает в себя «драйвер».

Понятие «драйвер» не имеет чёткого определения. Драйвер — это что-то, без чего ОС не может работать с чем-то.

Примеры:

Кроме того, для полноценной работы многих «умных» внешних устройств требуется т. н. «прошивка» (микропрограмма, firmware). «Умные» устройства — это по сути специализированные компьютеры с архитектурой, непохожей на обычные ЭВМ, а прошивка — это фактически ядро их встроенной операционной системы.

Прошивка изготавливается производителем устройства, и зачастую лицензия на неё не свободная, а только допускающая распространение (т. н. «freeware»). В Linux прошивки не входят в пакет с ядром из-за лицензионных соображений, вместо этого есть пакет firmware-linux, в который сообщество складывает все доступные к распространению микропрограммы.

Если производитель аппаратуры не хочет или не может сделать свой драйвер свободным, в состав ОС включается отдельный пакет с компонентами, непосредственно взятыми с сайта производителя.

Новая «железяка» не работает! Что делать?

Есть несколько вариантов:

  1. В любом случае стоит обновить firmware-linux — возможно, новая вариация устройства уже поддерживается, но ей нужна новая прошивка

  2. Производитель заинтересован, чтобы его устройство поддерживалось в ядра Linux. В этом случае драйвер как правило свободный, и появляется в составе ядра практически одновременно с выходом устройства
    • ⇒ Обновить ядро
  3. Производитель (по каким-то соображениям) предоставляет несвободный драйвер. Ждём, пока этот драйвер появится, а затем — пока сообщество вашего дистрибутива соберет соответствующий пакет
    • ⇒ Обновить или установить пакет с драйвером. Придётся посмотреть, как он называется. Скорее всего, придётся обновить также и ядро
  4. Производитель предоставляет кем-то как-то собранный комплект программ (например, фильтр для системы печати) и называет это драйвером. Здесь проблем больше, потому что не всякий комплект подойдёт (например, не подходит пакет для Ubuntu), а если производитель прилагает «инсталлятор» без оглядки на дистрибутив, велик шанс, что что-нибудь установиться не туда. В любом случае придётся искать инструкции.
  5. Производителя не интересует работа в Linux — с этим пользователь справиться не в состоянии

Особенности ядер в ALT

Ядро — чуть ли не единственный пакет, который:

⇒ Самостоятельно не обновляется при обновлении системы

Если всё «и так работает», обновлять ядро скорее всего не надо. Исключение: большие пакеты, например, VirtualBox, в состав которых входят модули для самого свежего ядра. Тогда при обновлении VirtualBox может потребоваться и обновление ядра.

В ALT есть несколько типов ядер. Два из них применяются в ОС общего назначения: «стабильное» (название пакета — kernel-image-std-def) и «свежее» (kernel-image-un-def). В состав дистрибутива входит по умолчанию стабильное ядро. Если оно всё ещё не поддерживает ваше «железо», можно попробовать установить свежее — командой update-kernel -t un или из GUI.

Все установленные ядра доступны в меню загрузки ОС при включении компьютера. Рекомендуется держать установленными как минимум два ядра: текущее и предыдущее. Старые ядра можно удалить (например, командой remove-old-kernels).

FrBrGeorge/QA/01_Kernel (последним исправлял пользователь FrBrGeorge 2024-06-16 20:37:35)