Мини-HOWTO: Экономия дискового пространства

версия 1.0.1, 7 апреля 1999

В этом документе содержатся советы по минимизации дискового пространства, занимаемого Linux при инсталляции. В основном это необходимо пользователям ноутбуков.


1. Вступление

У меня есть ноутбук, я установил на него Linux, хотя там есть еще и Windows 95. Я сделал раздел Windows равным 500 Мб, остальные 240 Мб оставил под Linux. Звучит обыденно, но я установил почти весь Linux Red Hat 4.1 и использовал массу ухищрений для того, чтобы хватило места.

Если у вас проблема со свободным местом, то следуя советам этого документа можно высвободить большую его часть. Но если вы на это решились, не обвиняйте меня, если что-то пойдет не так! Мы будем использовать пару программ, которые у меня работают превосходно, но являются очень опасными. Я вас предупредил.


2. Требования к программному обеспечению

Вам нужны:

  • полностью рабочая система Linux (без разницы, какая версия);

  • общий для всех архиватор gzip, или bzip2, который можно найти по адресу ftp://sunsite.unc.edu:/pub/Linux/utils/compress; эта программа сжимает лучше, чем gzip, но работает медленнее и требует больше памяти;

  • упаковщик исполняемых файлов upx, домашняя страничка находится на http://cdata.tvnet.hu/~ml/upx.html и http://wildsau.idv.uni-linz.ac.at/mfx/upx.html;

  • архив библиотеки zlibc можно раздобыть на ftp://sunsite.unc.edu:/pub/Linux/libs/compression. Он называется zlibc-X.X.tar.gz, где X.X номер последней версии.

Есть и другие упаковщики исполняемых файлов. Один из них gzexe (забудьте о нем), другой tcx, который был, пожалуй, лучшим до upx; еще tzx, который теоретически лучше tcx. Но дело в том, что эта программа все перепутала, хотя я не уверен в том. что допустил какую-то ошибку. Вам лучше пользоваться upx: - он более надежен, эффективен и прост.

Есть патчи, ядра которые реализуют прозрачное сжатие файлов, аналогично Stacker, но ни один из них не имеет репутации стабильного и надежного. Поэтому держитесь от них подальше.


3. Сама процедура

3.1. Удаление исходных текстов ядра

Исходные тексты ядра занимают более 20 Мб, и, скорее всего, вы захотите их удалить. Если так, то откомпилируйте новое ядро, которое будет работать с вашей машиной, и освободитесь от исходных текстов.

Я НЕ советую удалять исходные тексты ядра до тех пор, пока вы не удостоверитесь, что система правильно установлена . Кроме того, вам понадобятся #includes ядра для того, чтобы компилировать программы на C. Подумайте дважды... !

Если вы все же на это решились, не удаляйте дерево include/linux, если собираетесь когда-нибудь компилировать приложения на своей машине.


3.2. Удаление приложений

Теперь решите, какие приложения вам на самом деле необходимы. Некоторые могут оказаться излишествами: например, уверены ли вы в том, что вам очень нужен emacs? Вместо него можно использовать jed.

От вас зависит, что оставлять, а что удалять. Несколько основных правил:

  • gcc - довольно большой файл. Он используется для компиляции ядра и всех пакетов Linux, у которых есть исходные тексты. Разумеется, он вам понадобится, если вы будете писать собственные программы на C или Fortran (с f2c или g77); поэтому определитесь с вашими потребностями, перед тем как удалить его. Другие компиляторы, например lcc, неплохи, но их уровень ниже, чем у gcc. Поэтому я бы оставил этот файл;

  • X11 еще больше, но это вещь, которую хотелось бы иметь под рукой. Если вы решились его удалить, то не удаляйте все, постарайтесь обойтись необходимым минимумом: нужный Х-сервер, один простенький менеджер окон, единственный xterm, никаких шрифтов на 100 dpi, и т.п.;

  • TeX и сопутствующие программы занимают большой объем. Уход от LaTeX и переход на чистый TeX сэкономит много места; это же дает удаление программ предварительного просмотра в X11, таких как xdvi и ghostview, и, возможно, если у вас есть dvitty, dvivga или некоторые им подобные. Если у вас нет необходимости в файлах формата dvi, то, в принципе, вам не нужен X11;

  • игры никогда не являются "необходимостью".


3.3. Удаление вспомогательной информации из программ

Давайте приступим к уменьшению объема программ. Перейдите в /usr/bin и наберите команду

machine:/usr/bin# strip *

которая удалит все символы, не относящиеся к телу программы. Повторите это действие в /usr/X11R6/bin/ и других каталогах, содержащих исполняемые программы (не забывайте про программы TeX и gcc), но не делайте этого в /sbin, /bin, или /usr/sbin/ если дорожите тем, что у вас установлено!


3.4. Сжатие при помощи upx

Сначала, установите upx и прочтите документацию к нему. Затем перейдите в /usr/bin и запустите там команду upx *; он закомпрессирует все исполняемые файлы, включая и те, у которых установлен бит suid (tcx этого бы не сделал).Повторите эти действия во всех каталогах, описанных выше.

Помните, что надо архивировать все исполняемые файлы всякий раз, когда вы устанавливаете новую программу!


3.5. Архивирование других видов файлов при помощи Gzip

Есть множество других файлов, которые можно заархивировать раз и на всегда. Начнем с /usr/doc/; перейдите в этот каталог и наберите команду

machine:/usr/doc# find . -type f -exec gzip -9 {} \; 2> /dev/null

Помните, что надо архивировать документацию всякий раз, когда вы устанавливаете новую программу!

Повторите эти действия в каталогах, содержащих документацию по TeX (на моей машине, /usr/lib/texmf/texmf/doc/. Если вы действительно уверены в своих действиях, то вы просто можете удалить все эти каталоги.

Теперь установите zlibc и откомпилируйте ее. Если у вас такая же система, как и у меня, то процесс компиляции не завершится со ссылкой на отсутствие (статической версии) libc. Не обращайте на это внимания, вы найдете файл под названием uncompress.o Это то, что нам надо. Переместите его в /usr/local/lib/ и добавьте следующую строку в ваш /etc/profile:

export LD_ELF_PRELOAD=/usr/local/lib/uncompress.o

теперь, при помощи gzip можно архивировать не только файлы с документацией, но и с данными: программы, которые их используют смогут обращаться к ним. В теории, этот метод может работать с большинством программ, но на практике это не всегда получается. Моя попытка сделать это, так и не увенчалась успехом.


4. Пример из моей практики

Это то, что получилось после применения описанной процедуры на одной из машин. До процедуры, df сообщил, что я использую 398,798 блоков по 1024 байт:

  • Я не удалил исходные тексты ядра и его заголовки;

  • Я затер несколько приложений и все игры, но оставил X11, пакет для разработки программ под X11, пакеты для C и Fortran, Tcl/Tk, сетевые утилиты, и еще несколько стандартных приложений. После этого df сообщил, что я использую 244,668 блоков;

  • Я поработал upx в /usr/bin, /usr/X11R6/bin, /usr/lib/texmf/bin/i586-linux, и /usr/lib/gcc-lib/i386-linux/2.7.2.1. осталось 226,270 блоков;

  • Я сжал документацию в /usr/doc и /usr/lib/texmf/texmf/doc: использовалось 198,745 блоков.

Если посмотреть на результаты, то я начал с 398,798 блоками, а закончил с 198,745. Помечтайте, сколько всего вы можете разместить в этих 200,000 пустых блоках! Я бы освободил еще больше места, если бы использовал bzip2, вместо gzip.

В заключении, можно сказать, что если вы с самого начала будете аккуратны и будете устанавливать только нужные программы, архивировать исполнительные программы и документацию, то высвободите около 20 Мб. На ноутбуке это может быть жизненно необходимо.


5. Окончание

5.1. Copyright

Unless otherwise stated, Linux HOWTO documents are copyrighted by their respective authors. Linux HOWTO documents may be reproduced and distributed in whole or in part, in any medium physical or electronic, as long as this copyright notice is retained on all copies. Commercial redistribution is allowed and encouraged; however, the author would like to be notified of any such distributions.

All translations, derivative works, or aggregate works incorporating any Linux HOWTO documents must be covered under this copyright notice. That is, you may not produce a derivative work from a HOWTO and impose additional restrictions on its distribution. Exceptions to these rules may be granted under certain conditions; please contact the Linux HOWTO coordinator at the address given below.

In short, we wish to promote dissemination of this information through as many channels as possible. However, we do wish to retain copyright on the HOWTO documents, and would like to be notified of any plans to redistribute the HOWTOs.

If you have questions, please contact Tim Bynum, the Linux HOWTO coordinator, at [email protected] via email.


5.2. Авторские права

Авторские права на русский перевод этого текста принадлежат © 2000 SWSoft Pte Ltd. Все права зарезервированы.

Этот документ является частью проекта Linux HOWTO.

Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе, физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но, так или иначе, автор текста и автор перевода желали бы знать о таких дистрибутивах.

Все переводы и производные работы, выполненные по документам Linux HOWTO, должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO, с которым можно связаться по адресу приведенному ниже.

Мы бы хотели распространить эту информацию по всем возможным каналам. Но при этом сохранить авторские права и быть уведомленными о всех планах распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь к координатору проекта Linux HOWTO по электронной почте: или к координатору русского перевода Linux HOWTO компании SWSoft Pte Ltd. по адресу


5.3. Ответственность

"Мини-HOWTO: Экономия дискового пространства'' была написана Guido Gonzato, [email protected].

Этот документ представлен "как есть". Я приложил много усилий для того, чтобы написать его в точности, но вы используете информацию из этого документа под свою ответственность. Я не несу никакой ответственности, за произошедшие неполадки и неисправности, возникшие по причине использования приведенной здесь информации.

Замечания и предложения приветствуются. Обращайтесь с ними ко мне.

наслаждайтесь Linux и жизнью,

Guido =8-)