Назад | Перейти на главную страницу

Как перейти с кастомного ядра Linux на дистрибутивное ядро

В свободное время я помогаю администрировать размещенный сервер Debian Linux, который обслуживает множество веб-сайтов и размещает электронную почту для нескольких человек. Он не видит огромных объемов трафика, но, конечно, мы хотим все делать правильно. Однако, когда мы впервые получили этот сервер, кто-то накатил для нас собственное ядро, которое позволило нам делать различные вещи, которые мы хотели делать (например, LVM, RAID и т. Д.). Это было несколько лет назад, и, конечно же, были исправлены различные ошибки безопасности и т. Д., И мы предпочли бы просто работать со стандартным ядром, которое поддерживается в актуальном состоянии.

Проблема в том, что у нас нет списка функций, которые мы включили при накатке настраиваемого ядра, и пара попыток использовать новое привели к тому, что ядро ​​не загружается. Итак, вопрос в том, как нам использовать стандартные ядра Debian, сохранив при этом все функции, от которых мы зависим? Какую информацию мне нужно собрать в первую очередь, а затем как это сделать?

Во-первых, вам нужно оценить, что именно должно делать ваше ядро. Это означает создание списка из:

  • Каждое оборудование в вашей системе
  • Аппаратные функции, такие как LVM и RAID
  • Сетевые функции, такие как маршрутизация, VPN, поддержка беспроводной связи и т. Д.
  • Файловые системы, особенно ваша корневая файловая система
  • Другие особые потребности уровня ядра

Затем вы должны попытаться выяснить, как ваше текущее ядро ​​обрабатывает их, а затем попробовать перевести это на более новое ядро. Для этого вы можете посмотреть:

  • Результаты lspci и dmesg - это поможет вам каталогизировать оборудование и то, что текущее ядро ​​делает при загрузке
  • Какие модули загружены - посмотрите lsmod
  • Конфигурация ядра, если таковая имеется - иногда она существует в /proc/config.gz или в /boot

Как только вы узнаете свое оборудование и то, как текущее ядро ​​с ним работает, вы можете создать новое ядро ​​из исходных кодов Debian. Сосредоточьтесь на том, чтобы ядро ​​загружалось первым. После того, как вы войдете в оболочку с новым ядром, вы сможете применить инкрементный подход к остальным функциям. Перекомпилируйте, добавив при необходимости функции или драйверы (возможно, в виде модулей для ускорения этого процесса), затем протестируйте каждое новое ядро.

И последнее о RAID. Вы должны быть осторожны с вашей текущей настройкой RAID, если это программный RAID - более новые ядра и системы будут использовать мдадм для управления такими вещами, тогда как старые системы, как правило, используют raidtab подходить. Ваш подход изменит то, как вы работаете с RAID в ядре, особенно с битами автоопределения. Взгляните на отличное Программное обеспечение RAID Howto для получения дополнительной информации.

У вас есть /proc/config.gz или /boot/config-X.X.X для вашего текущего ядра?

Если вы это сделаете, просто сравните свою конфигурацию и конфигурацию Debian.

Как бы то ни было, конфигурации Debian включают практически все - определенно RAID, LVM и т. Д. Просто убедитесь, что initrd собран при установке ядра Debian, поскольку большинство вещей в их ядре являются модульными.

Я не встречал ничего, где мне приходилось бы создавать собственное ядро ​​для сервера Debian в течение долгого времени, за исключением тех случаев, когда я хотел добавить исправления ядра по какой-либо причине.

Если это сделал человек, создавший ваше собственное ядро, дебиан путь у них может быть в каталоге / boot файл с именем config-2.?.? это расскажет вам, какие параметры использовались при сборке ядра.

Поскольку вы не уверены, я бы начал с того, что взял Debian livecd и посмотрите, позволяет ли стандартное ядро ​​на livecd загружать все ваше оборудование и диски. Если вы можете заставить все работать с livecd, вам просто нужно установить это ядро.

Вы упомянули, что пробовали стандартное ядро, но оно не загружается. В чем именно заключается ошибка? Возможно, если вы опубликуете сообщения, мы сможем оказать дополнительную помощь.

Настройте grub для загрузки собственного ядра как Резервная система чтобы гарантировать, что сервер снова заработает, даже если новое ядро ​​не загружается.

Используя это, вы можете безопасно apt-get install в linux-image для вашей аппаратной архитектуры, что, скорее всего, linux-image-686 или linux-image-amd64 и попробуйте перезагрузиться в это ядро.