ฉันอยากรู้ว่ามันเป็นไปได้ไหมที่จะเปลี่ยนเมล็ดตัวอย่างเช่นแทนที่เคอร์เนล Linux ของ Fedora ไปเป็น FreeBSD
ตอนนี้มีDebian GNU / kFreeBSDอยู่แล้ว เป็นไปได้ไหมที่ฉันจะปรับแต่ง distro Linux เพื่อให้มีเคอร์เนล BSD?
ฉันอยากรู้ว่ามันเป็นไปได้ไหมที่จะเปลี่ยนเมล็ดตัวอย่างเช่นแทนที่เคอร์เนล Linux ของ Fedora ไปเป็น FreeBSD
ตอนนี้มีDebian GNU / kFreeBSDอยู่แล้ว เป็นไปได้ไหมที่ฉันจะปรับแต่ง distro Linux เพื่อให้มีเคอร์เนล BSD?
คำตอบ:
ไม่เคอร์เนลแต่ละตัวใช้คุณสมบัติของตัวเองในแบบของตัวเอง มีความเข้ากันได้กับ POSIX จำนวนมาก แต่เมื่อคุณได้รับสิ่งที่จำเป็นต้องใช้ในการคอมไพล์ด้วยกลไกเคอร์เนล หลายโครงการมีซอร์สโค้ดที่ได้รับการคอมไพล์เท่านั้นถ้าคุณบอกอย่างชัดเจนว่าคุณกำลังรวบรวมสำหรับ FreeBSD หรือ Linux นั่นคือสิ่งที่ kFreeBSD เป็นหลัก เครื่องมือสนับสนุนเคอร์เนล FreeBSD แต่พวกเขาจะต้องรวบรวมมัน
ตัวอย่างเช่นหากคุณพยายามใช้epoll_create
สิ่ง FreeBSD จะไม่ทำงานตามที่คาดไว้
แน่นอนคุณสามารถรวบรวมเครื่องมือจากระบบ LFS สไตล์ BSD แต่นั่นอาจจะใช้ตลอดไป ไม่ง่ายเหมือนการรวบรวมเคอร์เนลใหม่
FreeBSD ไม่ใช้เคอร์เนล Linux - ตามชื่อแนะนำมันใช้เคอร์เนล BSD
เป็นไปได้ที่จะแทนที่เคอร์เนล Linux ด้วยเคอร์เนล Linux ที่แตกต่างกัน (อย่างใดอย่างหนึ่งที่คุณสร้างขึ้นเองหรือที่คุณแยกออกมาจากการกระจาย) โปรดทราบว่าโปรแกรมพื้นที่ผู้ใช้ในการแจกจ่ายของคุณอาจขึ้นอยู่กับคุณสมบัติของเคอร์เนลที่จะรวบรวมและอาจทำงานได้ไม่ถูกต้องหากคุณใช้งานบนเคอร์เนลที่สร้างโดยไม่มีคุณสมบัติเหล่านั้น ตัวอย่างเช่นการกระจายตาม systemd จะต้องมีกลุ่ม cg ในเคอร์เนล
สำหรับตัวอย่างที่คุณพูดถึงใช่การแจกจ่าย GNU สามารถสร้างได้สำหรับเคอร์เนล Linux หรือสำหรับเคอร์เนล BSD ในหลายกรณีมีความแตกต่างเวลารวบรวม (เช่น#ifdef
) ระหว่างโปรแกรมที่รวบรวมสำหรับทั้งสองแม้ว่าเมล็ดจะโฆษณา ABI เดียวกัน อย่างน้อยที่สุดไลบรารีระดับต่ำเช่น C Runtime Library ต้องรองรับเคอร์เนล ABIs ที่แตกต่างกัน
เคอร์เนลเป็นส่วนที่เป็นอิสระและจะถูกแทนที่เป็นประจำในระหว่างการอัปเดตระบบปฏิบัติการ ไดรเวอร์ที่เป็นกรรมสิทธิ์บางตัว (NVIDIA, ฯลฯ ) มีสคริปต์การติดตั้งที่แพตช์ไดรเวอร์ลงในซอร์สเคอร์เนลสร้างเคอร์เนลนั้นและแทนที่เคอร์เนลปัจจุบันด้วย ดังนั้นหากคุณพัฒนาเคอร์เนลเวอร์ชันของคุณเองที่สามารถทำงานได้ตามที่ต้องการทั้งหมดไม่น่าจะเป็นปัญหาใหญ่สำหรับการวางระบบไว้และปล่อยให้ระบบปฏิบัติการอื่น ๆ อย่างไรก็ตามส่วนใหญ่มักจะ "เคอร์เนลใหม่" มาจากรุ่นอย่างเป็นทางการล่าสุด
เคอร์เนล Solaris ได้รับการโอนย้ายด้วยวิธีนี้ในระดับหนึ่งส่งผลให้ OpenSolaris ใช้สภาพแวดล้อม Gnome
ถึงกระนั้นการใส่เคอร์เนลที่แตกต่างอย่างสิ้นเชิงก็คือความพยายามที่สำคัญเนื่องจากต้องเชื่อมต่อส่วนต่อประสาน นี่น่าจะต้องใช้การเขียนโปรแกรม C จำนวนมากและไม่ได้เป็นเพียงสคริปต์การสร้าง