Я хотел узнать, возможно ли заменить ядра, например, заменить ядро Linux Fedora на ядро FreeBSD.
Теперь уже существует Debian GNU / kFreeBSD . Можно ли настроить дистрибутив Linux на ядро BSD?
Я хотел узнать, возможно ли заменить ядра, например, заменить ядро Linux Fedora на ядро FreeBSD.
Теперь уже существует Debian GNU / kFreeBSD . Можно ли настроить дистрибутив Linux на ядро BSD?
Ответы:
Нет, каждое ядро реализует свои особенности по-своему. Существует большая совместимость с POSIX, но как только вы выйдете из этого, исполняемые файлы должны быть скомпилированы с уже установленными механизмами ядра. Многие проекты содержат исходный код, который компилируется, только если вы явно говорите, что компилируете для FreeBSD или Linux. По сути, это то, что kFreeBSD. Инструменты поддерживают ядро FreeBSD, но они должны быть скомпилированы для него.
Например, если вы попытаетесь использовать epoll_create
FreeBSD, все будет работать не так, как ожидалось.
Конечно, вы можете кросс-компилировать инструменты из системы BSD в стиле LFS, но это может занять вечность. Не так просто, как просто собрать новое ядро.
FreeBSD не использует ядро Linux - как следует из названия, оно использует ядро BSD.
Ядро Linux можно заменить другим ядром Linux (либо тем, которое вы создали сами, либо тем, которое вы извлекли из дистрибутива). Помните, что программы пользовательского пространства в вашем дистрибутиве могут зависеть от конкретных функций ядра, которые будут скомпилированы, и могут работать некорректно, если вы запускаете их на ядре, построенном без этих функций. Например, системный дистрибутив потребует cgroups в ядре.
Для примера, который вы упомянули, да, дистрибутив GNU может быть собран для ядра Linux или для ядра BSD. Во многих случаях существуют различия во времени компиляции (например #ifdef
) между программами, скомпилированными для обоих, даже если ядра объявляют один и тот же ABI. Как минимум, низкоуровневые библиотеки, такие как C Runtime Library, должны приспосабливаться к различным ABI ядра.
Ядро является независимой частью и регулярно заменяется во время обновлений операционной системы. Некоторые проприетарные драйверы (NVIDIA и т. Д.) Имеют установочные сценарии, которые исправляют драйвер в исходном коде ядра, собирают это ядро и заменяют им текущее ядро. Следовательно, если вы разрабатываете свою собственную версию ядра, которая может выполнять все необходимые функции, не должно быть большой проблемой ее установка и оставление остальной части операционной системы. Однако чаще всего такое «новое ядро» происходит от недавней официальной версии.
Ядро Solaris портировано таким образом в некоторой степени, в результате чего OpenSolaris работает в среде Gnome.
Тем не менее, установка совершенно другого ядра является значительным усилием, поскольку интерфейсы должны быть соединены. Это, вероятно, потребует много программирования на C, а не только сценарий сборки.