Bagaimana kernel linux bisa sekecil itu?

56

Kernel stabil 3 * biasa sekitar 70 mb sekarang. Tetapi ada distribusi linux kecil 30-10 mb dengan perangkat lunak dan hal-hal lain kehabisan kotak.

Bagaimana kernel linux bisa sangat kecil di distro ini? Bisakah hanya melepas modul dan driver yang tidak dibutuhkan dan mengurangi ukuran secara dramatis? Apa lagi yang dilakukan untuk mengurangi ukuran kernel?

tux bingung
sumber
3
Pilihan lain adalah menggunakan optimasi ukuran saat mengkompilasi, tapi saya tidak yakin seberapa besar dampaknya.
AndrejaKo
5
"Linus menyebut Linux 'besar dan besar'" theregister.co.uk/2009/09/22/linus_torvalds_linux_bloated_huge
Aki
1
@AndrejaKo - Banyak. (Jika Anda menggunakan ukuran kecil.)
Apache
19
70 MB adalah ukuran sumber. Kernel yang dikompilasi dan dikompresi standar sekitar 2 MB, modul seperti 10 MB.
ott--
1
ya, memang, 3,6 mb sedangkan initramfs adalah 21mb di distro saya.
tux bingung

Jawaban:

37

Iya. Jika Anda menghapusnya (mengkompilasi / membuat modul hanya hal-hal yang Anda butuhkan), kompres kernel (optimalkan untuk ukuran) ... itu akan menghasilkan kernel yang sangat kecil. Anda dapat membuat yang lebih kecil, untuk sistem yang ditargetkan. Seperti saya tahu PC saya, saya tahu barang-barang saya. Jadi saya hanya akan mengkompilasi apa yang saya butuhkan. Seperti driver SATA saya sendiri, driver untuk USB, dll. Tidak ada yang lain. Tidak ada webcam, tidak ada drive IDE lama, tidak ada.

Juga: Yang lebih besar yang Anda temui adalah kernel WHOLE (yang tidak perlu digunakan). Bahkan desktop yang berisi (sebagian besar waktu, sebagai modul) BANYAK hal yang tidak dibutuhkan. Tetapi para pemula berharap bahwa setiap jenis perangkat keras yang mereka pasang hanya akan berfungsi.

(Perhatikan bahwa, modul tidak akan dimuat sebelum dibutuhkan. Ada 3 status:
[ ]- Tidak akan dikompilasi, tidak akan menjadi bagian dari kernel Anda.
[M]- Akan dikompilasi sebagai modul.
(Anda dapat memodifikasinya) , atau sistem Anda akan memuatnya secara otomatis saat diperlukan.
Tergantung pada sistem, userland.)
[X]- Ini akan dikompilasi ke dalam kernel DAN akan hadir - selalu.

Distro dengan kernel kecil:

Apache
sumber
Hanya tambahan kecil - [X] berarti itu akan dikompilasi ke dalam kernel, karenanya alasan mengapa selalu dimuat.
Lawrence
"Pemula berharap" berbicara sebagai teknologi komputer profesional dan veteran Linux selama 20 tahun ... Saya berharap semuanya berjalan dengan baik juga.
Cliff Armstrong
20

Distribusi Linux awal seperti Tom's Root-Boot , MuLinux , Diet-router , (sekarang sudah tidak aktif ) LOAF dan banyak lainnya sekarang berangkat, semua dilengkapi sistem Linux yang berfungsi pada satu atau dua disket 1,44 MB.

Kernel Linux telah berkembang tetapi jangan lupa itu modular, modul kernel dimuat sesuai kebutuhan. Dengan demikian masih dimungkinkan untuk menghasilkan distribusi Linux dengan tapak yang sangat kecil.

Lihat: Panduan Penyetelan Ukuran Kernel - eLinux.org

Jika Anda membaca Linux_tiny.pdf Anda akan melihat ini

  • kernel 0.99pl15 bersejarah: Slackware 1.1.2, 1994 301K
  • Fedora Core 2 1.2M
  • SuSE 9.1 1.5M
  • Konfigurasi tes 2.6.5-tiny1: IDE, ext2, TCP, NIC 363K
RedGrittyBrick
sumber
11

Konfigurasi kernel default dikonfigurasi untuk mendukung perangkat keras sebanyak mungkin. Kernel non-stripped dengan konfigurasi default menghasilkan ukuran 1897996 kB (termasuk modul kernel +). Ketika melepas banyak driver dan opsi yang tidak perlu (mengapa saya membutuhkan modul HP jika saya memiliki notebook Clevo), itu menghasilkan ukuran 892892 kB yang merupakan pengurangan ukuran 53% dibandingkan dengan kernel stock.

Saat memasang modul kernel, tambahkan INSTALL_MOD_STRIP=1opsi. Ini akan menghapus semua simbol debug dan mengurangi ukuran sebesar 92% untuk saya (dari 892892 kB menjadi 69356 kB). Catatan ini hanya akan mempengaruhi modul yang akan diinstal dan bukan kernel (vmlinuz) itu sendiri:

make INSTALL_MOD_STRIP=1 modules_install

Dari Dokumentasi / 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.
Lekensteyn
sumber
3
wow, 1897996 kB hampir 2GB!
netvope
3

Kebanyakan distro besar mengkonfigurasi kernel mereka dengan dukungan perangkat keras maksimum sehingga akan bekerja di luar kotak dengan sebagian besar komputer dan apa pun yang Anda tancapkan nanti. Mereka juga menggunakan sistem initrd yang tidak diperlukan dalam banyak kasus. Ada juga opsi dalam konfigurasi kernel yang membuat proses build dioptimalkan untuk ukuran, dan metode kompresi yang lebih baik (meskipun lebih lambat) dapat dipilih juga. Terakhir, jika Anda melihat ukuran kode sumber kernel, perlu diingat bahwa itu juga mencakup dukungan untuk beberapa arsitektur di luar x86 / amd64, protokol jaringan, sistem file, dan fitur lain yang mungkin tidak akan pernah Anda gunakan dan yang dapat dinonaktifkan

Jonathan Amend
sumber
1

Ini cukup sederhana, sistem minimal hanya perlu bootloader + kernel meskipun hampir tidak berguna. Sebagian besar perintah yang digunakan setiap hari, adalah biner opsional untuk sistem, seperti sh, ls, dll. Jika Anda tertarik dengan internal, Linux From Scratch! adalah titik awal yang baik.

pinxue
sumber
Perhatikan bahwa Busybox menangani sebagian besar barang "sehari-hari".
new123456
Tidak, busybox hanya menggabungkan mereka. Ini populer di sistem kecil dan tertanam, tetapi tidak demikian halnya dengan sistem desktop.
pinxue