ไบนารีที่เก่าแก่ที่สุดทำงานบน Linux?


34

ในการสนทนาเกี่ยวกับความเข้ากันได้ย้อนหลังใน Linux kernel และ GUI ABIs Alan Cox กล่าวว่า " เคอร์เนล 3.6rc ของฉันจะยังคงใช้ Rogue binary ที่สร้างขึ้นในปี 1992 X กลับเข้ากันได้กับแอพที่เก่ากว่า Linux "

ดังนั้นวิธีที่เข้ากันได้ย้อนหลังเป็น Linux Application binary interfaces ?

อะไรคือไบนารีที่รันได้ที่เก่าแก่ที่สุดที่เขียนจริงและรวบรวมเมื่อหลายปีก่อนที่จะยังคงทำงานบนการกระจายลีนุกซ์สำหรับจุดประสงค์ทั่วไปที่ทันสมัย?

ฉันแน่ใจว่าคำเหล่านั้นทั้งหมดอาจมีการตีความ ความคิดหลักของฉันคือมันไม่ยุติธรรมที่จะเรียกใช้ผ่านเครื่องจำลองหรือเครื่องเสมือนพิเศษหรือนักแปลไบนารี่ แต่สิ่งเหล่านี้บางอย่างอาจถูกสร้างขึ้นใน distros ที่ทันสมัยและการเรียนรู้เกี่ยวกับสิ่งนั้นเป็นส่วนหนึ่งของความสนุกที่นี่

การเปลี่ยนแปลงตามสถาปัตยกรรมฮาร์ดแวร์รูปแบบไฟล์ที่ปฏิบัติการได้ภาษาและการพึ่งพาการโหลดแบบไดนามิกของไลบรารีที่สำคัญก็เป็นที่สนใจเช่นกัน

หมายเหตุเมื่อกฎผ่อนคลายนี่เป็นตัวอย่างหนึ่งของการย้อนกลับ หน้า 2002 Web เล่น a.out executables บน Red Hat Linux ทันสมัยการเจรจาเกี่ยวกับการใช้มันเก่าลินุกซ์ก่อนเอลฟ์ a.out รูปแบบ executables หลังจากทำmodprobe binfmt_aout และได้รับ/lib/ld.soและlibc.so.4 อีกครั้งว่าที่น่าสนใจต่อพ่วงสำหรับคำถามนี้ แต่แสดงให้เห็นถึงประเภทของสิ่งที่ สามารถมีส่วนร่วมเมื่อขุดเพิ่มเติมกลับ

อัปเดตสำหรับแฟน ๆ BSD ของคุณมันเป็นเรื่องดีที่จะเห็นว่า iBCS2 สนับสนุนแอป Xenix เก่า (เช่น zork / dungeon-2.5.6 จาก 1990) และแอป SCO OpenServer 5.0.x เป็น NetBSD 4.0.1 ล่าสุด (จากปี 2008): iBCS2 & NetBSD | ขอให้สนุกกับการทำงานแบบเสมือน แต่ดูเหมือนว่าจะแตกใน NetBSD 5.0.x

อัปเดต 2 : หนึ่งปีต่อมาหลังจากได้รับป้าย "ผู้ประกาศข่าว" สำหรับคำถามนี้ฉันยังคงต้องการคำตอบ และเพื่อให้ความกระจ่างเนื่องจากนี่เป็นเรื่องเกี่ยวกับ API จึงควรเป็นไบนารี "ของจริง" (ความยาวไม่เป็นศูนย์) ซึ่งยังคงใช้งานได้อย่างน้อยในแบบดั้งเดิม


6
IBCSควรให้คุณเรียกใช้ไบนารีที่เก่ากว่า Linux สองสามปี
Gilles 'หยุดความชั่วร้าย'

ฉันประหลาดใจที่ไม่เห็นแท็ก "ABI" และฉันยังไม่สามารถสร้างได้ ดังนั้นเพิ่มว่าถ้าคุณคิดว่ามันสมเหตุสมผล
nealmcb

@Gilles ดูเหมือนว่า iBCS ค่อนข้างล้าสมัย เช่นมันถูกแทนที่ด้วย "Linux ABI" บางทีทศวรรษที่ผ่านมา (Linux ABI- การใช้ Unix ไบนารีบน Linux ) และรุ่นล่าสุดของ linux-abi น่าจะเป็นจากปี 2002 สำหรับ 2.4.18: kernel.org/pub/linux /kernel/people/hch/linux-abi/v2.4
nealmcb

1
1981 ไบนารีของ Zork ทำงานบนของไอบีเอ็มเมล์ / 370 และทำให้สันนิษฐาน Z ปัจจุบันของพวกเขา / VM: Zork - คอมพิวเตอร์ประวัติวิกิพีเดีย และไบนารีของ Zork ในปี 1978 ทำงานบน RT-11 ถ้าคุณสามารถหามันได้ ....
nealmcb

3
+1 ฉันอ่านข้อความนี้เมื่อสัปดาห์ที่แล้วเช่นกันและสงสัยว่ามันจะเปิดขึ้นที่นี่หรือไม่
ไมเคิล

คำตอบ:


11

ฉันคิดว่า / bin / จริงต้องเป็นงานที่เก่าแก่ที่สุด ..

ทีนี้, คุณเรียกไฟล์ไบนารี่เป็นไบท์ได้ไหม?

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

1
น่ารัก คุณรู้หรือไม่ว่า / bin / true ถูกแจกจ่ายเป็นไฟล์ความยาวเป็นศูนย์และถ้าเป็นเช่นนั้นเมื่อใดและที่ไหน สำหรับรอยยิ้มดูSolaris / bin / true - ฟอรัม
TDWTF

3
@nealmcb - มีโปรแกรม 0 ไบต์ที่เรียกใช้go.comสำหรับทั้ง CP / M และ DOS ที่จะเรียกใช้ไฟล์ COM ล่าสุดอีกครั้ง ดังนั้นมันก็ขายได้ ดังนั้นในความเป็นจริงมันถือกำเนิด Linux มันเพิ่งเปลี่ยนสิ่งที่ทำเมื่อมันกระโดดแพลตฟอร์ม พูดคุยเกี่ยวกับความเข้ากันได้ย้อนหลัง! เรามีโปรแกรม CP / M, DOS และ * nix ที่ทำงานพร้อมกันทั้งหมด
Jeremy J Starcher

มันเป็นพฤติกรรมที่แปลก - รันไฟล์ COM ล่าสุด .... อย่างไรก็ตามฉันยังคงมองหาไบนารี "ของจริง" (ความยาวไม่เป็นศูนย์) ซึ่งยังคงใช้งานได้เป็นอย่างน้อยในแบบดั้งเดิม
nealmcb

ที่น่าสนใจนี้ทำงานใน POSIX เปลือกและ csh แต่ก็ล้มเหลวในการ zsh:zsh: exec format error
มาร์โก

เพียงเพื่อความกระจ่างในขณะที่ฉันรักการอภิปรายด้านนี้ฉันไม่คิดว่านี่เป็นคำตอบที่ถูกต้องเพราะมันไม่ใช่ "เขียนจริงและรวบรวมเมื่อหลายปีก่อน" ฉันถามเกี่ยวกับความเข้ากันได้ของ ABI
nealmcb

2

ดังนั้นวิธีที่เข้ากันได้ย้อนหลังเป็น Linux Application binary interfaces?

คุณสามารถดูรายงานการวิเคราะห์สำหรับ Linux kernel ABI ได้ที่นี่ (2.6.36-4.4.5 เวอร์ชั่น):

ป้อนคำอธิบายรูปภาพที่นี่

รายงานเดียวกับที่คุณสามารถค้นหาสำหรับไลบรารีฐาน Linux หลายแห่งในหน้านี้ (Glibc, Qt, cairo, ... ) ความเข้ากันได้แบบไบนารีย้อนหลังถูกประเมินสำหรับแต่ละรุ่นเป็นร้อยละดังนั้นคุณสามารถสรุปความเข้ากันได้ของ ABI โดยรวมสำหรับแต่ละไลบรารี:

ป้อนคำอธิบายรูปภาพที่นี่

มีรายงานเพิ่มเติมอีกประมาณ 700 ไลบรารี่ Linux ที่คุณสามารถหาได้จากupstream.rosalinux.ru ทรัพยากรนี้ไม่ได้รับการสนับสนุนอีกต่อไป (ใช้abi-trackerแทน) แต่คุณสามารถดูรายงานสำหรับไลบรารีรุ่นเก่า


2
เคอร์เนล ABI ภายในไม่ได้พูดถึงความเข้ากันได้แบบย้อนหลังของแอปพลิเคชั่นไบนารีที่ทำงานบน linux อย่างมากมันบอกบางอย่างเกี่ยวกับความเข้ากันได้ของแหล่งย้อนกลับของโมดูลเคอร์เนล ฉันคิดว่ามีมาตรการป้องกันเพื่อป้องกันไม่ให้คุณโหลดโมดูลที่คอมไพล์สำหรับเคอร์เนลเวอร์ชันอื่น
DepaniDaniel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.