Linuxで動作する最も古いバイナリ?


34

ではLinuxのカーネルとGUIのABIでの後方互換性に関する議論、Alan Cox氏のノートは「と、まだ1992年に建てられたXローグバイナリを実行する私の3.6rcカーネルは、Linuxよりもはるかに古いアプリケーションに戻って互換性があります。

Linuxはどれだけ後方互換性がありますか アプリケーションバイナリインターフェイスますか?

数年前に実際に作成およびコンパイルされた、最も古いバイナリ実行可能ファイルとは何ですか?それは、現代の汎用Linuxディストリビューションで引き続き実行されますか?

これらの言葉はすべて解釈の対象になると確信しています。私の主な概念は、エミュレーターや専用の仮想マシンまたはバイナリトランスレーターを介して実行することはフェアではないということですが、そのようなものはおそらく現代のディストリビューションに組み込まれているので、それについて学ぶことはここでの楽しみの一部です。

ハードウェアアーキテクチャ、実行可能ファイル形式、言語、および主要なライブラリの動的読み込みの依存関係によるバリエーションも重要です。

ルールが緩和された場合、さらに遡る1つの例に注意してください。2002 Webページ現代のRed Hat Linux上で実行ファイルa.outを実行して使用することについて協議本当に古いLinuxのプリELFのa.out形式の実行ファイルやった後modprobe binfmt_aout と取得/lib/ld.solibc.so.4 、この質問のための周辺機器の関心のだが、物事の種類を示していることを再びそのさらに掘り下げるときに関与する可能性があります。

更新:あなたBSDのファンのためには、それはiBCS2のが(のようなゾーク/ダンジョン-2.5.6 1990年から)とSCO OpenServerの最近(2008年)のNetBSD 4.0.1のように5.0.xのアプリの古いXENIXアプリケーションをサポートしていることを確認するために素晴らしいことだiBCS2の& NetBSD | 仮想化をお楽しみください。しかし、NetBSD 5.0.xでも同じことが壊れているようです。

更新2:1年後、この質問の「アナウンサー」バッジを取得した後でも、私はまだ答えを探しています。そして、明確にするために、これはAPIについてであるため、少なくともほとんどの場合は元の方法で機能する「実際の」バイナリ(長さ0以外)でなければなりません。


6
IBCSでは、Linuxよりも数年古いバイナリを実行できます。
ジル「SO-悪であるのをやめる」

「ABI」タグが表示されないことに驚き、まだ作成できませんでした。理にかなっていると思われる場合は追加してください。
nealmcb

@Gillesは、iBCSがかなり古いようです。たとえば、おそらく10年前に「Linux ABI」に置き換えられました(Linux ABI- Linuxで他のUnixバイナリを使用)。linux -abiの最新バージョンは、2.4.18の2002年以降のようです:kernel.org/pub/linux /kernel/people/hch/linux-abi/v2.4
nealmcb

1
1981年のZorkのバイナリは、IBMのVM / 370で実行されているため、おそらく現在のz / VM:Zork-Computer History Wikiで実行されます。Zorkの1978バイナリがRT-11で実行されている場合、それを見つけることができます
。...-nealmcb

3
+1先週もこの引用を読んだのですが、ここに掲載されるかどうか疑問に思いました。
マイケル

回答:


11

/ bin / trueは最も古いものでなければなりません。..

さて、あなたはゼロバイトのファイルをバイナリと呼ぶことができますか?

touch /tmp/old_true
chmod 755 /tmp/old_true
/tmp/old_true
echo $?

1
可愛い。/ bin / trueが長さゼロのファイルとして配布されているかどうか、もしそうならいつ、どこで配布されているか知っていますか?笑顔については、Solaris / bin / true-TDWTFフォーラム
-nealmcb

3
@nealmcb- go.com最後にロードされたCOMファイルを再実行する0バイトのプログラムがCP / MとDOSの両方に対して呼び出されました。それで、それは売られさえしました。それで、実際、それはLinuxよりも前のものです。プラットフォームをジャンプしたときの動作を変更しただけです。後方互換性について話してください!CP / M、DOS、および* nixプログラムがすべて同時に実行されています。
ジェレミーJスターチャー

なんて奇妙な振る舞い-最後のCOMファイルを実行するか...とにかく、私はまだ「本当の」バイナリ(長さがゼロではない)を探しています。
nealmcb

興味深いことに、これはPOSIXシェルとcshで機能しますが、zshでは失敗します。– zsh: exec format error
Marco

わかりやすくするために、このサイドディスカッションは大好きですが、「実際には何年も前に書かれコンパイルされた」ものではなかったため、これを有効な答えとは考えません。私はABIの互換性について尋ねています。
-nealmcb

2

それでは、Linuxアプリケーションバイナリインターフェイスはどれだけ後方互換性がありますか?

LinuxカーネルABIの分析レポートは、ここ(2.6.36-4.4.5バージョン)で確認できます。

ここに画像の説明を入力してください

このページにあるいくつかのLinuxベースライブラリ(Glibc、Qt、cairoなど)で同じレポートを見つけることができます。後方バイナリ互換性はリリースごとにパーセントで推定されるため、各ライブラリの全体的なABI互換性について結論を出すことができます。

ここに画像の説明を入力してください

あなたが上で見つけることができ、約700のLinuxライブラリのはるかレポートupstream.rosalinux.ru。このリソースはサポートされなくなりました(代わりにabi-trackerを使用してください)が、ライブラリの古いリリースのレポートを見ることができます。


2
内部の「カーネルABI」には、Linux上で実行されるバイナリアプリケーションの後方互換性については何も書かれていません。せいぜい、カーネルモジュールの下位ソースの互換性についてのことです。異なるカーネルバージョン用にコンパイルされたモジュールをロードすることを防ぐためのセーフガードが設定されていると思います。
DepressedDaniel
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.