v.2019-05-10


В начало

Home

Welcome to the magos-linux wiki!

Документация на русском языке

Documentation - Google Translator

How to make MagOS-Linux with English on default

  1. delete these files and folders:

    boot/grub/grub_ru.cfg
    boot/grub4dos/local
    boot/syslinux/local
    boot/magos/linux/ru_RU.UTF-8
    boot/magos/windows/ru.nls

  2. edit files

    EFI/BOOT/grub.cfg
    MagOS-Data/MagOS.ini (sections clock, keyboard, i18n)

How to add your native language in MagOS-Linux on default

  1. please remove and edit files to setup your locale as described in section above

  2. download your native language module from our server and place it into MagOS/modules

  3. change lang=en to lang=your_locale parameter in file boot/grub4dos/menu.lst


В начало

Главная страница

Добро пожаловать в раздел руководства MagOS-Linux!

Введение

MagOS Linux - это многофункциональный GNU/Linux дистрибутив на пакетной базе Rosa Linux. По принципу действия MagOS-Linux является Live-системой с гибкой настройкой и возможностью сохранения изменений, что позволяет использовать MagOS и как Live систему, и как обычный дистрибутив. При этом можно получить все то же самое, что и в обычном дистрибутиве + невероятную гибкость за счет модулей и возможности загружать систему практически откуда угодно (жесткие диски, флеш накопители, сетевая загрузка по NFS, HTTP, DVD ). А сжатая файловая система делает дистрибутив компактным и увеличивает скорость работы.

Системные требования:

Состав

Краткий обзор системы

Гибкость системы

Лицензия

Данное программное обеспечение (ПО) состоит из компонентов, созданных различными людьми или организациями. Сборочные скрипты и основная часть компонентов распространяются под лицензиями GNU GPL , которые позволяют вам свободно использовать, тиражировать, адаптировать или перераспределять компоненты, на которые распространяется действие лицензий. Остальные компоненты имеют различные лицензии, которые могут ограничивать исследование кода и изменение этих компонентов (см. документацию в /usr/share/doc/ или на сайте производителя).

Гарантии

Данное программное обеспечение поставляется без каких-либо гарантий

Авторы

Сообщество MagOS-Linux основной сайт magos-linux.ru

Распространение

Проект создан в рамках основного сайта и имеет свободную лицензию. Можно свободно распространять MagOS на носителях и через сети.


В начало

Скачать

В настоящее время сборки собираются на пакетной базе дистрибутива Rosa Linux в следующих редакциях:

  1. 2016.64 (Rosa Desktop Fresh 64bit)
  2. 2014.64 (Rosa Desktop Fresh 64bit)
  3. 2014red (Rosa Enterprise Desktop 32bit)

В версиях Fresh чаще происходит обновление пакетов и включены в состав более свежие версии программ, они лучше подходят для домашнего использования, игр, интернета, работы с мультимедиа и документами. Версия RED предназначена для предприятий, содержат более стабильные версии программ.

Основной вариант распространения - архив tar.gz для установки на флешку или жесткий диск. ISO формат, как правило, используется в ознакомительных целях, в виртуальных машинах и для загрузки по сети. В ISO архиве нет папки MagOS-Data, поэтому для установки на носитель методом копирования этот формат не рекомендуется.

MD5 суммы сборок публикуются на http/ftp ресурсах вместе с файлами сборок (см. файл HEADER.html)

HTTP сервер

FTP сервер

HTTP зеркала

FTP зеркала

Yandex.Disk


В начало

Установка

MagOS не требует установщика, достаточно просто переписать папки на носитель и установить загрузчик. Возможно установить MagOS на USB брелке, MMC карте, USB/SATA/IDE жёстких дисках, CD и DVD дисках. Поддерживаются как файловые системы Linux, так и fat32, ntfs.

Для установки нужно:

  1. Переписать папки EFI boot MagOS MagOS-Data в корень раздела жесткого диска или USB накопителя.

  2. Установить или настроить загрузчик. В большинстве случаев достаточно запустить с правами администратора в Windows или Linux универсальный установочный скрипт boot/magos/Install.bat.

Поддерживаемые загрузчиком syslinux файловые системы:

Другие варианты установки


В начало

Модули

Модульность системы - одно из преимуществ MagOS-Linux. Файлы операционной системы с приложениями не поставляются одним большим куском, а разбиты на части, которые можно отключать, уменьшив размер системы. Также вы можете легко создавать свои собственные модули и добавлять их в систему.

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

Проще говоря, стандартный модуль - это архив, который не нужно распаковывать, чтобы использовать. Технически - это петлевое (loopback) устройство, упакованное файловой системой squashfs и сжатое по алгоритму xz. В результате получается файл с расширением .xzm

Как это работает

В GNU/Linux любое петлевое устройство можно подключить (смонтировать) к произвольной папке, в результате, зайдя в папку вы сможете видеть содержимое этого устройства. Стандартно, при подключении к одной папке нескольских устройств, мы сможем использовать только последнее. Файловая система aufs позволяет смешивать содержимое нескольких папок в одну, подключая ветви как в режиме чтения, так и на запись. MagOS-Linux, используя оба этих механизма, подключает каждый модуль в папку, а потом объединяет эти доступные на чтение папки в одну файловую систему aufs. Самым последним уровнем добавляется папка с возможностью записи, это либо обычная папка, либо несжатое петлевое устройство (профиль или файл-контейнер), либо просто файловая система tmpfs (чистый режим). В результате, зайдя в папку, мы видим файлы всех модулей и даже можем их изменять, как будто это обычная папка на жёстком диске. Вот схема:

  модуль 1    +   модуль 2    +   модуль 3    =   aufs
  ├─ папка 1      ├─ папка 1      ├─ папка 1      ├─ папка 1 (атрибуты из модуля 3)
  │  ├─ файл 1-1  │  └─ файл 1-3  │  └─ файл 1-1  │  ├─ файл 1-1 (файл из модуля 3)
  │  └─ файл 1-2  └─ папка 2      └─ папка 3      │  ├─ файл 1-2
  └─ папка 2         └─ файл 2-2     └─ файл 3-1  │  └─ файл 1-3
     └─ файл 2-1                                  ├─ папка 2 (атрибуты из модуля 2)
                                                  │  ├─ файл 2-1
                                                  │  └─ файл 2-2
                                                  └─ папка 3 (атрибуты из модуля 3)
                                                     └─ файл 3-1

В случае, если модули содержат файл с одинаковым именем в одной и той же папке (файл 1-1 на схеме), то файл из модуля с большим уровнем "переписывает" все предыдущие. Кроме того, если папка содержится в нескольких модулях, то в результате она будет иметь права доступа, которые указаны в последнем модуле. Применительно к схеме это обозначает, что права папок 1 и 3 будут такими же, как в модуле 3, а права папки 2 - как в модуле 2.

Стандартные системные модули

Все модули системы лежат в папке MagOS/base. В сборке 2016.64 их всего 12:

Папки для хранения модулей

Подключение и отключение модулей

Для того, чтобы подключить модуль можно использовать консольную команду activate модуль.xzm , а для отключения соответственно deactivate модуль.xzm . Команды нужно запускать под пользователем root . Также, можно подключить и отключить модули двойным щелчком в графической среде, при этом будет запрошен пароль root (по умолчанию это toor)

Добавление модулей в автозагрузку и удаление из автозагрузки

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

Распаковка модуля

Чтобы распаковать модуль в заранее созданную папку, используйте под правами root консольную команду xzm2dir модуль.xzm папка. Содержимое уже подключенного модуля можно найти в соответствующей ему папке в /memory/bundles .

Создание модуля

Для создания модуля, вам следует подготовить папку, где расположить все данные так, как будто они лежат в корне системы. Для создания модуля из папки используйте под правами root консольную команду dir2xzm папка модуль.xzm . Создать модуль можно также и в графической среде, через меню действий файлового менеджера Dolphin.

Создание модуля программы вручную

Если у вас есть архив или rpm пакет с какой-либо программой и вы хотите создать модуль вам нужно сделать следующее:

  1. распаковать под учётной записью root содержимое пакета в пустую папку. Проще всего это сделать с помощью mc. С помощью mc можно входить в пакеты как в папки и легко копировать их содержимое.
  2. создать модуль командой dir2xzm папка программа.xzm Если для работы программы необходимы другие пакеты с библиотеками, отсутствующими в сборке, то их содержимое можно аналогичным образом объединить вместе с программой в один модуль, либо сделать отдельный модуль для библиотек.

Создание модуля программы автоматически

Если вам нужно сделать модуль из множества пакетов, либо для сложных программ, имеющих установочные скрипты, которые меняют системные файлы при установке, вы можете воспользоваться специальным графическим помощником, расположенном в разделе "Инструменты MagOS" Центра управления MagOS. Либо консольной командой urpm2xzm <название пакета>. Зависящие пакеты будт скачаны и добавлены автоматически.

В сложном случае, если пакет содержит установочные скрипты (как правило, это не пользовательские программы, а серверы), то в модуль будут добавлены изменённые скриптами системные файлы, что в будущем может привести к несовместимости с другими подобными модулями, созданные этим же методом. Поэтому, если это возможно, сверните все такие программы в один модуль за один раз. Если у вас возникнут сложности, обращайтесь в сообщество за помощью.

Другие типы модулей

Кроме стандартных модулей XZM, в MagOS можно использовать другие типы модулей:

Использование этих модулей может быть полезно опытным пользователям, т.к. расширяет возможности модульного механизма даёт дополнительные возможности для нестандартных ситуаций.


В начало

Сохранение данных

MagOS-Linux построен как Live дистрибутив и может эксплуатироваться в этом режиме (Чистый режим загрузки). Все изменённые и вновь созданные пользователем файлы в этом случае размещаются в памяти компьютера (файловая система tmpfs). После выключения или перезагрузки компьютера, всё, что не сохранено на диски компьютера или на USB носители будет утеряно.

В магос несколько режимов работы с сохранением данных в разных ситуациях можно использовать разные способы. Важно понимать, что новые и измененные файлы хранятся отдельно от системных и это дает интересные возможности: Изменения хранятся в tmpfs (в RAM) и после перезагрузки исчезают. Изменения хранятся в tmpfs, но во время выключения сохраняются в модуль, а при старте вновь распаковываются в tmpfs Изменения сразу пишутся на диск (в папку, в файл.img, в сетевую папку папку по NFS и т.д. Режимы можно комбинировать для пользовательских (/home) и системных (/) данных.

По умолчанию MagOS-Linux загружается в режиме сохранения данных, в этом случае дистрибутив лишён недостатков Live системы и с точки зрения пользователя ведёт себя точно так же, как и обычный дистрибутив, установленный на раздел жёсткого диска. На самом деле, MagOS-Linux от обычного дистрибутива выгодно отличается тем, что возможностей сохранения данных у нас гораздо больше. Кроме того, в случае обычного дистрибутива, если что-то пошло не так и вы в результате эксперимента сломали систему, вам придётся переустанавливать дистрибутив и настраивать его с нуля. В случае MagOS-Linux, вы можете легко посмотреть какие именно файлы изменились (см. /memory/changes) и частично или полностью сбросить эти изменения.

Системные и пользовательские данные

Для удобства пользователя сохраняемые данные разделены на две группы:

Такое разделение удобно тем, что данные пользователя, как правило, не зависят от машины, на которой запущена система и зависят только от предпочтений пользователя. Системные же данные, напротив, зависят от конкретной машины и её задачах в сети. В системных данных сохраняются настройки на встроенное и периферийное оборудование машины, настройки сети, настройки служб и серверов, которая эта машина предоставляет другим компьютерам в сети. Разделение данных в режиме по умолчанию позволяет пользователю иметь единые настройки пользовательских программ и графической среды на всех машинах, на которых загружается система и особые системные настройки для каждой машины.

Технически, возможно отказаться от такого разделения, не указав способ сохранения пользовательских данных, тогда пользовательские данные будут храниться вместе с системными данными.

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

Для настройки сохранений применяются следующие параметры загрузки:

Параметр uird.mode определяет режим сохранения данных, возможно использовать одно значение из следующих:

Параметры uird.home uird.homes uird.changes определяют расположение источников для сохранения данных. Эти параметры похожи по своему использованию, их значения будут рассмотрены подробно в описании типов доступных источников. Если использовать параметр uird.homes+= (со знаком +), то значения дополняют указанные ранее в другом месте параметры, если без знака + uird.homes=, то ранее указанные значения заменяются.

По умолчанию в режиме сохранения данных используются параметры uird.mode=machines uird.home=home.img

Варианты сохранений

Использование параметров uird.home uird.homes uird.changes, которыми задаются источники для сохранений практически идентично, поэтому вы можете указывать для них любой из ниже перечисленных вариантов, кроме механизма uird.mode=machines. Значением для этих параметров может быть объект (файл img, папка, модуль и пр.), лежащий на блочном или сетевом носителе.

Формат параметров:

Указание параметра отменяет ранее определённое значение этого параметра. К примеру, значение, введённое вручную на графическом экране загрузчика отменит указанное в файле настройки menu.lst. За исключением параметра uird.homes+=, когда указанное значение дополняет существующее.

Расположение источников

Сохранение в файл

В режиме с сохранением данных данные пользователя сохраняются в файл MagOS-Data/home.img. Файл представляет собой заранее подготовленный образ файловой системы. Файловая система в таком образе может быть практически любой, поддерживаемой GNU/Linux, в которой сохранятся POSIX права и атрибуты файлов (FAT и NTFS поэтому отпадают, они могут быть лишь носителем этого файла). Расширение файла должно быть .img , чтобы скрипты загрузки правильно определили тип этого файла.

Примеры использования:

  uird.home=home.img
  uird.homes=user1.img;user2.img
  uird.changes=/MagOS-Data/MagOS-save1.img

Преимущества:

Недостатки:

Как создать:

Для создания ФС (команда mkfs.*) требуются полномочия root

  dd if=/dev/zero of=system.img bs=1M count=1024 # Создаётся контейнер размер 2048МБ
  mkfs.ext2 system.img                           # Создается файловая система ext2

Создание контейнера для системных данных размером 1Гбайт с файловой системой ext2.

  dd if=/dev/zero of=home.img bs=1M count=2048   # Создаётся контейнер размер 2048МБ
  mkfs.ext4 -m0 home.img                         # Создается файловая система ext4

В этом примере создаётся профиль размером 2 Гбайта c файловой системой ext4 для пользовательских данных. Параметр -u0 отменяет резервирование свободного места для пользователя root.

  dd if=/dev/zero of=home.img bs=1 count=0 seek=4096M # создание sparse файла до 4Г
  mkfs.ext2 -m0 home.img                              # Создается ФС ext2

Здесь создаётся динамический файл, который занимает столько места, сколько занимает его содержимое, что устраняет основной недостаток этого типа сохранения. Возможно использование sparse файла только на линуксовых файловых системах и NTFS. При копирование sparse файла на другой раздел обычными методами его sparse свойства теряются. Создавайте такие файлы в той папке, где вы планируете их использовать.

Можно достать готовый профиль из архива MagOS-Data\profiles.7z, например с помощью mc, который умеет входить в архив, как в папку.

Сохранение в каталог

Cамый простой источник - это просто каталог, пустой или нет, который либо объединяется слоем поверх корневой системы (uird.changes), либо подключается к каталогу /home и сохраняет пользовательские данные (uird.home, uird.homes). Любые изменения файлов происходят одновременно и в месте подключения и в самом каталоге. Добавление или изменение файлов в каталогах напрямую желательно производить, когда эти источники отключены. Может использоваться только каталог на файловых системах GNU/Linux (к примеру, EXT2/3/4, BTRFS, REISERFS, сетевая NFS).

Примеры использования:

  uird.home=homes
  uird.homes=user1;user2
  uird.changes=changes

Преимущества:

Недостатки:

Как создать:

Зашифрованный контейнер

Для хранения персональных данных рекомендуется использовать зашифрованный источник. Это файл, аналогичный обычному файлу-контейнеру, но зашифрованный поблочно с использованием алгоритма AES. Расширение файла должно быть .enc. Защитить можно, как пользовательские данные (uird.home, uird.homes), так и системные (uird.changes). Во время загрузки в текстовом режиме, система спросит пароль для подключения контейнера.

Примеры использования:

  uird.home=home.enc
  uird.changes=changes.enc

Если вы маньяк со стажем можно зашифровать даже весь магос целиком:

  uird.from=/magos.enc;/Magos;/MagOS-Data

Для того чтобы это сработало нужно создать magos.enc 3 гигабайта и больше, смонтировать его (см.ниже) и распаковать в смонтированный файл архив с магос.

Преимущества:

Недостатки:

Как создать:

Для работы с шифрованными контейнерами в MagOS-Linux созданы специальные скрипты:

Скрипты имеют краткую подсказку по параметрам, для вывода подсказки используйте скрипт --help, или просто запустите без параметров. Скрипты должны быть запущены в консоли с правами root.

Примеры работы с контейнерами:

Создание файла

# createloop home.enc 1024M
Creating encrypted filesystem home.enc with size 1024 x 1Mbytes.
1048576+0 записей получено
1048576+0 записей отправлено
скопировано 1073741824 байта (1,1 GB), 1,71204 c, 627 MB/c
Password:test
mke2fs 1.43.3 (04-Sep-2016)
Creating filesystem with 262144 4k blocks and 65536 inodes
Filesystem UUID: 1bd40882-7535-4424-9a94-7155bd9a7a31
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

Подключение контейнера к каталогу

создание каталога (каталог должен быть создан заранее)
# mkdir /mnt/tmp
подключение
# mountloop home.enc /mnt/tmp
Mointing encrypted filesystem home.enc to folder /mnt/tmp
Password:
просмотр содержимого
# ls /mnt/tmp
lost+found/

Отключение контейнера

# umountloop /mnt/tmp

Создание вручную sparse файла с файловой системой EXT2. Возможно только, если MagOS-Data лежит на линуксовой ФС или ntfs.

1. создание sparse файла
# dd if=/dev/zero of=home.enc bs=1 count=0 seek=1024M
0+0 записей получено
0+0 записей отправлено
скопировано 0 байт (0 B), 0,00182707 c, 0,0 kB/c
2. подключение файла к устройству /dev/mapper/myenchome (имя произвольное) с паролем password
# echo password | cryptsetup open --type loopaes home.enc myenchome --key-file -
3. форматирование под ext2
# mkfs.ext2 /dev/mapper/myenchome
mke2fs 1.43.3 (04-Sep-2016)
Creating filesystem with 262144 4k blocks and 65536 inodes
Filesystem UUID: 6f7c1b63-8800-4ebb-bafd-a77e1a229e7f
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
4. не забывайте про отключение устройства, иначе кто-нибудь сможет подключить его без ввода пароля
# cryptsetup close myenchome


В начало

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

Параметры могут быть поделены на несколько групп:

Параметры могут быть введены с клавиатуры в строке параметров загрузки на первом экране выбора режима загрузки MagOS. При использовании загрузчика grub4dos в текстовом режиме можно отредактировать секцию загрузки с помощью кнопки E и далее произвести загрузку клавишей B. При использовании syslinux правка параметров осуществляется клавишей Tab, загрузка клавишей Enter. Параметры, переданные таким образом, работают однократно. Для постоянного применения параметра его нужно добавить в файл настройки загрузчика /boot/grub4dos/local/menu.lst

Примеры параметров ядра

Собственные параметры MagOS

Параметры скриптов linux-live.org (с модификациями)

По умолчанию initrd более не применяется, но если, по каким-либо причинам, вы не можете использовать UIRD, то можно переключиться на initrd и использовать его параметры загрузки

Параметры загрузчика UIRD

В MagOS-Linux вместо системы initrd на базе скриптов linux-live.org применяется мощный унифицированный загрузчик UIRD, который, выполняя все те же функции, что и initrd, дополнительно предоставляет возможности, которых нет в других системах загрузки. Описание загрузчика UIRD и его параметров расположено на странице проекта в GIT.


В начало

UIRD

UIRD - Unified Init Ram Disk system

Унифицированная система инициализации для модульных Linux систем.

Join the chat at https://gitter.im/uird/discussion

Базовое описание основных принципов

UIRD - это разновидность initrd, его задача собрать из слоёв aufs/overlayfs корневую файловую систему и передать загрузку /sbin/init (systemd) с этой корневой файловой системой. В основе реализации UIRD лежит набор скриптов инициализации dracut (модули base, kernel-modules), сценарий инициализации uird-init и библиотека функций к нему livekitlib (доработанный аналог liblinuxlive, livekitlib проекта Slax).

Основные отличия от реализаций initrd для модульных систем схожих проектов.

* Отсутствие привязки к конкретному дистрибутиву
* Отсутствие привязки к конкретным каталогам для поиска источников
* Возможность подключения практически любых источников, которые можно смонтировать в linux 
* Поддержка различных сетевых протоколов для загрузки по сети
* Адаптация UIRD под вашу ОС сводится к написанию одного конфигурационного файла

Параметры командной строки

Ввиду множественности параметров ядра введен префикс параметров 'uird' (Unified Init Ram Disk):

* uird.параметр=значение - установить новое значение, которое заменит значение по умолчанию;
* uird.параметр+=значение - добавить значение к списку значений по умолчанию

В настоящий момент параметров более двух десятков, большинство из них лишь расширяют базовый функционал дополнительными возможностями.

Основные параметры

* uird.ro[+]=                - фильтр для модулей/директорий, которые монтируются в режиме RO
* uird.rw[+]=                - фильтр для модулей/директорий, которые монтируются в режиме RW
* uird.cp[+]=                - фильтр для модулей/директорий, содержимое которых копируется в корень
* uird.copy2ram[+]=          - фильтр для модулей/директорий, которые копируются в RAM
* uird.load[+]=              - фильтр для модулей/директорий, которые необходимо подключить на этапе загрузки
* uird.noload[+]=            - фильтр для модулей/директорий, которые необходимо пропустить во время загрузки
* uird.from[+]=              - источники, где лежат модули/директории для системы
* uird.home=                 - источник, где хранятся домашние директории пользователей
* uird.changes=              - источник, где хранить персистентные изменения
* uird.mode=MODE             - режим работы сохранениями (clean, clear, changes, machines)

Параметры для более сложных конфигураций

* uird.cache[+]=             - источники, в которые стоит синхронизировать модули/директории
* uird.copy2cache[+]=        - фильтр для модулей/директорий, которые копируются в КЭШ
* uird.homes[+]=             - источники, где хранятся домашние директории пользователей (объединяются AUFS)
* uird.mounts=               - источники , которые будут смонтированы в указанные точки монтирования
* uird.find_params[+]=       - параметры для утилиты find при поиске модулей (например: -maxdepth,2)
* uird.help                  - печатает подсказку по параметрам UIRD
* uird.break=STAGE           - остановка загрузки на стадии STAGE и включение режима отладки (debug)
* uird.scan=                 - поиск установленных OC и компонентов для определения параметров uird
* uird.swap=                 - список SWAP разделов и/или файлов для подключения, разделитель в списке ";" или ","
* uird.syscp[+]=             - список файлов (каталогов) для копирования из UIRD в систему /путь/файл::/путь/каталог
* uird.basecfg=              - расположение базового конфигурационного файла basecfg.ini
* uird.config=               - расположение конфигурационного файла системы MagOS.ini
* uird.sgnfiles[+]=          - перечисление файлов-маркеров для поиска источников указанных в uird.from= в соответсвии с их порядком перечисления
* uird.ramsize=              - размер RAM
* uird.ip=                   - IP:GW:MASK, если не указан, то используется DHCP
* uird.netfsopt[+]=          - дополнительные опции монтирования сетевых ФС: sshfs,nfs,curlftpfs,cifs
* uird.aria2ram=             - список источников, которые нужно скопировать из сети в RAM до начала поиска uird.from
* uird.freemedia             - освободить (размонтировать) источники, используется совместно с uird.copy2ram
* uird.force                 - продолжать загрузку, не задавая вопросов, если источник не найден
* uird.parallel              - подключение модулей в параллельном режиме
* uird.run[+]=               - запуск внешних исполняемых файлов
* uird.zram                  - использовать zram вместо tmpfs
* uird.union=overlay         - использовать overlayfs вместо aufs
* uird.shutdown              - создать каталог /run/initramfs, который использует systemd при выключении системы, передавая туда управление
* uird.preinit               - включить обработку ini файла, заданного в uird.config
* quickshell, qs             - консоль на начальном этапе работы uird-init
* qse                        - консоль в конце работы uird-init
* debug                      - подробный вывод и приостановка uird-init на нескольких этапах работы

В качестве значений параметров могут быть использованы команды shell:

* uird.from="/MagOS;$( eval [ $(date +%u) -gt 5 ] && echo /MagOS-Data)" - подключать MagOS-Data только по выходным
* uird.changes="$(mkdir -p /MagOS-Data/changes && echo /MagOS-Data/changes)"
* $(udhcpc)  - поднять сеть (eth0 dhcp)

Для более подробного описания параметров смотрите встроенную подсказку

Типы источников

/path/dir                 - директория на любом доступном носителе
/dev/[..]/path/dir        - директория на заданном носителе
LABEL@/path/dir           - директория на носителе с меткой LABEL
UUID@/path/dir            - директория на носителе с uuid UUID
file-dvd.iso, file.img    - образ диска (ISO, образ блочного устройства, VDI, VHDD и др.)
http://server/path/...    - источник, доступный по HTTP (используется httpfs) 
ssh://server/path/...     - источник, доступный по SSH (используется sshfs)
ftp://server/path/...     - источник, доступный по FTP (используется curlftpfs)
nfs://server/path/...     - источник, доступный по NFS 
cifs://server/path/...    - источник, доступный по CIFS

Порядок инициализации системы

Упрощенная схема, не учитывающая параметры uird.cache, uird.mounts, uird.homes и проч. Более подробную информацию ищите во встроенной справке по конкретным параметрам.

  1. Осуществляется поиск конфигурационного файла по пути, указанному в параметре uird.basecfg= (дефолтное значение задаётся при сборке uird)
  2. Устанавливаются параметры из конфигурационного файла, которые ещё не установлены в параметрах ядра
  3. Происходит монтирование источников base-уровня в порядке, указанном в параметре uird.from=
  4. Происходит монтирование источников home-уровня, согласно параметру uird.home=
  5. Происходит подключение в самый верхний уровень AUFS источника персистентных изменений, указанного в параметрами uird.changes=, uird.mode=
  6. Осуществляется синхронизация base уровня в ОЗУ с учётом параметра uird.copy2ram=
  7. Осуществляется поиск модулей/директорий в ОЗУ и base-уровне и подключение их на [верхний-1] уровень AUFS или копирование в корень (с учётом фильтров, указанных в параметрах uird.load=, uird.noload=,uird.ro=,uird.rw=,uird.cp=) со следующим приоритетом:
                       uird.load --> uird.noload
                       uird.cp --> uird.rw --> uird.ro
    
    1. Выполняются скрипты rc.preinit

Структура системной директории

  /memory/
  ├── bundles                   - точка монтирования модулей
  │   ├── 00-kernel.xzm
  │   ├── 01-firmware.xzm
  │   ├── 10-core.xzm
  │   ├── 80-eepm-1.5.2.xzm
  │   └── ...                   - и т.д.
  ├── changes                   - точка монтирования для хранения изменений
  │   ├── etc
  │   ├── home
  │   ├── memory
  │   ├── run
  │   ├── var
  │   └── ...                   - и т.д.
  ├── data                      - точка монтирования источников
  │   ├── cache                     - кеш уровня
  │   ├── homes                     - homes уровня
  │   ├── mounts                    - mounts уровня
  │   ├── machines                  - машинно-зависимых изменений
  │   └── from                      - базового уровня
  ├── copy2ram                  - точка монтирования для синхронизации модулей/директорий в ОЗУ
  ├── ovl                       - точка монтирования вспомогательных каталогов OverlayFS
  │   ├── lowerdir                  - lowerdir
  │   └── workdir                   - workdir
  ├── layer-base                - точка монтирования базового уровня
  │   ├── 0                         - ресурс первого источника
  │   ├── 1                         - ресурс второго источника (в порядке перечисления в uird.from=)
  │   └── ...                       - и т.д.
  ├── layer-cache               - точка монтирования кеш уровня
  │   ├── 0                         - ресурс первого источника
  │   ├── 1                         - ресурс второго источника (в порядке перечисления в uird.cache=)
  │   └── ...                       - и т.д.
  ├── layer-homes               - точка монтирования homes уровня
  │   ├── 0                         - ресурс первого источника
  │   ├── 1                         - ресурс второго источника (в порядке перечисления в uird.homes=)
  │   └── ...                       - и т.д.
  ├── layer-mounts              - точка монтирования mounts уровня
  │   ├── 0                         - ресурс первого источника
  │   ├── 1                         - ресурс второго источника (в порядке перечисления в uird.mounts=)
  │   └── ...                       - и т.д.
  ├── cmdline                   - системный файл для хранения дополнительных параметров командной строки
  └── MagOS.ini.gz              - системный файл для хранения конфигурационного файла

Пример конфигурационного файла MagOS (используется при сборке UIRD для MagOS-linux)

  uird.config=MagOS.ini
  uird.ramsize=70%
  uird.ro=*.xzm;*.rom;*.rom.enc;*.pfs
  uird.rw=*.rwm;*.rwm.enc
  uird.cp=*.xzm.cp,*/rootcopy
  uird.load=/base/,/modules/,rootcopy
  uird.noload=/MagOS-Data/changes,/MagOS-Data/homes
  uird.from=/MagOS;/MagOS-Data
  uird.find_params=-maxdepth_3
  uird.mode=clean
  uird.changes=/MagOS-Data/changes
  uird.syscp=/livekitlib::/usr/lib/magos/scripts;/uird.scan::/usr/lib/magos/scripts;/liblinuxlive::/mnt/live/liblinuxlive

Расширения поддерживаемые в MagOS Linux с этим конфигом:

*.ROM - RO слой
*.RWM - RW слой
*.XZM - RO слой с squashfs
*.XZM.CP - распаковывается в корень системы
*.RWM.ENC - RW слой криптованый
*.ROM.ENC - RO слой криптованый

Другие примеры конфигурационных файлов смотрите тут

Реализация

В основе реализации лежит набор скриптов инициализации dracut (модули base, kernel-modules ) и скрипты uird (livekitlib+uird-init).

cmdline-hook: parse-root-uird.sh (заглушка)
mount-hook: mount-uird.sh (выполняет скрипт uird-init)

Установка и сборка

Смотрите описание процесса: uird_build.md


В начало

Структура

Файловая структура сборки кратко

Состав сборки

Файлы настроек

Файлы меток

По файлам-меткам производится поиск и подключение источников. В случае использования своих меток, нужно в файле настроек загрузчика передать параметр uird.sgnfiles=MagOS.sgn.sgn;MagOS-Data.sgn

Скрипты установки

Описание скриптов смотрите в разделе Установка

Полезные папки для хранения данных пользователя

Файловая структура сборки подробно

/boot - каталог, в котором хранятся загрузчики и скрипты установки, при обновлении не изменяется

  ├── /magos - папка со скриптами установки
  │  ├── Install.bat - универсальный скрипт, который можно запускать под Linux и Windows, автоматически выбирает нужный скрипт установки
  │  ├── /linux - папка со скриптами для Linux
  │  │  ├── bootinst.sh - основной скрипт установки
  │  │  ├── make_iso.sh - скрипт создания iso образа
  │  │  ├── make_boot_iso.sh - скрипт создания загрузочного мини-образа
  │  │  └── ru_RU.UTF-8 - поддержка русского языка для скриптов. Если удалить файл, сообщения будут на английском
  │  └── /windows - папка со скриптами для Windows
  │     ├── bootinst.bat - основной скрипт установки
  │     ├── add2bcd.bat - добавление загрузчика к стандартному загрузчику Windows Vista/7-10
  │     ├── add2ntld.bat - добавление загрузчика к стандартному загрузчику Windows XP
  │     ├── make_iso.bat - скрипт создания iso образа
  │     ├── make_boot_iso.bat - скрипт создания загрузочного мини-образа
  │     └── ru.nls  - поддержка русского языка для скриптов. Если удалить файл, сообщения будут на английском
  ├── /grub4dos/ - файлы основного загрузчика grub4dos, применяется для взаимодействия с пользователем и загрузки системы и утилит
  │   ├── gfxmenu - графическая тема (en) с параметрами загрузки, в разных сборках отличается
  │   ├── menu.lst - основной файл загрузчика (en)
  │   ├── menu-add.lst - дополнительное меню (ru)
  │   └── /local - каталог с русскими файлами настроек, если его удалить, будет только английский вариант
  │      ├── gfxmenu - графическая тема (ru) с параметрами загрузки, в разных сборках отличается
  │      ├── menu.lst - основной файл загрузчика (ru)
  │      └── menu-add.lst - дополнительное меню (ru)
  ├── /syslinux/ - файлы загрузчика syslinux, по умолчанию используется только для загрузки grub4dos
  │   ├── syslinux_gpt.exe - исполняемый файл для установки в Windows загрузчика на диски GPT в ручном режиме
  │   ├── gfxmenu - графическая тема (en) с параметрами загрузки, в разных сборках отличается
  │   ├── syslinux.cfg - основной файл настройки для загрузки grub4dos
  │   ├── menu.cfg - меню для syslinux (en), в случае если grub4dos не применяется
  │   └── /local
  │      ├── gfxmenu - графическая тема (ru) с параметрами загрузки, в разных сборках отличается
  │      └── menu.cfg - меню для syslinux (en), в случае если grub4dos не применяется
  └── /grub - файлы для загрузчика grub, модифицированного для загрузки в UEFI режиме. Только для EFI режима.
     ├── /EFI - копия каталога EFI из корневого каталога, на случай если он будет стёрт
     │   └── /BOOT
     │      ├── grub.cfg - файл настройки, ссылается на основной файл /boot/grub/grub_ru.cfg или /boot/grub/grub.cfg
     │      ├── BOOTx64.EFI - загрузчик для 64-битных систем
     │      ├── bootia32.efi - загрузчик для 32-битных систем
     │      └── grubx64.efi
     ├── /fonts/unicode.pf2 - шрифт с поддержкой юникода
     ├── grub.cfg - файл настройки загрузчика, английский вариант
     ├── grub_ru.cfg - файл настройки загрузчика, русский вариант. Загрузчик в UEFI режиме cможет загружать только ядра Linux
     └── /themes/  - тема для загрузчика

/EFI - версия загрузчика grub, модифицированная для загрузки в UEFI режиме. Только для EFI режима.

  └── /BOOT
     ├─ grub.cfg - файл настройки, ссылается на основной файл /boot/grub/grub_ru.cfg или /boot/grub/grub.cfg
     ├─ BOOTx64.EFI - загрузчик для 64-битных систем
     ├─ bootia32.efi - загрузчик для 32-битных систем
     └─ grubx64.efi

/MagOS - основной каталог системы, при обновлении полностью переписывается

  ├── MagOS.sgn - файл-метка, по которой происходит поиск местоположения системы
  ├── vmlinuz - ядро Linux
  ├── uird.magos.cpio.xz - загрузочный образ UIRD, необходим для загрузки системы
  ├── initrd.gz - альтернативный загрузочный образ для использования вместо UIRD
  ├── /base - системные модули
  │  ├── 00-kernel.xzm - ядро и модули ядра, обязательный модуль
  │  ├── 01-drivers.xzm - дополнительные драйверы и прошивки, в т.ч. драйверы для карт nvidia
  │  ├── 10-core.xzm - системные библиотеки и утилиты, обязательный модуль
  │  ├── 20-x-base.xzm - графический сервер, утилиты и библиотеки для работы в графике, LXQT, менеджеры входа sddm, slim
  │  ├── 35-x-plasma.xzm - графическая среда Plasma
  │  ├── 41-x-utilities.xzm - дополнительные утилиты
  │  ├── 42-x-network.xzm - программы и утилиты для работы с сетью
  │  ├── 43-x-multimedia.xzm - программы и библиотеки для работы со звуком/видео/играми
  │  ├── 44-x-office.xzm - офисные программы, поддержка печати и сканера
  │  ├── 45-x-java.xzm - поддержка java
  │  ├── 70-documentation.xzm - документация к программам и утилитам, в т.ч. man, info.
  │  └── 88-magos.xzm - скрипты и файлы MagOS, меняющие и дополняющие базовую систему
  ├── /modules - (если нет MagOS-Data) каталог для пользовательских модулей, загружаемых автоматически
  ├── /optional - (если нет MagOS-Data) каталог для доп. модулей, загружаемых с помощью параметров load= uird.load+=
  ├── /machines - (если нет MagOS-Data) каталог для сохранения системных настроек в виде модуля, привязанного к MAC адресу
  │  ├── /dynamic
  │  └── /static
  ├── MagOS.ini - (если нет MagOS-Data) ini файл, позволяющий менять файлы настроек системы
  ├── VERSION - текстовый файл с версией системы
  ├── MD5SUM - контрольные суммы ядра, uird, initrd и модулей. Для проверки используйте md5sum -c MD5SUM
  ├── LICENSE - текстовый файл с лицензией
  ├── boot.tar.bz2 - архив папки /boot для установки на другой носитель
  └── MagOS-Data.tar.bz2 - архив папки MagOS-Data для установки на другой носитель

/MagOS-Data - папка с настройками и модулями пользователя, при обновлении не изменяется

  ├── MagOS-Data.sgn - файл-метка, по которой происходит поиск местоположения MagOS-Data
  ├── MagOS.ini - файл, позволяющий менять файлы настроек системы, см комментарии в самом файле
  ├── /modules - каталог для пользовательских модулей, загружаемых автоматически
  ├── /optional - каталог для доп. модулей, загружаемых с помощью параметров load= uird.load+=
  ├── /machines - каталог для сохранения системных настроек в виде модуля, привязанного к MAC адресу
  │  ├── /dynamic - по умолчанию здесь ищется модуль машины при загрузке и сюда же сохраняется при выключении
  │  └── /static - если модуль машины перенесён сюда, то он замораживается, читается, но не сохраняется
  ├── /rootcopy - каталог, из которого все файлы "копируются" в корень системы, поверх существующих. Полезен для экспериментов
  ├── /backgrounds - графический материал, формурующийся случайно из нашей галереи. отличен для каждой сборки
  │  ├── /screensaver/Default/ - фото для хранителя экрана
  │  └── /wallpapers/Default/ - при старте системы обои рабочего стола выбираются случайным образом из этой папки
  ├── home.img - файл-профиль для сохранения данных пользователя (/home/)
  ├── profiles.7z - архив с пустыми профилями, которые можно использовать для системы и /home
  ├── /homes - папка для сохранения данных пользователя, если MagOS-Data лежит не на fat/ntfs, используйте   uird.home=homes (UIRD) или home=homes (initrd)
  ├── /changes - папка для сохранения данных системы, если MagOS-Data лежит на линуксовой ФС, можно использовать uird.changes=changes (UIRD) или changes=changes (initrd), уберите параметр uird.mode=machines
  ├── /cache - зарезервировано для будущего использования
  └── /steam - папка для установки клиента Steam (только для линуксовых ФС, не для fat/ntfs)

readme.html - копия всех страниц этого wiki руководства в одном html файле


В начало

MagOS в режиме сервера

Введение

Данная статья посвящена настройке MagOS в режиме сервера для различных целей. Мы ставим перед собой целью предоставить пользователю максимальный функционал с минимальными настройками. Для большинства серверов сделаны предварительные общие настройки, благодаря чему для работы в режиме сервера достаточно будет просто поднять ту или иную службу. Каждая роль по возможности будет рассмотрена с нескольких сторон - настройка сервера, подключение другой машины под управлением MagOS в качестве клиента, подключение другого Linux клиента, подключение Windows клиента.

Статья написана для сборок MagOS-Linux с версией 2016.64 20180325 и старше. В более ранних версиях настройки служб могут отличаться.

Общие настройки

Адресация по умолчанию

По умолчанию в MagOS принято что Ethernet сеть (по витой паре) адресуется диапазоном 192.168.1.0/255.255.255.0. Wifi сеть (беспроводная) адресуется диапазоном 192.168.2.0/255.255.255.0. Сам сервер по умолчанию настроен на адрес 192.168.1.31. Если у вас нет веских причин, то лучше оставить стандартную адресацию. Иначе вам придётся на всех машинах изменить следующие параметры файла настроек MagOS\MagOS.ini (далее по тексту просто ini файла):

MAGOSSERVER=192.168.1.31
NETWORKIP=192.168.1.

Открытие служб в межсетевом экране

На MagOS по умолчанию включен межсетевой экран для защиты от несанкционированного доступа. Он настроен на блокировку всех входящих запросов. Поэтому при организации сервера нужно открыть адреса. Это можно сделать двумя способами:

Открытие сети (диапазона адресов) применяется для доверенной сети. Для этого диапазона будут доступны все службы. Открытие порта применяется для предоставления доступа с любого адреса (в т.ч. с Интернета). Пример:

# Открытие сети 192.168.1.0/255.255.255.0
IPTABLESTRUSTEDIP=192.168.1.0/24
# Открытие портов, отдельно протоколы TCP и UDP
IPTABLESOPENPORTSTCP=21,22,30001
IPTABLESOPENPORTSUDP=30002

Включение служб

Для включения служб есть параметр ini файла SERVICESSTART, в нём через запятую задаются службы, поднимаемые автоматически. В этом параметре можно указывать как обычные службы, так и службы xinetd. Пример:

SERVICESSTART=NetworkManager-wait-online,sshd,rpcbind,nfs-idmap,nfs-mountd,nfs-rquotad,nfs-server,dhcpd,xinetd,tftp,ntpd

Желательно использовать специальную службу NetworkManager-wait-online для того чтобы избежать ошибок во время загрузки служб, связанных с тем что на момент запуска служб ещё не будет поднят сетевой интерфейс.

Настройки по безопасности

Если вы используете MagOS-Linux в качестве сервера, то вам следует обязательно поменять стандартные пароли

Старайтесь не запускать на внешних интерфейсах службы, которые предоставляют услуги только для локальной сети. Посмотреть текущие открытые порты вы можете командой netstat -l -n -p -t Если служба слушает на адресе 0.0.0.0, то, скорее всего, это означает, что она принимает запросы со всех интерфейсов, в т.ч. с тех, что смотрят в Интернет. Дополнительно для проверки можно использовать сканер портов на ваш внешний адрес (nmap -sUT 192.168.1.31) Настроить интерфейсы службы можно либо через файл настройки службы, либо через специальный файл параметров запуска служб в /etc/sysconfig/название_службы. Примеры:

[/etc/pdnsd.conf]
server_ip=192.168.1.31;
[/etc/sysconfig/dhcpd]
INTERFACES="enp0s10" #название вашего интерфейса смотрите в выводе ifconfig
[/etc/sysconfig/ntpd]
OPTIONS="-g -I 192.168.1.31 -I 127.0.0.1"
[/etc/sysconfig/nfs]
RPCNFSDARGS="-H 192.168.1.31 -H 127.0.0.1"
[/etc/hosts.deny]
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
[/etc/hosts.allow]
portmap:192.168.1.0/255.255.255.0
lockd:192.168.1.0/255.255.255.0
mountd:192.168.1.0/255.255.255.0
rquotad:192.168.1.0/255.255.255.0
statd:192.168.1.0/255.255.255.0
[/etc/ssh/sshd_config]
ListenAddress 192.168.1.31
ListenAddress 127.0.0.1
Port 22022
[/etc/nxserver/node.conf]
SSHD_PORT=22022

Хорошей практикой, также, является смена порта для sshd на нестандартный.

Маршрутизатор

Маршрутизатор в локальной сети используется для предоставления доступа в другие сети (к примеру, Интернет) всем клиентам локальной сети. Как правило, именно маршрутизатор обладает доступом к физическому оборудованию (модем, ADSL-модем, физическая линия), однако это не обязательное условие. Для работы в качестве маршрутизатора подойдёт и обычный сетевая машина, на которой настроен доступ к другим сетям (настроен шлюз по умолчанию). Обычно используется для: 1. предоставления доступа в Интернет другим машинам; 2. предоставления доступа из сети wifi (беспроводная сеть) в сеть ethernet (по витой паре) и обратно.

1. Настройка на сервере.

Используйте параметр ini файла ROUTER

ROUTER=yes

2. Настройка на клиенте MagOS.

Если на муршрутизаторе не включен DHCP сервер (автоматическое получение сетевых параметров), то нужно указать в ini файле адрес маршрутизатора в качестве шлюза по умолчанию. Пример:

[/etc/sysconfig/network-scripts/ifcfg-eth0]
GATEWAY=192.168.1.31

3. Настройка на Linux клиенте.

При создании сетевого соединения укажите в качестве шлюза по умолчанию IP адрес машины, используемой в качестве маршрутизатора.

4. Настройка на Windows клиенте.

При создании сетевого соединения укажите в качестве шлюза по умолчанию IP адрес машины, используемой в качестве маршрутизатора.

Сервер DHCP

Сервер DHCP предназначен для раздачи клиентам адресов и сетевых настроек. Сервер по умолчанию настроен на раздачу адресов в двух диапазонах 192.168.1.0/24 для проводной сети и 192.168.2.0/24 для беспроводной сети. Клиенту выдаётся свободный IP адрес из диапазона 32-191. Кроме адреса, выдаются значения маски сети, сервера сетевой загрузки, сервера ДНС. Если у вас уже есть в сети DHCP сервер на базе WAN модема, вам нужно отключить эту службу на модеме.

1. Настройка на сервере.

Включите службу через параметр ini файла SERVICESSTART.

SERVICESSTART=dhcpd
# Открытие портов
IPTABLESOPENPORTSUDP=67

Также необходимо указать статический адрес для сетевого интерфейса для самого сервера.

[/etc/sysconfig/network-scripts/ifcfg-eth0]
# Автоподнятие сетевого интерфейса
ONBOOT=yes
# Пример настройки постоянного адреса
BOOTPROTO=static
IPADDR=192.168.1.31
NETMASK=255.255.255.0
# Шлюз по умолчанию, в данном случае WAN модем
GATEWAY=192.168.1.1

2. Настройка на клиенте MagOS.

По умолчанию сетевые интерфейсы настроены на автоматическое получение адреса.

3. Настройка на Linux клиенте.

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

4. Настройка на Windows клиенте.

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

Сервер DNS

В MagOS по умолчанию включен кеширующий сервер pdnsd. Он запоминает адреса серверов, с которыми вы работаете и при последующем запросе выдаёт информацию из кеша. Этот механизм позволяет ускорить работу в Интернете. Так же, с помощью этого сервера вы можете заблокировать адреса нежелательных сайтов и доменов в вашей сети (см. файл /etc/pdnsd.conf). По умолчанию служба уже запущена при старте и работает локально, только для программ запущенных на этой машине. Если вы хотите, чтобы другие клиенты в сети использовали ваш ДНС сервер, то укажите службе работать на всех интерфейсасх и откройте порты TCP/UDP 53 в межсетевом экране (если не открыт доступ по диапазону).

1. Настройка на сервере.

# Открытие сети 192.168.1.0/255.255.255.0
IPTABLESTRUSTEDIP=192.168.1.0/24
# или открытие портов
IPTABLESOPENPORTSTCP=53
IPTABLESOPENPORTSUDP=53

[/etc/pdnsd.conf]
# указание серверу pdnsd принимать запросы на всех сетевых интерфейсах
server_ip=any;

2. Настройка на клиенте MagOS.

[/etc/pdnsd.conf]
# указание серверу pdnsd отправлять запросы не в Интернет, а к локальному серверу
ip=192.168.1.31;

3. Настройка на Linux клиенте.

При настройке сетевого подключения укажите адрес MagOS сервера в качестве ДНС сервера.

4. Настройка на Windows клиенте.

При настройке сетевого подключения укажите адрес MagOS сервера в качестве ДНС сервера.

Прокси сервер

В стандартную поставку включен небольшой прокси сервер polipo. Он может выполнять функции http прокси сервера для экономии трафика и для блокировки нежелательных ресурсов. Polipo может помочь вам работать через socks-сервер при использовании протокола TOR. Если вы хотите чтобы другие клиенты в сети использовали ваш прокси-сервер, то откройте порт TCP 8118 в межсетевом экране (если не открыт доступ по диапазону). Для блокировки нежелательных ресурсов используйте файл /etc/polipo/forbidden.

1. Настройка на сервере.

Включите службу polipo через параметр ini файла SERVICESSTART и разрешите доступ в экране.

SERVICESSTART=polipo
# Открытие сети 192.168.1.0/255.255.255.0
IPTABLESTRUSTEDIP=192.168.1.0/24
# или открытие порта
IPTABLESOPENPORTSTCP=8118

Для доступа к прокси-серверу других компьютеров локальной сети укажите в настройках polipo адрес интерфейса локальной сети

[/etc/polipo/config]
proxyAddress="192.168.1.31"

2. Настройка на клиенте MagOS.

Укажите в браузере адрес MagOS сервера в качестве http прокси сервера. Чтобы сделать прокси сервер системным (для всех пользователей), можно внести изменения в ini файл (переменная HTTP_PROXY)

3. Настройка на Linux клиенте.

Укажите в браузере адрес MagOS сервера в качестве http прокси сервера.

4. Настройка на Windows клиенте.

Укажите в браузере адрес MagOS сервера в качестве http прокси сервера.

Терминальный сервер

Терминальный сервер позволяет пользователям сети запускать на сервере программы под учётными записями, существующими на данном сервере. В MagOS есть возможность организации как консольного сервера, так и графического. Консольный вход осуществляется службой sshd. Доступ к графическому серверу организует служба freenx, также использующая sshd. При запуске службы sshd будет возможен вход как в консольном, так и в графическом режиме. Вам необходимо открыть порт TCP 22 в межсетевом экране (если не открыт доступ по диапазону). Настройка.

1. Настройка на сервере.

Включите службу sshd через параметр ini файла SERVICESSTART и откройте доступ в экране

SERVICESSTART=sshd
# Открытие сети 192.168.1.0/255.255.255.0
IPTABLESTRUSTEDIP=192.168.1.0/24
# или открытие порта
IPTABLESOPENPORTSTCP=22

2. Настройка на клиенте MagOS.

Для консольного доступа к серверу используйте команду ssh user@magos-server. Для входа в графическую систему используйте программу Remmina (Главное меню-Интернет-Администрирование-Клиент удалённого рабочего стола Remmina). Программа по умолчанию содержит настроенную запись для подключения к MagOS серверу.

3. Настройка на Linux клиенте.

Для консольного доступа к серверу используйте команду ssh user@192.168.1.31. Для входа в графическую систему установите программу Remmina или бесплатный клиент NX Nomachine Client. При создании соединения вам понадобится открытый ключ MagOS сервера (см. /usr/share/magos/MagOS_client.id_dsa.key).

4. Настройка на Windows клиенте.

Для консольного доступа к серверу используйте утилиту Putty. Для входа в графическую систему установите бесплатный клиент NX Nomachine Client. При создании соединения вам понадобится открытый ключ MagOS сервера (см. /usr/share/magos/MagOS_client.id_dsa.key).

Сервер удалённой загрузки ОС (тонких клиентов)

Вы можете выделить определённую машину c MagOS, превратить её в сервер. Тогда вы сможете загружать операционную систему на всех компьютерах в локальной сети удалённо по сети, с этого сервера. Компьютеры должны поддерживать такую загрузку. В BIOS необходимо выставить приоритет сетевой загрузки выше остальных носителей. Преимущества удалённой загрузки:

Недостатки:

Клиенты при загрузке будут использовать стандартный файл настроек /boot/pxelinux.cfg/default . Для каждого компьютера можно сделать свой собственный файл настроек. Посмотрите на клиенте MAC адрес сетевой карты (см. файл /etc/iftab). Предположим что он равен e0:cb:4e:43:77:70, тогда вы можете создать файл настроек для этого компьютера с именем /boot/pxelinux.cfg/01-e0-cb-4e-43-77-70

1. Настройка на сервере.

Для настройки необходимо включить серверы DHCP и NFS и дополнительно службу tftp (служба является компонентом xinetd, поэтому его тоже следует включить). В межсетевом экране укажите разрешённый диапазон ip адесов. Пример:

SERVICESSTART=rpcbind,nfs-idmap,nfs-mountd,nfs-rquotad,nfs-server,dhcpd,xinetd,tftp
IPTABLESTRUSTEDIP=192.168.1.0/16

[/etc/sysconfig/network-scripts/ifcfg-eth0]
# Автоподнятие сетевого интерфейса
ONBOOT=yes
# Пример настройки постоянного адреса
BOOTPROTO=static
IPADDR=192.168.1.31
NETMASK=255.255.255.0
# Адрес шлюза по умолчанию, если сервер не является маршрутизатором
GATEWAY=192.168.1.1

2. Настройка на клиенте.

Включите в BIOS загрузку по сети.

Сервер общего доступа NFS

NFS сервер позволяет предоставить доступ к папкам вашего компьютера пользователям локальной сети. Использование NFS позволит получить вам максимально быстрый доступ (до полутора раз быстрее чем samba), а также позволит полноценно использовать атрибуты файлов. Получить доступ к NFS смогут только клиенты Linux. По умолчанию, при включении служб nfs-server (и зависимых rpcbind nfs-common), предоставляется доступ к папке /mnt/livemedia. При использовании параметров ini файла PARTITIONSAUTOMOUNT=yes и PARTITIONSSHARE=yes автоматически предоставляется доступ на чтение-запись ко всем разделам, подключенным в /media при старте системы. Параметры файла настроек PARTITIONSNOMOUNT= и PARTITIONSNOSHARE= позволяют исключить определённые разделы из списка подключаемых и разделямых разделов. Желательно присвоить всем разделам понятные уникальные имена на латиннице. Посмотреть какие именно ресурсы доступны в данное время вы можете в файле /etc/exports.

1. Настройка на сервере.

Включите в автозагрузку службы rpcbind,nfs-idmap,nfs-mountd,nfs-rquotad,nfs-server. В межсетевом экране укажите разрешённый диапазон ip адесов. Включите параметры PARTITIONSAUTOMOUNT и PARTITIONSSHARE. Параметрами PARTITIONSNOMOUNT и PARTITIONSNOSHARE определите список исключений. Пример:

SERVICESSTART=rpcbind,nfs-idmap,nfs-mountd,nfs-rquotad,nfs-server
IPTABLESTRUSTEDIP=192.168.1.0/16
PARTITIONSAUTOMOUNT=yes
PARTITIONSNOMOUNT=boot,hidden
PARTITIONSSHARE=yes
PARTITIONSNOSHARE=archive

2. Настройка на клиенте MagOS.

Включите параметр ini файла AUTOMOUNTSERVER. При старте будут просканированы разделяемые ресурсы сервера (/media/*) и все разделы будут автоматически подключены при старте системы в папку /mnt/server

AUTOMOUNTSERVER=yes

3. Настройка на клиенте Linux.

Добавьте на клиенте для каждого разделяемого ресурса в /etc/fstab запись вида:

192.168.1.31:/media/data /mnt/server/data nfs vers=3,nolock,users,auto 0 0

Не забудьте создать пустые каталоги для монтирования (/mnt/server/data в данном примере)

4. Настройка на клиенте Windows.

Насколько автору известно, подключение со среды Windows не реализуемо. Если есть бесплатное решение для полноценного подключения NFS разделов, сообщите, и я исправлю этот пункт.

Сервер общего доступа Samba

Samba сервер позволяет предоставить доступ к папкам вашего компьютера пользователям локальной сети. Чаще всего используется в смешанных сетях, в которые включены не только Linux машины. По умолчанию, при включении службы smb, предоставляется доступ чтение-запись к папке /media. Получить доступ можно используя учётки пользователей, существующих на сервере (стандартно это user). Пароли в самбе отличаются от обычных. Вы можете назначить нужный пароль командой smbpasswd user, либо использовать случайные пароли, созданные при первом запуске системы. Посмотреть эти пароли можно специальной командой (под пользователем root)

[root@MagOS /]# /usr/lib/magos/rc.local.d/81-samba show
Default samba passwords:
user d0564f
guest account is enabled on default

Если на сервере существует раздел /media/public, то к нему предоставляется гостевой доступ на чтение запись. Можно будет подключиться к ресурсу пользователем guest , без пароля.

1. Настройка на сервере.

Включите в автозагрузку службу smb. В межсетевом экране укажите разрешённый диапазон ip адесов. Включите параметры PARTITIONSAUTOMOUNT. Параметрами PARTITIONSNOMOUNT можно определить список разделов, не подключаемых автоматически. Специальный параметр SAMBADOMAIN позволяет задать рабочую группу. Пример:

SERVICESSTART=smb
SAMBADOMAIN=home
IPTABLESTRUSTEDIP=192.168.1.0/16
PARTITIONSAUTOMOUNT=yes
PARTITIONSNOMOUNT=boot,hidden

2. Настройка на клиенте Linux.

Используйте команды mount.cifs (под root) и fusesmb (от пользователя) для подключения ресурсов.

#сначала создаём пустые каталоги для подключения
[root@MagOS /]# mkdir /mnt/server /mnt/public 
#теперь собственно подключаем
[root@MagOS /]# mount.cifs //magos-server/media /mnt/server -o user=user,pass=d0564f
[root@MagOS /]# mount.cifs //magos-server/public /mnt/public -o user=guest,pass=

Пароль указывать открытым текстом небезопасно, поэтому лучше не указывать параметр pass, тогда утилита потребует ввода пароля.Для автоматического подключение ресурсов при старте можно добавить в /etc/fstab запись вида:

//192.168.1.31/public /mnt/public cifs user=guest,pass=,auto 0 0

3. Настройка на клиенте Windows.

Подключение возможно стандартными графическими средствами и консольной командой net use.

Сервер общего доступа FTP

В состав MagOS включен сервер proftpd, который позволяет предоставить доступ к папкам вашего компьютера пользователям локальной сети и Интернета по протоколу ftp. По умолчанию, при включении службы proftpd, предоставляется доступ до следующих папок (если они существуют):

1. Настройка на сервере.

Включите в автозагрузку службу proftpd. В межсетевом экране откройте TCP порт 21 или укажите разрешённый диапазон ip адесов. Включите параметры PARTITIONSAUTOMOUNT для автоматического подключения разделов. Параметрами PARTITIONSNOMOUNT определите список исключений. Пример:

SERVICESSTART=proftpd
PARTITIONSAUTOMOUNT=yes
PARTITIONSNOMOUNT=boot,hidden
# Открытие сети 192.168.1.0/255.255.255.0
IPTABLESTRUSTEDIP=192.168.1.0/24
# или открытие порта
IPTABLESOPENPORTSTCP=21

2. Настройка на клиенте.

Вы можете использовать любую программу, которая умеет работать с протоколом ftp.

Сервер времени NTPD

В MagOS-Linux сервер времени ntpd настроен по умолчанию. При поднятии службы ntpd время будет синхронизироваться с серверами интернета ntp1.vniiftri.ru ntp2.vniiftri.ru ntp2.vniiftri.ru. Если вы хотите указать свои локальные серверы, это можно сделать параметром ini файла NTPSERVERS. Чтобы другие компьютеры в сети смогли брать время с вашей машины, откройте порт UDP 123 или укажите разрешённый диапазон ip адресов.

  1. Настройка на сервере.

Включите в автозагрузку службу ntpd. Параметром NTPSERVERS можно изменить источник точного времени.

SERVICESSTART=ntpd
# Открытие сети 192.168.1.0/255.255.255.0
IPTABLESTRUSTEDIP=192.168.1.0/24
# или открытие порта
IPTABLESOPENPORTSUDP=123

2. Настройка на клиенте MagOS.

По умолчанию, MagOS-Linux выполняет сихронизацию времени разово, при включении компьютера. Если вы хотите, чтобы машины вашей сети использовали в качестве источника точного времени не серверы интернета, а ваш сервер, укажите его адрес в параметре NTPSERVERS ini файла

NTPSERVERS=magos-server

Дополнительно, если вы хотите чтобы время синхронизировалось постоянно, вы можете запустить сервер ntpd или использовать утилиту ntpdate для периодической синхронизации с помощью планировщика crond

а) Включите в автозагрузку службу ntpd. Параметром NTPSERVERS задайте ваш сервер точного времени.

NTPSERVERS=magos-server
SERVICESSTART=ntpd

б) Включите в автозагрузку службу crond. Параметром NTPSERVERS задайте ваш сервер точного времени. В этом варианте время будет синхронизироваться каждые 10 минут командой ntpdate. Запускать сервер ntpd на клиенте нет необходимости.

NTPSERVERS=magos-server
SERVICESSTART=crond

3. Настройка на клиенте Linux.

В файле настроек /etc/ntp.conf исправьте секцию серверов, добавив строки, указанные ниже. Включите в автозагрузку службу ntpd.

server 192.168.1.31 restrict 192.168.1.31 noquery notrap

4. Настройка на клиенте Windows.

Настройте источник точного времени используя стандартные средства операционной системы.


В начало

Pfs utils

Альтернативный набор утилит для работы с модулями. Развивается совместно с проектом Puppyrus. Форум проекта здесь, код тут. Основная документация тут. Утилиты отличает расширенный, относительно скриптов MagOS, функционал и минимальная привязка к конкретному дистрибутиву. Все утилиты имеют встроенный --help и небольшую общую справочную страничку (man pfs-utils).

Составной модуль (контейнер) - два и более модулей объединенных в один.

Технически это тот же squashfs модуль, только он содержит списки файлов и пустых каталогов для каждого подмодуля. Это позволяет в любой момент разобрать контейнер на составляющие или извлечь произвольный подмодуль. Собрать контейнер можно, как из модулей, так и из каталогов. Смотрите mkpfs.

Утилиты.

aufs-n - вывод детальной информации о корневой aufs

mkpfs - создание модуля

Примеры: mkpfs ./dir -создаст dir.pfs из dir mkpfs 1.xzm 2.xzm -o 3.xzm -соберет 1.xzm и 2.xzm в контейнер 3.xzm * mkpfs * -o ./big.xzm -соберет все каталоги, модули, образы (img) из текущего каталога в один контейнер - big.xzm

chroot2pfs - создание модуля из изменений сделанных в чруте

mountfile - вспомогательный скрипт, монтирует модули

или

pfs - библиотека функций для pfs-utils; функции могут быть использованы отдельно в консоли или в ваших скриптах

или

Доступные функции, которые могут быть полезны: exitmsg - выход из скрипта с сообщением и кодом завершения allow_only_root - проверка на рута mklist - создание списка файлов и пустых каталогов (как в контейнерах) checksfsxzb - проверка системы на поддержку squashfs fs_type - тип fs файла (squashfs, ext2-4 и т.д.) mkaufs - создание aufs для утилит mkpfs, pfsextract delaufs - удаление aufs addlayer - добавление слоя к aufs mksqmod - создание модуля (обертка к mksquashfs) pfs_update_caches - обновление кэшей и прочие мелочи, которые необходимо выполнять после подключения и отключения модулей * lsblocked - показать список модулей, которые невозможно отключить

pfsdepends - зависимости модулей

(нам пока не интересно)

pfsextract - распаковщик для модулей pfs

pfsfind - поиск файлов в aufs (какой файл в каком модуле лежит)

pfsload - подключение модулей (аналог - activate)

pfsrebuild - сборка нового модуля по списку файлов из уже подключенного к aufs.

списки берутся из подключенного модуля, а файлы из aufs, то есть в новый модуль попадут обновленные файлы.

pfsuninstall - удаление файлов модуля из системы, действие обратное pfsextract -i модуль.xzm

pfsunload - отключение модуля (аналог deactivate)

runpfsload-, runpfsunload- - скрипты которые выполняются после подключения/отключения модулей

специфичны для каждого дистрибутива должны находиться в том же каталоге что и pfsload/pfsunload и принадлежать руту

sync2layer - переносит файлы из верхнего слоя aufs во второй слой.

используется для освобождения RAM и для сохранения изменений сделанных за определенный период sync2layer <newlayer> - создать слой и перенести в него файлы из changes sync2layer - перенести файлы в существующий второй слой <newlayer> - каталог <newlayer.rom> - fs in file

unmountfile - размонтировать то, что смонтировано mountfile


В начало

ЧаВо(Часто задаваемые вопросы)

Пароль по умолчанию

Пароль по умолчанию для пользователей установлен в magos. Пароль администратора (пользователь root) определён как toor.

Вы можете сменить эти пароли через ini файл (см. комментарии в файле). В ini файле указывается хеш пароля. Чтобы узнать хеш от нужной парольной фразы, смените пароль пользователя через «Настройку компьютера», или консольную утилиту passwd, затем возьмите хеш из файла /etc/shadow (второе поле с разделителем :).

Пример хеша из строки /etc/shadow:

user:$6$kCP2oNGB$LD4VUJfTMxTmzbZNZg16AYDjSQ6CB1hEaqzb49I91KntXDTVxux6KueiYj59HiHddL9zJwlQ4Y8hzvXRTwpFQ0:16704:0:99999:7:::

Пример MagOS.ini:

#Хеш пароля для пользователя по умолчанию (стандартно magos)
DEFAULTPASSWD='$6$BQPNljLTsudcWAvZ$mZByj3lC2uWwbq/GLtWQAvvro8syKJuIKD.F3ovrTrr6yZC2MmWm5lLMDXZezIwAhSqEdfKuXpVpfPM0RUYt01'
#Хеш пароля для пользователя root (стандартно toor)
DEFAULTROOTPASSWD='$6$cVE.1SJ6tLPauIEj$F6Osa0qK6sr4V6bnWhRJFcy/Zi8WQY8b1eEGPKk6zVYx3Kt9PLLAlKbFt77guAyRuyPU0RLBtfSfzDBHJ5JGa1'
# Пользователи системы (можно также указать хеш, латинская x означает хеш из DEFAULTPASSWD)
NEEDEDUSERS='user:500:x,user2:501:$6$3edKnRopOiB973oa$..eJqgkUGUEZ3TQXm68hw6XpSq/TjVMf90lp9WSYtCtumqP8iBdTlqeuhKlhPKSFdCWDBLV43wk7C5J8JOp8w.'

Пример смены пароля и получения хеша в консоли (нажмите F12, чтобы открыть всплывающую консоль):

user@MagOS ~ $ su -
Пароль: toor (не печатается при вводе)

MagOS ~ # passwd root
Изменяется пароль пользователя root.
Новый пароль : 
Повторите ввод нового пароля : 
passwd: все данные аутентификации успешно обновлены.

MagOS ~ # passwd user
Изменяется пароль пользователя user.
Новый пароль : 
Повторите ввод нового пароля : 
passwd: все данные аутентификации успешно обновлены.

MagOS ~ # egrep "^root:|^user:" /etc/shadow
user:$6$Eu1YImjA26czmPCZ$dZsOiwqkcMzxJ3XHHzfB1QEhAVurLtKT5HYTYz8lv5P/oOFUKWmxXj5cdeIMWW8mnIefa1BrLKdU2ojEN4TZB.:17800:0:99999:7:::
root:$6$OPovNx99TQB28THt$YEWiGwVowag5W5ThpGyT6ZiEcTMdRirPW0jUyXyen/UqyoEYyi5GWTULoIZx6gjCjq56nUTRAp3f0v4VC/8e2/:17800:0:99999:7:::

MagOS ~ # egrep "^root:|^user:" /etc/shadow | awk -F: '{print $1 " " $2}'
user $6$Eu1YImjA26czmPCZ$dZsOiwqkcMzxJ3XHHzfB1QEhAVurLtKT5HYTYz8lv5P/oOFUKWmxXj5cdeIMWW8mnIefa1BrLKdU2ojEN4TZB.
root $6$OPovNx99TQB28THt$YEWiGwVowag5W5ThpGyT6ZiEcTMdRirPW0jUyXyen/UqyoEYyi5GWTULoIZx6gjCjq56nUTRAp3f0v4VC/8e2/

Меняю пароль через центр управления, он работает, но после перегрузки опять magos

Изменяйте пароль через ини файл, как это описано выше. Если пароль не указан, то будет использован пароль по умолчанию.

Проблема с паролем в том, что он хранится в /etc/shadow и соответственно попадает в модуль сохранений машины, а не в пользовательские данные. Т.е. пользователь при загрузке на каждой новой машине должен был бы иметь пароль по умолчанию, а на тех машинах, где менял - установленные ранее. Соответственно, приходилось бы постоянно менять пароль на каждой новой машине и вспоминать пароли на старых, а это неудобно.

Поэтому сделано так, чтобы пароль из ини файла имел больший приоритет, чем сохранённый в системных данных.

С точки зрения безопасности, рекомендуется периодически менять свои пароли. С текущим алгоритмом вы меняете пароль в ини файле один раз и потом уже не нужно будет на каждой машине вспоминать все предыдущие варианты.

Загрузка с жесткого диска вместо флешки

Стартую в чистом режиме с флешки - после раздумья автоматически монтируется жесткий диск c установленной MagOS и система загружается оттуда…

Я ничего не понимаю в консоли, не знаю как перейти в папку и как посмотреть файлы.

Несколько советов:

Удачи!

Как увеличить размер профиля

Нужно загрузиться в чистом режиме без профиля и выполнить команды в консоли.

Получить права root:

su -l

Перейти в папку где лежат профили:

cd /mnt/livedata/MagOS-Data

Проверить профиль на ошибки (считаем что используется профиль home.img ):

e2fsck -f home.img

Расширить профиль:

resize2fs home.img 1000M

Вместо 1000M можно поставить размер в гигабайтах: 1G, 2G, 3.5G

Как мне создать новый профиль большего размера?

Опытные пользователи могут создать профиль с помощью команд:

dd if=/dev/zero of=newhome.img bs=1M count=2048
mkfs.ext3 newhome.img

В этом примере создаётся профиль размером 2Г c файловой системой ext3. Новичку проще достать готовый профиль из архива MagOS-Data\profiles.7z , особенно если это делать с помощью mc

Пишет что ядро не поддерживает CPU


В начало

История

сборка 20190511

сборка 20190420

сборка 20190323

сборка 20190222

сборка 20190125

сборка 20181222

сборка 20181123

сборка 20181026

сборка 20180928

сборка 20180825

сборка 20180718

сборка 20180622

сборка 20180525

сборка 20180427

сборка 20180325

сборка 20180224

сборка 20180126

сборка 20171222

сборка 20171127

сборка 20171021

сборка 20170923

сборка 20170827

сборка 20170721

сборка 20170623

сборка 20170526

сборка 20170423

сборка 20170325

сборка 20170227

сборка 20170128

сборка 20161225

сборка 20161126

сборка 20161026

сборка 20160924

сборка 20160824

сборка 20160723

сборка 20160628

сборка 20160527

сборка 20160423

сборка 20160326

сборка 20160227

сборка 20160123

сборка 20151228

сборка 20151130

сборка 20151030

сборка 20150925

сборка 20150718

сборка 20150626

сборка 20150523

сборка 20150424

сборка 20150328

сборка 20150227

сборка 20150123

сборка 20141224

сборка 20141128

сборка 20141025

сборка 20140926

сборка 20140819

сборка 20140726

сборка 20140516

сборка 20140419

сборка 20140323

сборка 20140221

сборка 20140125

сборка 20131229

сборка 20131127

сборка 20131026

сборка 20130929

сборка 20130820

сборка 20130716

сборка 20130625

сборка 20130529

сборка 20130428

сборка 20130324

сборка 20130228

сборка 20130124

сборка 20121230

сборка 20121130

сборка 20121028

сборка 20120926

сборка 20120719

сборка 20120624

сборка 20120523

сборка 20120427

сборка 20120325

сборка 20120223

сборка 20120120

сборка 20111227

сборка 20111119

сборка 20111028

сборка 20110924

сборка 20110714

сборка 20110623

сборка 20110522

сборка 20110413

сборка 20110319

сборка 20110220

сборка 20110114

сборка 20101213

сборка 20101112

сборка 20101015

сборка 20100911

сборка 20100711

сборка 20100611

сборка 20100505

сборка 20100411

сборка 20100308

сборка 20100218

сборка 20100108

сборка 20091218

сборка 20091114

сборка 20091102

сборка 20091011

сборка 20090912

сборка 20090717

сборка 20090704

сборка 20090621

сборка 20090511

В случае возникновения вопросов и пожеланий, просим обращаться в наше сообщество в Gitter