| |
— | wiki:articles:smini [21/06/2016 10:36] (текущий) – создано - внешнее изменение 127.0.0.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 | Обсуждаем статью]] |
| |