लिनक्स पर काम करने वाला सबसे पुराना बाइनरी?


34

लिनक्स कर्नेल और जीयूआई एबीआई में बैकवर्ड-संगतता पर एक चर्चा में , एलन कॉक्स ने नोट किया कि " मेरे 3.6rc कर्नेल अभी भी 1992 में निर्मित एक दुष्ट बाइनरी चलाएंगे। एक्स लिनक्स के मुकाबले कहीं अधिक पुराने ऐप्स के अनुकूल है। "

तो बस कैसे पिछड़े-संगत लिनक्स अनुप्रयोग बाइनरी इंटरफेस हैं ?

वास्तव में वर्षों पहले लिखा और संकलित सबसे पुराना बाइनरी निष्पादन योग्य क्या है, जो अभी भी एक आधुनिक स्टॉक सामान्य प्रयोजन लिनक्स वितरण पर चलेगा?

मुझे यकीन है कि वे सभी शब्द व्याख्या के अधीन हैं। मेरी मुख्य धारणा यह है कि इसे किसी एमुलेटर या विशेष वर्चुअल मशीन या बाइनरी ट्रांसलेटर के माध्यम से चलाना उचित नहीं है, लेकिन कुछ ऐसी चीजें संभवत: कुछ आधुनिक विकृतियों में निर्मित होती हैं, और इसके बारे में सीखना यहाँ मज़े का हिस्सा है।

हार्डवेयर आर्किटेक्चर, निष्पादन योग्य फ़ाइल प्रारूप , भाषा, और प्रमुख पुस्तकालय गतिशील लोडिंग निर्भरता द्वारा भिन्नताएं भी रुचि के हैं।

ध्यान दें, जब नियमों में ढील दी जाती है, तो यहां एक और उदाहरण दिया गया है। 2002 का वेब पेज आधुनिक रेड हैट लिनक्स पर a.out निष्पादनों पर चल रहा है जो वास्तव में पुराने लिनक्स पूर्व-ELF a.out- प्रारूप निष्पादक का उपयोग करने modprobe binfmt_aout और प्राप्त करने के बाद के बारे में बात करता है /lib/ld.soऔर libc.so.4 फिर से इस प्रश्न के लिए परिधीय हित है, लेकिन चीजों के प्रकार को दिखाता है आगे खुदाई करने पर शामिल किया जा सकता है।

आपके लिए BSD प्रशंसकों के लिए अपडेट , यह देखकर बहुत अच्छा लगा कि iBCS2 पुराने Xenix ऐप (जैसे कि 1990 से zork / dungeon-2.5.6) और SCO OpenServer 5.0.x ऐप को हाल ही में NetBSD 4.0.1 (2008 से): iBCS2 और के रूप में समर्थन कर रहा था। नेटबीएसडी | वर्चुअलाइजेशन के साथ मज़ा । लेकिन वही बात NetBSD 5.0.x में टूटी हुई लगती है।

अपडेट 2 : एक साल बाद, इस प्रश्न के लिए एक "उद्घोषक" बैज मिलने के बाद भी, मैं अभी भी उत्तर की तलाश में हूं। और स्पष्ट करने के लिए, चूंकि यह एपीआई के बारे में है, इसलिए इसे "वास्तविक" बाइनरी (गैर-शून्य लंबाई) होना चाहिए, जो अभी भी कम से कम मूल तरीके से काम करता है।


6
IBCS को आपको उन बायनेरिज़ को चलाने देना चाहिए जो लिनक्स से कुछ साल बड़ी हैं।
गाइल्स का SO- बुराई पर रोक '22

मुझे "एबीआई" टैग नहीं देखकर आश्चर्य हुआ, और मैं अभी तक एक भी नहीं बना सका। इसलिए जोड़ें कि यदि आपको लगता है कि यह समझ में आता है।
23

@ गिल्स ऐसा लगता है कि iBCS बल्कि पुराना है। उदाहरण के लिए, इसे शायद एक दशक पहले "लिनक्स एबीआई" द्वारा बदल दिया गया था ( लिनक्स एबीआई- लिनक्स पर अन्य यूनिक्स बायनेरिज़ का उपयोग करके ) और लिनक्स-एबी का सबसे हालिया संस्करण 2002 से 2.4.18 के लिए लगता है: kernel.org/pub.linux / कर्नेल
लोग /

1
1981 का ज़ोर्क बाइनरी आईबीएम के वीएम / 370 पर चलता है और इस तरह उनके वर्तमान z / VM: ज़ोर्क - कंप्यूटर हिस्ट्री विकी । और 1978 का ज़ोर्क बाइनरी आरटी -11 पर चलता है अगर आप पा सकते हैं कि ....
nealmcb

3
+1 मैंने पिछले सप्ताह भी इस उद्धरण को पढ़ा, और सोचा कि क्या यह यहाँ आएगा।
माइकल

जवाबों:


11

मुझे लगता है कि / बिन / सच को सबसे पुराना काम करना पड़ता है।

क्या आप जीरो-बाइट फाइल को बाइनरी कह सकते हैं?

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

1
प्यारा। क्या आपको पता है कि / बिन / सच को शून्य-लंबाई फ़ाइल के रूप में वितरित किया गया है, और यदि ऐसा है तो कब और कहाँ? Grins के लिए, Solaris / bin / true - TDWTF फ़ोरम
nealmcb

3
@nealmcb - एक 0-बाइट प्रोग्राम था जो go.comCP / M और DOS दोनों के लिए कहा गया था, जो पिछले COM फ़ाइल को लोड करेगा। तो, यह भी बेच दिया गया था। तो, वास्तव में, यह लिनक्स से पहले होता है। जब उसने प्लेटफार्म पर छलांग लगाई तो उसने बस यही किया। पीछे संगतता के बारे में बात करो! हमारे पास एक सीपी / एम, डॉस और * निक्स प्रोग्राम है जो सभी एक साथ चल रहे हैं।
जेरेमी जे स्टारचेर सेप

क्या अजीब व्यवहार है - आखिरी COM फ़ाइल चलाएं .... वैसे भी, मैं अभी भी "वास्तविक" बाइनरी (गैर-शून्य लंबाई) की तलाश कर रहा हूं, जो अभी भी कम से कम मूल तरीके से काम करता है।
nealmcb

दिलचस्प रूप से यह एक POSIX खोल और csh में काम करता है, लेकिन यह zsh में विफल रहता है:zsh: exec format error
Marco

स्पष्टीकरण के लिए, जबकि मैं इस पक्ष-चर्चा से प्यार करता हूं, मैं इसे एक वैध उत्तर नहीं मानता, क्योंकि यह "वास्तव में लिखित और संकलित नहीं" था। मैं ABI संगतता के बारे में पूछ रहा हूं।
nealmcb

2

तो बस कैसे पिछड़े-संगत लिनक्स अनुप्रयोग बाइनरी इंटरफेस हैं?

आप लिनक्स कर्नेल ABI के लिए विश्लेषण रिपोर्ट यहाँ देख सकते हैं (2.6.36-4.4.5 संस्करण):

यहाँ छवि विवरण दर्ज करें

एक ही रिपोर्ट आप इस पृष्ठ पर कई लिनक्स बेस लाइब्रेरी (ग्लिबक, क्यूटी, कैरो, ...) के लिए पा सकते हैं। पर्केंट्स में प्रत्येक रिलीज के लिए बैकवर्ड बाइनरी संगतता का अनुमान लगाया गया है, इसलिए आप प्रत्येक लाइब्रेरी के लिए समग्र एबीआई संगतता पर निष्कर्ष निकाल सकते हैं:

यहाँ छवि विवरण दर्ज करें

लगभग 700 लिनक्स पुस्तकालयों के लिए बहुत अधिक रिपोर्ट आप upstream.rosalinux.ru पर पा सकते हैं । यह संसाधन अब समर्थित नहीं है ( इसके बजाय अबी-ट्रैकर का उपयोग करें), लेकिन आप पुस्तकालयों की पुरानी रिलीज़ के लिए रिपोर्ट देख सकते हैं।


2
आंतरिक "कर्नेल एबीआई" बाइनरी अनुप्रयोगों के लिनक्स पर चलने वाले पिछड़े संगतता के बारे में कुछ नहीं कहता है। अधिकतम पर, यह कर्नेल मॉड्यूल के पिछड़े स्रोत संगतता के बारे में कुछ कहता है। मुझे लगता है कि अलग कर्नेल संस्करण के लिए संकलित लोडिंग मॉड्यूल को रोकने के लिए आपके पास सुरक्षा उपाय हैं।
डिप्डडेनियल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.