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?
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?
Jawaban:
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_create
FreeBSD 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.
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.
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.