В данной статье попытаемся собрать минимальную комплектацию 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
Создание рабочей среды ядра
cd /boot mkinitrd -c -k 3.10.17 -m ext4 -f ext4 -r /dev/sda2
Настройка 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
lilo
После перезагрузки выбираем пункт slacky-generic, ну или тот, который указан у вас.
Работоспособную версию с huge лучше оставить.
Подключить generic-ядро возможно и помимо предшествующей установки ядра-huge, установив соответствующие зависимости. Однако, если в дальнейшем при загрузке ОС вылетает kernel panic - 80%, к ядру не подключен модуль работы с ext4, не видны sata-интерфейсы и т. д. В таком случае загружаемся с установочного диска SlackWare 14.1 до вывода приглашения. Наша задача проделать те же действия, что описаны выше, но для этого нужно подключиться к системе на жестком диске:
mkdir /mnt/myos mount /dev/sda2 /mnt/myos chroot /mnt/myos
А дальше продолжаем с пункта Создание рабочей среды ядра.
При замене на generic-ядро я получил задействованной всего лишь 38 Мб ОЗУ, против 83 Мб при huge-ядре.
Оригинал статьи здесь.