Чи можливо змінити ядро ​​в системі UNIX / Linux?


16

Мені хотілося знати, чи можна змінити ядра, наприклад, замінивши ядро ​​Linux Fedora на ядро ​​FreeBSD.

Тепер там вже існував Debian GNU / kFreeBSD . Чи можна мені налаштувати дистрибутив Linux, щоб містити ядро ​​BSD?


3
MacOSX - це повністю сумісне з POSIX ядро ​​на базі BSD. І на відміну від Linux, який стверджує, що не є системою Unix, OSX IS є системою Unix (вона сертифікована The Open Group, яка володіє торговою маркою Unix). Ви не можете запускати додатки Linux на Mac і не можете запускати програми Mac на Linux, хоча обидва працюють на процесорах Intel (ну, технічно AMD64)
slebetman

Відповіді:


21

Ні, кожне ядро ​​реалізує свої особливості по-своєму. Існує велика кількість сумісності з POSIX, але як тільки ви вийдете з цього, виконувані файли потрібно компілювати за допомогою механізмів ядра, які вже існують. Багато проектів містять вихідний код, який збирається лише у тому випадку, якщо ви прямо сказали, що ви компілюєте для FreeBSD або Linux. Це по суті те, що таке kFreeBSD. Інструменти підтримують ядро ​​FreeBSD, але їх потрібно скомпілювати.

Наприклад, якщо ви намагаєтеся використовувати epoll_createна FreeBSD, речі не працюватимуть, як очікувалося.

Звичайно, ви можете перехрестити компіляцію інструментів із системи BSD у стилі LFS, але це, ймовірно, займе назавжди. Не так просто, як просто компілювати нове ядро.


1
Я хотів би почути ваше уявлення про ядро MOOL , там вже є ОС, яка його адаптує, BOSS linux.
Шрі Харша Чілакапаті

Буде цікаво подивитися, що з цього виходить, але я не вивчив це достатньо, щоб сказати про це щось розумне.
Братчлі

1
Отже, що ви говорите, якщо я хочу створити систему BSD на основі GNU, я повинен перекомпілювати все програмне забезпечення GNU для ядра BSD. Я прав?
Вимкнути

1
Все, що використовує Linux-isms, що було б майже все. Можливо, буде простіше почати з kFreeBSD і піти звідти.
Братчлі

16

FreeBSD не використовує ядро ​​Linux - як випливає з назви, воно використовує ядро ​​BSD.

Можна замінити ядро ​​Linux іншим Linux-ядром (таким, яке ви створили самостійно, або таким, яке ви отримали з дистрибутиву). Майте на увазі, що програми для користувальницького простору у вашому дистрибутиві можуть залежати від конкретних функцій ядра, для яких потрібно компілювати, і можуть не працювати належним чином, якщо ви запускаєте їх на ядрі, побудованому без цих функцій. Наприклад, для системного розподілу потрібні групи в ядрі.

У прикладі, який ви згадуєте, так, дистрибутив GNU може бути побудований для ядра Linux або для ядра BSD. У багатьох випадках існують різниці у часі компіляції (наприклад #ifdef) між програмами, складеними для двох, навіть якщо ядра рекламують ту саму ABI. Як мінімум, бібліотеки низького рівня, такі як Бібліотека часу виконання C, повинні вміщувати різні ABI ядра.


Підвищення для згадки про зміну бібліотеки C Runtime.
Джошуа

2

Ядро є самостійною частиною і регулярно замінюється під час оновлень операційної системи. Деякі власні драйвери (NVIDIA тощо) мають інсталяційні сценарії, які виправляють драйвер у джерело ядра, будують його та замінюють поточне ядро ​​на нього. Отже, якщо ви розробляєте власну версію ядра, яка може виконувати всі необхідні функціональні можливості, це не повинно бути великою проблемою, щоб посадити її і залишити решту операційної системи навколо. Однак найчастіше таке "нове ядро" походить від останньої офіційної версії.

Ядро Solaris було перенесено таким чином певною мірою, в результаті чого OpenSolaris працює в середовищі Gnome.

Тим не менш, поставити зовсім інше ядро ​​- це значне зусилля, оскільки інтерфейси повинні бути з'єднані. Це, ймовірно, вимагає багато програм програмування на С, а не лише про сценарій збірки.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.