W dyskusji na temat kompatybilności wstecznej w jądrze Linuksa i interfejsach graficznych GUI , Alan Cox zauważa, że „ moje jądro 3.6rc będzie nadal uruchamiać fałszywy plik binarny zbudowany w 1992 roku. X jest z powrotem kompatybilny z aplikacjami znacznie starszymi niż Linux ”.
Więc w jaki sposób wstecznie kompatybilne są interfejsy binarne aplikacji Linux ?
Jaki jest najstarszy plik binarny, napisany i skompilowany przed laty, który nadal będzie działał na nowoczesnej standardowej dystrybucji Linuksa ogólnego przeznaczenia?
Jestem pewien, że wszystkie te słowa podlegają interpretacji. Moim głównym założeniem jest to, że uruchamianie go za pomocą emulatora lub specjalistycznej maszyny wirtualnej lub translatora binarnego jest niesprawiedliwe, ale niektóre z takich rzeczy są prawdopodobnie wbudowane w niektóre nowoczesne dystrybucje, a nauka o tym jest częścią zabawy.
Interesujące są również różnice w zależności od architektury sprzętowej, formatu pliku wykonywalnego , języka i głównych zależności dynamicznego ładowania biblioteki.
Uwaga: kiedy zasady są złagodzone, oto jeden przykład cofnięcia się. Strona 2002 web Running a.out wykonywalnych na nowoczesnych Red Hat Linux rozmów na temat korzystania naprawdę stary Linux pre-ELF-a.out formacie plików wykonywalnych po zrobieniu modprobe binfmt_aout
oraz uzyskania /lib/ld.so
i libc.so.4
znowu to interesujące obwodowych na to pytanie, ale ilustruje różne rzeczy, które może być zaangażowany w dalsze kopanie.
Aktualizacja dla was fanów BSD, wspaniale jest zobaczyć, że iBCS2 obsługiwał stare aplikacje Xenix (takie jak zork / dungeon-2.5.6 z 1990 r.) Oraz aplikacje SCO OpenServer 5.0.x, jak ostatnio NetBSD 4.0.1 (od 2008 r.): IBCS2 i NetBSD | Zabawa z wirtualizacją . Ale to samo wydaje się zepsute w NetBSD 5.0.x.
Aktualizacja 2 : Rok później, nawet po otrzymaniu plakietki „Spikera” na to pytanie, wciąż szukam odpowiedzi. Aby wyjaśnić, ponieważ chodzi o interfejsy API, powinien to być „prawdziwy” plik binarny (o niezerowej długości), który nadal przynajmniej w większości działa w oryginalny sposób.
źródło
Odpowiedzi:
Myślę, że / bin / true musi być najstarszym działającym ..
Czy możesz nazwać plik zerowy bajtem?
źródło
go.com
dla CP / M i DOS, który uruchomiłby ostatnio załadowany plik COM. Tak więc został nawet sprzedany. Tak więc w rzeczywistości wyprzedza Linuksa. Po prostu zmieniło to, co zrobiło, kiedy skoczyło z platformy. Mów o kompatybilności wstecznej! Mamy program CP / M, DOS i * nix wszystkie działające jednocześnie.zsh: exec format error
Możesz zobaczyć raport z analizy ABI jądra Linuksa tutaj (wersje 2.6.36-4.4.5):
Ten sam raport można znaleźć dla kilku bibliotek podstawowych Linux na tej stronie (Glibc, Qt, Cairo, ...). Wsteczna zgodność binarna jest szacowana dla każdego wydania w procentach, dzięki czemu można wyciągnąć wnioski na temat ogólnej kompatybilności ABI dla każdej biblioteki:
Znacznie więcej raportów dla około 700 bibliotek Linux można znaleźć na stronie upstream.rosalinux.ru . Ten zasób nie jest już obsługiwany ( zamiast tego użyj programu abi-tracker ), ale możesz przejrzeć raporty dotyczące starych wydań bibliotek.
źródło