Biner tertua yang bekerja di Linux?


34

Dalam sebuah diskusi tentang kompatibilitas ke belakang di kernel Linux dan GUI ABIs , Alan Cox mencatat bahwa " kernel 3.6rc saya masih akan menjalankan biner Rogue yang dibangun pada tahun 1992. X kembali kompatibel untuk aplikasi yang jauh lebih tua daripada Linux. "

Jadi seberapa kompatibel-belakangnya antarmuka biner Aplikasi Linux ?

Apa yang dapat dieksekusi biner tertua, yang sebenarnya ditulis dan dikompilasi tahun lalu, yang masih akan berjalan pada stok Linux modern untuk keperluan umum?

Saya yakin semua kata-kata itu tunduk pada interpretasi. Gagasan utama saya adalah bahwa tidak adil untuk menjalankannya melalui emulator atau mesin virtual khusus atau penerjemah biner, tetapi beberapa hal seperti itu mungkin dibangun ke beberapa distro modern, dan belajar tentang itu adalah bagian dari kesenangan di sini.

Variasi berdasarkan arsitektur perangkat keras, format file yang dapat dieksekusi , bahasa, dan dependensi pemuatan dinamis pustaka utama juga menarik.

Perhatikan, saat aturan dilonggarkan, inilah salah satu contoh untuk melangkah lebih jauh ke belakang. Halaman web 2002 Menjalankan executable a.out di Red Hat Linux modern berbicara tentang penggunaan executable format a-out Linux EL-out yang benar - benar lama setelah melakukan modprobe binfmt_aout dan mendapatkan /lib/ld.sodan libc.so.4 Lagi-lagi itu merupakan hal yang menarik bagi pertanyaan ini, tetapi menggambarkan berbagai hal yang dapat terlibat saat menggali lebih jauh ke belakang.

Pembaruan untuk Anda penggemar BSD, senang melihat bahwa iBCS2 mendukung aplikasi Xenix lama (seperti zork / dungeon-2.5.6 dari 1990) dan aplikasi SCO OpenServer 5.0.x baru-baru ini seperti NetBSD 4.0.1 (dari 2008): iBCS2 & NetBSD | Bersenang-senang dengan virtualisasi . Tetapi hal yang sama tampaknya rusak di NetBSD 5.0.x.

Pembaruan 2 : Satu tahun kemudian, bahkan setelah mendapatkan lencana "Penyiar" untuk pertanyaan ini, saya masih mencari jawaban. Dan untuk memperjelas, karena ini adalah tentang API, itu harus menjadi "nyata" biner (panjang tidak nol), yang masih setidaknya sebagian besar berfungsi dengan cara yang asli.


6
IBCS seharusnya membiarkan Anda menjalankan binari yang beberapa tahun lebih tua dari Linux.
Gilles 'SO- stop being evil'

Saya terkejut tidak melihat tag "ABI", dan saya belum bisa membuatnya. Jadi tambahkan bahwa jika Anda pikir itu masuk akal.
nealmcb

@Gilles Sepertinya iBCS agak ketinggalan zaman. Misalnya itu digantikan oleh "Linux ABI" mungkin satu dekade yang lalu ( Linux ABI- Menggunakan binari Unix lain di Linux ) dan versi terbaru dari linux-abi tampaknya berasal dari tahun 2002 untuk 2.4.18: kernel.org/pub/linux /kernel/people/hch/linux-abi/v2.4
nealmcb

1
Biner Zork tahun 1981 berjalan pada IBM VM / 370 dan dengan demikian mungkin z / VM mereka saat ini: Zork - Computer History Wiki . Dan biner Zork 1978 beroperasi pada RT-11 jika Anda dapat menemukan itu ....
nealmcb

3
+1 Saya membaca kutipan ini minggu lalu juga, dan bertanya-tanya apakah itu akan muncul di sini.
Michael

Jawaban:


11

Saya pikir bahwa / bin / true harus menjadi yang tertua ..

Nah, dapatkah Anda memanggil file nol-byte biner?

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

1
Imut. Apakah Anda tahu jika / bin / true telah didistribusikan sebagai file dengan panjang nol, dan jika demikian kapan dan di mana? Untuk senyum, lihat Solaris / bin / true - TDWTF Forums
nealmcb

3
@nealmcb - Ada program 0-byte go.comuntuk CP / M dan DOS yang akan menjalankan kembali file COM terakhir yang dimuat. Jadi, itu bahkan dijual. Jadi, sebenarnya, itu mendahului Linux. Itu hanya mengubah apa yang dilakukan ketika platform melompat. Bicara tentang kompatibilitas mundur! Kami memiliki program CP / M, DOS, dan * nix yang semuanya berjalan sekaligus.
Jeremy J Starcher

Apa perilaku yang aneh - jalankan file COM terakhir .... Bagaimanapun, saya masih mencari biner "nyata" (panjang tidak nol), yang masih setidaknya sebagian besar berfungsi dengan cara yang asli.
nealmcb

Menariknya ini bekerja dalam shell POSIX dan csh, tetapi gagal di zsh:zsh: exec format error
Marco

Hanya untuk klarifikasi, sementara saya suka diskusi sisi ini, saya tidak menganggap ini sebagai jawaban yang valid, karena itu bukan "benar-benar ditulis dan disusun tahun lalu". Saya bertanya tentang kompatibilitas ABI.
nealmcb

2

Jadi seberapa kompatibel-belakangnya antarmuka biner Aplikasi Linux?

Anda dapat melihat laporan analisis untuk kernel Linux ABI di sini (versi 2.6.36-4.4.5):

masukkan deskripsi gambar di sini

Laporan yang sama dapat Anda temukan untuk beberapa pustaka berbasis Linux di halaman ini (Glibc, Qt, cairo, ...). Kompatibilitas biner mundur diperkirakan untuk setiap rilis dalam persen, sehingga Anda dapat membuat kesimpulan tentang kompatibilitas ABI keseluruhan untuk setiap pustaka:

masukkan deskripsi gambar di sini

Lebih banyak laporan untuk sekitar 700 perpustakaan Linux yang dapat Anda temukan di upstream.rosalinux.ru . Sumber daya ini tidak didukung lagi (gunakan abi-tracker sebagai gantinya), tetapi Anda dapat melihat laporan untuk rilis lama perpustakaan.


2
Internal "ABI kernel" tidak mengatakan apa pun tentang kompatibilitas mundur aplikasi biner yang berjalan di linux. Paling-paling, ia mengatakan sesuatu tentang kompatibilitas sumber mundur modul kernel. Saya pikir ada perlindungan untuk mencegah Anda memuat modul yang dikompilasi untuk versi kernel yang berbeda.
DepressedDaniel
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.