Уменьшение размера корневой файловой системы

Одна из главных проблем при создании загрузочных дискет -- поместить все на одну (или даже две) дискету. Даже если файлы сжаты, сделать это может оказаться очень трудно, так как компоненты Linux системы продолжают расти. Далее следует несколько приемов, которые используются для размещения.

Увеличьте плотность диска

По умолчанию, дискеты форматируются на 1440Кб, но возможны форматы и с более высокой плотностью. Возможность загрузки с высокоплотных дисков больше зависит от вашего BIOS. fdformat форматирует диски следующих размеров: 1600, 1680, 1722, 1743, 1760, 1840, и 1920. Большинство приводов 1440Кб поддерживает 1722Кб, и я всегда это использую для загрузочных дисков. См. man страницу fdformat и /usr/src/linux/Documentation/devices.txt.

Но какие же плотности/геометрию поддерживает ваша машина? Вот несколько (слегка отредактированных) ответов от Alain Knaff, автора fdutils.

Это больше зависит от BIOS, чем от физического формата диска. Если BIOS решает, что количество секторов больше 18 неправильно, то больше ничего нельзя сделать. В самом деле, небольшое дезассемблирование BIOS, пробы и ошибки, кажется, единственный путь это выяснить. Однако, если BIOS поддерживает диски расширенной плотности (36 секторов/дорожку и 2.88MB), есть шанс, что также поддерживаются 1722K диски.

Сверхформатированные диски свыше 21 сектора/дорожку, скорее всего не могут быть загрузочными: более того, диски с секторами нестандартного размера (например, 1024 байт на сектор, вместо 512) также скорее всего не могут быть загрузочными. Однако, это можно обойти, если записать специальную программу в загрузочный сектор. Если мне не изменяет память, это делается DOS утилитой 2m, а также OS/2 утилитами XDF.

Некоторые BIOS искуственно заявляют, чтобы любой сектор с номером более 18 был ошибочным. Так как 1722K диск использует номера секторов до 21, он не будет загрузочным. Лучший способ это проверить - отформатировать пробный диск в DOS или syslinux на 1722K и сделать его загрузочным. Если вы используете LILO, не используйте опцию linear (иначе LILO будет считать, что в диске 18 секторов/дорожку и диск не будет загружаться, даже если он поддерживается BIOS).

Замените обычные утилиты на BusyBox

Большая часть пространства корневой файловой системы расходуется на системные утилиты GNU, такие как cat, chmod, cp, dd, df, и т.п. Проект BusyBox разработан, для обеспечения минимальной замены общих системных утилит. BusyBox Поставляется в виде одного монолитного исполняемого файла, /bin/busybox, около 150K, который реализует функции этих утилит. Затем вы создаете символические ссылки из различных утилит на этот исполняемый файл; busybox смотрит как он был вызван и вызывает соответствующий код. BusyBox включает в себя даже основной shell. BusyBox доступен в виде бинарных пакетов для многих дистрибутивов, а также в виде исходного кода на сайте BusyBox.

Используйте альтернативную оболочку.

Некоторые из популярных оболочек Linux, такие как bash и tcsh, велики, и требуют многих библиотек. Если вы не используете shell из BusyBox, вы все еще должны рассмотреть вариант замены вашей shell. Существуют легкие альтернативы, такие как ash, lsh, kiss и smash, которые намного меньше и требуют немногих библиотек или вообще их не требуют. Большинство этих оболочек доступно из http://www.ibiblio.org/pub/Linux/system/shells/. Проверьте, что используемая Вами оболочка способна выполнять команды всех rc файлов, которые Вы включаете в загрузочный диск.

Уменьшите размер библиотеки и исполняемые файлы.

Многие библиотеки и исполняемые файлы поставляются с отладочной информацией. В этом случае запуск file на этих файлах сообщит Вам ``not stripped''. При копировании исполняемых файлов в вашу корневую файловую систему, хорошо использовать:
      objcopy --strip-all FROM TO

Важно: При копировании библиотек, убедитесь, что используете strip-debug, а не strip-all.

Переместите некритичные файлы в сервисный диск.

Если без некоторых исполняемых файлов можно обойтись при загрузке или входе в систему, Вы можете переместить их в сервисный диск. Для подробностей см. секцию Разд. Создание сервисного диска.>. Вы можете также обдумать перемещение модулей на сервисный диск.