Nhị phân cũ nhất làm việc trên Linux?


34

Trong một cuộc thảo luận về khả năng tương thích ngược trong kernel Linux và GUI ABIs , Alan Cox lưu ý rằng " kernel 3.6rc của tôi vẫn sẽ chạy nhị phân Rogue được xây dựng vào năm 1992. X tương thích trở lại với các ứng dụng cũ hơn Linux. "

Vì vậy, các giao diện nhị phân của Ứng dụng Linux tương thích ngược như thế nào ?

Hệ thống nhị phân lâu đời nhất, thực sự được viết và biên dịch từ nhiều năm trước, vẫn sẽ chạy trên bản phân phối Linux cho mục đích chung hiện đại?

Tôi chắc chắn tất cả những từ đó có thể giải thích. Quan niệm chính của tôi là không công bằng khi chạy nó thông qua trình giả lập hoặc máy ảo chuyên dụng hoặc trình dịch nhị phân, nhưng một số thứ như vậy có thể được tích hợp vào một số bản phân phối hiện đại và tìm hiểu về điều đó là một phần thú vị ở đây.

Biến thể theo kiến ​​trúc phần cứng, định dạng tệp thực thi , ngôn ngữ và phụ thuộc tải động thư viện chính cũng được quan tâm.

Lưu ý, khi các quy tắc được nới lỏng, đây là một ví dụ về việc quay lại. Trang web năm 2002 Chạy các chương trình thực thi a.out trên Red Hat Linux hiện đại nói về việc sử dụng các thực thi định dạng ELF a.out thực sự cũ của Linux sau khi thực hiện modprobe binfmt_aout và lấy lại /lib/ld.solibc.so.4 đó là mối quan tâm ngoại vi cho câu hỏi này, nhưng minh họa các loại điều mà có thể tham gia khi đào sâu trở lại.

Cập nhật cho người hâm mộ BSD của bạn, thật tuyệt khi thấy iBCS2 đã hỗ trợ các ứng dụng Xenix cũ (như zork / dungeon-2.5.6 từ năm 1990) và các ứng dụng SCO OpenServer 5.0.x gần đây như NetBSD 4.0.1 (từ 2008): iBCS2 & NetBSD | Vui với ảo hóa . Nhưng điều tương tự dường như bị phá vỡ trong NetBSD 5.0.x.

Cập nhật 2 : Một năm sau, sau khi nhận được huy hiệu "Phát thanh viên" cho câu hỏi này, tôi vẫn đang tìm câu trả lời. Và để làm rõ, vì đây là về API, nó phải là một nhị phân "thực" (độ dài khác không), mà ít nhất vẫn hoạt động chủ yếu theo cách ban đầu.


6
IBCS nên cho phép bạn chạy các tệp nhị phân cũ hơn Linux vài năm.
Gilles 'SO- ngừng trở nên xấu xa'

Tôi đã rất ngạc nhiên khi không thấy thẻ "ABI" và tôi chưa thể tạo thẻ. Vì vậy, thêm rằng nếu bạn nghĩ rằng nó có ý nghĩa.
nealmcb

@Gilles Có vẻ như iBCS đã lỗi thời. Ví dụ, nó đã được thay thế bằng "Linux ABI" có lẽ một thập kỷ trước ( Linux ABI- Sử dụng các nhị phân Unix khác trên Linux ) và phiên bản mới nhất của linux-abi dường như là từ năm 2002 cho 2.4,18: kernel.org/pub/linux /kernel/people/hch/linux-abi/v2.4
nealmcb

1
Một nhị phân Zork năm 1981 chạy trên VM / 370 của IBM và do đó có lẽ là z / VM hiện tại của họ: Zork - Wiki Lịch sử Máy tính . Và một nhị phân Zork năm 1978 chạy trên RT-11 nếu bạn có thể tìm thấy ....
nealmcb

3
+1 Tôi cũng đã đọc trích dẫn này vào tuần trước và tự hỏi liệu nó có xuất hiện ở đây không.
Michael

Câu trả lời:


11

Tôi nghĩ rằng / bin / true phải là công việc lâu đời nhất ..

Chà, bạn có thể gọi một tệp 0 byte là nhị phân không?

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

1
Dễ thương. Bạn có biết / bin / true đã được phân phối dưới dạng tệp có độ dài không và nếu có thì khi nào và ở đâu? Để biết thông tin chi tiết, hãy xem Solaris / bin / true - Diễn đàn
TDWTF

3
@nealmcb - Có một chương trình 0 byte được gọi go.comcho cả CP / M và DOS sẽ chạy lại tệp COM cuối cùng được tải. Vì vậy, nó thậm chí đã được bán. Vì vậy, trên thực tế, nó có trước Linux. Nó chỉ thay đổi những gì nó đã làm khi nó nhảy nền tảng. Nói về khả năng tương thích ngược! Chúng tôi có một chương trình CP / M, DOS và * nix chạy cùng một lúc.
Jeremy J Starcher

Thật là một hành vi kỳ quặc - chạy tệp COM cuối cùng .... Dù sao, tôi vẫn đang tìm kiếm một nhị phân "thực" (độ dài khác không), mà ít nhất vẫn hoạt động theo cách ban đầu.
nealmcb

điều thú vị là nó hoạt động trong vỏ POSIX và csh, nhưng nó không thành công trong zsh:zsh: exec format error
Marco

Chỉ để làm rõ, trong khi tôi thích cuộc thảo luận phụ này, tôi không coi đây là một câu trả lời hợp lệ, vì nó không thực sự được viết và biên soạn từ nhiều năm trước. Tôi đang hỏi về khả năng tương thích ABI.
nealmcb

2

Vì vậy, các giao diện nhị phân của Ứng dụng Linux tương thích ngược như thế nào?

Bạn có thể xem báo cáo phân tích cho nhân Linux ABI tại đây (phiên bản 2.6.36-4.4.5):

nhập mô tả hình ảnh ở đây

Báo cáo tương tự bạn có thể tìm thấy cho một số thư viện cơ sở Linux trên trang này (Glibc, Qt, cairo, ...). Khả năng tương thích nhị phân ngược được ước tính cho mỗi bản phát hành theo phần trăm, vì vậy bạn có thể đưa ra kết luận về khả năng tương thích ABI tổng thể cho mỗi thư viện:

nhập mô tả hình ảnh ở đây

Nhiều báo cáo hơn cho khoảng 700 thư viện Linux mà bạn có thể tìm thấy trên upstream.rosalinux.ru . Tài nguyên này không được hỗ trợ nữa ( thay vào đó hãy sử dụng abi-tracker ), nhưng bạn có thể xem các báo cáo cho các bản phát hành cũ của các thư viện.


2
"Hạt nhân ABI" nội bộ không nói gì về khả năng tương thích ngược của các ứng dụng nhị phân chạy trên linux. Nhiều nhất, nó nói điều gì đó về khả năng tương thích nguồn ngược của các mô-đun hạt nhân. Tôi nghĩ có những biện pháp bảo vệ tại chỗ để ngăn bạn tải các mô-đun được biên dịch cho một phiên bản kernel khác.
Trầm
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.