Содержание

SlackWare - минимальная установка

Навеяло: SlackWare - minimal install
Автор: pilgrim
Выражаю особую благодарность bormant за верно указанное направление мысли:).

На зеленом фоне будет выделен прямой перевод с ресурса SlackWare - minimal install


В данной статье попытаемся собрать минимальную комплектацию SlackWare 14.1 для работы на слабых компьютерах. Хочется отметить, что указанный способ рекомендуется применять пользователям, которые уже имеют некоторый опыт общения со SlackWare и Linux в целом. И не потому, что нижеописанное будет трудно для восприятия новичками. Причина в том, что система будет практически чистой в софтверном плане, а зная политику SlackWare в плане самостоятельной установки зависимостей, новичку будет несколько сложно установить и настроить какое-либо программное обеспечение.

Были выбраны только те установочные пакеты, которые необходимы для минимальной комплектации операционной системы SlackWare. Данная комплектация ни коим образом не претендует на абсолютный минимум, поддерживающий работоспособность SlackWare - все зависит от того, какие задачи будут реализовываться. Настоящие материалы рекомендуется использовать только в качестве примера реализации операционной системы. Гарантий на функционирование системы для ваших задач не предоставляется. Официальные рекомендации обычны - используйте полную установку SlackWare.

Вступление

Пакеты, отмеченные звездочкой, можно опустить, хотя установщик SlackWare отмечает их обязательными. Например, некоторые пользователи так никогда и не используют crond или elvis в своей работе, но установщик SlackWare посчитал их достаточно важными для установки. В то же время, gawk может показаться многим достаточно необходимым приложением, но оно отмечено установщиком, как необязательное. Мы настятельно рекомендуем не пренебрегать пакетами acl, attr и cxxlibs. Пусть они не потребуются для загрузки операционной системы, но будут являться основными инструментами, позволяющими сделать вашу систему продуктивной. Более подробная информация о пакетах содержится в сценариях maketag, располагающимся в корнях пакетных наборов. В данных файлах содержится краткое описание каждого установочного пакета и переключатель, регулирующий состояние пакета во время установки - on или off. Кроме того, в установочных наборах находятся Tagfile, где каждый установочный пакет отмечен как: ADD - обязателен к установке; REC - рекомендуется к установке; OPT - при установке, будут расширены возможности системы; SKP - пакет будет пропущен при установке.

Обязательные пакеты (REQUIRED)

Следующие пакеты отмечены установщиком, как обязательные к установке для SlackWare 14.1:

a/aaa_base
a/aaa_elflibs
a/acl
a/attr
a/bash
a/bin
a/coreutils
a/cxxlibs
a/dcron *
a/devs
a/e2fsprogs
a/elvis *
a/etc
a/grep
a/gzip
a/kernel-firmware *
a/kernel-modules-smp
a/kmod
a/less *
a/openssl-solibs
a/pkgtools
a/procps
a/sed
a/shadow
a/sharutils *
a/sysvinit
a/sysvinit-scripts
a/tar
a/udev
a/util-linux
a/xz

Пакеты, расширяющие возможности системы (OPTIONAL)

Пакеты, помеченные как «расширяющие возможности (опциональные)» установщиком SkackWare:

a/getty-ps *

Рекомендации для пользователя

Следующие пакеты рекомендуется устанавливать с целью повышения удобства работы с системой. Примечание: пакеты, отмеченные воcклицательным знаком содержат библиотеки и исполняемые файлы необходимые другим приложениям. Кроме того, можно заменить n/openssl на a/openssl-solibs, l/glibc на a/glibc-solibs.
a/aaa_terminfo
a/bzip2 !
a/dialog
a/findutils
a/gawk
a/kernel-huge-smp
a/lilo
a/logrotate
a/pciutils
a/sysklogd
a/sysvinit-functions
a/usbutils
a/which
ap/diffutils
ap/mc
ap/slackpkg
l/glibc !
n/dhcpcd (если если адреса в сети раздаются DHCP)
n/gnupg
n/iputils
n/net-tools
n/network-scripts
n/openssh !
n/wget

Определение зависимостей

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

1. С помощью ldd

Выводит список разделяемых библиотек приложения

root@slack-test:~# which mc
/usr/bin/mc
root@slack-test:~# ldd /usr/bin/mc
        linux-gate.so.1 (0xffffe000)
        libslang.so.2 => /usr/lib/libslang.so.2 (0xb75bf000)
        libgpm.so.2 => /lib/libgpm.so.2 (0xb75b9000)
        libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0xb75b5000)
        libdl.so.2 => /lib/libdl.so.2 (0xb75b0000)
        libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb7481000)
        libpthread.so.0 => /lib/libpthread.so.0 (0xb7467000)
        libc.so.6 => /lib/libc.so.6 (0xb72dc000)
        libm.so.6 => /lib/libm.so.6 (0xb729a000)
        libncurses.so.5 => /lib/libncurses.so.5 (0xb724c000)
        /lib/ld-linux.so.2 (0xb7700000)

или проще:

root@slack-test:~# ldd $(which mc)
        linux-gate.so.1 (0xffffe000)
        libslang.so.2 => /usr/lib/libslang.so.2 (0xb75bc000)
        libgpm.so.2 => /lib/libgpm.so.2 (0xb75b6000)
        libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0xb75b2000)
        libdl.so.2 => /lib/libdl.so.2 (0xb75ad000)
        libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb747e000)
        libpthread.so.0 => /lib/libpthread.so.0 (0xb7464000)
        libc.so.6 => /lib/libc.so.6 (0xb72d9000)
        libm.so.6 => /lib/libm.so.6 (0xb7297000)
        libncurses.so.5 => /lib/libncurses.so.5 (0xb7249000)
        /lib/ld-linux.so.2 (0xb76fd000)


2. С помощью tracepkg.
tracepkg - bash-сценарий, который с помощью ldd перечитывает директорию /var/log/packages. Страница автора.
3. С помощью objdump.

Еще один метод поиска информации. С его помощью можно получить больше информации, нежели чем с ldd, за счет дополнительного использования grep,sed,gawk. Необходимые разделяемые библиотеки помечены, как NEEDED.

root@slack-test:~# objdump -x $(which mc) | grep NEEDED
  NEEDED               libslang.so.2
  NEEDED               libgpm.so.2
  NEEDED               libgmodule-2.0.so.0
  NEEDED               libdl.so.2
  NEEDED               libglib-2.0.so.0
  NEEDED               libpthread.so.0
  NEEDED               libc.so.6


4. Поиск установленных библиотек. Проводится также по soname библиотеки.

root@slack-test:/# grep -FR /libmpc.so.2 /var/log/packages
/var/log/packages/libmpc-0.8.2-i486-2:usr/lib/libmpc.so.2.0.0


5. Проверка существует ли библиотека физически.

root@slack-test:/# ls -l  /lib/libc.so.6
lrwxrwxrwx 1 root root 12 Jan  8 03:14 /lib/libc.so.6 -> libc-2.17.so*


6. Как и приложения, сами библиотеки могут зависеть от других библиотек, что проверяется аналогично:

root@slack-test:/# ldd /lib/libc.so.6
        /lib/ld-linux.so.2 (0xb773a000)
        linux-gate.so.1 (0xffffe000)

Примечание: список директорий расположения разделяемых библиотек в конкретной системе можно увидеть в /etc/ld.so.conf

Выбор ядра

Как известно, рекомендуется устанавливать smp версии ядер, которые поддерживают мультиядерность современных процессоров, однако, если вы обладатель старинного одноядерного Celeron'а или Pentium III/IV - лучше устанавливать ядра nosmp, поскольку ваш процессор может и не знать о существовании i686
Для установки NOSMP выбираем:

a/kernel-modules вместо a/kernel-modules-smp
a/kernel-huge вместо a/kernel-huge-smp

Следующая задача - переход на generic ядро. Что это такое можно почитать здесь и здесь.

Установка зависимостей

Наша система довольно минималистична, а по сему нужно будет доставить несколько пакетов, а именно:

a/cpio
a/kernel-generic
a/mkinitrd
l/mpfr

Создание образа начальной загрузки ядра

mkinitrd -c -k 3.10.17 -m ext4 -f ext4 -r /dev/sda2

или

/usr/share/mkinitrd/mkinitrd_command_generator.sh -r | bash

Настройка lilo

В /etc/lilo.conf вносим следующие изменения (!будьте внимательны!):

# Linux bootable partition config begins
image = /boot/vmlinuz-huge-3.10.17
  root = /dev/sda2
  label = slacky-huge
  read-only  # Partitions should be mounted read-only for checking
image = /boot/vmlinuz-generic-3.10.17
  initrd = /boot/initrd.gz
  root = /dev/sda2
  label = slacky-generic
  read-only
  # Linux bootable partition config ends

Если у вас Slackware 14.1 и новее, пакеты ядра устанавливают на свои ядра символьные ссылки /boot/vmlinuz-huge, /boot/vmlinuz-generic-smp, /boot/vmlinuz-generic, их можно использовать в строках image. Дополнительный плюс – если обновится ядро, не придется править lilo.conf, только пересобрать initrd для ядра generic.

lilo

После перезагрузки выбираем пункт slacky-generic, ну или тот, который указан у вас.

Работоспособную версию с huge лучше оставить.

Подключить generic-ядро возможно и помимо предшествующей установки ядра-huge, установив соответствующие зависимости. Однако, если в дальнейшем при загрузке ОС вылетает kernel panic - 80%, к ядру не подключен модуль работы с ext4, не видны sata-интерфейсы и т. д. В таком случае загружаемся с установочного диска SlackWare 14.1 до вывода приглашения. Наша задача проделать те же действия, что описаны выше, но для этого нужно подключиться к системе на жестком диске:

mount /dev/sda2 /mnt
for d in dev proc sys; do mount --bind /$d /mnt/$d; done
chroot /mnt

А дальше продолжаем с пункта Создание образа начальной загрузки ядра.

При замене на generic-ядро я получил задействованной всего лишь 38 Мб ОЗУ, против 83 Мб при huge-ядре.

Обсуждаем статью