Bug 4165 - Создание vserver'а
Summary: Создание vserver'а
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: hasher (show other bugs)
Version: unstable
Hardware: all Linux
: P2 enhancement
Assignee: Dmitry V. Levin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-05-14 17:46 MSD by Anton Farygin
Modified: 2007-11-10 20:16 MSK (History)
9 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Anton Farygin 2004-05-14 17:46:10 MSD
Для создания виртуальных серверов неплохо было бы дать возможность с помощью
hasher устанавливать систему с определенным набором пакетов (передаваемым в
качестве аргумента или файла со списком). Основное отличие от текущей
функциональности hasher'а - все файлы должны в этот чрут попадать с реальными
(из пакетов) правами.
Comment 1 Anton Farygin 2004-05-14 18:01:10 MSD
Да, вместо 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 Anton Farygin 2004-05-14 18:06:53 MSD
Да, сейчас в принципе можно войти в 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 Anton Farygin 2005-06-10 11:12:30 MSD
Аналогично было бы неплохо модифицировать hasher для использования в separator.

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

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

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

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

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

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

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

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

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

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

зайти в 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 Michael Shigorin 2006-09-01 11:32:42 MSD
Оно?

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 Michael Shigorin 2007-11-10 20:16:13 MSK
IMHO FIXED, а ещё есть spt и mkimage.

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