GNU/Linux >> Belajar Linux >  >> Linux

Apakah kernel Linux/Unix yang berbeda dapat dipertukarkan?

Tidak, kernel dari implementasi yang berbeda dari sistem operasi gaya Unix 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 diekspos oleh kernel dan pustaka (pada dasarnya, tampilan pada lapisan yang dijelaskan oleh POSIX, tanpa mempertimbangkan apakah itu adalah sebenarnya 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 biner aplikasi umum, untuk memungkinkan biner digunakan pada berbagai sistem tanpa perlu kompilasi ulang. Salah satu contohnya adalah Standar Kompatibilitas Biner Intel, yang memungkinkan binari yang menyesuaikannya untuk berjalan di sistem Unix yang mengimplementasikannya, termasuk versi Linux yang lebih lama dengan lapisan iBCS 2. Saya menggunakan ini di akhir tahun 90-an untuk menjalankan WordPerfect di Linux.

Lihat juga Cara membuat chroot FreeBSD di dalam Linux.


Beberapa kernel memiliki kompatibilitas biner yang memungkinkan Anda menggabungkan program ruang pengguna dengan ABI yang berbeda (mis. freebsd dapat bekerja dengan binari linux sampai tingkat tertentu) - namun, binari inti (mis. program init, pemuat modul, alat penyiapan driver perangkat, pustaka C , alat yang diperlukan untuk menyiapkan sistem file... ) dalam praktiknya akan memiliki terlalu banyak hal yang perlu diketahui tentang antarmuka level kernel untuk mem-boot sistem dengan kernel asing dengan sukses.

Selain itu, sistem file harus kompatibel. Selain itu, 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 ingin mengkompilasi ulang - seperti sistem debian berbasis freebsd, atau menyiapkan sistem pkgsrc netbsd di linux (sama sekali tidak sepele, tetapi didukung dan mungkin!).


Linux
  1. Apa saja Jenis Shell yang Berbeda di Linux?

  2. Perbedaan Utama Linux Vs UNIX Kernel

  3. UNIX / Linux :Apa itu Shell? Apa Shells yang berbeda?

  1. Panggilan sistem Linux tercepat

  2. Mengapa mirip Linux Unix jika kernelnya monolitik?

  3. Mengapa nomor panggilan sistem Linux di x86 dan x86_64 berbeda?

  1. Bagaimana menangani kepanikan kernel Linux

  2. Linux – Apa Cara Berbeda Untuk Mengatur Izin File Dll Di Gnu/linux?

  3. Linux – Metode Panggilan Sistem di Kernel Baru?