Bug 4165 - Создание vserver'а
: Создание vserver'а
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/hasher)
: unstable
: all Linux
: P2 enhancement
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2004-05-14 17:46 by
Modified: 2007-11-10 20:16 (History)


Attachments


Note

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


Description From 2004-05-14 17:46:10
Для создания виртуальных серверов неплохо было бы дать возможность с помощью
hasher устанавливать систему с определенным набором пакетов (передаваемым в
качестве аргумента или файла со списком). Основное отличие от текущей
функциональности hasher'а - все файлы должны в этот чрут попадать с реальными
(из пакетов) правами.
------- Comment #1 From 2004-05-14 18:01:10 -------
Да, вместо chroot для vserver можно использовать вот такую штуку:
/usr/sbin/chcontext --flag lock --flag nproc --secure
/usr/lib/util-vserver/capchroot --suid root . /bin/bash -login

Где /bin/bash -login - команда, которая должна запускаться в этом контексте.

При этом у запущенного таким образом приложения будут снесены все capability.
Добавить capability можно аргументом --cap CAP_NAME для chcontext

Единственное но: каталог с vserver'ами должен быть с правами 000 и атрибутом
+t,
что бы из него нельзя было выбраться.
------- Comment #2 From 2004-05-14 18:06:53 -------
Да, сейчас в принципе можно войти в hasher'овский чрут через эту команду, но
там
получается:

drwxr-xr-x   2 500 515   65 May 14 17:53 dev/
drwx------   3 514 515 4096 May 14 17:52 root/
drwxrwxrwt   2 500 500    6 May 14 17:08 .out/
drwxr-xr-x   2 500 500    6 May 14 17:08 .in/
drwx--x--x   2 500 500   88 May 14 17:07 .host/
drwxr-xr-x  32 514 515 4096 May 14 17:07 etc/
drwxr-xr-x   7 514 515 4096 May 14 17:06 lib/
drwxr-xr-x  18 514 515 4096 May 14 17:06 var/
drwxrwxr-t  20 500 515 4096 May 14 17:06 ./
drwxrwxr-t  20 500 515 4096 May 14 17:06 ../
drwxr-xr-x  13 514 515  143 May 14 17:06 usr/
drwxr-xr-x   2 514 515 4096 May 14 17:06 sbin/
dr-xr-xr-x   2 514 515    6 May 14 17:06 sys/
drwxrwxrwt   2 514 515    6 May 14 17:06 tmp/
dr-xr-xr-x   2 514 515    6 May 14 17:06 proc/
drwxr-xr-x   5 514 515   42 May 14 17:06 mnt/
drwxr-xr-x   2 514 515    6 May 14 17:06 opt/
drwxr-xr-x   2 514 515    6 May 14 17:06 home/
drwxr-xr-x   2 514 515 4096 May 14 17:06 bin/
drwx------   2 514 515    6 May 14 17:06 boot/

Что понятно и объяснимо ;-(
------- Comment #3 From 2005-06-10 11:12:30 -------
Аналогично было бы неплохо модифицировать hasher для использования в separator.

Для этого нужно сделать так, что бы все права сохранялись в файле и что бы вся
работа выполнялась под одним (текущим) пользователем.
------- Comment #4 From 2005-06-10 17:33:48 -------
Сохранение прав для псевдорута я могу сделать в качестве опции, но выполнение
от
одного пользователя в рамках hasher нереально.
------- Comment #5 From 2005-06-10 17:55:14 -------
а такую штуку, как установку hasher'ом системы в отдельный каталог жесткого
диска (под рутом) ?

Я правда не знаю как это будет выглядеть в hasher'е... тогда, когда я его
смотрел - мне показалось что это реализовать не очень просто.
------- Comment #6 From 2005-06-10 18:01:43 -------
Думаю, что можно сделать архив (со всеми правами), который потом можно
распаковать куда угодно.
------- Comment #7 From 2005-06-10 18:25:56 -------
да, как вариант. т.е. - на выходе из separator'а будет идти фактически некий
архив.

можно попробовать модифицировать. а как будет выглядеть то, что я передаю
hasher'у в качестве списка пакетов для установки ? 

кстати, hasher сейчас в separator используется частично для подготовки
apt-box'а.

Может быть сделать параметр hasher'у - поставить список пакетов из файла ?

А как запускать скрипты, донастраивающие систему ?
------- Comment #8 From 2005-06-10 18:28:26 -------
Как запускать? Берёшь создаёшь скрипт в чруте из не чрута и потом его
выполняешь
в чруте. Например, как это происходит при установке базовой системы и т.д.
------- Comment #9 From 2005-06-10 18:33:26 -------
А вход в чрут через hasher ?
Правильно ?
------- Comment #10 From 2005-09-05 16:42:13 -------
Можно использовать hsh-run --rooter (начиная с 1.0.21).

Короче, что из первоначального пожелания осталось востребованным, но не
реализованным?
------- Comment #11 From 2005-09-05 17:50:35 -------
пока непонятно, после выхода Compact'а я все это дело посмотрю снова
------- Comment #12 From 2005-09-06 18:21:36 -------
посмотрел ;-) . мне бы еще одну опцию - путь к создаваемому чруту.

т.е. - у меня один workdir с repo и aptbox'ом, и создается на его базе в данный
момент три-четыре chroot'а (в separator'е - fakechroot'а).

Соответственно неплохо было бы иметь возможность овверайдить дефолтный каталог
chroot
------- Comment #13 From 2005-09-08 12:59:52 -------
плюс к этому в hasher не получается поставить пакет dev

С dev - критично. chroot'ы я могу симлинкать, а вот dev мне устанавливать нужно
под fakeroot'ом.
------- Comment #14 From 2005-09-08 13:24:33 -------
и еще:
попытался сделать так:

зайти в chroot через hsh-run --shell
rpm -e --nodeps dev
выйти из чрута
hsh-install dev

Говорит что dev уже установлен. 
это вылезает из-за того, что hasher зачем-то правит базу в apt-box'е.

можно конечно скопировать dev внутрь и попытаться уже там его поставить, но это
тоже не работает:
[root@vrider .in]# rpm -Uvh dev-3.3.1-alt13.1.i586.rpm 
Preparing...                          
####################################################################################################
dev                                    error: unpacking of archive failed on
file /dev: cpio: utime failed - Operation not permitted
------- Comment #15 From 2006-09-01 11:32:42 -------
Оно?

Date: Tue, 8 Aug 2006 00:30:01 +0400
From: "Dmitry V. Levin" <ldv@>
To: ALT Linux sysadmin discuss <sysadmins@>
Subject: Re: [Sysadmins] Распределение по контейнерам

On Fri, Aug 04, 2006 at 02:34:22PM +0300, Slava Dubrovskiy wrote:
> Dmitry V. Levin пишет:
> > Я использую hasher, что-нибудь типа
> > $ hsh --save ~/build --initroot --pkg-build=,
> > $ hsh-install --save ~/build basesystem apt etcnet glibc less openssh-server
sysklogd
> >
> >   
> Сделал так. Но владелец файлов в build/chroot получается пользователь А.
> Как запаковать этот chroot в tgz чтобы права были правильные?

$ cat tarify.sh
#!/bin/sh -e
cd /
tar --create --file=- --numeric-owner --one-file-system --sparse -- *
$ hsh-run --save --root --execute tarify.sh ~/build >altlinux-minimal.tar

Правда в этом altlinux-minimal.tar не будет /dev/tty и /dev/ptmx, но это
можно потом добавить.


-- 
ldv
------- Comment #16 From 2007-11-10 20:16:13 -------
IMHO FIXED, а ещё есть spt и mkimage.

Создавалка чрута от root для бездисковых клиентов есть в ltsp5-server
(использовался spt, но поскольку чрут создаётся при установке тогда же, когда
пакеты и так устанавливаются рутом -- то от этого отказались).  Возможно, есть
смысл её дистрибутивизировать, если ещё где нужно...