Làm thế nào một hạt nhân linux có thể rất nhỏ?


56

Một hạt nhân 3 * ổn định thông thường là khoảng 70 mb. Nhưng có rất ít bản phân phối linux 30-10 mb với phần mềm và các thứ khác sắp hết.

Làm thế nào hạt nhân linux có thể rất nhỏ trong các bản phát hành này? Có thể tước xuống chỉ các mô-đun và trình điều khiển không cần thiết làm giảm đáng kể kích thước? Những gì khác được thực hiện để giảm kích thước hạt nhân?


3
Một tùy chọn khác là sử dụng tối ưu hóa kích thước khi biên dịch, nhưng tôi không chắc tác động đó có thể tạo ra tác động lớn như thế nào.
AndrejaKo

5
"Linus gọi Linux là 'cồng kềnh và khổng lồ'" theregister.co.uk/2009/09/22/linus_torvalds_linux_bloated_huge
Aki

1
@AndrejaKo - Rất nhiều. (Nếu bạn đi với kích thước nhỏ.)
Apache

19
70 MB là kích thước của nguồn. Một hạt nhân được biên dịch và nén tiêu chuẩn là khoảng 2 MB, các mô-đun như 10 MB.
ott--

1
vâng, thực sự, 3,6 mb của nó trong khi initramfs là 21mb trong bản phân phối của tôi.
đố tux

Câu trả lời:


37

Đúng. Nếu bạn loại bỏ chúng (biên dịch / tạo các mô-đun chỉ những thứ bạn cần), hãy nén kernel (tối ưu hóa kích thước) ... nó sẽ dẫn đến một kernel nhỏ như vậy. Bạn có thể tạo một cái thậm chí nhỏ hơn, cho hệ thống được nhắm mục tiêu. Giống như tôi biết PC của tôi, tôi biết công cụ của tôi. Vì vậy, tôi sẽ chỉ biên dịch những gì tôi cần. Giống như trình điều khiển SATA của riêng tôi, trình điều khiển cho USB, v.v. Không có gì khác. Không có webcam, không có ổ đĩa IDE cũ, không có gì.

Ngoài ra: Những cái lớn hơn mà bạn gặp phải là hạt nhân WHOLE (cái mà người ta không bao giờ cần sử dụng). Ngay cả những máy tính để bàn có chứa (hầu hết các lần, dưới dạng các mô-đun) rất nhiều thứ không cần thiết. Nhưng những người mới mong đợi rằng mọi loại phần cứng mà họ bổ sung sẽ chỉ hoạt động.

(Lưu ý rằng, các mô-đun sẽ không được tải cho đến khi chúng cần. Có 3 trạng thái:
[ ]- Không được biên dịch, sẽ không phải là một phần của hạt nhân của bạn.
[M]- Sẽ được biên dịch thành một mô-đun.
(Bạn có thể sửa đổi nó hoặc hệ thống của bạn sẽ tự động tải nó khi cần.
Tùy thuộc vào hệ thống, vùng người dùng.)
[X]- Nó sẽ được biên dịch vào kernel VÀ sẽ có mặt - luôn luôn.

Phân phối với hạt nhân nhỏ:


Chỉ cần một bổ sung nhỏ - [X] có nghĩa là nó sẽ được biên dịch vào kernel, vì vậy lý do tại sao nó luôn được tải.
Lawrence

"Người mới mong đợi" nói như một chuyên gia công nghệ máy tính chuyên nghiệp và Linux kỳ cựu 20 năm ... Tôi hy vọng mọi thứ sẽ hoạt động tốt.
Cliff Armstrong

20

Đầu bản phân phối Linux như Root-Boot của Tom , MuLinux , Chế độ ăn uống-router , (hiện nay không còn tồn tại) Loaf và nhiều người khác tại rời, tất cả trang bị một hệ thống Linux làm việc trên đĩa mềm một hoặc hai 1,44 MB.

Nhân Linux đã phát triển nhưng đừng quên nó là mô-đun, các mô-đun hạt nhân được tải khi cần thiết. Do đó, vẫn có thể tạo ra một bản phân phối Linux với một dấu chân rất nhỏ.

Xem: Hướng dẫn điều chỉnh kích thước hạt nhân - eLinux.org

Nếu bạn đọc Linux_tiny.pdf bạn sẽ thấy điều này

  • kernel 0,99pl15 lịch sử: Slackware 1.1.2, 1994 301K
  • Fedora Core 2 1,2M
  • SuE 9.1 1.5M
  • Cấu hình kiểm tra 2.6.5-tiny1: IDE, ext2, TCP, NIC 363K

11

Cấu hình kernel mặc định được cấu hình để hỗ trợ càng nhiều phần cứng càng tốt. Một hạt nhân không bị tước với cấu hình mặc định dẫn đến kích thước 1897996 kB (bao gồm cả kernel + mô-đun). Khi tước nhiều trình điều khiển và tùy chọn không cần thiết (tại sao tôi cần mô-đun HP nếu tôi sở hữu máy tính xách tay Clevo), nó đã dẫn đến kích thước 892892 kB, giảm kích thước 53% so với nhân chứng khoán.

Khi cài đặt các mô-đun hạt nhân, nối thêm INSTALL_MOD_STRIP=1tùy chọn. Điều này sẽ loại bỏ tất cả các biểu tượng gỡ lỗi và giảm kích thước 92% cho tôi (từ 892892 kB xuống 69356 kB). Lưu ý điều này sẽ chỉ ảnh hưởng đến các mô-đun được cài đặt chứ không ảnh hưởng đến kernel (vmlinuz):

make INSTALL_MOD_STRIP=1 modules_install

Từ Tài liệu / 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
wow, 1897996 kB gần 2GB!
netvope

3

Hầu hết các distro chính đều cấu hình các kernel của chúng với sự hỗ trợ phần cứng tối đa để nó hoạt động tốt với hầu hết các máy tính và bất cứ thứ gì bạn cắm vào sau này. Họ cũng sử dụng một hệ thống initrd không cần thiết trong hầu hết các trường hợp. Ngoài ra còn có các tùy chọn trong cấu hình kernel giúp quá trình xây dựng tối ưu hóa kích thước và cũng có thể chọn phương pháp nén tốt hơn (mặc dù chậm hơn). Cuối cùng, nếu bạn đang xem kích thước của mã nguồn kernel, hãy nhớ rằng nó cũng bao gồm hỗ trợ cho một số kiến ​​trúc ngoài x86 / amd64, giao thức mạng, hệ thống tệp và các tính năng khác mà bạn có thể không bao giờ sử dụng và có thể bị vô hiệu hóa


1

Nó khá đơn giản, một hệ thống tối thiểu chỉ cần bootloader + kernel mặc dù nó gần như vô dụng. Hầu hết các lệnh được sử dụng hàng ngày, là nhị phân tùy chọn cho hệ thống, như sh, ls, v.v. Nếu bạn quan tâm đến phần bên trong, Linux From Scratch! là một điểm khởi đầu tốt.


Lưu ý rằng Busybox đảm nhiệm hầu hết mọi thứ "hàng ngày".
new123456

Không, busybox chỉ kết hợp chúng lại với nhau. Nó phổ biến trong hệ thống nhỏ và nhúng, nhưng không phải là trường hợp cho hệ thống máy tính để bàn.
pinxue
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.