Apakah kernel Linux / Unix yang berbeda dapat dipertukarkan?

14

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?

RonJohn
sumber
5
Tidak, sama sekali tidak. Latihan yang baik adalah dengan mencobanya dan melihat bagaimana istirahatnya. Anda bahkan tidak bisa mengganti kernel Linux dengan kernel Linux yang jauh lebih tua andal. Mengganti alat userland pasti bisa dilakukan (jika dikompilasi ulang).
Kusalananda
3
debian.org/ports/kfreebsd-gnu dan debian.org/ports/hurd mungkin menarik bagi Anda
muru
@ Kusalananda mengenai penggantian alat-alat userland, beralih dari BSD ke Linux bisa menyakitkan: beberapa alat BSD cukup sulit untuk dibangun di atas sistem non-BSD ... Saya telah menemukan beberapa alat selama bertahun-tahun yang ingin saya port , tetapi ternyata tidak sepele: - /.
Stephen Kitt
1
@StephenKitt Kebalikannya juga benar :-) Terutama ketika perangkat lunak membuat asumsi tentang dapat mengakses /procatau lonceng dan peluit khusus Linux.
Kusalananda
Yang dapat Anda lakukan adalah mengambil kernel x86_64 (linux) dan menginstalnya secara paksa pada distribusi i386 32-bit (dengan asumsi CPU Intel 64-bit dan dukungan untuk binari 32-bit yang dikompilasi dalam). Ini cukup terkenal, tetapi tidak segera jelas ...
Radovan Garabík

Jawaban:

39

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 ioctlspesifik), 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 .

Stephen Kitt
sumber
1
Beberapa orang memiliki pendapat yang cukup kuat tentang betapa pentingnya menjaga
sinkronisasi
4
Memang @tonysdg, dan percayalah, saya tahu semua tentang itu : - /.
Stephen Kitt
@tonysdg Saya mendapatkan halaman yang tidak ditemukan di tautan Anda. (Kecuali kalau itu lelucon, aku hilang?)
mbrig
1
@ mbrig: Sampai kemarin, itu ada di sana - ini adalah versi yang diarsipkan: web.archive.org/web/20171102142621/http://…
tonysdg
@StephenKitt: Aduh :( Maaf !! Tapi pujian utama bahkan untuk memiliki kode di kernel untuk memulai dengan!
tonysdg
4

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!).

pemeras dan prajurit
sumber