Содержание

PuppyRus-A (PRA)

Модульный frugal, совместимый с Arch Linux (Замороженный Rolling_release) для домашнего и носимого на флэш использования. Оптимизирован для полной загрузки в RAM. Маленький (<100mb без софта) и быстрый. Возможна установка второй системой в папку на ntfs, fat.

Конструктор: скачиванием нужных модулей в соответствующие каталоги, пользователь сам создает итоговую конфигурацию дистрибутива, оптимизированную именно под него

Состав, использование

  • Оптимальный режим работы (максимальная скорость, экономия батареи ноутбука и ресурса носителей) дает режим copy2ram + save.pfs
  • Постоянно используемые модули рекомендуется автозагружать через /modules
  • Остальные - подключать \ отключать по мере необходимости с поможью утилиты sfs-get с копированием в память из /optional

3 уровня использования PRA

По квалификации пользователя

  1. sfs-get подключение готовых модулей.pfs. Доступно каждому. Достаточно скопировать в /modules. В итоге каждый получает дистрибутив с тем софтом, который нравится ему
  2. pacman - установка в сохраненку и создание модулей
  3. AUR, ABS (компиляция)

3 источника и 3 составные части

  1. Arch Linux.
  2. Puppy
    • Общее: frugal, DEVX, некоторые утилиты
    • Отличия: initrd, софт модулями (не «все включено»), только русская версия, более свежий софт (из arch), свой менеджер модулей
  3. Porteus
    • Общее: frugal, initrd, некоторые утилиты
    • Отличия: arch, а не slackware

Источники программного обеспечения

  1. arch репозиторий (использовать через pacman)
  2. Свой arch pkg репозиторий (почти все, кроме pra-extra из него уже в iso). Можно использовать без PRA - в любом Arch. pra-extra - в основном собранные из AUR пакеты

Все 3 совместимы между собой

Замороженный Rolling_release

  • Arch Linux - Rolling_release.
  • Частичные обновления официально не поддерживаются
  • Если не обновляться вместе с ним - станет невозможно пользоваться его pacman репозиторием и придется постоянно пересобирать все модули

Выход: Arch_Rollback_Machine, т.е. необновляемый срез репозитория на момент сборки

Компиляция

Необходимые для компиляции (AUR, ABS) пакеты (gcc, make и т.п.) и части пакетов (/include и пр.) из базовых модулей выделены в отдельный модуль DEVX. Т.е. так же как в Puppy Linux.

Загрузить штатно : sfs-get DEVX. Модуль нужен только для компиляции. Для обычной работы и установки пакетов и модулей - DEVX не нужен

Установка, загрузка

Установка на hdd, usbflash

Для запуска PRA подойдет любой linux загрузчик: grub4dos, grub, grub2, burg

Установка grub4dos

  1. Установить (или использовать имеющийся) загрузчик grub4dos
    • grub4dos включен в iso: cat /BOOT/grub4dos/install/install.txt вместе с установщиками под dos,windows,linux . Или установите штатными средствами любого puppy.
  2. Переписать все файлы в корень любого раздела
    • Будьте внимательны с путями или регистром в menu.lst
    • Проверить: в командном режиме grub4dos : ls /pra

Если не уверены в себе - устанавливайте загрузчик на usbflash. Файлы при этом могут располагаться на любом другом носители. Тогда это никак не повлияет на другие установленные у Вас на hdd ОС

title PRA. Пример загрузки с HDD.
find --set-root --ignore-floppies --ignore-cd /pra/initrd.xz
kernel /pra/vmlinuz-3.11.3-pf dir=pra quiet 
initrd /pra/initrd.xz

Установка на компьютер с grub2

В установленном linux с grub2 :

sudo echo "\ 
#!/bin/sh
exec tail -n +3 $0
menuentry 'PRA' {
  search --no-floppy --file /pra/initrd.xz --set=root
  linux /pra/vmlinuz-3.11.3-pf dir=pra quiet noload='rox;intel'
  initrd /pra/initrd.xz
}" >/etc/grub.d/50_custom && sudo update-grub2 && sudo reboot

Подробности

Установка на компьютер с Windows XP

Установка на компьютер с Windows Vista,7,8

FULL установка

full-vs-frugal

Теряется весь смысл задумки. Лучше поставить с обычный Arch. Но если вы 1 пользователь на стационарном пк и не склонны к экспериментам:

  1. Разметить диск. Нужен как минимум 1 раздел ext* под / и раздел swap
  2. Установить линукс-загрузчик или использовать имеющийся. Утилиты установки grub4dos в .iso /boot/grub4dos/install
  3. Загрузить систему со всеми нужными Вам модулями и сохраненками
  4. Переписать все на подготовленный раздел. Не забыль про ядро и initrd
  5. Поправить конфиг. загрузчика.

Порядок загрузки системы

  1. initrd /init
  2. systemd
  3. /etc/rc.local
  4. Автологин юзера сделан через systemd /etc/systemd/system/getty.target.wants/getty@tty1.service
  5. /etc/profile
  6. /etc/bash.bashrc
  7. Запуск xorg ~/.bash_profile
  8. ~/.bashrc
  9. Запуск wm /home/live/.xinitrc
  10. ~/Startup/*
  11. /etc/xdg/autostart/*
  12. ~/.config/autostart/*

Загрузка всего дистрибутива в память

Одна из главных идей дистрибутива - загружать его полностью в оперативную память (RAM). Это дает возможность:

  • Носить его на флэшке с собой
  • Иметь скорость работы выше чем на SSD
  • Экономить ресурс дисков и батарей
  • Неубиваемость. Перезагрузка дает исходно чистый вариант системы
  • Многовариантность: можно иметь несколько разных вариантов файлов сохранения и загрузок дистрибутива с разным составом модулей
  • Постоянно не используемые модули можно загружать и выгружвть (для экономии памяти) «по горячему»

zdrvcutr - оптимизация размера модулей ядра и firmware

  • Оптимизирует размер модулей ядра и firmware под Ваш компьютер
  • Актуально для copy2ram на постоянно используемых компьютерах.
  • На базе загруженных модулей будет собран новый модуль без лишних именно для этого компьютера файлов
  • Экономия 75% (порядка 10мб).
  • Для походной флэшки неприменимо. На ней так же лучше иметь полный набор firmware

Параметры загрузки porteus-initrd

Сохранение сессии

2 основных стратегии:

  1. Весь софт и сохранение модулями. Удобно для мобильного использования. Неубиваемо неосторожными действиями пользователя
  2. Большая сохраненка в раздел (папку). Софт доустанавливается пакетным менеджером. Это почти обычная установка. Разница только в том, что можно иметь несколько сохранений для разных случаев и экспериментов. Удобно для стационарного использования

Далее рассмотрены варианты этих стратегий

Модуль сохранения.pfs

  • Вместе с copy2ram позволяет иметь полностью настроенную под Ваши нужды и загруженную в память неизменяемую систему. Удобно для работы с flash (нет износа и тормозов при записи)
  • Скрипт create-save-pfs (Меню - настройки - Создание файла сохранения.pfs)

rootcopy

Альтернатива - использовать rootcopy. В отличие от changes ее содержимое не изменяется в процессе работы и все содержимое находится в памяти. Удобно для тестирования изменений, которые потом будут добавлены в сохраненку.pfs

Неудобства rootcopy:

  • Необходимо размещение на ext разделе
  • Файлы находятся в памяти в несжатом виде

Сохранение в папку, раздел, контейнер

    1. Достоинства:
      • Все изменения записываются сразу. Сессия сохранена даже при аварийном выключении
    2. Недостатки:
      • Хранение в несжатом виде.
      • Сохранение в файл наиболее неудобно. актуально только на fat ntfs.
      • Неосторожные действия пользователя могут привести к незагружаемой системе и любым другим проблемам. Делайте резервные копии сохраненок
      • Износ флэшки, расход батареи
    1. Достоинства:
      • Нет износа флэшки, расхода батареи
    2. Недостатки:
      • Потеря данных при аварийном выключении
  1. R модуль сохранения.pfs
    1. Достоинства:
      • При copy2ram нет износа флэшки, расхода батареи
      • Размещение на любой файловой системе
      • Неубиваемость
      • Хранение данных в сжатом виде
    2. Недостатки:
      • Потеря данных при аварийном выключении
      • Необходимость пересборки или иерархии (несколько сохраненок.pfs накладывающихся друг на друга)

Шифрование файла сохранения

В дистрибутиве присутствует cryptsetup (LUKS) и соответствующие модули ядра. Доступен весь его функционал.

Кроме того есть возможность шифрования RW(read\write; запись\чтение; changes=/path/file.dat ) и RO(read only; только чтение; changes=RO:) сохранения в файл. Такой файл создается «Меню-Настройка-Создание файла сохранения»

Установка модуля исправлений (bugfix)

  • Вариант 1: Удалить из /base все 08x-Bugfix*.pfs, добавить новый
  • Вариант 2: распаковать в /rootcopy (только если он находится не на fat ntfs)

Аппаратные проблемы

Для сохранения минимального размера дистрибутива, в него включен минимальный комплект firmware. По опыту, его достаточно для порядка 80% оборудования. Полный комплект устанавливается командой : sfs-get linux-firm (модуль) или sudo pacman -Sy linux-firmware (пакет). Его можно конвертировать в .pfs скриптом pkg2pfs или взять готовый модуль в шапке форума и положить в /modules.

При использовании параметра загрузки copy2ram желательно оптимизировать комплект firmware под именно Ваш компьютер:

dmesg | grep firmware

Из необходимых файлов соберите свой модуль. Пример

Запуск в VirtualBox

  • Обязательно в свойствах: Система-Процессор- Включить PAE/NX
  • В VirtualBox 4.3.0 - 4.3.5 работает только с ядром 3.8

Работа с модулями.pfs

Возможные операции с модулями

Подключить

Модуль монтируется в корень / AUFS. Если подключить в верхний слой AUFS - он перекроет прочие ausf файлы (только ausf, то что Вы изменяли будет всегда сверху ; посмотреть изменения - в /mnt/live/memory/changes ). Можно перед подключением скопировать его в память

Это даст:

  • Плюсы - можно отключить загрузочную флэшку, обращения к винту минимальны - экономим ресурс и батарею, система работеет быстрее
  • Минусы - подключение дольше, расходуется RAM

Отключить

Если хотя бы один файл модуля занят (запущен или открыт в другой программе) - он не отключится

Закройте связанные программы, перезагрузите Х. Иногда помогает только reboot

Установить

Модуль будет распакован в корень и перекроет все. Если после этого не сделать сохраненку - после перезагруза все пропадет. По большому счету - это рудименты .pet. Там был только этот вариант.

Практическая польза - сделать во время экспериментов, чтобы файлы модуля гарантированно перекрыли все (aufs и changes)

Смотреть

Модуль монтируется на чтение (mount -o loop ) в папку. Можно посмотреть что внутри. Ничего более

Распаковать

Модуль распаковывается (unsquashfs). Можно исправиль и снова запаковать (mkpfs)

pacman2pfs

Выкачивает из репозитория Arch пакеты с зависимостями и подготавливает для упаковки модуля.

На выходе получаем гарантированно рабочий модуль. Размер может быть очень большим. Оптимизация - задача для подготовленных пользователей

pacman2pfs пакет1 [пакет2] [пакет3]

Порядок сборки:

  • С помощью sfs-get проверяет, что готового модуля нет
  • Отключаем devx, сохраненку и прочие модули не из iso (иначе у других юзеров может не заработать; у них нет либ из Вашей сохраненки).
  • В теринале вводим команду pacman2pfs с параметром названия пакета например mc. Чтобы хватило прав на стирание кеша, выполняем от имени суперпользователя ставя перед командой sudo
sudo pacman2pfs mc
  • При первом запуске будет вопрос «синхронизировать ли базу пакетов». Соглашаемся, введя 'Y' и нажав Enter, также соглашаемся на очистку кеша и на загрузку файла. Кеш это каталог /var/cache/pacman/pkg куда и загрузится пакет, в данном случае это файл mc-4.8.1-1-i686.pkg.tar.xz.
  • В текущем каталоге появится католог с именем нашего пакета. И _DEV - составляющие пакета, нужные только для компиляции (есть не у всякого пакета)
  • Далее правильные варианты:
  1. Собрать с dev и /var/lib/pacman. В этом случае ничего удалять нельзя
  2. Собрать без dev и /var/lib/pacman
  • 1 - pacman увидит. 2 - невидимка. Если сделать без dev , но с /var/lib/pacman - ждите сюрпризов при компиляции
  • Водим команду mkpfs также от суперпользователя, и в параметре укажем наш созданый каталог.
sudo mkpfs mc-4.8.1-1
  • В итоге получаем готовый пакет pfs, который можно подключать при автозагрузке или через sfs-get

Варианты уменьшения размера модуля:

  • pkg2pfs
  • перекомпилить с оптимизацией ключей (ищите в AUR готовый).

Если модуль все равно большой - эта прога не для puppy

pkg2pfs

В Arch не заморачиваются идеей «маленький и быстрый» - поэтому при создании модулей приходится «поколдовать»: перекомпилить с уменьшением зависимостей, откинуть все не обязательное. Посмотреть - не избыточны ли зависимости. Например avahi (pol)kit-ы разные mesa python perl.

Порядок сборки маленьких модулей (без гарантий работоспособности - рецепт только для опытных):

  1. pkg2pfs /var/cache/pacman/pkg/пакет (подробнее - выше) - получаем pfs и папку с его распаковкой.
  2. Проверяем работостособность подключением и запуском
  3. В /var/cache/pacman/pkg лежат все использованные пакеты. Скачать пакет без установки : pacman -Syw пакет
  4. pkg2pfs пакет. Получаем 1 или 2 (_DEV - см. раздел pacman2pfs) папки с распакованным модулем
  5. dep-find имя папки. Получаем список недостающих библиотек.so
  6. Оптимизация. Если зависимых библиотек много и уверен что не нужны: pacman -Rs пакет - смотришь кому они нужны. Отучаешь методом пересбора. В AUR может быть готовый рецепт light сборки нужных компонентов, в AlphaOS , на мурге посмотреть. Поскольку эти зависимости, похоже пишут разработчики руками, а они люди и склонны ошибаться, можно проверить их namcap и dep-find. Если уверен - просто удалить эти зависимости перепаковкой модуля (mkpkg). Добавить перепакованные и пересобранные пакеты в локальную репу (makerep). Прописать в начало pacman.conf
  7. Добавляем либы из подтянутых pacman-ом зависимых пакетов в папку. Если не найти: pkgfile файл или pkgfile -r часть имени файла
  8. mkpfs
  9. Если итоговый модуль не работает - сравнивайте с рабочим модулем, сделанным pacman2pfs и ищите отличия

Использование чужих и от других версий PRA модулей squashfs

  • Лучше этого не делать. Проще сделать нужный модуль из Arch репозитория : pacman2pfs программа
  • Модули от PRA01 к PRA02 (например) могут подойти, но версии библиотек могут быть разными и это может сломать систему. При острой необходимости - загружайте модули в нижний слой AUFS (pfsload -l , располагайте в /base/ c именами 000-*)

Необходимо проверить:

  1. /bin /sbin /usr/sbin - симлинки на /usr/bin
  2. /lib - симлинк на /usr/lib

Это специфика Arch Linux. Просто переместите файлы. В противном случае система при подключении модуля зависнет.

Кроме того может не хватать библиотек. Запускайте в консоле. Смотрите вывод.

  • Найти недостающие зависимости: dep-find каталог_с_распакованным_модулем
  • Найти пакет с недостающим файлом: pkgfile файл

Сеть

systemd

Логи системы

  • В бинарном виде. Просмотр: journalctl
  • В PRA по умолчанию отключены для экономии ресурсов. Включение и просмотр через меню
  • При добавлении в параметры ядра debug - система стартует с записью лога

Шпаргалка

  • systemd-analyze blame - список запускаемых файлов юнитов, отсортированный по потраченному каждым из них на загрузку времени
  • systemctl list-unit-files - все установленные юниты
  • systemctl enable _my.service - включить сервис
  • systemctl start _my.service
  • systemctl stop _my.service
  • systemctl status _my.service

Пакеты Arch Linux

Пакетный менеджер (ПМ)

Особенности PRA

  • В PRA перед работой с pacman , нужно обновить базы: pacman -Sy
  • Т.к. в подключенных модулях могут быть «неучтенные файлы», при получении ошибки «файл уже существует в системе» - добавьте
pacman --force

Поскольку дистрибутив построен на замороженном репозитории, пакеты обновляться по команде pacman -Sy не будут. Если Вы часто используете pacman и pkgfile, удобно подключить модуль pkg-pra*.pfs c результатом выполнения pacman -Sy && pkgfile -u

pacman

Шпаргалка

http://www.oposumo.com/2010/06/pacman.html

-S синхронизация (–sync)

pacman -S pkg1 pkg2 устанавливает или обновляет пакеты вместе с их зависимостями pacman -S repo/pkg устанавливает пакет из указанного репозитория (когда пакет имеет несколько версий в разных репозиториях, например, extra и testing) pacman -S «pkg>=version» устанавливает пакет требуемой версии

pacman -Sw pkg скачивает пакет, но не устанавливает его pacman -Sp pkg устанавливает пакет и выводит для него ссылку на скачивание вместе с зависимостями pacman -Sf pkg устанавливает пакет, пропуская проверку конфликтов pacman -Sd pkg устанавливает пакет, пропуская проверку зависимостей

pacman -Syu обновляет все пакеты системы (предварительно синхронизировав базы данных репозиториев) pacman -Su обновляет все устаревшие пакеты (предпочтительнее предыдущая команда) pacman -Suu обновляет пакеты с возможностью даунгрейда (если были, например, отключены репозитории testing и требуется откатиться на более старые версии)

pacman -Ss name ищет пакеты в базе данных по имени и описанию pacman -Ssq pkg выводит в результатах поиска только имена пакетов pacman -Si pkg показывает информацию о пакете pacman -Sg group показывает пакеты, входящие в указанную группу pacman -Sl repo показывает все пакеты из репозитория

pacman -Sc удаляет из кэша пакеты, которые уже были удалены (кэш хранится в /var/cache/pacman/pkg/) pacman -Scc полная очистка кэша пакетов -R Удаление (–remove)

pacman -R pkg удаляет пакет, оставляя зависимости в системе pacman -Rs pkg удаляет пакет вместе с зависимостями, если они не используются другими пакетами pacman -Rn pkg удаляет пакет и резервные копии его конфигурационных файлов (по-умолчаню, они сохраняются с добавлением расширения *.pacsave при удалении приложений) -Q запрос (–query)

pacman -Qs name ищет пакеты среди установленных pacman -Qi pkg показывает информацию об установленном пакете pacman -Ql pkg показывает список файлов установленного пакета pacman -Qc pkg показывает список изменений пакета (если пакет его имеет) pacman -Qg group показывает все пакеты из группы pacman -Qo /path/to/file показывает какой пакет является владельцем указанного файла

pacman -Qdt перечисляет все пакеты, больше не требуемые как зависимости pacman -Qu выводит список устаревших пакетов pacman -Qk pkg проверяет, все ли файлы, принадлежащие данному пакету присутствуют в системе Ещё пара команд

pacman -U path/to/pkg.tar.gz устанавливает локальный пакет (или из интернета, если как путь будет прописана интернет-ссылка) pacman -T pkg выводит список зависимостей, которые не удовлетворены в системе для указанного пакета Справочная информация

pacman -V показывает версию pacman pacman -h показывает синтаксис команды (если добавить опцию, то синтаксис для заданной опции, например pacman -Qh) man pacman полный ман по командам pacman man pacman.conf полный ман по файлу настроек pacman

Обновление базы пакетов
  • Для принудительного обновления списка пакетов : pacman -Syy
Поиск
  • Найти пакет : pacman -Ss имя_или_описание_пакета
  • Все пакеты репозитория : pacman -Sl имя_репозитория. -Slq - без версий
  • Доступные обновления: pacman -Qu
  • Показать все пакеты, не используемые ни одним пакетом: pacman -Qt
  • Установленные пакеты: pacman -Qu. -Qq - без версий
Установка, удаление
  • Устанавливать пакет с заменой файлов системы: pacman –force -S имя_пакета
  • Устанавливать пакет из указанного репозитория: pacman -S репозиторий/имя_пакета
  • Скачать пакет, но не устанавливать его: pacman -Sw имя_пакета
  • Установить локальный пакет : pacman -U путь/имя_пакета
  • Удалить пакет со всеми зависимостями : pacman -Rs имя_пакета
  • Переустановить все пакеты из arch репозитория: pacman -S $(pacman -Qq | grep -v «$(pacman -Qmq)»)

Для получения списка файлов неустановленного пакета можно использовать утилиту pkgfile из состава пакета pkgtools

packer

Описание

В отличие от pacman работает еще и с AUR. Типовое использование:

  1. packer имя_или_описание_пакета - найти и установить
  2. packer -G имя_пакета - скачать и распаковать tarball с PKGBUILD. Далее makepkg –asroot

Создание пакета

Печать/экспорт