Altlive: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
Строка 4: Строка 4:


* минимальный консольный образ с systemd, networkd, sshd и основными сетевыми утилитами (включая tshark)
* минимальный консольный образ с systemd, networkd, sshd и основными сетевыми утилитами (включая tshark)
* образ с openbox/tint2 и инструментами, входящими в консольный образ (в т.ч. networkd для управления сетевыми соединениями)
* образ с openbox/tint2/midori и инструментами, входящими в консольный образ (в т.ч. networkd для управления сетевыми соединениями)
* образ с xfce, firefox, libreoffice, gimp, vlc и инструментами, входящими в консольный образ (однако уже с NetworkManager)
* образ с mate/firefox и инструментами, входящими в консольный образ (однако уже с NetworkManager)


Все варианты собраны для двух архитектур (i586 и x86_64) в виде iso и tar (для записи на usb flash).  
Все варианты собраны для двух архитектур (i586 и x86_64) в виде iso и tar (для записи на usb flash).  
Строка 13: Строка 13:
=== Где взять и как использовать ===
=== Где взять и как использовать ===


Образы можно загрузить с http://enp.itx.ru/linux/alt/p8/images/. Файлы iso предназначены для записи на dvd или использования в виртуальных средах, гибридными они не являются (т.е. перенести их на usb flash с помощью dd невозможно, однако можно сделать образы гибридными самостоятельно с помощью isohybrid). Файлы tar предназначены для записи на usb flash, процедура записи выглядит примерно так:
Образы можно загрузить с http://enp.itx.ru/linux/alt/p9/images/. Файлы iso предназначены для записи на dvd или использования в виртуальных средах, гибридными они не являются (т.е. перенести их на usb flash с помощью dd невозможно, однако можно сделать образы гибридными самостоятельно с помощью isohybrid). Файлы tar предназначены для записи на usb flash, процедура записи выглядит примерно так:


<pre>
<pre>
Строка 43: Строка 43:


* ROOT_LABEL - метка раздела, на который предполагается переносить корень системы (по умолчанию system). На разделе должна быть заранее создана файловая система (ext4 или btrfs)
* ROOT_LABEL - метка раздела, на который предполагается переносить корень системы (по умолчанию system). На разделе должна быть заранее создана файловая система (ext4 или btrfs)
* LOADER - загрузчик (по умолчанию осуществляется автоподбор: extlinux для ext4 и grub для btrfs). Для extlinux необходимо, чтобы раздел с корнем был загрузочным
* LOADER - загрузчик (по умолчанию осуществляется автоподбор: extlinux для ext4 и grub для btrfs). <s>Для extlinux необходимо, чтобы раздел с корнем был загрузочным.</s> Вариант с extlinux сейчас сломан, нужно явно указывать grub даже для ext4
* NEW_USER - имя пользователя (в него будет переименован пользователь altlive, по умолчанию переименования не произойдет)
* NEW_USER - имя пользователя (в него будет переименован пользователь altlive, по умолчанию переименования не произойдет)


Строка 55: Строка 55:
# mdadm --create /dev/md0 --level=1 --metadata=0.9 --raid-devices=2 /dev/sda2 /dev/sdb2  # создаем raid1 с использованием старого формата метаданных для поддержки extlinux
# mdadm --create /dev/md0 --level=1 --metadata=0.9 --raid-devices=2 /dev/sda2 /dev/sdb2  # создаем raid1 с использованием старого формата метаданных для поддержки extlinux
# mkfs.ext4 -L system /dev/md0                                                          # создаем файловую систему ext4
# mkfs.ext4 -L system /dev/md0                                                          # создаем файловую систему ext4
# live-install                                                                           # устанавливаем altlive
# live-install system grub altlive                                                      # устанавливаем altlive
</pre>
</pre>


Строка 64: Строка 64:
# sfdisk -d /dev/sda | sfdisk /dev/sdb                                                  # переносим разметку на второй диск
# sfdisk -d /dev/sda | sfdisk /dev/sdb                                                  # переносим разметку на второй диск
# mkfs.btrfs -L system -m raid1 -d raid1 /dev/sda2 /dev/sdb2                            # создаем файловую систему btrfs с зеркалированием данных и метаданных
# mkfs.btrfs -L system -m raid1 -d raid1 /dev/sda2 /dev/sdb2                            # создаем файловую систему btrfs с зеркалированием данных и метаданных
# live-install                                                                           # устанавливаем altlive
# live-install system grub altlive                                                      # устанавливаем altlive
</pre>
</pre>


Строка 71: Строка 71:
=== Немного о systemd, сетевых настройках и контейнерах ===
=== Немного о systemd, сетевых настройках и контейнерах ===


Во всех вариантах загрузки (включая минимальный консольный) в качестве системы инициализации используется [https://www.freedesktop.org/wiki/Software/systemd/ systemd] (см. также [http://www2.kangran.su/~nnz/pub/s4a/s4a_latest.pdf перевод официальной документации]). Для протоколирования используется [https://www.freedesktop.org/software/systemd/man/systemd-journald.html journald], постоянное хранение журналов на диске по умолчанию в нем выключено (Storage=volatile в /etc/systemd/journald.conf).
Во всех вариантах загрузки (включая минимальный консольный) в качестве системы инициализации используется [https://www.freedesktop.org/wiki/Software/systemd/ systemd] (см. также [http://www2.kangran.su/~nnz/pub/s4a/s4a_latest.pdf перевод официальной документации]). Для протоколирования используется [https://www.freedesktop.org/software/systemd/man/systemd-journald.html journald].


Для управления сетью используется [https://www.freedesktop.org/software/systemd/man/systemd-networkd.html networkd] (исключение - вариант с xfce, там networkd по умолчанию выключен, а вместо него включен NetworkManager). Конфигурация сети по умолчанию выглядит так:
Для управления сетью используется [https://www.freedesktop.org/software/systemd/man/systemd-networkd.html networkd] (исключение - вариант с mate, там networkd по умолчанию выключен, а вместо него включен NetworkManager). Конфигурация сети по умолчанию выглядит так:


<pre>
<pre>
Строка 115: Строка 115:


<pre>
<pre>
# curl -O http://enp.itx.ru/linux/alt/p8/images/container-x86_64.tar.xz
# curl -O http://enp.itx.ru/linux/alt/p9/images/container-x86_64.tar.xz
# machinectl import-tar container-x86_64.tar.xz one
# machinectl import-tar container-x86_64.tar.xz one
# machinectl [ start | enable | status | shell | login | poweroff | disable | remove ] one
# machinectl [ start | enable | status | shell | login | poweroff | disable | remove ] one
</pre>
</pre>


Утилита [https://www.freedesktop.org/software/systemd/man/machinectl.html machinectl] создает контейнеры только на btrfs и для каждого контейнера сразу выделяет отдельный subvolume. Уровнем ниже machinectl работает утилита [https://www.freedesktop.org/software/systemd/man/systemd-nspawn.html nspawn], которую можно использовать для управления контейнерами напрямую. Для более гибкой настройки сети в контейнере это приходится делать в любом случае: копировать шаблон юнита /lib/systemd/system/systemd-nspawn@.service в /etc/systemd/system/systemd-nspawn@one.service и в последнем править параметры nspawn.
Утилита [https://www.freedesktop.org/software/systemd/man/machinectl.html machinectl] при использовании на btrfs для каждого контейнера сразу выделяет отдельный subvolume. Уровнем ниже machinectl работает утилита [https://www.freedesktop.org/software/systemd/man/systemd-nspawn.html nspawn], которую можно использовать для управления контейнерами напрямую. Для более гибкой настройки сети в контейнере это приходится делать в любом случае: копировать шаблон юнита /lib/systemd/system/systemd-nspawn@.service в /etc/systemd/system/systemd-nspawn@one.service и в последнем править параметры nspawn (или создавать [https://www.freedesktop.org/software/systemd/man/systemd.nspawn.html индивидуальные настройки] в /etc/systemd/nspawn/one.nspawn).


=== Как собрать самостоятельно ===
=== Как собрать самостоятельно ===

Версия от 13:20, 6 декабря 2019

Что это

Набор livedvd/liveflash со следующими вариантами загрузки:

  • минимальный консольный образ с systemd, networkd, sshd и основными сетевыми утилитами (включая tshark)
  • образ с openbox/tint2/midori и инструментами, входящими в консольный образ (в т.ч. networkd для управления сетевыми соединениями)
  • образ с mate/firefox и инструментами, входящими в консольный образ (однако уже с NetworkManager)

Все варианты собраны для двух архитектур (i586 и x86_64) в виде iso и tar (для записи на usb flash).

Во всех вариантах в системе есть пользователь altlive в группе wheel с пустым паролем, у рута пароль тоже пустой, вход по ssh с паролем всем, кроме рута, разрешен.

Где взять и как использовать

Образы можно загрузить с http://enp.itx.ru/linux/alt/p9/images/. Файлы iso предназначены для записи на dvd или использования в виртуальных средах, гибридными они не являются (т.е. перенести их на usb flash с помощью dd невозможно, однако можно сделать образы гибридными самостоятельно с помощью isohybrid). Файлы tar предназначены для записи на usb flash, процедура записи выглядит примерно так:

# blkid                        # узнаем имя целевого носителя
...
/dev/sdb1: LABEL="altlive" UUID="E034-195F" TYPE="vfat"                         
# cfdisk /dev/sdb              # создаем на нем загрузочный раздел /dev/sdb1
# tar -xf altlive-x86_64.tar   # распаковываем архив
# cd altlive-x86_64            # переходим в него
# ./install.sh /dev/sdb1       # переносим altlive на носитель (создаем файловую систему, копируем файлы и устанавливаем загрузчик)

Как загрузиться с модифицированными настройками

Все изменения на live-носителе при перезагрузке будут потеряны. Чтобы этого избежать, можно настроить автоматическое выполнение определенных действий (изменение сетевой конфигурацию с dhcp на статику, добавление дополнительных репозиториев или даже установка дополнительных пакетов, а может просто изменение параметров ssh и добавление ключей) при каждой загрузке: создать соответствующие скрипты в каталог hooks в корне usb-носителя. Также можно выполнить определенные действия при запуске openbox (например запустить браузер) - для этого скрипты нужно будет положить в каталог hooksopenbox.

Имена каталогов со скриптами для автозапуска можно изменить в syslinux.cfg, за них отвечают (отсутствующие по дефолту) параметры hooks и hooksopenbox.

Как установить на жесткий диск

Для установки загруженной системы на жесткий диск можно использовать скрипт live-install, принимающий следующие параметры:

# live-install help
ERROR : Run live-install [$ROOT_LABEL] [$LOADER] [$NEW_USER] to copy running system to fixed disk                            

Чуть подробнее о параметрах по порядку:

  • ROOT_LABEL - метка раздела, на который предполагается переносить корень системы (по умолчанию system). На разделе должна быть заранее создана файловая система (ext4 или btrfs)
  • LOADER - загрузчик (по умолчанию осуществляется автоподбор: extlinux для ext4 и grub для btrfs). Для extlinux необходимо, чтобы раздел с корнем был загрузочным. Вариант с extlinux сейчас сломан, нужно явно указывать grub даже для ext4
  • NEW_USER - имя пользователя (в него будет переименован пользователь altlive, по умолчанию переименования не произойдет)

Разделы, инициализированные с помощью mkswap, будут обнаружены и добавлены в fstab установленной системы автоматически.

Возможна установка на softraid, который нужно предварительно создать, например:

# cfdisk /dev/sda                                                                        # размечаем первый диск и помечаем раздел для корня как загрузочный
# sfdisk -d /dev/sda | sfdisk /dev/sdb                                                   # переносим разметку на второй диск
# mdadm --create /dev/md0 --level=1 --metadata=0.9 --raid-devices=2 /dev/sda2 /dev/sdb2  # создаем raid1 с использованием старого формата метаданных для поддержки extlinux
# mkfs.ext4 -L system /dev/md0                                                           # создаем файловую систему ext4
# live-install system grub altlive                                                       # устанавливаем altlive

или:

# cfdisk /dev/sda                                                                        # размечаем первый диск
# sfdisk -d /dev/sda | sfdisk /dev/sdb                                                   # переносим разметку на второй диск
# mkfs.btrfs -L system -m raid1 -d raid1 /dev/sda2 /dev/sdb2                             # создаем файловую систему btrfs с зеркалированием данных и метаданных
# live-install system grub altlive                                                       # устанавливаем altlive

Поддержки UEFI пока нет, однако систему можно установить на UEFI-only железо вручную: создать отдельные GPT-разделы для загрузчика и для корня, в корень установиться с помощью live-install, в загрузочный раздел вручную скопировать любой UEFI-совместимый загрузчик и настроить его самостоятельно.

Немного о systemd, сетевых настройках и контейнерах

Во всех вариантах загрузки (включая минимальный консольный) в качестве системы инициализации используется systemd (см. также перевод официальной документации). Для протоколирования используется journald.

Для управления сетью используется networkd (исключение - вариант с mate, там networkd по умолчанию выключен, а вместо него включен NetworkManager). Конфигурация сети по умолчанию выглядит так:

# cat /etc/systemd/network/local.network
[Match]
Name=en*
[Network]
DHCP=ipv4
#DNS=8.8.8.8
#Domains=local
#Address=10.0.0.2/24
#Gateway=10.0.0.1

Т.е. для переключения с DHCP на статику нужно в секции Network закомментировать DHCP и раскомментировать остальные параметры, при этом не забыть изменить адреса и сказать systemctl restart systemd-networkd.

Использование VLAN 802.1Q будет выглядеть примерно так:

# cat /etc/systemd/network/trunk.network
[Match]
Name=enp4s0
[Network]
VLAN=enp4s0.10

# cat /etc/systemd/network/local.netdev 
[NetDev]
Name=enp4s0.10
Kind=vlan
[VLAN]
Id=10

# cat /etc/systemd/network/local.network 
[Match]
Name=enp4s0.10
[Network]
DHCP=ipv4

В systemd есть встроенная поддержка легковесных контейнеров, которая использует те же ядерные механизмы, что и проекты LXC и Docker (и возникшие благодаря проекту OpenVZ). Создание, запуск, использование, остановка и уничтожение контейнера выглядит так:

# curl -O http://enp.itx.ru/linux/alt/p9/images/container-x86_64.tar.xz
# machinectl import-tar container-x86_64.tar.xz one
# machinectl [ start | enable | status | shell | login | poweroff | disable | remove ] one

Утилита machinectl при использовании на btrfs для каждого контейнера сразу выделяет отдельный subvolume. Уровнем ниже machinectl работает утилита nspawn, которую можно использовать для управления контейнерами напрямую. Для более гибкой настройки сети в контейнере это приходится делать в любом случае: копировать шаблон юнита /lib/systemd/system/systemd-nspawn@.service в /etc/systemd/system/systemd-nspawn@one.service и в последнем править параметры nspawn (или создавать индивидуальные настройки в /etc/systemd/nspawn/one.nspawn).

Как собрать самостоятельно

Образы altlive (и шаблоны контейнеров) собираются с помощью Mkimage из профилей http://git.altlinux.org/people/enp/packages/mkimage-profile-altlive.git и http://git.altlinux.org/people/enp/packages/mkimage-profile-container.git стандартным образом, например:

$ git clone http://git.altlinux.org/people/enp/packages/mkimage-profile-altlive.git
$ cd mkimage-profile-altlive
$ make HSH_APT_CONFIG=/home/enp/apt/apt.conf.p8.i586 GLOBAL_TARGET=i586 GLOBAL_LOCALE=ru_RU GLOBAL_SUBIMAGES='console openbox xfce'

В результате сборки в каталоге .work/.out окажутся iso и tar с архитектурой i586, с тремя вариантами загрузки (console, openbox и xfce) и с локалью ru_RU.UTF-8 (только в openbox и xfce, в console всегда будет en_EN.UTF-8).