Различия

Показаны различия между двумя версиями страницы.


wiki:articles:smini [21/06/2016 10:36] (текущий) – создано - внешнее изменение 127.0.0.1
Строка 1: Строка 1:
 +^**SlackWare - минимальная установка**^
 +
 +Навеяло: [[http://wiki.linuxquestions.org/wiki/Slackware-Minimal_Install | SlackWare - minimal install]]\\
 +Автор: [[http://wiki.slackware.su/wiki:user:pilgrim| pilgrim]]\\
 +Выражаю особую благодарность **[[http://wiki.slackware.su/wiki:user:bormant| bormant]]** за верно указанное направление мысли:).\\
 +\\
 +<note tip>На зеленом фоне будет выделен прямой перевод с ресурса [[http://wiki.linuxquestions.org/wiki/Slackware-Minimal_Install | SlackWare - minimal install]]</note>
 +\\
 +В данной статье попытаемся собрать минимальную комплектацию //SlackWare 14.1// для работы на слабых компьютерах. Хочется отметить, что указанный способ рекомендуется применять пользователям, которые уже имеют некоторый опыт общения со //SlackWare// и //Linux// в целом. И не потому, что нижеописанное будет трудно для восприятия новичками. Причина в том, что система будет практически чистой в софтверном плане, а зная политику //SlackWare// в плане самостоятельной установки зависимостей, новичку будет несколько сложно установить и настроить какое-либо программное обеспечение.
 +
 +<note tip>Были выбраны только те установочные пакеты, которые необходимы для минимальной комплектации операционной системы //SlackWare//. Данная комплектация ни коим образом не претендует на абсолютный минимум, поддерживающий работоспособность //SlackWare// - все зависит от того, какие задачи будут реализовываться.
 +Настоящие материалы рекомендуется использовать только в качестве примера реализации операционной системы. Гарантий на функционирование системы для ваших задач не предоставляется. Официальные рекомендации обычны - используйте полную установку //SlackWare//.</note>
 +
 +=====Вступление=====
 +
 +<note tip>Пакеты, отмеченные звездочкой, можно опустить, хотя установщик //SlackWare// отмечает их обязательными. Например, некоторые пользователи так никогда и не используют //crond// или //elvis// в своей работе, но установщик //SlackWare// посчитал их достаточно важными для установки.
 +В то же время, //gawk// может показаться многим достаточно необходимым приложением, но оно отмечено установщиком, как необязательное.
 +Мы настятельно рекомендуем не пренебрегать пакетами //acl, attr и cxxlibs//. Пусть они не потребуются для загрузки операционной системы, но будут являться основными инструментами, позволяющими сделать вашу систему продуктивной.
 +Более подробная информация о пакетах содержится в сценариях //maketag//, располагающимся в корнях пакетных наборов. В данных файлах содержится краткое описание каждого установочного пакета и переключатель, регулирующий состояние пакета во время установки - //**on**// или //**off**//.
 +Кроме того, в установочных наборах находятся //Tagfile//, где каждый установочный пакет отмечен как:
 +//ADD// - обязателен к установке;
 +//REC// - рекомендуется к установке;
 +//OPT// - при установке, будут расширены возможности системы;
 +//SKP// - пакет будет пропущен при установке.</note>
 +
 +=====Обязательные пакеты (REQUIRED)=====
 +
 +Следующие пакеты отмечены установщиком, как обязательные к установке для //SlackWare 14.1//:
 +
 +<code>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</code>
 +
 +=====Пакеты, расширяющие возможности системы (OPTIONAL)=====
 +
 +Пакеты, помеченные как "расширяющие возможности (опциональные)" установщиком //SkackWare//:
 +
 +<code>a/getty-ps *</code>
 +
 +=====Рекомендации для пользователя=====
 +
 +<note tip>Следующие пакеты рекомендуется устанавливать с целью повышения удобства работы с системой.
 +Примечание: пакеты, отмеченные воcклицательным знаком содержат библиотеки и исполняемые файлы необходимые другим приложениям. Кроме того, можно заменить //n/openssl// на //a/openssl-solibs//, //l/glibc// на //a/glibc-solibs//.</note>
 +<code>
 +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</code>
 +
 +
 +=====Определение зависимостей=====
 +
 +Ниже описаны несколько путей определения зависимостей программ, установленных в системе.
 +
 +1. С помощью **ldd**
 +
 +Выводит список разделяемых библиотек приложения
 +<code>
 +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)</code>
 +
 +или проще:
 +<code>
 +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)
 +</code>\\
 +
 +2. С помощью **tracepkg**.\\
 +//tracepkg// - bash-сценарий, который с помощью //ldd// перечитывает директорию ///var/log/packages// [[http://www.slacky.eu/~absinthe/ | Страница автора]].
 +\\
 +3. С помощью **objdump**.
 +
 +Еще один метод поиска информации. С его помощью можно получить больше информации, нежели чем с //ldd//, за счет дополнительного использования //grep,sed,gawk//. Необходимые разделяемые библиотеки помечены, как //NEEDED//.
 +<code>
 +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
 +</code>\\
 +4. Поиск установленных библиотек.
 +Проводится также по soname библиотеки.
 +<code>
 +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
 +</code>\\
 +5. Проверка существует ли библиотека физически.
 +<code>
 +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*</code>
 +\\
 +6. Как и приложения, сами библиотеки могут зависеть от других библиотек, что проверяется аналогично:
 +<code>
 +root@slack-test:/# ldd /lib/libc.so.6
 +        /lib/ld-linux.so.2 (0xb773a000)
 +        linux-gate.so.1 (0xffffe000)</code>
 +
 +Примечание: список директорий расположения разделяемых библиотек в конкретной системе можно увидеть в ///etc/ld.so.conf//
 +
 +=====Выбор ядра=====
 +
 +Как известно, рекомендуется устанавливать smp версии ядер, которые поддерживают мультиядерность современных процессоров, однако, если вы обладатель старинного одноядерного //Celeron//'а или //Pentium III/IV// - лучше устанавливать ядра nosmp, поскольку ваш процессор может и не знать о существовании //i686//\\
 +Для установки //NOSMP// выбираем:
 +<code>
 +a/kernel-modules вместо a/kernel-modules-smp
 +a/kernel-huge вместо a/kernel-huge-smp</code>
 +
 +Следующая задача - переход на //generic// ядро. Что это такое можно почитать [[http://www.slackware.ru/wiki/%D0%A1%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D1%8B%D0%B5_%D1%8F%D0%B4%D1%80%D0%B0_%D0%B2_Slackware | здесь]] и [[https://www.google.ru/search?q=%D1%80%D0%B0%D0%B7%D0%BD%D0%B8%D1%86%D0%B0+%D0%BC%D0%B5%D0%B6%D0%B4%D1%83+huge+%D0%B8+generic+slackware&oq=%D1%80%D0%B0%D0%B7%D0%BD%D0%B8%D1%86%D0%B0+%D0%BC%D0%B5%D0%B6%D0%B4%D1%83+huge+%D0%B8+generic+slackware&aqs=chrome..69i57.23164j0j4&sourceid=chrome&espv=210&es_sm=93&ie=UTF-8 | здесь]].
 +
 +=====Установка зависимостей=====
 +
 +Наша система довольно минималистична, а по сему нужно будет доставить несколько пакетов, а именно:
 +
 +<code>
 +a/cpio
 +a/kernel-generic
 +a/mkinitrd
 +l/mpfr
 +</code>
 +
 +=====Создание образа начальной загрузки ядра=====
 +
 +<code>
 +mkinitrd -c -k 3.10.17 -m ext4 -f ext4 -r /dev/sda2
 +</code>
 +или
 +<code>
 +/usr/share/mkinitrd/mkinitrd_command_generator.sh -r | bash
 +</code>
 +=====Настройка lilo=====
 +В ///etc/lilo.conf// вносим следующие изменения (!будьте внимательны!):
 +<code>
 +# 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
 +</code>
 +Если у вас Slackware 14.1 и новее, пакеты ядра устанавливают на свои ядра символьные ссылки /boot/vmlinuz-huge, /boot/vmlinuz-generic-smp, /boot/vmlinuz-generic, их можно использовать в строках image. Дополнительный плюс -- если обновится ядро, не придется править lilo.conf, только пересобрать initrd для ядра generic.
 +<code>lilo</code>
 +
 +После перезагрузки выбираем пункт //slacky-generic//, ну или тот, который указан у вас.
 +
 +Работоспособную версию с //huge// лучше оставить.
 +
 +Подключить //generic-ядро// возможно и помимо предшествующей установки ядра-//huge//, установив соответствующие зависимости. Однако, 
 +если в дальнейшем при загрузке ОС вылетает //kernel panic// - 80%, к ядру не подключен модуль работы с //ext4//, не видны //sata//-интерфейсы и т. д. В таком случае загружаемся с установочного диска //SlackWare 14.1// до вывода приглашения. Наша задача проделать те же действия, что описаны выше, но для этого нужно подключиться к системе на жестком диске:
 +<code>
 +mount /dev/sda2 /mnt
 +for d in dev proc sys; do mount --bind /$d /mnt/$d; done
 +chroot /mnt
 +</code>
 +
 +А дальше продолжаем с пункта  [[wiki:articles:smini#sozdanie_obraza_nachalnoj_zagruzki_jadra| Создание образа начальной загрузки ядра]].
 +\\
 +\\
 +**При замене на //generic//-ядро я получил задействованной всего лишь 38 Мб ОЗУ, против 83 Мб при huge-ядре.**
 +\\
 +\\
 +[[http://slackware.su/forum/index.php/topic,436.0.html | Обсуждаем статью]]
  
Навигация
Печать/экспорт
QR Code
QR Code wiki:articles:smini (generated for current page)