เป็นไปได้ไหมที่จะเปลี่ยนเคอร์เนลในระบบ UNIX / Linux?


16

ฉันอยากรู้ว่ามันเป็นไปได้ไหมที่จะเปลี่ยนเมล็ดตัวอย่างเช่นแทนที่เคอร์เนล Linux ของ Fedora ไปเป็น FreeBSD

ตอนนี้มีDebian GNU / kFreeBSDอยู่แล้ว เป็นไปได้ไหมที่ฉันจะปรับแต่ง distro Linux เพื่อให้มีเคอร์เนล BSD?


3
MacOSX เป็นเคอร์เนลที่ใช้ POSD ได้อย่างสมบูรณ์ตาม POSIX และแตกต่างจาก Linux ซึ่งอ้างว่าไม่ใช่ระบบ Unix OSX IS เป็นระบบ Unix (ได้รับการรับรองโดย The Open Group ซึ่งเป็นเจ้าของเครื่องหมายการค้า Unix) คุณไม่สามารถใช้ลินุกซ์ปพลิเคชันบน Mac และคุณไม่สามารถใช้ Mac ปพลิเคชันบน Linux แม้ว่าการทำงานทั้งบนซีพียู Intel (ดีในทางเทคนิค AMD64)
slebetman

คำตอบ:


21

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

ตัวอย่างเช่นหากคุณพยายามใช้epoll_createสิ่ง FreeBSD จะไม่ทำงานตามที่คาดไว้

แน่นอนคุณสามารถรวบรวมเครื่องมือจากระบบ LFS สไตล์ BSD แต่นั่นอาจจะใช้ตลอดไป ไม่ง่ายเหมือนการรวบรวมเคอร์เนลใหม่


1
ฉันต้องการฟังมุมมองของคุณในเคอร์เนล MOOLมีระบบปฏิบัติการที่ปรับใช้มันแล้ว BOSS linux
Sri Harsha Chilakapati

มันจะน่าสนใจที่จะเห็นว่ามีอะไรเกิดขึ้น แต่ฉันไม่ได้มองมันมากพอที่จะพูดอะไรที่ชาญฉลาดเกี่ยวกับมัน
Bratchley

1
ดังนั้นสิ่งที่คุณพูดคือถ้าฉันต้องการสร้างระบบ BSD ของผู้ใช้ GNU ฉันต้องคอมไพล์ซอฟต์แวร์ GNU ทั้งหมดใหม่สำหรับเคอร์เนล BSD ฉันถูกไหม?
เปลี่ยน

1
อะไรก็ตามที่ใช้ Linux-isms ซึ่งจะเป็นทุกอย่าง อาจจะง่ายกว่าที่จะเริ่มต้นด้วย kFreeBSD และไปจากที่นั่น
Bratchley

16

FreeBSD ไม่ใช้เคอร์เนล Linux - ตามชื่อแนะนำมันใช้เคอร์เนล BSD

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

สำหรับตัวอย่างที่คุณพูดถึงใช่การแจกจ่าย GNU สามารถสร้างได้สำหรับเคอร์เนล Linux หรือสำหรับเคอร์เนล BSD ในหลายกรณีมีความแตกต่างเวลารวบรวม (เช่น#ifdef) ระหว่างโปรแกรมที่รวบรวมสำหรับทั้งสองแม้ว่าเมล็ดจะโฆษณา ABI เดียวกัน อย่างน้อยที่สุดไลบรารีระดับต่ำเช่น C Runtime Library ต้องรองรับเคอร์เนล ABIs ที่แตกต่างกัน


Boost กล่าวถึงการเปลี่ยนแปลง C Runtime Library
Joshua

2

เคอร์เนลเป็นส่วนที่เป็นอิสระและจะถูกแทนที่เป็นประจำในระหว่างการอัปเดตระบบปฏิบัติการ ไดรเวอร์ที่เป็นกรรมสิทธิ์บางตัว (NVIDIA, ฯลฯ ) มีสคริปต์การติดตั้งที่แพตช์ไดรเวอร์ลงในซอร์สเคอร์เนลสร้างเคอร์เนลนั้นและแทนที่เคอร์เนลปัจจุบันด้วย ดังนั้นหากคุณพัฒนาเคอร์เนลเวอร์ชันของคุณเองที่สามารถทำงานได้ตามที่ต้องการทั้งหมดไม่น่าจะเป็นปัญหาใหญ่สำหรับการวางระบบไว้และปล่อยให้ระบบปฏิบัติการอื่น ๆ อย่างไรก็ตามส่วนใหญ่มักจะ "เคอร์เนลใหม่" มาจากรุ่นอย่างเป็นทางการล่าสุด

เคอร์เนล Solaris ได้รับการโอนย้ายด้วยวิธีนี้ในระดับหนึ่งส่งผลให้ OpenSolaris ใช้สภาพแวดล้อม Gnome

ถึงกระนั้นการใส่เคอร์เนลที่แตกต่างอย่างสิ้นเชิงก็คือความพยายามที่สำคัญเนื่องจากต้องเชื่อมต่อส่วนต่อประสาน นี่น่าจะต้องใช้การเขียนโปรแกรม C จำนวนมากและไม่ได้เป็นเพียงสคริปต์การสร้าง

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