Мені хотілося знати, чи можна змінити ядра, наприклад, замінивши ядро 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-ядром (таким, яке ви створили самостійно, або таким, яке ви отримали з дистрибутиву). Майте на увазі, що програми для користувальницького простору у вашому дистрибутиві можуть залежати від конкретних функцій ядра, для яких потрібно компілювати, і можуть не працювати належним чином, якщо ви запускаєте їх на ядрі, побудованому без цих функцій. Наприклад, для системного розподілу потрібні групи в ядрі.
У прикладі, який ви згадуєте, так, дистрибутив GNU може бути побудований для ядра Linux або для ядра BSD. У багатьох випадках існують різниці у часі компіляції (наприклад #ifdef
) між програмами, складеними для двох, навіть якщо ядра рекламують ту саму ABI. Як мінімум, бібліотеки низького рівня, такі як Бібліотека часу виконання C, повинні вміщувати різні ABI ядра.
Ядро є самостійною частиною і регулярно замінюється під час оновлень операційної системи. Деякі власні драйвери (NVIDIA тощо) мають інсталяційні сценарії, які виправляють драйвер у джерело ядра, будують його та замінюють поточне ядро на нього. Отже, якщо ви розробляєте власну версію ядра, яка може виконувати всі необхідні функціональні можливості, це не повинно бути великою проблемою, щоб посадити її і залишити решту операційної системи навколо. Однак найчастіше таке "нове ядро" походить від останньої офіційної версії.
Ядро Solaris було перенесено таким чином певною мірою, в результаті чого OpenSolaris працює в середовищі Gnome.
Тим не менш, поставити зовсім інше ядро - це значне зусилля, оскільки інтерфейси повинні бути з'єднані. Це, ймовірно, вимагає багато програм програмування на С, а не лише про сценарій збірки.