Uruchamianie plików binarnych FreeBSD w systemie Linux

3

Ogólnie, czy pliki binarne zbudowane na FreeBSD działają na systemach operacyjnych Linux, zwłaszcza na Ubuntu?

Brian
źródło

Odpowiedzi:

8

Nie można uruchamiać binariów zbudowanych dla FreeBSD w systemie Linux (patrz to pytanie ). Zasadniczo są to różne systemy operacyjne, współdzielące tylko mały podzbiór API (kompatybilność z POSIX).

Jeśli jednak masz kod źródłowy, możesz budować pliki binarne dla Linuksa na FreeBSD; termin „kompilacja krzyżowa”. Na przykład programy dla systemu Windows są często kompilowane w systemie Linux.

grawity
źródło
7

Teoretycznie można uruchomić system operacyjny z plików binarnych utworzonych dla innych systemów operacyjnych. W praktyce wymaga to pracy i nie zdarza się zbyt wiele, ponieważ ludzie nie chcą za nią wykonywać pracy.

Jest kilka rzeczy, które mogą przeszkodzić:

  • Różne żetony
  • Różne wywołania systemowe
  • Różne wywołania biblioteki
  • Pliki / ścieżki są różne.

Więc powiedzmy, że chcesz uruchomić binarny program Intel FreeBSD na maszynie Intel Linux. Chip byłby taki sam, bez emulacji. Ale interfejs wywołania systemu jest inny. Ktoś musiałby napisać kod jądra Linuksa, aby zdać sobie sprawę, że po uruchomieniu binarnego FreeBSD, użyć innej tabeli wywołań systemowych. Stało się to nieco łatwiejsze, ponieważ oba są systemem UNIX, większość kodu może być taka sama.

Ale wtedy potrzebujesz bibliotek. Teoretycznie można by je skopiować z dystrybucji FreeBSD, a dynamiczny program ładujący znałby to specjalne miejsce dla bibliotek FreeBSD. Gdyby istniały jakieś ścieżki do plików konfiguracyjnych lub zakodowane ścieżki wyjściowe, należałoby to również rozwiązać.

Więc jest wykonalne, ale wymaga pracy. Dużo pracy. W związku z tym praca jest wykonywana zwykle tylko dla niepopularnego (lub zbyt nowego) systemu operacyjnego, który uruchamia binaria dla bardziej popularnego lub ustalonego systemu operacyjnego.

Początkowo Microsoft NT był w stanie uruchamiać aplikacje z wiersza poleceń w systemie OS / 2 i posiadał teoretyczną (w połowie) zdolność do uruchamiania aplikacji POSIX. Ta umiejętność została odrzucona, ponieważ OS / 2 stał się nieistotny, a ludzie lubili NT dla NT, a nie coś, co mogło uruchomić POSIX. Nie mam wystarczających kwalifikacji, aby stwierdzić, czy aplikacje Windows 7 z systemem Windows 95 są uważane za działające z innego systemu operacyjnego, czy po prostu uruchamiają jakiś starożytny kod połączony z Win7.

Mac OSX może uruchamiać pliki binarne MacOS 7/8, jeśli zostały zakodowane pod nazwą Carbon (zestaw bibliotek zgodności). Pomogło to w migracji do MacOSX. Potrzebowali także emulacji dla układu PowerPC.

Ponieważ Linux jest bardziej popularny niż FreeBSD, nie ma potrzeby, aby wiele osób emulowało FreeBSD na Linuksie. Rzadko bywa, że ​​aplikacja na FreeBSD nie będzie dostępna w Linuksie. Więc nikt tego nie zrobił. Ale istnieje możliwość FreeBSD do uruchamiania binariów Linuksa . Ponieważ Linux jest ruchomym celem, emulacja musi zostać zaktualizowana, gdy jądro Linuksa bardzo się zmienia lub potrzebuje nowych bibliotek.

Rich Homolka
źródło
Programy stworzone dla Windows 95 działają na tym samym podsystemie Win32 (choć niektóre z nich mają automatycznie stosowane podkładki kompensacyjne). Ponadto najwyraźniej Windows NT z SfU jest więcej Zgodny z POSIX niż Linux; jednak zapewnia tylko API POSIX, a nie zgodność binarną (z Linux ELF lub czymkolwiek).
grawity