В.А.Костромин


Об инсталляции Линукс в минимальной конфигурации

1. Введение

Какой бы из дистрибутивов Линукс мы ни взяли, будь то Red Hat, Caldera, Slackware или Debian, он занимает на установочном CD-ROM сотни мегабайт. И в ходе стандартной процедуры инсталляции устанавливается не только сама операционная система, но еще и масса разнообразного программного обеспечения, покрывающего практически все потребности некоего "среднего" пользователя. Только каждый из нас, устанавливающих на своем персональном компьютере ОС Линукс, сильно отличается от того понятия о среднем пользователе, который, по-видимому, имеется у разработчиков дистрибутивов. Ладно еще, если у Вас диск немерянной емкости. А мне пришлось недавно устанавливать Линукс на диск объемом чуть больше 400 Мегабайт и лишнее ПО стало просто проблемой. Тогда я и занялся экспериментами по установке Линукс на маленький диск. Результатами этих экспериментов я и хочу поделиться в этой статье.

Сначала расскажу о том, как мне удалось установить Линукс на маленький диск, а потом уж попытаюсь сделать кой-какие выводы, исходя из полученного опыта.

2. Конфигурация компьютера

Итак, получил я недавно бета-версию ASPLinux для тестирования. Экспериментировать я решил на компьютере Hewlett Packard Vectra XU 6/150 с процессором Pentium Pro 150 MHz, который имел 64 MB ОЗУ и на котором уже была установлена ОС Windows NT Workstation 4.0. При этом компьютер этот был у меня рабочим, так что уничтожать накопленную на нем информацию и переустанавливать ОС полностью я не собирался. Поэтому я выделил на диске раздел и начал устанавливать туда ASPLinux Release Candidate 3. Как именно был разбит диск, Вы можете видеть из следующего вывода команды sfdisk (можно, кстати, отметить, что это был SCSI-диск):
Disk /dev/sda: 259 cylinders, 255 heads, 63 sectors/track
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls   #blocks   Id  System
/dev/sda1   *      0+     63      64-   514048+   6  FAT16
/dev/sda2         64     258     195   1566337+   5  Extended
/dev/sda3          0       -       0         0    0  Empty
/dev/sda4          0       -       0         0    0  Empty
/dev/sda5         64+    122      59-   473886   83  Linux
/dev/sda6        128     258     131   1052257+   7  HPFS/NTFS
/dev/sda7        123+    127-      5-    40099+  82  Linux swap

3. Мучения с программой инсталляции ASPLinux Release Candidate 3

Надо сказать, что я хотел установить среду KDE, к которой к тому времени уже привык и которая мне нравится больше, чем GNOME. В начале процедуры инсталляции я выбрал варианты "Офис" (требуется 927 МБ, у меня имеется 462) и "Выборочная установка" и начал выбирать отдельные пакеты. Поскольку места в Linux-разделе у меня мало, это был очень длительный процесс. Я задавал некоторую совокупность пакетов, инсталлятор сообщал, что надо дополнительно установить еще что-то, а после того, как я разрешал установить те пакеты, которые нужны для выбранных, оказывалось, что места на диске недостаточно, и приходилось снова возвращаться к выбору пакетов.

После первых неудачных попыток уложиться в выделенное пространство я отключил вообще все, что посчитал возможным, включая многие пакеты в группе Base и KDE (решив, что все необходимое программа установки должна выбрать сама). В результате в обьем вроде бы влез, но тик в тик. Вся эта возня с выбором пакетов заняла, однако, часа 3. Однако, хотя программа установки и сообщила перед началом инсталляции пакетов, что места хватает, сам процесс установки завершился сообщением, что места все же не достаточно.

Начал снова. На сей раз с целью сокращения времени на выбор пакетов сразу отключил вообще все группы полностью, включая Base и X, оставил только KDE (решив, что все необходимое программа установки должна выбрать сама).

После разрешения зависимостей пересмотрел состав устанавливаемых пакетов и решил, что надо добавить:

в Base: dev
        console-tools
        findutils
        groff
        gzip
        kernel
        less
        man
        mount
        net-tools
        tar
        lilo
        linuxconf
        util-linux
в DOS /Windows Connectivity
           samba-client
в Development
           make
           man-pages
           texinfo
в Networked Workstation
           ftp
           Netscape-Communicator
           telnet
в X-Windows
          - фонты Koi8-R и cyrillic
          - freetype
и в KDE добавил KDE-office

(Кстати, совершенно непонятно, почему kernel не подключается при разрешении зависимостей, что ядро не нужно ни одному из пакетов?).

Пошла подготовка диска. Потом программа сообщила, что места на диске недостаточно (хотя по сообщению при выборе пакетов - хватало).

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

"Ошибка установки загрузчика
 Ошибка привязки загрузчика
 ОК"

Снова запустил установку ASPLinux. На этот раз выбрал вариант вообще без X Window (и, естественно, уже никаких KDE). При разрешении зависимостей кому-то потребовались фонты для X, но установка ASP Loader прошла в целом успешно. И загрузка тоже. В текстовом режиме, естественно. Получаем командную строку.

Тут я решил проанализировать, какие пакеты оказались установлены в результате. Запустил команду

[root]# rpm -qa > installed-rpm.txt
Просмотр файла installed-rpm.txt показал, что были установлены пакеты
       AbiSuite
        XFree86-SVGA
        aalib
        gimp
и много чего еще, чего я не заказывал, и что не было обусловлено необходимостью разрешения взаимозависимостей.

Я занялся удалением лишних пакетов и мне удалось без ущерба для работоспособности системы удалить уже упомянутые и еще следующие пакеты:

  kernel-smp
        kernel-pcmcia
        gimp-perl
        gnome-print
        gpgp
        gdk-pixbuf
        libunicode
        bc
        db2
        sendmail
Таким образом я довел объем занимаемого пространства на диске до 227 МБ. Уверен, что при более тщательном отборе пакетов можно добиться того, что минимальная конфигурация Линукс для консольного режима работы поместится на 200 или даже 100 МБ.

4. Минимальная конфигурация Red Hat 6.2 Cyryllic Edition

Поскольку мне все же хотелось получить не только текстовый, но и графический режим, я вынужден был вернуться к дистрибутиву Red Hat 6.2 Cyryllic Edition. Но, после описанных Выше злоключений с установкой ASPLinux (который мне все же больше нравится, потому что использует уже 4-ую версию X Window и новую версию KDE, так что я с нетерпением жду выхода финальной версии) я после установки решил провести удаление тех пакетов, которые мне были не нужны. Вот список тех пакетов, которые в результате остались в моей системе:

setup-2.1.8-1                       filesystem-1.3.5-1              basesystem-6.0-4
ldconfig-1.9.5-16               XFree86-SVGA-3.3.5-3bc          glibc-2.1.3-15
shadow-utils-19990827-10        mktemp-1.5-2                    termcap-10.2.7-9
libtermcap-2.0.8-20             bash-1.14.7-22                  MAKEDEV-2.5.2-1
Mesa-3.2-2                      ncurses-5.0-11                  info-4.0-5
ORBit-0.5.0-3                   SysVinit-2.78-5                 X11R6-contrib-3.3.2-11
chkconfig-1.1.2-1               fileutils-4.0-21                utempter-0.5.2-2
XFree86-3.3.6-20                gawk-3.0.4-2                    textutils-2.0a-2
cracklib-2.7-5                  cracklib-dicts-2.7-5            pwdb-0.61-0
mingetty-0.9.4-11               sed-3.02-6                      e2fsprogs-1.18-5
console-tools-19990829-10       procps-2.0.6-5                  vixie-cron-3.0.1-40
modutils-2.3.9-6                popt-1.5-0.48                   logrotate-3.3.2-1
sysklogd-1.3.31-16              psmisc-19-2                     which-2.9-2
initscripts-5.00-1              glib-1.2.6-3                    pam-0.72-6
sh-utils-2.0-5                  bzip2-0.9.5d-2                  zlib-1.1.3-6
rpm-3.0.4-0.48                  grep-2.4-3                      XFree86-libs-3.3.6-20
XFree86-xfs-3.3.6-20            chkfontpath-1.7-2               XFree86-75dpi-fonts-3.3.6-20
XFree86-cyrillic-fonts-3.3.6-20 ed-0.2-13                       XFree86-cyrillic-fonts-collection-75dpi-0.1-2
XFree86-cyrillic-fonts-cronyx-75dpi-0.1-3                       Xaw3d-1.3-21
Xconfigurator-4.3.5-1           anacron-2.1-6                   ash-0.2-20
at-3.1.7-14                     audiofile-0.1.9-3               authconfig-3.0.3-1
autorun-2.61-1                  bdflush-1.5-11                  bind-utils-8.2.2_P5-9
binutils-2.9.5.0.22-6           control-panel-3.13-1            crontabs-1.7-7
dev-2.7.18-3                    diffutils-2.7-17                esound-0.2.17-2
etcskel-2.3-1                   findutils-4.1-34                freetype-1.3.1-5
ftp-0.16-3                      fvwm2-2.2.4-4                   fvwm2-icons-2.2.4-4
gd-1.3-6                        gdbm-1.8.0-3                    getty_ps-2.0.7j-9
ghostscript-5.50-1              ghostscript-fonts-5.50-1        gimp-1.0.4-7
gimp-libgimp-1.0.4-7            glib10-1.0.6-6                  gmp-2.0.2-13
gnome-audio-1.0.0-8             gnome-libs-1.0.55-12            gpm-1.19.1-1
groff-1.15-8                    groff-perl-1.15-8               gtk+-1.2.6-7
gtk+10-1.0.6-6                  gv-3.5.8-9                      gzip-1.2.4a-2
hdparm-3.6-4                    helptool-2.4-9                  imlib-1.9.7-3
indexhtml-6.2-1                 ispell-3.1.20-25                kbdconfig-1.9.2.4-1
kdeadmin-1.1.2-6                kdebase-1.1.2-33                kdebase-lowcolor-icons-1.1.2-33
kdegraphics-1.1.2-3             kdelibs-1.1.2-15                kdemultimedia-1.1.2-7
kdenetwork-1.1.2-13             kdesupport-1.1.2-12             kdeutils-1.1.2-4
kernel-2.2.14-6.1.1             kernel-utils-2.2.14-6.1.1       kernelcfg-0.5-5
korganizer-1.1.2-3              kpackage-1.3.10-3               kudzu-0.36-2
ld.so-1.9.5-13                  less-346-2                      libc-5.3.12-31
libgr-2.0.13-23                 libgr-progs-2.0.13-23           libjpeg-6b-10
libpng-1.0.5-3                  libstdc++-2.9.0-30              libtiff-3.5.4-5
libungif-4.1.0-4                libxml-1.8.6-2                  lilo-0.21-15
redhat-release-6.2-1            linuxconf-1.17r2-6              losetup-2.10f-1
lpr-0.50-4                      lynx-2.8.3-2                    mailcap-2.0.6-1
man-1.5h1-1                     mkbootdisk-1.2.5-3              mkinitrd-2.4.1-2
mkxauth-1.7-12                  mount-2.10f-1                   mouseconfig-4.4-1
mpage-2.4-8                     mtools-3.9.6-3                  net-tools-1.54-4
netcfg-2.25-1                   netscape-common-4.72-6          netscape-communicator-4.72-6
newt-0.50.8-2                   nfs-utils-0.1.6-2               ntsysv-1.1.2-1
passwd-0.64.1-1                 patch-2.5-10                    perl-5.00503-10
pidentd-3.0.10-5                pnm2ppa-0.8.9pre1-1             portmap-4.0-19
post-rhinstall-cyr-0.2-7        printtool-3.44-1                pygtk-0.6.4-1
python-1.5.2-13                 pythonlib-1.23-1                qt1x-1.45-3
readline-2.2.1-6                rhs-printfilters-1.63-1         rootfiles-5.2-5
rsh-0.16-12                     rxvt-2.6.1-8                    samba-client-2.0.6-9
samba-common-2.0.6-9            sash-3.4-2                      screen-3.9.5-4
sendmail-8.9.3-20               setserial-2.15-3                setuptool-1.2-5
slang-1.2.2-5                   tar-1.13.17-3                   tcl-8.0.5-35
tclx-8.0.5-35                   tcsh-6.09-4                     telnet-0.16-6
time-1.7-9                      timeconfig-3.0.3-2              timetool-2.7.3-1
tix-4.1.0.6-35                  tk-8.0.5-35                     tkinter-1.5.2-13
tksysv-1.1-3                    tmpwatch-2.2-1                  unzip-5.40-2
urw-fonts-2.0-4                 usermode-1.20-1                 util-linux-2.10f-7
wmconfig-0.9.8-1                words-2-12                      xinitrc-2.9-1
xpaint-2.4.9-10                 xpdf-0.90-4                     xpm-3.4k-2
zip-2.3-4                       mc-4.5.42-10
Как сообщает команда df, в совокупности все перечисленные пакеты занимают на диске чуть больше 300 МБ:
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/sda5               458894    307308    127892  71% /
Я уверен, что и это еще далеко не предел, поскольку я оставил в системе такие пакеты, как Netscape, lynx, xpaint, samba, telnet и другие, которые не являются абсолютно необходимыми для работы на изолированном компьютере. Не говоря уже о том, что интегрированная графическая среда KDE не является минимально необходимым вариантом интерфейса пользователя для графического режима.

5. Некоторые умозаключения по результатам злоключений

1. Существует принципиальная возможность установки ОС Линукс на жесткий диск (или на раздел диска) объемом не более 300 Мегабайт, а для работы только в консольном (текстовом) режиме - даже на раздел в 200 Мб. Только пока программы инсталляции этого не позволяют.

2. Хотя и говорится во многих статьях, что одно из достоинств ОС Линукс заключается в свободе выбора для пользователя, разработчики процедур инсталляции (хоть выше речь шла только об ASPLinux, но то же самое относится и к Red Hat 6.2, и к Black Cat 6.2) сильно ограничивают свободу выбора на этапе установки. Не знаю, прочитают ли они этот мой материал, но очень хотелось бы среди вариантов установки видеть два дополнительных варианта: "Минимальная конфигурация для текстового (консольного) режима" и "Минимальная конфигурация для графического режима". Это позволит не только устанавливать Линукс на маленькие диски, но и расширит возможности формирования именно той конфигурации системы, которая нужна конкретному, а не абстрактному "среднему" пользователю.

3. Развивая дальше только что сформулированное предложение, можно рассмотреть целесообразность следующего примерного алгоритма проведения инсталляциии системы.
Сначала задать вопрос: "Будете устанавливать систему в текстовом режиме или в графическом режиме?". После ответа на этот вопрос предложить следующие варианты:

Если пользователь выбирает первый вариант, то производится установка минимального набора (соответственно, для графического или текстового режимов). Если пользователь выбирает вариант "Выборочная инсталляция" или "Upgrade системы", ему предоставляется возможность произвести выбор нужных ему пакетов.
Можно, конечно, организовать и дальнейшее ветвление: сервер и рабочая станция (=персональный компьютер) или KDE, GNOME, fvwm, например. Естественно, что все это ветвление должно быть организовано после того, как пользователь сообщит программе инсталляции, что хочет делать какой-то выбор.

4. А пока разработчики дистрибутивов ставят Вам все, что им взбредет в голову, имеет смысл после инсталляции системы пересмотреть состав установленных пакетов с помощью команды rpm -qa и удалить те пакеты, которые Вам вообще не нужны, или которые Вы пока не предполагаете использовать. Это позволит Вам примерно вдвое сократить объем дискового пространства, занимаемого Вашей системой. А если в будущем потребуется какой-то пакет, его не трудно будет поставить заново с Вашего дистрибутивного CD-ROM.
Конечно, начинающий пользователь не всегда может воспользоваться этим советом просто потому, что по названиям rpm-пакетов трудно понять, когда и зачем этот пакет нужен. На этот случай я могу порекомендовать (по крайней мере пользователям Red Hat и его клонов) приобрести книгу
Red Hat Linux 6.2. Учебный курс, в которой приведен список пакетов и данные об их назначении.
Кстати, рекомендации по поводу выбора минимального набора пакетов есть в только что появившейся на русском языке книге Gerhard Mourani "Безопасность и оптимизация Linux. Редакция для Red Hat." Перевод Е. Воскресенского. Правда рекомендации эти относятся к установке Линукс на сервер, но просмотреть все же полезно.

5. Представленный в разделе 4 список пакетов интересен еще и с той точки зрения, что именно включенные в него программы стоит в первую очередь изучать начинающим пользователям ОС Линукс.

6. Приведенные мной цифры по минимально необходимому объему дискового пространства, конечно, очень далеки от реальных минимумов. Ведь существуют дистрибутивы, которые помещаются на одной или нескольких дискетах. И я постараюсь поделиться с Вами впечатлениями о таких дистрибутивах в одной из своих будущих заметок. Но само существование таких дистрибутивов наталкивает на мысль о том, что Линукс в принципе очень нетребователен к конфигурации компьютера. Поэтому я постараюсь (по мере накопления опыта) продолжить тему установки Линукс на компьютеры с ограниченными ресурсами.


В.А.Костромин
Последние изменения
в содержание файла внесены
29 марта 2001 г.