Chciałem wiedzieć, czy można zmienić jądra, na przykład zastępując jądro Linuksa Fedory na jądro FreeBSD.
Teraz istniał już Debian GNU / kFreeBSD . Czy mogę dostosować dystrybucję Linuksa tak, aby zawierała jądro BSD?
Chciałem wiedzieć, czy można zmienić jądra, na przykład zastępując jądro Linuksa Fedory na jądro FreeBSD.
Teraz istniał już Debian GNU / kFreeBSD . Czy mogę dostosować dystrybucję Linuksa tak, aby zawierała jądro BSD?
Odpowiedzi:
Nie, każde jądro implementuje własne funkcje na swój własny sposób. Istnieje duża kompatybilność z POSIX, ale kiedy z tego wyjdziesz, pliki wykonywalne muszą zostać skompilowane z już istniejącymi mechanizmami jądra. Wiele projektów zawiera kod źródłowy, który jest kompilowany tylko wtedy, gdy wyraźnie powiesz, że kompilujesz dla FreeBSD lub Linux. Zasadniczo to jest kFreeBSD. Narzędzia obsługują jądro FreeBSD, ale należy je skompilować.
Na przykład, jeśli spróbujesz użyć epoll_create
na FreeBSD, rzeczy nie będą działać zgodnie z oczekiwaniami.
Oczywiście możesz krzyżowo skompilować narzędzia z systemu BSD w stylu LFS, ale prawdopodobnie zajmie to wieczność. Nie tak proste jak skompilowanie nowego jądra.
FreeBSD nie używa jądra Linux - jak sama nazwa wskazuje, używa jądra BSD.
Możliwe jest zastąpienie jądra Linuksa innym jądrem Linuksa (zbudowanym samodzielnie lub wyodrębnionym z dystrybucji). Pamiętaj, że programy przestrzeni użytkownika w twojej dystrybucji mogą zależeć od konkretnych funkcji jądra, które mają zostać skompilowane, i mogą nie działać poprawnie, jeśli uruchomisz je na jądrze zbudowanym bez tych funkcji. Na przykład dystrybucja systemowa będzie wymagała cgroups w jądrze.
Dla wspomnianego przykładu tak można zbudować dystrybucję GNU dla jądra Linux lub jądra BSD. W wielu przypadkach istnieją różnice w czasie kompilacji (np. #ifdef
) Między programami skompilowanymi dla tych dwóch, nawet jeśli jądra reklamują ten sam ABI. Biblioteki niskiego poziomu, takie jak C Runtime Library, muszą co najmniej uwzględniać różne ABI jądra.
Jądro jest niezależną częścią i jest rutynowo wymieniane podczas aktualizacji systemu operacyjnego. Niektóre zastrzeżone sterowniki (NVIDIA itp.) Mają skrypty instalacyjne, które łatają sterownik do źródła jądra, budują to jądro i zastępują go obecnym jądrem. Dlatego jeśli opracujesz własną wersję jądra, która może wykonywać wszystkie wymagane funkcje, nie powinno stanowić większego problemu, aby zainstalować ją i pozostawić resztę systemu operacyjnego. Jednak najczęściej takie „nowe jądro” pochodzi z najnowszej oficjalnej wersji.
Jądro Solaris zostało w pewnym stopniu przeniesione w ten sposób, w wyniku czego OpenSolaris działa w środowisku Gnome.
Jednak wprowadzenie zupełnie innego jądra jest dużym wysiłkiem, ponieważ interfejsy muszą zostać zmostkowane. Może to wymagać dużo programowania w C i nie dotyczy tylko skryptu kompilacji.