LINUX.ORG.RU

lxc на Fedora 17


0

1

Приветствую,

пытаюсь заставить работать lxc-0.7.5 на Fedora 17 (хост). Вот содержимое /etc/lxc/lxc.conf:

lxc.arch = i686
lxc.utsname = test-1
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = vmbr100
lxc.network.hwaddr = 4a:49:43:49:64:01
lxc.network.ipv4 = 192.168.100.1/24
lxc.rootfs = /var/lib/lxc/fc13-base
lxc.mount = /var/lib/lxc/fc13-base/etc/fstab
lxc.console = /dev/console
lxc.tty = 4
lxc.pts = 1024

Контейнер создал в соответствии с документацией: lxc-create ... В контейнере FedoraCore 13.

Запускаю lxc-start -l DEBUG -o /tmp/lxc.log -n fc13-base и получаю ошибки:

lxc_conf  - Invalid argument - pivot_root syscall failed
lxc_conf  - failed to setup pivot root
lxc_conf  - failed to set rootfs for 'fc13-base'
...

В чем может быть дело и где нужно чинить? Буду признателен за советы!

★★

Ответ на: комментарий от mky

А не подскажете, в каких скроиптах или конфигурационных файлах в /etc/ можно передавать параметры монтирования ФС? Читал man fstab, но rprivate нельзя передать в /etc/fstab

cruz7 ★★
() автор топика
Ответ на: комментарий от cruz7

Насколько я понимаю, это нужно делать именно перед запуском ″lxc-start″, чтобы это подействовало на все смонтированные в этот момент ФС.

Да ещё в форумах пишут, что вроде как, systemd хочет, чтобы ″/″ был смонтирован shared. Так что не знаю, насколько правильно делать ″--make-rprivate″, думал, может кто ещё что посоветует.

mky ★★★★★
()
Ответ на: комментарий от mky

Приветствую,

«mount --make-rprivate /» позволило сдвинуться с мертвой точки, виден процес загрузки системы в контейнере, однако вылезло несколько ошибок и загрузка «подвисла» после «Starting sshd». Ошибки на консоли следующие:

cat: /proc/cmdline: No such file or directory
Starting udev: mkdir: cannot create directory `/dev/pts`: File exists
mkdir: cannot create directory `/dev/shm`: File exists
Setting up Logical Volume Management: /dev/dm-0: open failed: Operation not permitted
/dev/sda1: open failed: Operation not permitted
/dev/dm-1: open failed: Operation not permitted
/dev/sda2: open failed: Operation not permitted
No volume groups found
cruz7 ★★
() автор топика
Ответ на: комментарий от cruz7

Как именно создавался контейнер? А то есть такое мнение:

что в Fedora 17 шаблонов толком нет никаких, обновляйся

lxc-create отработал нормально, без ошибок?

mky ★★★★★
()
Ответ на: комментарий от mky

Часть ошибок удалось исправить, удалил из контейнера lvm, и обновил /etc/fstab в контейнере, чтобы монтировать /proc:

none /lxc/rootfs.lucid/dev/pts devpts defaults 0 0
none /lxc/rootfs.lucid/proc proc defaults 0 0
none /lxc/rootfs.lucid/sys sysfs defaults 0 0

Но теперь при старте контейнера есть ругань на fstab:

mount: can't find / in /etc/fstab or /etc/mtab

Т.е. в /etc/rc.d/rc.sysinit есть такие строчки:

mount -f /
mount -f /proc >/dev/null 2>&1
...

Контейнер создавал согласно man lxc-start, для контейнера нашел FedoraCore12 в базовом варианте, кажется здесь http://wiki.openvz.org/Download/template/precreated

cruz7 ★★
() автор топика
Ответ на: комментарий от cruz7
mount -f /

Это же просто должно создавать запись в ″/etc/mtab″.
ИМХО, можно закомментировать, хотя, ЕМНИМ, ругань ″can't find / in ...″ не должна останавливать выполнения rc.sysinit.

Контейнер создавал согласно man lxc-start

Я думал, вы читали, какое-нибудь howto, допусим это: http://www2.openvz.org/LXC , где чётко указано создавать fstab, да ещё с такой записью:

dev/shm tmpfs  defaults 0 0

mky ★★★★★
()
Ответ на: комментарий от mky

Спасибо за ссылку, в принципе все делал как там написано. Добавил в fstab строчку про /dev/shm, но изменений не привнесло:

- ругань «can't find / in /etc/fstab» остается

- запуск HAL daemon failed (где в контейнере можно посмотреть причины незапустившегося демона при старте системы? В /var/lib/lxc/fc13-base/var/log/messages ничего не нашел..)

- после строчки «Starting sshd: [OK]» все как бы подвисает, т.е. я не получаю командной строки (lxc-start -n fedora)

cruz7 ★★
() автор топика
Ответ на: комментарий от cruz7

очень смахивает на некорректный template (это скрипт вызываемый lxc-create который и создает образ контейнера (для запуска системы в lxc окружении требуется ее специально для этого подготовить))

командной строки вы не получаете скорее всего потому процесс загрузки не доходит до запуска виртуальной консоли, тем не менее вы можете попробовать соединиться с контейнером через ssh (пароли/конфиг ssh если нужно поправить через chroot)

более менее правильную подготовку rhel подобных систем для запуска в lxc я видел только в Oracle Linux, шаблон можно взять здесь https://github.com/lxc/lxc/blob/master/templates/lxc-oracle.in его с малыми усилиями можно подпилить для создания корректных образов centos и соответственно fc13

dGhost ★★★
()
Ответ на: комментарий от cruz7

А вобще в /var/lib/lxc/fc13-base/var/log/messages что-нибудь пишется? Может и syslog не стартует.

Как уже посоветовали, если sshd запустился, можно попробовать подключиться к контейнеру по ssh. Ещё есть команда lxc-ps, посмотрите по ней список процессов контейнера, может станет понятно, на чём клинит загрузку контейнера. Может там скрипт запуска sshd не может сгенерить ключи.

mky ★★★★★
()
Ответ на: комментарий от mky

Всем привет,

По ssh могу подключиться к контейнеру (несмотря на то, что процесс загрузки не завершен, т.е. нет командной строки), вижу следующие запущенные процессы: /sbin/init, /sbin/rsyslogd, /usr/sbin/sshd. А в логах следующее:

May 14 11:55:40 test-1 init: start-ttys main process (157) terminated with status 1
...
May 14 11:56:03 test-1 hald[138]: 11:56:03.301 [I] hald.c:673: hal 0.5.14
May 14 11:56:03 test-1 hald[138]: 11:56:03.302 [I] hald.c:674: using child timeout 250s
May 14 11:56:03 test-1 hald[138]: 11:56:03.302 [I] hald.c:683: Will daemonize
May 14 11:56:03 test-1 hald[138]: 11:56:03.302 [I] hald.c:684: Becoming a daemon
May 14 11:56:03 test-1 hald[139]: 11:56:03.302 [I] hald_dbus.c:5444: local server is listening at unix:abstract=/var/run/hald/dbus-yCIXTzsHG8,guid=2ecb533d315c462f3931aa2e000164af
May 14 11:56:03 test-1 hald[139]: 11:56:03.302 [E] hald_dbus.c:5821: dbus_bus_get(): Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory

По поводу ошибки с start-ttys, гугл пишет что нужно отключить SELINUX, так это у меня было сделано с самого начала, а вот ошибки при запуске hald мне непонятны, /var/run/dbus и /var/run/hald присутствуют с нужными правами.

PS. нужно попробовать пересоздать с другим темплайтом, который здесь посоветовали.

cruz7 ★★
() автор топика
Ответ на: комментарий от cruz7

Судя по всему не запущен dbus, но он и не установлен в контейнере. Нужен ли мне вообще HAL daemon в контейнере?

cruz7 ★★
() автор топика
Ответ на: комментарий от cruz7

Ok, с hald/dbus разобрался, установил dbus и hald запускается. Остается проблема с получением ком. строки после запуска lxc-start. Буду экспериментировать с новым template.

cruz7 ★★
() автор топика
Ответ на: комментарий от cruz7

Странный у вас контейнер, ИМХО. hald без dbus и не нужен. ЕМНИП, без hald система вполне рабочая, а вот без dbus не особо, хотя я не вспомню, каким демонам нужен dbus для нормальной работы.

Эта ошибка ″No such file or directory″, кстати, тоже может быть из-за включеного SeLinux'а.

mky ★★★★★
()
Ответ на: комментарий от roman77

lxc-checkconfig что говорит?

Говорит, что User namespace и Cgroup memory controller are missing, но в .config ядра не вижу ничего про CONFIG_USER_NS и CONFIG_CGROUP_MEM_RES_CTRL

lxc-0.7.5, поставленный из yum репозитория на FC17, думаю нужно как минимум обновить до lxc-1.0.3

cruz7 ★★
() автор топика
Ответ на: комментарий от mky

б

Нужно посмотреть вывод команд: ″getenforce″ и ″sestatus″, вдруг он включился.

Нет, SELINUX выключен наверняка, getenforce это подтверждает.

cruz7 ★★
() автор топика
Ответ на: б от cruz7

Приветствую,

Установил самый последний lxc-1.0.3-1. В комплекте был шаблон lxc-fedora, на его основе создал контейнер с FedoreCore13(скрипт самостоятельно скачал все что нужно, подправил загрузочные скрипты в контейнере и пр.). В данный момент lxc-start запускает контейнер, я получаю комю строку и могу залогиниться - все ОК. Но — контейнер запускается с ядром хоста, т.е. 3.9.10 (на хосте FedoraCore 17), а не с 2.6.33 идущий с FedoraCore13. Как это исправить, ибо для моих целей мне нужно именно 2.6.x

Кстати, в /var/lib/lxc/fedora/rootfs (куда установился контейнер) я даже ничего не вижу в boot.

cruz7 ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.