เคอร์เนล Linux / Unix ต่างกันหรือไม่?


14

ฉันสามารถใช้เคอร์เนล Linux และใช้ร่วมกับพูด FreeBSD และในทางกลับกัน (เคอร์เนล FreeBSD พูดเป็น Debian) ได้หรือไม่ มีคำตอบสากลหรือไม่? ข้อ จำกัด คืออะไร? สิ่งกีดขวางคืออะไร?


5
ไม่ไม่อย่างแน่นอน การออกกำลังกายที่ดีคือการลองและดูว่ามันแตก คุณไม่สามารถแทนที่เคอร์เนล Linux ด้วยเคอร์เนล Linux ที่เก่ากว่าได้อย่างน่าเชื่อถือ การเปลี่ยนเครื่องมือ userland นั้นทำได้อย่างแน่นอน (ถ้าคอมไพล์ใหม่)
Kusalananda

3
debian.org/ports/kfreebsd-gnuและdebian.org/ports/hurdอาจสนใจคุณ
muru

@ Kisanananda เกี่ยวกับการเปลี่ยนเครื่องมือ userland การเปลี่ยนจาก BSD เป็น Linux อาจจะเจ็บปวด: เครื่องมือ BSD บางตัวค่อนข้างยากที่จะสร้างบนระบบที่ไม่ใช่ BSD ... ฉันเจอเครื่องมือหลายอย่างในช่วงหลายปีที่ฉันอยากจะพอร์ต แต่มันกลายเป็นเรื่องไม่สำคัญ: - /
Stephen Kitt

1
@StephenKitt สิ่งที่ตรงกันข้ามก็เป็นจริงเช่นกัน :-) โดยเฉพาะอย่างยิ่งเมื่อซอฟต์แวร์ทำการตั้งสมมติฐานเกี่ยวกับความสามารถในการเข้าถึง/procหรือระฆังและนกหวีดเฉพาะ Linux อื่น ๆ
Kusalananda

สิ่งที่คุณสามารถทำได้คือใช้เคอร์เนล x86_64 (ลินุกซ์) และบังคับให้ติดตั้งในการแจกจ่ายแบบ i386 32 บิต (สมมติว่าเป็นซีพียู 64 บิต intel และรองรับไบนารี 32 บิตที่คอมไพล์ด้วย) เป็นที่รู้จักกันดี แต่ไม่ชัดเจนในทันที ...
Radovan Garabík

คำตอบ:


39

ไม่เคอร์เนลจากการใช้ระบบปฏิบัติการ Unix แบบต่าง ๆ ไม่สามารถใช้แทนกันได้เนื่องจากพวกมันทั้งหมดนำเสนออินเตอร์เฟสที่แตกต่างกันไปยังส่วนที่เหลือของระบบ (พื้นที่ผู้ใช้) - การเรียกระบบของพวกเขา (รวมถึงioctlเฉพาะ) ระบบไฟล์เสมือนต่างๆ ..

สิ่งที่สามารถเปลี่ยนแปลงได้บ้างในระดับต้นทางคือการรวมกันของเคอร์เนลและไลบรารี C หรือค่อนข้าง API ระดับผู้ใช้ที่เคอร์เนลและไลบรารีเปิดเผย (โดยพื้นฐานแล้วคือมุมมองที่เลเยอร์ที่อธิบายโดย POSIX โดยไม่มี พิจารณาว่าเป็น POSIX จริงหรือไม่) ตัวอย่างของสิ่งนี้ ได้แก่ Debian GNU / kFreeBSDซึ่งสร้างระบบ Debian ที่ด้านบนของเคอร์เนล FreeBSD และDebian GNU / Hurdซึ่งสร้างระบบ Debian ที่ด้านบนของ Hurd

สิ่งนี้ไม่ได้อยู่ที่ระดับของความสามารถในการสับเปลี่ยนเคอร์เนล แต่มีความพยายามที่จะสร้างมาตรฐานของแอ็พพลิเคชันไบนารีอินเตอร์เฟสทั่วไปเพื่ออนุญาตให้ไบนารีใช้บนระบบต่าง ๆ โดยไม่จำเป็นต้องคอมไพล์ใหม่ ตัวอย่างหนึ่งคือมาตรฐานความเข้ากันได้ของ Intel Binaryซึ่งอนุญาตให้ไบนารีที่สอดคล้องกับมันทำงานบนระบบ Unix ใด ๆ ที่ใช้งานรวมถึง Linux เวอร์ชันเก่ากว่าด้วยเลเยอร์ iBCS 2 ฉันใช้สิ่งนี้ในช่วงปลายยุค 90 เพื่อเรียกใช้ WordPerfect บน Linux

ดูเพิ่มเติมวิธีการสร้างภายใน FreeBSD chroot ของลินุกซ์


1
บางคนมีความคิดเห็นที่แข็งแกร่งค่อนข้างเกี่ยวกับวิธีการที่สำคัญก็คือการเก็บเมล็ดและใช้ APIs ซิงค์ :)
tonysdg

4
แน่นอน @tonysdg และเชื่อฉันฉันรู้ทั้งหมดเกี่ยวกับเรื่องนั้น : - /
Stephen Kitt

@tonysdg ฉันไม่ได้รับหน้าในลิงค์ของคุณ (ยกเว้นว่าเป็นเรื่องตลกที่ฉันหายไป?)
mbrig

1
@mbrig: จนกระทั่งเมื่อวานมันอยู่ที่นั่น - นี่เป็นรุ่นเก็บถาวร: web.archive.org/web/20171102142621/http://…
tonysdg

@StephenKitt: Ouch :( ขออภัย !! แต่ความรุ่งโรจน์ที่สำคัญสำหรับการมีรหัสในเคอร์เนลเริ่มต้นด้วย!
tonysdg

4

เมล็ดบางตัวมีความเข้ากันได้แบบไบนารีช่วยให้คุณสามารถผสมโปรแกรม userspace กับ ABIs ที่แตกต่างกัน (เช่น freebsd สามารถทำงานกับ linux binaries ได้ในระดับหนึ่ง) - อย่างไรก็ตามไบนารีหลัก (เช่นโปรแกรม init, ตัวโหลดโมดูลเครื่องมือตั้งค่าไดรเวอร์อุปกรณ์) เครื่องมือที่จำเป็นในการติดตั้งระบบแฟ้ม ... ) ในทางปฏิบัติจะมีความจำเป็นมากที่จะต้องรู้เกี่ยวกับอินเตอร์เฟสระดับเคอร์เนลเพื่อบูตระบบด้วยเคอร์เนลต่างประเทศได้สำเร็จ

นอกจากนี้ระบบไฟล์จะต้องเข้ากันได้ นอกจากนี้ตัวเลือกความเข้ากันได้แบบไบนารีจะต้องรวบรวม "ยาก" ลงในเคอร์เนล - สิ่งที่นำมาใช้เป็นโมดูลเคอร์เนลต้องการล้มเหลวเพราะคุณไม่สามารถเรียกใช้โมดูลโหลด

ตามที่กล่าวไว้สภาพแวดล้อมของผู้ใช้มักจะค่อนข้างพกพาหากคุณยินดีที่จะคอมไพล์ซ้ำ - เช่นระบบเดเบียนที่ใช้ freebsd หรือตั้งค่าระบบ netbsd pkgsrc บน linux (ไม่ใช่เรื่องเล็กน้อย แต่สนับสนุนและเป็นไปได้!)

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