Bu sorunun cevabı, kelimenin tam anlamıyla bir dosya sistemi olmadan kastettiğinize veya sorunun gerçekte belirtilenden biraz farklı yorumlanıp tasarlanmadığına bağlı olacaktır. Sorunun nasıl yorumlandığına ilişkin küçük değişikliklerin cevapları şunlardır:
- Linux'u herhangi bir blok cihaz olmadan çalıştırmak , bazı özel kullanım durumları için tamamen uygulanabilir ve kullanışlıdır.
- Linux'u herhangi bir dosya sistemi olmadan çalıştırmak , çekirdek kodunun bazı bölümlerinin yeniden yazılmasını gerektirecektir ve yararlı bir çaba olması pek olası değildir.
- Linux'u herhangi bir dosya tanımlayıcı kullanmadan çalıştırmak çok çaba gerektirecektir. Bunun çabaya değmeyeceğinden eminim.
Dosya sistemi olmayan bir çalışma sistemi oluşturmak için çekirdek kodunun bölümlerini yeniden yazmanızın nedenleri şunlardır:
- Her iş parçacığının bir kök dizini ve bazı dosya sistemlerini göstermesi gereken geçerli bir çalışma dizini vardır.
- Programlar,
execve
bir dosya sisteminden yürütülebilir dosya gerektiren sistem çağrısı tarafından başlatılır .
- Çekirdek, önyükleme işlemi sırasında bellek tabanlı bir dosya sistemi oluşturur.
Bir programı kullanmaya başladıktan sonra, başlatıldığı execve
yürütülebilir dosyayı eşlemesini kaldırmak mümkündür, ancak hemen çökmeden bunu yapmak için önce bir dosya tarafından desteklenmeyen yürütülebilir bir bellek eşlemesi oluşturmanız gerekir, ve ona atlayıp yürütülebilir dosyayı açmadan önce bazı yararlı kodlarla başlatması gerekir.
Böylece, çalışan bir kullanıcı modu programı, dosyalar tarafından desteklenen bellek eşlemelerinin olmadığı bir durumda bulunabilir ve dosyalar tarafından desteklenen tüm dosya tanımlayıcılarını kapatabilir. Bir kök dizine ve geçerli çalışma dizinine sahip olmayı durduramaz, ancak bunlardan kaçınabilir.
Bu durumda, dosya sistemini programın altından koparmak ve çalışmaya devam etmesini sağlamak için çekirdek kodunu uygulayabiliyor olsanız da, kullanışlı gibi görünmüyor. Ve bir dosya sistemi kullanmak için ara bir durumdan geçmeden bu son duruma geçmek, yararlı bir fayda için daha fazla iş olacaktır.
Bazı özel kullanım durumları için kullanışlı bir kurulum
Blok cihazların kullanımından kaçınmak faydalı olabilir. Önyükleme sırasında çekirdek bir bellek dosya sistemi oluşturur ve cpio
yürütmeden önce bu dosya sistemini bir arşivdeki içeriklerle doldurabilir init
. Bu şekilde, sistemi herhangi bir blok cihazı olmadan tamamen bellek tabanlı bir dosya sisteminden çalıştırabilirsiniz.
Bu, herhangi bir durumu korumak istemediğiniz ve sistemin yeniden başlatıldıktan sonra temiz bir sayfadan başlamasını istediğiniz sistemler için yararlı olabilir.
Tabii ki çekirdek ve cpio arşivi, çekirdeğe kontrol verilmeden önce bir şekilde hafızada var olmak zorundadır. Onlar nasıl var çizme yükleyici için bir iş var. Son çalışan sistem blok cihazları kullanmasa bile, önyükleme yükleyicisi bir blok cihazdan yükleyebilirdi. Ancak önyükleme yükleyicisinin, örneğin ağ üzerinden önyükleme yaparak bir blok aygıtı kullanmadan çekirdek ve cpio arşivini edinmesi de mümkündür.
useful exposure to the outside world