อะไรที่ทำให้ BSD สามารถใช้งานระบบปฏิบัติการลินุกซ์ได้ แต่ไม่กลับกัน?


42

อะไรที่ทำให้ BSD สามารถใช้งานไบนารี (และ Unix-like) อื่น ๆ ได้ แต่ Linux (และ Unix-like อื่น ๆ ส่วนใหญ่) ไม่สามารถเรียกใช้ไบนารี BSD ได้?


ไม่ทราบ แต่คำตอบอาจเกี่ยวข้องกับสิทธิ์ใช้งานของพวกเขา ฉันคิดว่า BSD ไม่เข้ากันได้กับ GPL และ Linux ส่วนใหญ่ก็ไม่ได้นำการโต้แย้ง BSD มาเป็นคำที่เงียบ

คำตอบ:


55

กลไกตลาด

มีโปรแกรมอื่น ๆ อีกมากมายที่มุ่งเป้าไปที่ Linux โดยเฉพาะที่ * BSD ซอร์สโค้ดซอฟต์แวร์จำนวนมากสามารถพกพาได้พอที่จะสามารถคอมไพล์ได้ทั้งคู่ แต่ผู้ผลิตซอฟท์แวร์จำนวนมากที่ส่งลีนุกซ์ลีนุกซ์ไม่สนใจที่จะทำเช่นนั้นสำหรับ BSD เนื่องจากมีส่วนแบ่งทางการตลาดที่เล็กกว่าลินุกซ์ ¹

หากชิ้นส่วนของซอฟต์แวร์มีเฉพาะในรูปแบบไบนารีสำหรับระบบปฏิบัติการอื่นการจำลอง ABI เป็นวิธีหนึ่งในการทำให้ทำงานซึ่งเป็นสิ่งที่ BSD ทำ

กาลครั้งหนึ่งเมื่อ x86 Unix ถือครองตลาดส่วนใหญ่บนลีนุกซ์คุณลักษณะiBCSถูกเพิ่มเข้ากับ Linux เพื่อให้สามารถรันไบนารีที่สร้างขึ้นสำหรับ SCO Unix และอื่น ๆ ความสนใจในฟีเจอร์นี้ลดลงเนื่องจากส่วนแบ่งการตลาดของลินุกซ์เพิ่มขึ้นดังนั้นจึงได้รับอนุญาตให้ตกอยู่ในสภาพทรุดโทรมในชุดพัฒนาลินุกซ์ 2.3 ³ คดี SCOช่วยนำคุณลักษณะนี้ออกจากลินุกซ์ บังคับให้เกิดคุณสมบัติ

ไม่มีเหตุผลทางเทคนิคว่าทำไม Linux ไม่สามารถรับคุณสมบัติคล้าย iBCS ในการใช้งานไบนารี BSD ได้ แต่ก็ไม่น่าเป็นไปได้เว้นแต่ว่าตำแหน่งทางการตลาดของ BSD และ Linux จะเปลี่ยนไปด้วยเหตุผลบางประการ

วันนี้มีการเรียกร้องสิ่งเล็กน้อยเช่นนี้ คุณรู้จักโปรแกรมแบบไบนารีเท่านั้นสำหรับ BSD ซึ่งยังไม่ได้สร้างสำหรับ Linux ต้องมีบางอย่าง แต่ฉันเดาที่สุดของพวกเขาสำหรับ BSDs ฝังตัวเช่นJunos คุณลักษณะดังกล่าวจะไม่ถูกสร้างขึ้นหากไม่อนุญาตให้มีชุดโปรแกรมที่สำคัญให้เรียกใช้บน Linux ที่ไม่สามารถใช้งานได้


เชิงอรรถ:

  1. ฉันไม่ได้นับ OS X เป็น BSD ที่นี่เนื่องจากเป็นปัญหาความเข้ากันได้แบบไบนารีแยกต่างหาก FreeBSD, OpenBSD และ NetBSD ใช้เอลฟ์บน x86 ในขณะที่ OS X ใช้รูปแบบการปฏิบัติการแตกต่างอย่างสิ้นเชิง การเชื่อมโยงแบบไดนามิกนั้นแตกต่างกันอย่างมากใน OS X มากกว่าใน x86 BSD แบบดั้งเดิม

    ดูคำถามนี้สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องความเข้ากันได้ไบนารีของ Linux ⇔ OS X

  2. FreeBSD ; OpenBSD ; NetBSD

  3. เช่นเดียวกับฉลามบางชนิดซอฟต์แวร์ที่หยุดการเคลื่อนที่ไปข้างหน้าจะตาย เราเรียกปรากฏการณ์นี้ว่าการหมุนเล็กน้อยแทนที่จะเกิดภาวะขาดอากาศหายใจเมื่อเกิดขึ้นกับซอฟต์แวร์ แต่สาเหตุและผลกระทบนั้นเหมือนกัน

  4. Contrast NDISwrapperซึ่งอนุญาตให้ Linux รันไดรเวอร์การ์ดเครือข่ายแบบไบนารีเท่านั้นที่เขียนขึ้นสำหรับ Windows XP จำเป็นต้องระบุและต้องการเติม สิ่งนี้จำเป็นต้องใช้ไบนารีของ BSD เท่านั้นหรือไม่


3
Linux มีโครงสร้างพื้นฐานในการดำเนินการไบนารีที่ไม่ใช่เจ้าของภาษาผ่านbinfmt_miscโมดูลซึ่งช่วยให้คุณสามารถลงทะเบียนตัวจัดการรูปแบบไบนารีโดยอำเภอใจได้ บางคนใช้แอปพลิเคชั่นโมโนด้วยวิธีนี้ถึงแม้ว่าฉันคิดว่ามันหายาก แต่อย่างที่คุณพูดไม่มีใครมีเหตุผลมากมายที่จะเขียน * bindmt handler * BSD
KutuluMike

มันมีประโยชน์จริงๆ ฉันแค่ดูคู่มือ FreeBSD (ก่อนถามคำถาม) และมันบอกว่า BSD สามารถจัดการกับ cross- * nix ไบนารีและ Linux ไม่สามารถทำได้ แต่มันไม่ได้อธิบาย แม้ว่าจะจริง ๆ แล้วฉันก็คาดหวังว่าจะมีเหตุผลทางเทคนิคมากกว่าที่จะเป็นสาเหตุของตลาด แต่จริงๆแล้วมันดูเหมือนว่าพวกเขา [เหตุผลทางเทคนิคและความนิยม] นั้นมีความสัมพันธ์ใกล้ชิดกับฉันมากกว่า
ไม่มีเวลา

3
โปรดทราบว่ามันไม่ได้เป็นเพียงเกี่ยวกับ BSD คุณเห็นแนวโน้มเดียวกันนี้ในทุก Unices: ย้อนกลับไปในวันนี้ Linux สามารถรันไบนารี Unix ได้ค่อนข้างมาก: iBCS รองรับ Solaris, 386BSD, FreeBSD, NetBSD, BSDI / 386, SVR4 (Interactive, Unixware, USL, Dell ฯลฯ ) , SVR3 ทั่วไป, SCO, SCO OpenServer 5, Wyse V / 386, Xenix V / 386, Xenix 286 และอาจมีบางคนอื่น ๆ ทุกวันนี้มันเป็นอีกทางหนึ่ง: Unices ที่ทันสมัยรองรับการใช้งานไบนารีของ Linux มีสองตัวอย่างมีคุณลักษณะนี้ก็ถือว่าดังนั้นสิ่งสำคัญที่ผู้ขายแม้กระทั่งนำมาใส่ในชื่อ! (IBM AIX 5L สำหรับ "Linux", HP-UX 11i สำหรับ "การรวม")
Jörg W Mittag

1
@ JörgWMittagไม่ว่า AIX 5L หรือ HP-UX 11i จะรัน Linux ไบนารีไม่พูดถึงว่าพวกเขาไม่สนับสนุนสถาปัตยกรรม x86 ตั้งแต่แรก สิ่งที่พวกเขาอาจมีคือสภาพแวดล้อมการพัฒนา GNU ที่ช่วยสร้างความสะดวกสบายในการสร้าง AIX, รองรับไบนารี HP-UX จากซอร์สโค้ด
jlliagre
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.