Dapatkah saya mengambil kernel Linux dan menggunakannya dengan, katakanlah, FreeBSD dan sebaliknya (FreeBSD kernel, katakanlah, sebuah Debian)? Apakah ada jawaban universal? Apa batasannya? Apa saja halangannya?
linux
kernel
bsd
architecture
RonJohn
sumber
sumber
/proc
atau lonceng dan peluit khusus Linux.Jawaban:
Tidak, kernel dari implementasi berbeda dari sistem operasi Unix-style tidak dapat dipertukarkan, terutama karena mereka semua menghadirkan antarmuka yang berbeda ke seluruh sistem (ruang pengguna) - panggilan sistem mereka (termasuk
ioctl
spesifik), berbagai sistem file virtual yang mereka gunakan. ..Apa yang dapat dipertukarkan sampai batas tertentu, pada tingkat sumber, adalah kombinasi dari kernel dan pustaka C, atau lebih tepatnya, API tingkat pengguna yang dipaparkan oleh kernel dan pustaka (pada dasarnya, tampilan pada layer yang dijelaskan oleh POSIX, tanpa mempertimbangkan apakah itu adalah benar-benar POSIX). Contohnya termasuk Debian GNU / kFreeBSD , yang membangun sistem Debian di atas kernel FreeBSD, dan Debian GNU / Hurd , yang membangun sistem Debian di atas Hurd.
Ini tidak cukup pada tingkat pertukaran kernel, tetapi ada upaya untuk membakukan antarmuka aplikasi biner yang umum, untuk memungkinkan biner digunakan pada berbagai sistem tanpa perlu kompilasi ulang. Salah satu contohnya adalah Intel Binary Compatibility Standard , yang memungkinkan binari yang sesuai dengannya untuk berjalan pada sistem Unix yang menerapkannya, termasuk versi Linux yang lebih lama dengan lapisan iBCS 2. Saya menggunakan ini di akhir tahun 90an untuk menjalankan WordPerfect di Linux.
Lihat juga Cara membuat chroot FreeBSD di dalam Linux .
sumber
Beberapa kernel memiliki kompatibilitas biner yang memungkinkan Anda untuk mencampur program userspace dengan ABI yang berbeda (misalnya freebsd dapat bekerja dengan binari linux sampai tingkat tertentu) - namun, binari inti (misalnya program init, pemuat modul, alat pengaturan driver perangkat, pustaka C , alat yang diperlukan untuk mensetup sistem file ...) pada praktiknya memiliki terlalu banyak yang perlu diketahui tentang antarmuka level kernel untuk mem-boot sistem dengan kernel asing dengan sukses.
Juga, sistem file harus kompatibel. Juga, opsi kompatibilitas biner perlu dikompilasi "keras" ke dalam kernel - apa pun yang diimplementasikan sebagai modul kernel akan gagal karena Anda tidak dapat menjalankan pemuat modul.
Seperti disebutkan, lingkungan pengguna cenderung agak portabel jika Anda bersedia untuk mengkompilasi ulang - seperti sistem debian berbasis freebsd, atau pengaturan sistem pbssrc netbsd di linux (benar-benar non sepele, tetapi didukung dan mungkin!).
sumber