Altlive
Материал из ALT Linux Wiki
(→Как установить на жесткий диск) |
|||
(4 промежуточные версии не показаны) | |||
Строка 3: | Строка 3: | ||
Набор livedvd/liveflash со следующими вариантами загрузки: | Набор livedvd/liveflash со следующими вариантами загрузки: | ||
- | * минимальный консольный образ с systemd, | + | * минимальный консольный образ с systemd, networkd, sshd и основными сетевыми утилитами (включая tshark) |
- | * образ с openbox/tint2 и инструментами, входящими в консольный образ (в т.ч. | + | * образ с openbox/tint2 и инструментами, входящими в консольный образ (в т.ч. networkd для управления сетевыми соединениями) |
* образ с xfce, firefox, libreoffice, gimp, vlc и инструментами, входящими в консольный образ (однако уже с NetworkManager) | * образ с xfce, firefox, libreoffice, gimp, vlc и инструментами, входящими в консольный образ (однако уже с NetworkManager) | ||
Строка 13: | Строка 13: | ||
=== Где взять и как использовать === | === Где взять и как использовать === | ||
- | Образы можно загрузить с http://enp.itx.ru/linux/alt/p8/images/. Файлы iso предназначены для записи на dvd или использования в виртуальных средах, гибридными они не являются (т.е. перенести их на usb flash с помощью dd невозможно, однако сделать образы гибридными самостоятельно с помощью | + | Образы можно загрузить с http://enp.itx.ru/linux/alt/p8/images/. Файлы iso предназначены для записи на dvd или использования в виртуальных средах, гибридными они не являются (т.е. перенести их на usb flash с помощью dd невозможно, однако можно сделать образы гибридными самостоятельно с помощью isohybrid). Файлы tar предназначены для записи на usb flash, процедура записи выглядит примерно так: |
- | < | + | <pre> |
- | blkid # узнаем имя целевого носителя | + | # blkid # узнаем имя целевого носителя |
- | ... | + | ... |
- | cfdisk /dev/ | + | /dev/sdb1: LABEL="altlive" UUID="E034-195F" TYPE="vfat" |
- | tar -xf altlive-x86_64.tar # распаковываем архив | + | # cfdisk /dev/sdb # создаем на нем загрузочный раздел /dev/sdb1 |
- | cd altlive-x86_64 # переходим в него | + | # tar -xf altlive-x86_64.tar # распаковываем архив |
- | ./install.sh /dev/ | + | # cd altlive-x86_64 # переходим в него |
- | </ | + | # ./install.sh /dev/sdb1 # переносим altlive на носитель (создаем файловую систему, копируем файлы и устанавливаем загрузчик) |
+ | </pre> | ||
=== Как загрузиться с модифицированными настройками === | === Как загрузиться с модифицированными настройками === | ||
- | Все изменения на live-носителе при перезагрузке будут потеряны. Чтобы этого избежать, можно настроить автоматическое выполнение определенных действий (изменение сетевой конфигурацию с dhcp на статику, добавление дополнительных репозиториев или даже установка дополнительных пакетов, а может просто изменение параметров ssh и добавление ключей) при каждой загрузке: создать соответствующие скрипты в каталог hooks в корне usb-носителя. Также можно выполнить определенные действия при запуске openbox (например запустить браузер) - для этого скрипты нужно будет положить в каталог | + | Все изменения на live-носителе при перезагрузке будут потеряны. Чтобы этого избежать, можно настроить автоматическое выполнение определенных действий (изменение сетевой конфигурацию с dhcp на статику, добавление дополнительных репозиториев или даже установка дополнительных пакетов, а может просто изменение параметров ssh и добавление ключей) при каждой загрузке: создать соответствующие скрипты в каталог hooks в корне usb-носителя. Также можно выполнить определенные действия при запуске openbox (например запустить браузер) - для этого скрипты нужно будет положить в каталог hooksopenbox. |
- | Имена каталогов со скриптами для автозапуска можно изменить в syslinux.cfg, за них отвечают (отсутствующие по дефолту) параметры | + | Имена каталогов со скриптами для автозапуска можно изменить в syslinux.cfg, за них отвечают (отсутствующие по дефолту) параметры hooks и hooksopenbox. |
=== Как установить на жесткий диск === | === Как установить на жесткий диск === | ||
Строка 34: | Строка 35: | ||
Для установки загруженной системы на жесткий диск можно использовать скрипт live-install, принимающий следующие параметры: | Для установки загруженной системы на жесткий диск можно использовать скрипт live-install, принимающий следующие параметры: | ||
- | < | + | <pre> |
- | live-install help | + | # live-install help |
- | + | ERROR : Run live-install [$ROOT_LABEL] [$LOADER] [$NEW_USER] to copy running system to fixed disk | |
- | </ | + | </pre> |
Чуть подробнее о параметрах по порядку: | Чуть подробнее о параметрах по порядку: | ||
- | + | * ROOT_LABEL - метка раздела, на который предполагается переносить корень системы (по умолчанию system). На разделе должна быть заранее создана файловая система (ext4 или btrfs) | |
- | + | * LOADER - загрузчик (по умолчанию осуществляется автоподбор: extlinux для ext4 и grub для btrfs). Для extlinux необходимо, чтобы раздел с корнем был загрузочным | |
- | + | * NEW_USER - имя пользователя (в него будет переименован пользователь altlive, по умолчанию переименования не произойдет) | |
Разделы, инициализированные с помощью mkswap, будут обнаружены и добавлены в fstab установленной системы автоматически. | Разделы, инициализированные с помощью mkswap, будут обнаружены и добавлены в fstab установленной системы автоматически. | ||
Строка 49: | Строка 50: | ||
Возможна установка на softraid, который нужно предварительно создать, например: | Возможна установка на softraid, который нужно предварительно создать, например: | ||
- | < | + | <pre> |
- | mdadm /dev/md0 | + | # cfdisk /dev/sda # размечаем первый диск и помечаем раздел для корня как загрузочный |
- | mkfs.ext4 - | + | # sfdisk -d /dev/sda | sfdisk /dev/sdb # переносим разметку на второй диск |
- | live-install | + | # 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 # устанавливаем altlive | ||
+ | </pre> | ||
или: | или: | ||
- | < | + | <pre> |
- | mkfs.btrfs - | + | # cfdisk /dev/sda # размечаем первый диск |
- | live-install | + | # sfdisk -d /dev/sda | sfdisk /dev/sdb # переносим разметку на второй диск |
- | </ | + | # mkfs.btrfs -L system -m raid1 -d raid1 /dev/sda2 /dev/sdb2 # создаем файловую систему btrfs с зеркалированием данных и метаданных |
+ | # live-install # устанавливаем altlive | ||
+ | </pre> | ||
- | Поддержки UEFI пока нет, однако | + | Поддержки UEFI пока нет, однако систему можно установить на UEFI-only железо вручную: создать отдельные GPT-разделы для загрузчика и для корня, в корень установиться с помощью live-install, в загрузочный раздел вручную скопировать любой UEFI-совместимый загрузчик и настроить его самостоятельно. |
=== Немного о 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/software/systemd/man/systemd-networkd.html networkd] (исключение - вариант с xfce, там networkd по умолчанию выключен, а вместо него включен NetworkManager). Конфигурация сети по умолчанию выглядит так: | ||
+ | |||
+ | <pre> | ||
+ | # 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 | ||
+ | </pre> | ||
+ | |||
+ | Т.е. для переключения с DHCP на статику нужно в секции Network закомментировать DHCP и раскомментировать остальные параметры, при этом не забыть изменить адреса и сказать systemctl restart systemd-networkd. | ||
+ | |||
+ | Использование VLAN 802.1Q будет выглядеть примерно так: | ||
+ | |||
+ | <pre> | ||
+ | # 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 | ||
+ | </pre> | ||
+ | |||
+ | В systemd есть встроенная поддержка легковесных контейнеров, которая использует те же ядерные механизмы, что и проекты [https://linuxcontainers.org/ LXC] и [https://www.docker.com/ Docker] (и возникшие благодаря проекту [https://openvz.org/ OpenVZ]). Создание, запуск, использование, остановка и уничтожение контейнера выглядит так: | ||
+ | |||
+ | <pre> | ||
+ | # curl -O http://enp.itx.ru/linux/alt/p8/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 | ||
+ | </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. | ||
=== Как собрать самостоятельно === | === Как собрать самостоятельно === | ||
+ | |||
+ | Образы altlive (и шаблоны контейнеров) собираются с помощью [[Mkimage]] из профилей http://git.altlinux.org/people/enp/packages/mkimage-profile-altlive.git и http://git.altlinux.org/people/enp/packages/mkimage-profile-container.git стандартным образом, например: | ||
+ | |||
+ | <pre> | ||
+ | $ 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' | ||
+ | </pre> | ||
+ | |||
+ | В результате сборки в каталоге .work/.out окажутся iso и tar с архитектурой i586, с тремя вариантами загрузки (console, openbox и xfce) и с локалью ru_RU.UTF-8 (только в openbox и xfce, в console всегда будет en_EN.UTF-8). | ||
[[Категория:Решения]] | [[Категория:Решения]] | ||
{{Category navigation|title=LiveCD|category=LiveCD|sortkey={{SUBPAGENAME}}}} | {{Category navigation|title=LiveCD|category=LiveCD|sortkey={{SUBPAGENAME}}}} |
Текущая версия на 05:51, 28 октября 2016
Содержание |
Что это
Набор livedvd/liveflash со следующими вариантами загрузки:
- минимальный консольный образ с systemd, networkd, sshd и основными сетевыми утилитами (включая tshark)
- образ с openbox/tint2 и инструментами, входящими в консольный образ (в т.ч. networkd для управления сетевыми соединениями)
- образ с xfce, firefox, libreoffice, gimp, vlc и инструментами, входящими в консольный образ (однако уже с NetworkManager)
Все варианты собраны для двух архитектур (i586 и x86_64) в виде iso и tar (для записи на usb flash).
Во всех вариантах в системе есть пользователь altlive в группе wheel с пустым паролем, у рута пароль тоже пустой, вход по ssh с паролем всем, кроме рута, разрешен.
Где взять и как использовать
Образы можно загрузить с http://enp.itx.ru/linux/alt/p8/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 необходимо, чтобы раздел с корнем был загрузочным
- 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 # устанавливаем 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 # устанавливаем altlive
Поддержки UEFI пока нет, однако систему можно установить на UEFI-only железо вручную: создать отдельные GPT-разделы для загрузчика и для корня, в корень установиться с помощью live-install, в загрузочный раздел вручную скопировать любой UEFI-совместимый загрузчик и настроить его самостоятельно.
Немного о systemd, сетевых настройках и контейнерах
Во всех вариантах загрузки (включая минимальный консольный) в качестве системы инициализации используется systemd (см. также перевод официальной документации). Для протоколирования используется journald, постоянное хранение журналов на диске по умолчанию в нем выключено (Storage=volatile в /etc/systemd/journald.conf).
Для управления сетью используется networkd (исключение - вариант с xfce, там 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/p8/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.
Как собрать самостоятельно
Образы 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).