PVE/LXC: различия между версиями

Материал из ALT Linux Wiki
< PVE
Строка 519: Строка 519:
</source>
</source>
</div></div>
</div></div>
Для PVE-8.0 не подходит: хотя правки те же, но номера строк иные — как и для версий 7.х, которые здесь не рассматриваются.
Для PVE-8.0 не подходит: хотя правки те же, но номера строк иные — как для версий 7.х, которые здесь не рассматриваются.


Для PVE-8.4+ тоже не подходит: в скрипте {{path|Config.pm}} процедуру {{cmd|is_valid_ro_mount_option}} заменили на {{cmd|is_valid_mount_option}} с расширенным списком опций монтирования.
Для PVE-8.4+ не подходит по точно той же причине: иные номера строк. Вот патч:
<div class="mw-collapsible mw-collapsed">
{{path|pve8.4-alt-lxc.patch}}
<div class="mw-collapsible-content">
<source lang="diff">
--- /usr/share/perl5/PVE/LXC/Config.pl  2025-04-08 05:27:00.000000000 +0800
+++ /usr/share/perl5/PVE/LXC/Config.pm 2025-06-06 09:36:44.645549046 +0800
@@ -486,7 +486,7 @@
    ostype => {
optional => 1,
type => 'string',
- enum => [qw(debian devuan ubuntu centos fedora opensuse archlinux alpine gentoo nixos unmanaged)],
+ enum => [qw(debian devuan ubuntu centos fedora opensuse archlinux alpine altlinux gentoo nixos unmanaged)],
description => "OS type. This is used to setup configuration inside the container, and corresponds to lxc setup scripts in /usr/share/lxc/config/<ostype>.common.conf. Value 'unmanaged' can be used to skip and OS specific setup.",
    },
    console => {
--- /usr/share/perl5/PVE/LXC/Setup.pl  2025-04-08 05:27:00.000000000 +0800
+++ /usr/share/perl5/PVE/LXC/Setup.pm  2025-06-06 09:43:34.463539899 +0800
@@ -9,6 +9,7 @@
use PVE::Tools;


use PVE::LXC::Setup::Alpine;
+use PVE::LXC::Setup::ALTLinux;
use PVE::LXC::Setup::ArchLinux;
use PVE::LXC::Setup::CentOS;
use PVE::LXC::Setup::Debian;
@@ -23,6 +24,7 @@
my $plugins = {
    alpine    => 'PVE::LXC::Setup::Alpine',
+    altlinux  => 'PVE::LXC::Setup::ALTLinux',
    archlinux => 'PVE::LXC::Setup::ArchLinux',
    centos    => 'PVE::LXC::Setup::CentOS',
    debian    => 'PVE::LXC::Setup::Debian',
@@ -71,6 +73,8 @@
return "devuan";
    } elsif (-f  "$rootdir/etc/SuSE-brand" || -f "$rootdir/etc/SuSE-release") {
return "opensuse";
+    } elsif (-f  "$rootdir/etc/altlinux-release") {
+ return "altlinux";
    } elsif (-f  "$rootdir/etc/fedora-release") {
return "fedora";
    } elsif (-f  "$rootdir/etc/centos-release" || -f "$rootdir/etc/redhat-release") {
@@ -263,7 +267,13 @@
    my $keynames = $plugin->ssh_host_key_types_to_generate();
-    return if ! -d "$self->{rootdir}/etc/ssh" || !$keynames || !scalar(keys $keynames->%*);
+    my $sshdir = "/etc/ssh";
+    if ( ! -d "$self->{rootdir}$sshdir" ) {
+ if ( ! -d "$self->{rootdir}/etc/openssh" ) {
+     return;
+ } $sshdir = "/etc/openssh";
+    }
+    return if ! -d "$self->{rootdir}/$sshdir" || !$keynames || !scalar(keys $keynames->%*);
    my $hostname = $self->{conf}->{hostname} || 'localhost';
    $hostname =~ s/\..*$//;
@@ -275,7 +285,7 @@
my ($id, $private, $public) = generate_ssh_key($keytype, "root\@$hostname");
print "done: $id\n";
- push $keyfiles->@*, ["/etc/ssh/$basename", $private, 0600], ["/etc/ssh/$basename.pub", $public, 0644];
+ push $keyfiles->@*, ["$sshdir/$basename", $private, 0600], ["$sshdir/$basename.pub", $public, 0644];
    }
    $self->protected_call(sub { # write them now all to the CTs rootfs at once
</source>
</div></div>
Скрипт {{path|/usr/share/perl5/PVE/LXC/Setup/ALTLinux.pm}} добавить из примера PVE-5.1 выше по тексту.
Скрипт {{path|/usr/share/perl5/PVE/LXC/Setup/ALTLinux.pm}} добавить из примера PVE-5.1 выше по тексту.



Версия от 04:56, 6 июня 2025

Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

В данной статье описано развёртывание LXC-контейнера c ALT (из готового шаблона) на оригинальном Proxmox VE (который на данный момент на Debian).

Если у вас установлен любой из дистрибутивов ALT и собственно сам PVE (pve-manager) или стартовый набор server-pve, данная статья вам не нужна, так как проблем с развёртыванием контейнера не будет.

Создание шаблона

Для этого можно воспользоваться набором инструментов - m-p. Вся информация тут.

Основным требованием для шаблона является наличие в нём systemd. Исходя из статьи Шаблоны для развёртывания CT в PVE, нам подойдет только шаблон ve/systemd-bare.tar.gz. Для его сборки после первоначальной настройки окружения необходимо выполнить следующие команды (предварительно настроив нужный репозиторий с помощью утилиты apt-repo):

$ git clone git://git.altlinux.org/people/mike/packages/mkimage-profiles.git
$ cd mkimage-profiles
$ make ve/systemd-bare.tar.gz

После этого готовый шаблон нужно загрузить в локальное хранилище PVE.

Подготовка Proxmox

Для установки рутового пароля при развёртывании шаблона потребуется установить perl-библиотеку Crypt::Eksblowfish::Bcrypt:

apt-get install libcrypt-eksblowfish-perl

Затем необходимо внести изменения в скрипты работы с LXC-контейнерами и добавить новый скрипт для разворачивания шаблона с ALT Linux. За основу взят патч для пакета pve-container.

Proxmox VE 5.1

Проверено на актуальных версиях - 5.1-35 и 5.1-36.

Следует внести изменения в следующие файлы (изменения под спойлером):

  • /usr/share/perl5/PVE/LXC/Config.pm
  • /usr/share/perl5/PVE/LXC/Setup.pm

И добавить новый файл с описанием инструкций для ALT:

  • /usr/share/perl5/PVE/LXC/Setup/ALTLinux.pm
  • Модификация, пригодная для работы и с systemd, и с systemv — полезно при модернизации старых контейнеров и не требует обязательного наличия systemd в шаблоне

(NB: в патч входит только вышеприведённый вариант!)

Данные файлы можно поправить вручную, а можно с помощью патча. Необходимо создать файл со следующим содержимым (TODO: добавить ссылку на ftp):

pve5-alt-lxc.patch

Затем выполнить следующие команды:

cd /usr/share/perl5/PVE/LXC
patch -p1 -i <path_to>/pve5-alt-lxc.patch

После изменения скриптов (вручную или патчем) необходимо перезапустить PVE API Daemon:

service pvedaemon restart

Теперь можно спокойно разворачивать контейнер из шаблона с ALT Linux.

Proxmox VE 8.1+

Приведу лишь патч, применимый к версиям PVE с 8.1 по 8.3 (этот ощутимо меньше отличается от оригинала):

pve8.1+-alt-lxc.patch

Для PVE-8.0 не подходит: хотя правки те же, но номера строк иные — как для версий 7.х, которые здесь не рассматриваются.

Для PVE-8.4+ не подходит по точно той же причине: иные номера строк. Вот патч:

pve8.4-alt-lxc.patch

Скрипт /usr/share/perl5/PVE/LXC/Setup/ALTLinux.pm добавить из примера PVE-5.1 выше по тексту.

Порядок применения тот же:

patch -p1 -i <path_to>/pve8.1+-alt-lxc.patch
service pvedaemon restart

После чего можно добавлять альт-контейнеры.

Proxmox VE 4.4

Проверено на версиях 4.4-18 и 4.4-20.

Необходимо внести изменения в следующие файлы:

  • /usr/share/perl5/PVE/LXC/Config.pm - аналогично 5 версии (см. выше);
  • /usr/share/perl5/PVE/LXC/Setup.pm - есть немного отличий;
  • /usr/share/perl5/PVE/LXC/Setup/ALTLinux.pm - аналогично 5 версии (см. выше).

Для 4 версии Proxmox VE также необходимо подправить LXC.pm:

  • /usr/share/perl5/PVE/LXC.pm

Данные файлы можно поправить вручную, а можно с помощью патча. Необходимо создать файл со следующим содержимым (TODO: добавить ссылку на ftp):

pve4-alt-lxc.patch

Затем выполнить следующие команды:

cd /usr/share/perl5/PVE # обратите внимание: запуск патча происходит из каталога, отличного от 5 версии.
patch -p1 -i <path_to>/pve4-alt-lxc.patch

После изменения скриптов (вручную или патчем) необходимо перезапустить PVE API Daemon:

service pvedaemon restart

Теперь можно спокойно разворачивать контейнер из шаблона с ALT Linux.

Создание CT

Подробнее об этом читайте тут. Отличий нет.

Ссылки