Czy mogę wziąć jądro Linuksa i używać go, powiedzmy, z FreeBSD i odwrotnie (jądro FreeBSD w, powiedzmy, Debianie)? Czy istnieje uniwersalna odpowiedź? Jakie są ograniczenia? Jakie są przeszkody?
Nie, absolutnie nie. Dobrym ćwiczeniem byłoby wypróbowanie go i zobaczenie, jak się psuje. Nie można nawet niezawodnie zastąpić jądra systemu Linux znacznie starszym jądrem systemu Linux. Z pewnością można jednak wymienić narzędzia użyteczne dla użytkownika (jeśli zostaną ponownie skompilowane).
@Kusalananda na temat wymiany narzędzi z obszaru użytkownika, przejście z BSD na Linuksa może być bolesne: niektóre narzędzia BSD są dość trudne do zbudowania na systemach innych niż BSD ... Przez lata natknąłem się na kilka narzędzi, które chciałbym przenieść , ale okazało się, że nie jest trywialne: - /.
@StephenKitt Odwrotna jest również prawda :-) Zwłaszcza, gdy oprogramowanie zakłada, że można uzyskać dostęp /proclub inne specyficzne dla Linuksa dzwonki i gwizdy.
Co możesz zrobić, to wziąć jądro x86_64 (linux) i wymusić jego instalację w 32-bitowej dystrybucji i386 (zakładając, że 64-bitowy procesor Intel i wsparcie dla 32-bitowych plików binarnych skompilowanych). Jest to dość dobrze znane, ale nie od razu oczywiste ...
Nie, jądra z różnych implementacji systemów operacyjnych typu Unix nie są wymienne, zwłaszcza dlatego, że wszystkie przedstawiają różne interfejsy do reszty systemu (przestrzeni użytkownika) - ich wywołań systemowych (w tym ioctlspecyfiki), różnych używanych przez nich wirtualnych systemów plików. ..
Do pewnego stopnia wymienna jest na poziomie źródłowym kombinacja jądra i biblioteki C, a raczej interfejsów API na poziomie użytkownika, które jądro i biblioteki udostępniają (zasadniczo widok warstwy opisanej przez POSIX, bez biorąc pod uwagę, czy faktycznie jest to POSIX). Przykładami tego są Debian GNU / kFreeBSD , który buduje system Debian na jądrze FreeBSD oraz Debian GNU / Hurd , który buduje system Debian na bazie Hurd.
Nie jest to całkiem poziom zamienności jądra, ale próbowano ujednolicić wspólny interfejs binarny aplikacji, aby umożliwić używanie plików binarnych w różnych systemach bez potrzeby ponownej kompilacji. Jednym z przykładów jest Intel Binary Compatibility Standard , który pozwala na uruchamianie zgodnych z nim plików binarnych na dowolnym systemie Unix implementującym go, w tym na starszych wersjach Linuksa z warstwą iBCS 2. Użyłem tego pod koniec lat 90., aby uruchomić WordPerfect w systemie Linux.
Niektóre jądra są kompatybilne binarnie, co pozwala mieszać programy przestrzeni użytkownika z różnymi ABI (np. Freebsd może do pewnego stopnia współpracować z plikami binarnymi linux) - jednak podstawowe pliki binarne (np. Program init, moduł ładujący, narzędzia do konfiguracji sterowników urządzeń, biblioteka C , narzędzia potrzebne do skonfigurowania systemów plików ...) w praktyce będą miały zbyt dużo wiedzy na temat interfejsów poziomu jądra, aby pomyślnie uruchomić system z obcym jądrem.
Również systemy plików musiałyby być kompatybilne. Ponadto opcje kompatybilności binarnej musiałyby zostać skompilowane „twardo” do jądra - wszystko, co zostało zaimplementowane jako moduł jądra, chciałby zawieść, ponieważ nie można uruchomić modułu ładującego.
Jak wspomniano, środowiska użytkownika są zazwyczaj przenośne, jeśli chcesz dokonać ponownej kompilacji - podobnie jak debianowe systemy oparte na freebsd lub konfiguracja systemu netbsd pkgsrc na Linuksie (absolutnie nie jest trywialny, ale obsługiwany i możliwy!).
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.