Bug 32462 - Контейнеры на базе ALT Linux неработоспособны
: Контейнеры на базе ALT Linux неработоспособны
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/pve-lxc)
: unstable
: all Linux
: P3 normal
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2016-09-01 09:42 by
Modified: 2018-09-08 17:11 (History)


Attachments
Поддержка контейнеров на базе альта. (8.05 KB, patch)
2016-09-04 18:22, Вадим Илларионов
no flags Details | Diff


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2016-09-01 09:42:31
На альтовом проксмоксе не работает ни один из шаблонов или распакованных
контейнеров (что LXC, что OpenVZ) с одинаковой руганью:

# lxc-start -n 101 -F
lxc-start: cgroups/cgmanager.c: cgm_setup_limits: 1519 call to
cgmanager_set_value_sync failed: invalid request
lxc-start: cgroups/cgmanager.c: cgm_setup_limits: 1522 Error setting cgroup
memory:lxc/101 limit type memory.memsw.limit_in_bytes
lxc-start: start.c: lxc_spawn: 1181 failed to setup the cgroup limits for '101'
lxc-start: start.c: __lxc_start: 1354 failed to spawn '101'
lxc-start: tools/lxc_start.c: main: 344 The container failed to start.
lxc-start: tools/lxc_start.c: main: 348 Additional information can be obtained
by setting the --logfile and --logpriority options.

Контейнеры на базе дебиана и кентоси в оригинальным проксмоксе работают, а на
базе альта (восстановленные из OpenVZ) - ни там, ни там:
TASK ERROR: unsupported fedora release 'ALT Linux <Release Name> (<Niсkname>)'

Последнее - из-за отсутствия альтовой обвязки
/usr/share/perl5/PVE/LXC/Setup/AltLinux.pm, долженствующей, в частности,
прописывать параметры etcnet. Однако я не мастак в приготовлении перловки -
моих познаний для написания этого модуля недостаточно и хватает лишь на
добавление приправы:
# diff -u /usr/share/perl5/PVE/LXC/Setup-orig.pm Setup-my.pm 
--- /usr/share/perl5/PVE/LXC/Setup-orig.pm      2016-08-29 01:32:53.349807739
+0800
+++ Setup-my.pm 2016-08-29 01:25:50.807177979 +0800
@@ -10,6 +10,7 @@
 use PVE::LXC::Setup::CentOS;
 use PVE::LXC::Setup::Fedora;
 use PVE::LXC::Setup::SUSE;
+use PVE::LXC::Setup::AltLinux;
 use PVE::LXC::Setup::ArchLinux;
 use PVE::LXC::Setup::Alpine;
 use PVE::LXC::Setup::Gentoo;
@@ -20,6 +21,7 @@
     centos    => 'PVE::LXC::Setup::CentOS',
     fedora    => 'PVE::LXC::Setup::Fedora',
     opensuse  => 'PVE::LXC::Setup::SUSE',
+    altlinux  => 'PVE::LXC::Setup::AltLinux',
     archlinux => 'PVE::LXC::Setup::ArchLinux',
     alpine    => 'PVE::LXC::Setup::Alpine',
     gentoo    => 'PVE::LXC::Setup::Gentoo',
@@ -40,6 +42,8 @@
        return "debian";
     } 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") {

Каковая в отсутствие основного блюда ни на что не пригодна.
------- Comment #1 From 2016-09-01 16:09:44 -------
начинать надо с memory.memsw.limit_in_bytes - #32314
------- Comment #2 From 2016-09-02 03:02:45 -------
Я прокомментировал #32314, но чтоб не прыгать между багами, дублирую сюда.

http://cateee.net/lkddb/web-lkddb/MEMCG_SWAP_ENABLED.html

Здесь сказано: General purpose distribution kernels which want to enable the
feature but keep it disabled by default and let the user enable it by
swapaccount=1 boot command line parameter should have this option unselected.

То есть, pve можно грузить с опцией ядра swapaccount=1 без его пересборки.
Проверил, работает - контейнеры (кроме альтовых) запускаются.
Дело за малым: написать перловый модуль для альтов. А вот тут и первые грабли.
Часть выпусков идёт с номерами, как, например:
ALT Linux 7.0.5 Centaurus  (Pholus)
ALT Linux 8.0.0 KDesktop  (Centaurea Montana)
Часть - без:
ALT Linux Sisyphus (unstable)
ALT Linux starter kit (Hypericum)

И как прикажете их сортировать, если даже на сайте альта толком нет информации
по соответствию наименований/ников/номеров?
Разве что руками в переносимом с OpenVZ контейнере править
/etc/altlinux-release как-то так:
ALT Linux 9.0.0 Sisyphus (unstable)
ALT Linux 8.0.1 starter kit (Hypericum)
А при создании шаблона как быть?
Ведь номер потребен следующей проверке в перловом модуле:

my distro = altlinux;
my $release = PVE::Tools::file_read_firstline("$rootdir/etc/$distro-release");
die "unable to read version info\n" if !defined($release);
my $version;
if ($release =~ m/release\s+(\d+\.\d+)(\.\d+)?/){
    if ($1 >= 5 && $1 < 10){ # и ещё вопрос: какой диапазон версий
поддерживать?
        $version = $1;
    }
}
die "unsupported $distro release '$release'\n" if !$version;

Или вовсе забить на проверку и сосредоточиться на функции формирования файлов
настройки етснет?
------- Comment #3 From 2016-09-02 03:08:23 -------
Жаль, нельзя редактировать собственные реплики, так что поправлюсь здесь.
Проверка, полагаю, должна выглядеть примерно так (предыдущий вариант -
бездумная калька с проверки на кентось):
if ($release =~ m/Alt\s+Linux\s+(\d+\.\d+\.\d+)/){
    if ($2 >= 5 && $2 < 10){ # какой диапазон версий поддерживать?
        $version = $2;
    }
}
------- Comment #4 From 2016-09-02 03:23:47 -------
# pct enter 100
Insecure $ENV{ENV} while running with -T switch at
/usr/share/perl5/PVE/CLI/pct.pm line 162.

И так с любым контейнером. Выручает лишь возможность входа через консоль из
веб-интерфейса.
------- Comment #5 From 2016-09-02 03:29:47 -------
Ещё поправка: my $distro = "altlinux";
------- Comment #6 From 2016-09-02 03:30:02 -------
Ещё поправка: my $distro = "altlinux";
------- Comment #7 From 2016-09-04 08:18:54 -------
Insecure $ENV{ENV} while running with -T switch
устраняется отключением ENV=$HOME/.bashrc из ~/.bashrc

После этого вход в контейнеры работает.
------- Comment #8 From 2016-09-04 18:22:17 -------
Created an attachment (id=6812) [details]
Поддержка контейнеров на базе альта

Вот, состряпал в меру разумения из кусков других модулей. По крайней мере, под
альтовым проксмоксом контейнеры работают, сетевые интерфейсы с маршрутом и
шлюзом создаются, а под оригинальным в будни буду попробовать.
1. Не реализована поддержка ipv6 - просто доселе не пользовался и не знаю, куда
что прописывать, а догадки отметаю: пусть знающие добавят.
2. Как ни крутил правку модулем /usr/share/perl5/PVE/LXC/Setup/Base.pm рутового
пароля в контейнере по маршруту не /etc/shadow, а /etc/tcb/$user/shadow, буде
таковой наличествует - без толку. Оставил без изменений - может, кто другой
запилит.
------- Comment #9 From 2016-09-05 11:08:48 -------
На оригинальном проксмоксе со следующими версиями пакетов патч тоже отработал:

# dpkg -l pve-* | awk '/^i/{print $2"\t"$3}'
pve-cluster     4.0-44
pve-container   1.0-73
pve-docs        4.2-8
pve-firewall    2.0-29
pve-firmware    1.1-9
pve-ha-manager  1.0-33
pve-kernel-4.4.16-1-pve 4.4.16-64
pve-libspice-server1    0.12.8-1
pve-manager     4.2-18
pve-qemu-kvm    2.6.1-2

Альтовые контейнеры работают.
------- Comment #10 From 2016-09-14 11:11:44 -------
Патч запускать из каталога с ним следующим образом:
# patch=$(pwd)/pve-4.patch; cd /; patch -p1 <$patch

Важно, чтоб в альтовском шаблоне или дампе были удалены симлинки
/etc/{fedora,redhat}-release, иначе проксмокс воспримет их как шаблон/дамп
федоры или кентоси неизвестной ему версии.
------- Comment #11 From 2016-09-15 16:01:25 -------
(В ответ на комментарий №10)
> Важно, чтоб в альтовском шаблоне или дампе были удалены симлинки
> /etc/{fedora,redhat}-release, иначе проксмокс воспримет их как шаблон/дамп
> федоры или кентоси неизвестной ему версии.
Как вариант, можно их убрать из стартеркитного брендинга.
------- Comment #12 From 2016-09-22 13:39:28 -------
поддержка altlinux контейнеров добавлена в pve-manager 4.2.23-alt3
шаблон ftp://ftp.altlinux.ru/pub/people/shrek/altlinux-p8-x86_64.tar.xz
------- Comment #13 From 2016-09-23 06:27:44 -------
А в мейнстрим предложено?
------- Comment #14 From 2018-09-08 17:11:14 -------
(В ответ на комментарий №12)
> поддержка altlinux контейнеров добавлена в pve-manager 4.2.23-alt3
> шаблон ftp://ftp.altlinux.ru/pub/people/shrek/altlinux-p8-x86_64.tar.xz
Валер, а из чего делал?  Давай в стартеркиты добавим, если там не как для ovz:
http://nightly.altlinux.org/p8/permalink/alt-p8-ovz-generic-latest-x86_64.tar.xz