Farklı Linux / Unix çekirdekleri değiştirilebilir mi?


14

Linux çekirdeğini alıp, örneğin, FreeBSD ve tersi ile kullanabilir miyim (FreeBSD çekirdeği, örneğin, Debian)? Evrensel bir cevap var mı? Sınırlamalar nelerdir? Engeller nelerdir?


5
Kesinlikle değil. İyi bir egzersiz denemek ve nasıl kırıldığını görmek olacaktır. Linux çekirdeğini çok daha eski bir Linux çekirdeğiyle bile güvenilir şekilde değiştiremezsiniz. Kullanıcı alanı araçlarını değiştirmek kesinlikle yapılabilir (eğer yeniden derlenmişse).
Kusalananda


@Kusalananda, BSD'den Linux'a gitmek için kullanıcı alanı araçlarının değiştirilmesiyle ilgili acı verici olabilir: Bazı BSD araçlarının BSD olmayan sistemler üzerine inşa edilmesi oldukça zordur ... , ancak önemsiz olduğu ortaya çıktı: - /.
Stephen Kitt

1
@StephenKitt Tersi de geçerlidir :-) Özellikle yazılım, /procLinux'a özgü diğer çan ve ıslıklara erişme konusunda varsayımlar yaptığında .
Kusalananda

Yapabileceğiniz şey, x86_64 (linux) çekirdeğini alıp i386 32 bit dağıtımına zorla yüklemek (64 bit intel CPU ve derlenmiş 32 bit ikili dosyalar için destek varsayarak). Bu oldukça iyi biliniyor, ama hemen belli değil ...
Radovan Garabík

Yanıtlar:


39

Hayır, Unix tarzı işletim sistemlerinin farklı uygulamalarından gelen çekirdekler, özellikle sistemin geri kalanına (kullanıcı alanı) - sistem çağrılarına ( ioctlözellikler dahil ), kullandıkları çeşitli sanal dosya sistemlerine farklı arabirimler sundukları için birbirinin yerine kullanılamaz. ..

Kaynak düzeyinde bir dereceye kadar değiştirilebilir olan şey, çekirdeğin ve C kütüphanesinin veya daha ziyade, çekirdeğin ve kütüphanelerin ortaya çıkardığı kullanıcı seviyesi API'lerin kombinasyonudur (esas olarak, POSIX tarafından tanımlanan katmandaki görünüm olmadan, o olmadığını düşünüyor ise ) aslında POSIX. Bu örnekleri arasında Debian GNU / kFreeBSD bir BSD çekirdeği üzerine bir Debian sistemi oluşturur, ve Debian GNU / Hurd Hurd üstüne bir Debian sistemi oluşturur.

Bu, çekirdek birbirinin yerine geçebilirlik düzeyinde değildir, ancak ikili dosyaların yeniden derlemeye gerek kalmadan çeşitli sistemlerde kullanılmasına izin vermek için ortak bir uygulama ikili arabirimini standartlaştırma girişimleri olmuştur. Bunun bir örneği, ona uygun olan ikili programların, iBCS 2 katmanına sahip eski Linux sürümleri de dahil olmak üzere, onu uygulayan herhangi bir Unix sisteminde çalışmasına izin veren Intel İkili Uyumluluk Standardı'dır . Bunu 90'ların sonunda Linux'ta WordPerfect'i çalıştırmak için kullandım.

Ayrıca bkz . Linux içinde bir FreeBSD chroot oluşturma .


1
Bazı insanlar , çekirdek ve kullanıcı API'larının senkronize edilmesinin ne kadar önemli olduğu konusunda oldukça güçlü görüşlere sahipler :)
tonysdg

4
Gerçekten @tonysdg, ve inan bana, bunun hakkında her şeyi biliyorum : - /.
Stephen Kitt

@tonysdg Bağlantınızda bir sayfa bulunamadı. (Bu eksik olduğum bir şaka olmadığı sürece?)
mbrig

1
@mbrig: Düne kadar oradaydı - işte arşivlenmiş bir sürüm: web.archive.org/web/20171102142621/http://…
tonysdg

@StephenKitt: Ah :( Maalesef! Çekirdekte başlamak için kod bile olsa büyük kudos!
tonysdg

4

Bazı çekirdekler, kullanıcı alanı programlarını farklı ABI'lerle karıştırmanıza izin veren ikili uyumluluğa sahiptir (örn. Freebsd, linux ikili dosyaları ile bir dereceye kadar çalışabilir) - ancak çekirdek ikili dosyalar (örn. Başlangıç ​​programı, modül yükleyici, aygıt sürücüsü kurulum araçları, C kütüphanesi) , dosya sistemlerini kurmak için gerekli araçların ...) pratikte yabancı bir çekirdeğe sahip bir sistemi başarılı bir şekilde önyüklemek için çekirdek seviyesi arayüzleri hakkında çok fazla bilgiye ihtiyaç vardır.

Ayrıca, dosya sistemlerinin uyumlu olması gerekir. Ayrıca, ikili uyumluluk seçeneklerinin çekirdeğe "zor" olarak derlenmesi gerekir - çekirdek modülü olarak uygulanan her şey başarısız olur, çünkü modül yükleyiciyi çalıştıramazsınız.

Bahsedildiği gibi, freebsd tabanlı debian sistemleri gibi yeniden derlemek veya linux üzerinde netbsd pkgsrc sistemini kurmak için kullanıcı ortamları biraz taşınabilir olma eğilimindedir (kesinlikle önemsiz değil, ancak desteklenen ve mümkün!).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.