Что такое модули?

Модули - базовые «кубики» из которых состоит MagOS, набор используемых модулей задает как базовую, так и дополнительную функциональность системы. Рекомендуется все дополнительные программы ставить в виде модулей.

Устройство модуля

Модуль - это полностью настроенное дерево какой-либо программы (исполняемые и конфигурационные файлы, странички man и т.д.) сжатое алгоритмом lzma и организованное в виде squashfs, т.е. быстродействующей системы доступной только для чтения. При старте модуль.lzm монтируется, как блочное устройство и интегрируется в корневую файловую систему. По мере доступа к тем или иным файлам происходит блочная распаковка («на лету»). В результате можно получить быстрый доступ к любой точке архива без распаковки всего архива.

Версии модулей

В сборках 2010.Х версий для создания модулей используется squashfs версии 3 (файлы *.lzm), в новых сборках - версии 4 (файлы *.xzm). Формат модулей несовместим. Вы не сможете использовать lzm модули в 2011 и xzm модули в 2010.2. Для преобразования модулей из формата lzm в xzm вы можете использовать утилиту lzm2xzm.

lzm2xzm *.lzm

создаёт в текущей папке из всех модулей lzm новые xzm модули

lzm2xzm a.lzm a.xzm

создание нового модуля a.xzm из a.lzm

lzm2xzm /mnt/livemedia/MagOS_old/modules /mnt/livemedia/MagOS/modules

создаёт новые модули в папке /mnt/livemedia/MagOS/modules для всех lzm модулей, найденных в папке /mnt/livemedia/MagOS_old/modules

Преимущества модулей

  • Не нужно устанавливать и настраивать программу, она уже настроена в своем дереве (т.е. виртуально установлена из тех же самых rpm, deb или исходных кодов).
  • Размер модуля значительно меньше размера программы на диске, т.к. он сжат
  • Скорость работы squashfs часто превосходит на современных компьютерах скорость работы с дисковыми устройствами, т.е. система становится компактнее и быстрее
  • Основанную на модулях систему невозможно сломать, т.к. сами модули доступны только для чтения
  • Остается возможность использования rpm (при работе в профиле).
Порядок загрузки
  1. модули из папки MagOS/base - модули базовой поставки
  2. модули из папки MagOS/modules/ - сюда нужно копировать дополнительные программные модули
  3. модули из папки MagOS/optional/ - лежат модули (обычно используются для тестирования, загружаются при использовании параметра load=x ), которые могут быть также:
    • включены в систему командой activate ИмяМодуля;
    • отключены от системы командой deactivate ИмяМодуля
  4. модули из папок MagOS-Data/base, MagOS-Data/modules, MagOS-Data/optional или из репозитория (при использовании параметра repository=x)
  5. модули из папок /base, /modules, /optional размещенных в корне профиля (при использовании параметра changes=x)
  6. копируется все содержимое папки MagOS/rootcopy в корень системы - /

Модули можно активировать в графическом режиме просто щелчком мыши.

Скачать

Скачать готовые модули можно в разделе форума «Кузница модулей» Там же можно опубликовать модуль собственного изготовления.

Также можно загрузить модули из Репозитория. И со странички Магос-сеть

Как подключить модуль

Скачать и подключить модуль можно просто кликнув по нему прямо в окне firefox и ответив на вопросы, модуль будет перенесен в /optional и активирован.

В ручную можно сделать так.

Пример: Захотелось Вам просматривать флеш-видео из браузера, заходим в папку интернет Видим там flash-plugin..rpm.xzm, нажимаем на нем правой клавишей мыши - копировать ссылку

далее, запускаем терминал (Yakuake, Guake и т.д.), он сверху выпрыгивает по нажатии F12, в нем пишем:

cd /mnt/livemedia/MagOS/modules/
wget (и нажимаем колесо на мышки, вставляется ссылка на наш модуль)

Все! Осталось подключить наш новый модуль двойным нажатием мыши.

Как сделать свой модуль

Из файлов
  • делаем папку new_module
  • копируем туда файлы как в корневую систему
  • получаем новый модуль одной из команд:

в сборке 2010.Х:

dir2lzm new_module new_module.lzm

в сборке 2011:

dir2xzm new_module new_module.xzm

Это самый правильный способо создать модуль, т.к. сборщик контролирует содержимое модуля. При создании модулей из rpm необходимо распаковать их содержимое в папку и выполнить команду dir2[lx]zm, при этом нужно учесть, что некоторые rpm пакеты содержат в себе скрипты, которые автоматически запускаются после (или перед) установкой пакета. В этом случае, сборщик должен их изучить и применить к распакованным файлам и, при необходимости, к самой системе.

C помощью утилиты urpm2lzm

Данная утилита представляет собой расширение утилиты urpmi. В качестве дополнительных параметров используются все доступные параметры утилиты urpmi. Так в частности, можно получить модуль с обновлениями системы и т.д. Данная утилита собирает модули по уровням слоев aufs, с учетом маски ??-*. Другими словами полученный модуль будет опираться на всю совокупность модулей удовлетворяющих маске и зависеть от них. Это стоит учитывать при создании модулей содержащих изменения системных файлов, таких как: passwd, groups, shadow и т.д.

  • запустить консоль под root
  • выполнить утилиту: urpm2lzm имя_программы [дополнительные параметры]
  • ответить на появившиеся запросы
  • в текущей директории появится модуль имя_программы.xzm, содержащий программу и все зависимости.
Из rpm пакета

1 способ (автоматическое создание):

  • запустить консоль под root
  • выполнить утилиту: urpm2lzm имя_пакета.rpm [дополнительные параметры]
  • ответить на появившиеся запросы
  • в текущей директории появится модуль имя_пакета.rpm.xzm, содержащий содержимое RPM пакета и всех его зависимостей.

2 способ (ручное создание):

  • создать каталог и перейти в него, например: mkdir -p /tmp/1 ; cd /tmp/1
  • распаковать пакет: rpm2cpio /путь/имя_пакета.rpm | cpio -id
  • сделать модуль:

под 2010.Х сборкой:

dir2lzm /tmp/1 /путь/имя_модуля.lzm

под 2011 сборкой:

dir2xzm /tmp/1 /путь/имя_модуля.xzm

1 и 2 пункт можно сделать в mc (войти в rpm пакет, в нём войти в cpio архив и скопировать всё в папку) постоянно загружаемые модули можно положить в MagOS/modules

С помощью параметра save2module (быстрый способ)

Этот режим применяется, когда программа по зависимостям устанавливает несколько пакетов

  • Загружаемся в MagOS в чистом режиме с установленными параметрами /save2module /noload=/modules/*
  • Устанавливаем программу с помощью обычного «Центра управления Mandriva Linux»
  • Перегружаемся. При завершении работы все изменения, сделанные при установке, запишутся в модуль save*, лежащий в /MagOS/modules
  • При загрузке делаем чистый режим без модулей
  • Копируем модуль к себе, переименовываем исходя из названия и версии программы
  • Удалим из модуля лишнее:
    • Распаковываем модуль командой xzm2dir (lzm2dir)
    • Удаляем все кроме папок /usr и /opt (для 90% программ этого достаточно)
    • Запаковываем модуль командой dir2xzm (dir2lzm)
  • Копируем в options, пробуем, как работает
  • Перемещаем в modules
С помощью параметра save2module (более правильный способ)

Способ создания и оптимизации модулей (очистки от лишних файлов), которые созданы с помощью режима save2module:

1 этап (создание фонового модуля):

  • Загружаемся в MagOS в чистом режиме с установленными параметрами /save2module /noload=/modules/*
  • Перегружаемся. При завершении работы все изменения, сделанные при установке, запишутся в модуль save*, лежащий в /MagOS/modules. Модуль не содержит никакой полезной для нас информации, в модуль свернулись фоновые изменения в системе - временные файлы, прочее. Этот модуль нам понадобиться чуть позже при оптимизации нашего будущего, еще не созданного модуля.
  • Загружаемся в чистом режиме, извлекаем созданный «фоновый» модуль в любое удобное для нас место.

2 этап (создание модуля с программой):

  • Повторно загружаемся в MagOS в чистом режиме с установленными параметрами /save2module /noload=/modules/*
  • Устанавливаем программу с помощью обычного «Центра управления Mandriva Linux».
  • Перегружаемся. При завершении работы все изменения, сделанные при установке, запишутся в модуль save*, лежащий в /MagOS/modules
  • При загрузке делаем чистый режим без модулей
  • Копируем модуль к себе, переименовываем исходя из названия и версии программы

3 этап (оптимизация модуля - удаление лишних файлов):

  • Распаковываем модули командой xzm2dir (lzm2dir) в две разные директории. Например в созданные директории /home/user/1 и /home/user/2
  • Запускаем krusader (либо другой файловый менеджер, иную программу, - главное, чтобы они умели делать сравнение двух папок (директорий) по содержанию.
  • запускаем режим сравнения директорий /home/user/1 и /home/user/2 (в krusader это делается во вкладке «инструменты»-«синхронизация директорий».
  • допустим в папке «1» распакован фоновый модуль, в папке «2» распакован модуль с программой. Удаляем из /home/user/2 все файлы, которые совпадают с файлами в папке «1» (директория /home/user/1). Эти файлы являются фоновыми изменениями системы, которые происходят при любом запуске MagOS. Они не требуются для функционирования модуля с программой.
  • Удаляем в папке «2» изменения базы пакетов rpm и urpmi, которые могли образоваться после установки пакетов. Нужно удалить из папки «2» каталоги 2/var/lib/rpm 2/var/lib/urpmi вместе с содержимым.
  • В итоге, в директории /home/user/2 остались только файлы принадлежащие установленной программе, либо измененные программой при установке - скриптами настройки программы, и прочее.
  • Запаковываем модуль командой dir2xzm (dir2lzm)
  • Копируем в options, пробуем, как работает
  • Перемещаем в modules

Примечание: Способы создания модулей с использованием save2module рекомендуются только для домашнего применения, т.к. они не гарантируют 100% правильное преобразование. Автоматически созданные модули могут содержать в себе лишние файлы, которые утилиты не смогли отфильтровать.

Из исходников

Сборку модуля из исходников по понятным причинам не возможно уложить в единый сценарий, тем не менее последовательность действий приблизительно такова:

 ./configure 
 make
 make DESTDIR=/home/user/newmodule install
 dir2lzm /home/user/newmodule

Базовые модули

Базовые модули разбиты на категории (Сборка 2010.2 20110220) :

Наименование модуля Описание
00-kernel модули ядра (стандартные и dkms)
01-firmware дополнительные прошивки для оборудования
10-core Основной модуль, содержит базовую часть системы, необходимую для работы в консоли
11-netcoreБазовые сетевые утилиты и библиотеки
12-develУтилиты для разработчика и сборки из исходных кодов
20-x-baseXorg базовая часть
21-x-qtподдержка Qt
22-x-3dПроприетарные драйверы видео для Xorg и утилиты 3d эффектов
31-x-lxdeрабочая среда LXDE
33-x-gnomeрабочая среда Gnome
35-x-kdeрабочая среда KDE
40-x-drakconfутилиты настройки drakconf и установки ПО urpmi
41-x-networkПриложения для работы с интернетом и в локальной сети: firefox, qutim, qbittorrent и т.д.
42-x-applications Различные базовые приложения: wine, mc, архиваторы и т.д.
43-x-multimediaМультимедиа библиотеки и приложения
44-x-javaJava-openjdk
45-x-officeбилиотеки для LibreOffice и утилиты
46-x-libreofficeLibreOffice
47-x-printscanПоддержка принтеров и сканеров
71-manpagesСтранички помощи man, info
72-documentationРазличная документация и справка из пакетов Gnome, KDE и т.д.

Содержимое модулей приведено в таблице : Таблица содержимого модулей

Именование модулей

Стандартные модули используют следующую нумерацию.

Описание
0xмодули ядра
1xконсольные утилиты и демоны
2xграфические и мультимедийные библиотеки и утилиты
графические оболочки
4xграфические программы
7xмодули к программам
языковые модули
заплаты, исправления

вторая цифра

Описание
x0библиотеки
x1-8утилиты в зависимости от важности или сложности
x9исправления

При создании собственных модулей, пожалуйста, придерживайтесь такого шаблона:

NN-название-(доп.инфо: версия, источник и.д.)-версия_магос-ник_сборщика-дата_создания.xzm

dir2lzm -n 33 -u mynick ./newmodule

создаст правильно именованный модуль - ./33-newmodule-2011-mynick-20120502.xzm, одновременно обновив названия файлов документации внутри модуля. Подробнее dir2lzm -h.