50

Обычное стабильное 3 * ядро сейчас около 70 мб. Но есть небольшие дистрибутивы Linux размером 30-10 Мб с программным обеспечением и другими вещами, которые выходят из коробки.

Как ядро Linux может быть таким маленьким в этих дистрибутивах? Может ли разборка только ненужных модулей и драйверов резко уменьшить размер? Что еще делается для уменьшения размера ядра?

5 ответов5

35

Да. Если вы удалите их (скомпилируйте / сделайте модули только теми вещами, которые вам нужны), сожмите ядро (оптимизируйте по размеру)... это приведет к такому маленькому ядру. Вы можете сделать еще меньше, для целевой системы. Как будто я знаю свой компьютер, я знаю свои вещи. Так что я просто скомпилирую то, что мне нужно. Как и мои собственные драйверы SATA, драйвер для USB и т.д. Ничего другого. Нет веб-камеры, нет старых дисков IDE, ничего.

Также: чем больше вы встречаете, так это ЦЕЛЫМ ядром (которое никогда не нужно использовать). Даже настольные компьютеры содержат (в большинстве случаев в виде модулей) МНОГО ненужного. Но новички ожидают, что все виды подключаемого оборудования будут работать.

(Обратите внимание, что модули не будут загружены, пока они не понадобятся. Есть 3 состояния:
[ ] - Не скомпилируется, не будет частью вашего ядра.
[M] - будет скомпилирован как модуль.
(Вы можете проверить его, или ваша система автоматически загрузит его, когда это необходимо.
Зависит от системы, пользовательской области.)
[X] - Он будет скомпилирован в ядро и будет присутствовать - всегда.

Distros с небольшим ядром:

20

Ранние дистрибутивы Linux, такие как Tom's Root-Boot, MuLinux, Diet-router, (ныне несуществующий) LOAF и многие другие, уже вышедшие из эксплуатации, все устанавливали работающую систему Linux на одну или две 1,44 МБ дискеты.

Ядро Linux выросло, но не забывайте, что оно модульное, модули ядра загружаются по мере необходимости. Таким образом, все еще возможно создать дистрибутив Linux с очень маленьким размером.

Смотрите: Руководство по настройке размера ядра - eLinux.org

Если вы прочитаете Linux_tiny.pdf, вы увидите это

  • историческое ядро 0.99pl15: Slackware 1.1.2, 1994 301K
  • Fedora Core 2 1.2M
  • SuSE 9.1 1.5M
  • Тестовая конфигурация 2.6.5-tiny1: IDE, ext2, TCP, NIC 363K
9

Конфигурация ядра по умолчанию настроена для поддержки как можно большего количества оборудования. Ядро без разделителя с конфигурацией по умолчанию привело к размеру 1897996 КБ (включая ядро + модули). При удалении многих ненужных драйверов и опций (зачем мне нужен модуль HP, если у меня есть ноутбук Clevo), его размер составил 892892 кБ, что на 53% меньше по сравнению со стандартным ядром.

При установке модулей ядра добавьте параметр INSTALL_MOD_STRIP=1 . Это удалит все символы отладки и уменьшит размер для меня на 92% (с 892892 кБ до 69356 кБ). Обратите внимание, что это влияет только на устанавливаемые модули, а не на само ядро (vmlinuz):

make INSTALL_MOD_STRIP=1 modules_install

Из документации /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

Большинство крупных дистрибутивов конфигурируют свои ядра с максимальной аппаратной поддержкой, поэтому он будет работать из коробки с большинством компьютеров и всем, что вы подключите позже. Они также используют систему initrd, которая в большинстве случаев не нужна. В конфигурации ядра также есть параметры, позволяющие оптимизировать процесс сборки под размер, а также можно выбрать лучший (хотя и более медленный) метод сжатия. Наконец, если вы смотрите на размер исходного кода ядра, имейте в виду, что он также включает поддержку нескольких архитектур помимо x86/amd64, сетевых протоколов, файловых систем и других функций, которые вы, вероятно, никогда не будете использовать и которые могут быть отключенным.

1

Это довольно просто, минимальная система просто нуждается в загрузчике + ядре, хотя это почти бесполезно. Большинство команд, используемых каждый день, являются необязательными двоичными для системы, такими как sh, ls и т.д. Если вы заинтересованы во внутренних органах, Linux From Scratch! хорошая отправная точка.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .