Apakah mungkin untuk mengubah kernel dalam sistem UNIX / Linux?

16

Saya ingin tahu apakah mungkin untuk mengubah kernel, misalnya, mengganti kernel Linux Fedora dengan kernel FreeBSD.

Sekarang, sudah ada GNU / kFreeBSD Debian . Apakah mungkin bagi saya untuk menyesuaikan distro Linux yang mengandung kernel BSD?

Beralih
sumber
3
MacOSX adalah kernel berbasis BSD yang sepenuhnya sesuai dengan POSIX. Dan tidak seperti Linux, yang mengaku bukan sistem Unix, OSX IS sistem Unix (disertifikasi oleh The Open Group yang memiliki merek dagang Unix). Anda tidak dapat menjalankan aplikasi Linux di Mac dan Anda tidak dapat menjalankan aplikasi Mac di Linux meskipun keduanya berjalan pada Intel CPU (well, secara teknis AMD64)
slebetman

Jawaban:

21

Tidak, setiap kernel mengimplementasikan fitur-fiturnya sendiri dengan caranya sendiri. Ada sejumlah besar kompatibilitas POSIX tetapi setelah Anda keluar dari itu executable perlu dikompilasi dengan mekanisme kernel yang sudah ada. Banyak proyek berisi kode sumber yang hanya dikompilasi jika Anda secara eksplisit mengatakan bahwa Anda sedang mengkompilasi untuk FreeBSD atau Linux. Itulah dasarnya kFreeBSD. Alat-alat mendukung kernel FreeBSD tetapi mereka harus dikompilasi untuk itu.

Sebagai contoh, jika Anda mencoba menggunakan epoll_createFreeBSD hal-hal tidak akan berfungsi seperti yang diharapkan.

Tentu saja, Anda dapat mengkompilasi silang alat-alat dari sistem BSD LFS-style tetapi itu akan memakan waktu selamanya. Tidak sesederhana kompilasi kernel baru.

Bratchley
sumber
1
Saya ingin mendengar pandangan Anda tentang kernel MOOL , sudah ada OS yang mengadaptasinya, BOSS linux.
Sri Harsha Chilakapati
Akan menarik untuk melihat apa yang datang dari itu, tetapi saya belum melihatnya cukup untuk mengatakan sesuatu yang cerdas tentang itu
Bratchley
1
Jadi, apa yang Anda katakan adalah, jika saya ingin membuat sistem BSD berbasis pengguna GNU, saya harus mengkompilasi ulang semua perangkat lunak GNU untuk kernel BSD. Apakah saya benar?
Beralih
1
Apa pun yang menggunakan Linux-isme yang akan menjadi segalanya. Mungkin lebih mudah untuk memulai dengan kFreeBSD dan pergi dari sana.
Bratchley
16

FreeBSD tidak menggunakan kernel Linux - seperti namanya, ia menggunakan kernel BSD.

Dimungkinkan untuk mengganti kernel Linux dengan kernel Linux yang berbeda (baik yang Anda buat sendiri atau yang Anda ekstrak dari suatu distribusi). Perlu diketahui bahwa program ruang pengguna dalam distribusi Anda mungkin bergantung pada fitur kernel tertentu untuk dikompilasi, dan mungkin tidak berfungsi dengan baik jika Anda menjalankannya pada kernel yang dibangun tanpa fitur-fitur tersebut. Sebagai contoh, distribusi berbasis systemd akan membutuhkan cgroup di kernel.

Sebagai contoh yang Anda sebutkan, ya distribusi GNU dapat dibangun untuk kernel Linux atau untuk kernel BSD. Dalam banyak kasus, ada perbedaan waktu kompilasi (misalnya #ifdef) antara program yang dikompilasi untuk keduanya, bahkan jika kernel mengiklankan ABI yang sama. Minimal, pustaka tingkat rendah seperti Perpustakaan C Runtime harus mengakomodasi ABI kernel yang berbeda.

Toby Speight
sumber
Dorong untuk menyebutkan perubahan Perpustakaan C Runtime.
Yosua
2

Kernel adalah bagian independen dan secara rutin diganti selama pembaruan sistem operasi. Beberapa driver berpemilik (NVIDIA, dll) memiliki skrip instalasi yang menambal driver ke sumber kernel, membangun kernel itu dan mengganti kernel saat ini dengannya. Oleh karena itu, jika Anda mengembangkan versi kernel Anda sendiri yang dapat melakukan semua fungsi yang diperlukan, seharusnya tidak menjadi masalah besar untuk menanamnya dan meninggalkan sisa sistem operasi. Namun paling sering "kernel baru" seperti itu berasal dari versi resmi terbaru.

Kernel Solaris telah porting dengan cara ini dalam beberapa derajat, menghasilkan OpenSolaris yang menjalankan lingkungan Gnome.

Namun, menempatkan kernel yang sepenuhnya berbeda adalah upaya yang signifikan, karena antarmuka harus dijembatani. Ini mungkin membutuhkan banyak pemrograman C dan bukan hanya tentang skrip build.

h22
sumber