Linux çekirdeği nasıl bu kadar küçük olabilir?


56

Sıradan bir stabil 3 * çekirdek şimdi yaklaşık 70 mb'dir. Ancak, yazılım ve kutudan çıkan diğer şeyler ile birlikte 30-10 mb arasında küçük linux dağılımları vardır.

Linux çekirdeği bu dağıtımlarda nasıl bu kadar küçük olabilir? Sadece gereksiz modülleri ve sürücüleri söküp boyutu önemli ölçüde azaltabilir mi? Çekirdek boyutunu küçültmek için başka neler yapılır?


3
Diğer bir seçenek, derleme yaparken boyut optimizasyonlarını kullanmaktır, ancak bunun ne kadar büyük bir etki yaratacağından emin değilim.
AndrejaKo

5
"Linus Linux 'şişirilmiş ve kocaman' çağırır" theregister.co.uk/2009/09/22/linus_torvalds_linux_bloated_huge
Aki

1
@AndrejaKo - Çok fazla. (Küçük boy için giderseniz.)
Apache

19
70 MB, kaynağın boyutudur. Standart bir derlenmiş ve sıkıştırılmış çekirdek, 10 MB gibi modüller olan 2 MB civarındadır.
ott--

1
evet, gerçekten, 3.6 mb iken initramfs benim dağıtımımda 21 MB.
Şaşkın smokin

Yanıtlar:


37

Evet. Bunları aşağı doğru soyarsanız (sadece ihtiyacınız olan şeyleri derleyin / modüller yapın), çekirdeği sıkıştırın (boyut için optimize edin) ... böyle küçük bir çekirdeğe neden olur. Hedeflenen sistem için daha da küçük olanlar yapabilirsiniz. Bilgisayarımı tanıdığım gibi, eşyalarımı da biliyorum. Yani sadece ihtiyacım olanı derleyeceğim. Kendi SATA sürücülerim, USB sürücüsü vb. Gibi başka bir şey yok. Web kamerası yok, eski IDE sürücüsü yok, hiçbir şey yok.

Ayrıca: Karşılaştığınız en büyük olanlar BÜTÜN çekirdeğidir (hiç kullanması gerekmeyen). Masaüstünde olanlar bile (çoğu zaman modüller olarak) bir LOT OF gereksiz ürün içeriyor. Ancak yeniler, taktıkları her türlü donanımın işe yarayacağını düşünüyor.

(Zamana kadar modüller yüklü almazsınız, unutmayın 3 durumu vardır.
[ ]- derleme yapabilmek olmayacak, senin çekirdeğin bir parçası olmayacaktır.
[M]- modül olarak derlenmiş olacak.
(Bunu modprobe edebilirsiniz veya sisteminiz gerektiğinde otomatik olarak yükler.
Sisteme, kullanıcı ülkesine göre değişir.)
[X]- Çekirdeğe derlenir VE hazır olur - her zaman.

Küçük çekirdekli dağıtımlar:


Sadece küçük bir ek - [X] derlenmesini anlamına gelir içine çekirdek her zaman yüklenen neden dolayısıyla nedeni.
Lawrence

"newbies bekliyor", profesyonel bir bilgisayar teknolojisi ve 20 yıllık tecrübeli Linux olarak konuşarak ... Ben de işlerin sadece işe yaramasını bekliyorum.
Cliff Armstrong

20

Tom's Root-Boot , MuLinux , Diet-router , (şimdi feshedilmiş) LOAF ve diğerleri gibi erken Linux dağıtımları , hepsi bir ya da iki 1.44 MB diskete çalışan bir Linux sistemi kurdu.

Linux çekirdeği büyüdü, fakat unutma ki modüler, çekirdek modülleri gerektiği gibi yüklendi. Böylece çok az yer kaplayan bir Linux dağıtımı üretmek hala mümkün.

Bakınız: Çekirdek Boyutu Ayarlama Rehberi - eLinux.org

Eğer Linux_tiny.pdf okursanız, bunu göreceksiniz

  • tarihi 0.99pl15 çekirdeği: Slackware 1.1.2, 1994 301K
  • Fedora Core 2 1.2M
  • SuSE 9.1 1.5M
  • 2.6.5-tiny1 test yapılandırması: IDE, ext2, TCP, NIC 363K

11

Varsayılan çekirdek yapılandırması mümkün olduğu kadar çok donanımı desteklemek için yapılandırılmıştır. Varsayılan yapılandırmaya sahip, soyulmamış bir çekirdek, 1897996 kB (çekirdek + modüller dahil) boyutunda sonuçlanır. Gereksiz birçok sürücüyü ve seçeneği çıkarırken (neden bir Clevo notebook'a sahipsem bir HP modülüne ihtiyacım olsun), 892892 kB boyutuyla sonuçlandı;

Çekirdek modüllerini kurarken, INSTALL_MOD_STRIP=1seçeneği ekleyin . Bu, tüm hata ayıklama sembollerini sıyırır ve boyutu benim için% 92 oranında azaltır (892892 kB'den 69356 kB'ye). Bunun sadece kurulacak modülleri etkileyeceğini ve çekirdeğin (vmlinuz) kendisini etkilemeyeceğini not edin:

make INSTALL_MOD_STRIP=1 modules_install

Gönderen Belgeler / kbuild / kbuild.txt :

INSTALL_MOD_STRIP
--------------------------------------------------
INSTALL_MOD_STRIP, if defined, will cause modules to be
stripped after they are installed.  If INSTALL_MOD_STRIP is '1', then
the default option --strip-debug will be used.  Otherwise,
INSTALL_MOD_STRIP value will be used as the options to the strip command.

3
vay, 1897996 kB neredeyse 2GB!
netvope

3

Çoğu büyük dağıtım, çekirdeğini maksimum donanım desteğiyle yapılandırır, böylece çoğu bilgisayarda ve daha sonra takacağınız herhangi bir şeyle çalışmaz. Ayrıca çoğu durumda ihtiyaç duyulmayan bir initrd sistemi kullanırlar. Çekirdek yapılandırmasında derleme işlemini boyut için en iyi duruma getirecek seçenekler de vardır ve daha iyi (daha yavaş) bir sıkıştırma yöntemi de seçilebilir. Son olarak, çekirdek kaynak kodunun boyutuna bakıyorsanız, bunun ayrıca x86 / amd64 dışındaki çeşitli mimarilere, ağ protokollerine, dosya sistemlerine ve muhtemelen hiç kullanmayacağınız ve kullanabileceğiniz diğer özelliklere yönelik destek içerdiğini unutmayın. devre dışı bırakılmak


1

Oldukça basittir, minimal bir sistem sadece bootloader + çekirdeğe ihtiyaç duyar ancak neredeyse işe yaramaz. Her gün kullanılan komutların çoğu, sh, ls, vb. Gibi, sistem için isteğe bağlı bir ikilidir . iyi bir başlangıç ​​noktasıdır.


Busybox'ın "günlük" işlerin çoğuyla ilgilendiğini unutmayın.
yeni123456

Hayır, meşgul kutusu onları bir araya getirdi. Küçük ve gömülü sistemlerde popülerdir, ancak masaüstü sistem için geçerli değildir.
pinxue
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.