LINUX.ORG.RU
ФорумAdmin

Ошибки при запуске LXC контейнера

 


0

1

ОС Debian Wheezy.

> dpkg -l | grep -i lxc
ii lxc 0.8.0~rc1-8+deb7u1 amd64 Linux Containers userspace tools


Лог загрузки LXC-контейнера (Debian Squeeze):

Mount failed for selinuxfs on /selinux: Operation not permitted
INIT: version 2.88 booting
Using makefile-style concurrent boot in runlevel S.
mount: permission denied
mkdir: cannot create directory `/lib/init/rw/sendsigs.omit.d/': File exists
mount: permission denied
hostname: you must be root to change the host name

Setting the system clock.
Cannot access the Hardware Clock via any known method.
Use the --debug option to see the details of our search for an access method.
Unable to set System Clock to: Sun Jun 16 12:04:43 UTC 2013 ... (warning).

Activating swap...done.
mount: permission denied
Cleaning up ifupdown....
Setting the system clock.
Cannot access the Hardware Clock via any known method.
Use the --debug option to see the details of our search for an access method.
Unable to set System Clock to: Sun Jun 16 12:04:43 UTC 2013 ... (warning).

Setting up networking....
Activating lvm and md swap...done.
Checking file systems...fsck from util-linux-ng 2.17.2
done.
Mounting local filesystems...done.
Activating swapfile swap...done.
Cleaning up temporary files....
Configuring network interfaces...done.
Setting kernel variables ...done.
Cleaning up temporary files....
startpar: service(s) returned failure: hostname.sh ... failed!
INIT: Entering runlevel: 2
Using makefile-style concurrent boot in runlevel 2.
Starting OpenBSD Secure Shell server: sshdCould not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_dsa_key



Ошибки выделил жирным.
Количество ошибок пугает... Это вообще нормально?
Как можно побороть ошибки монтирования?

★★

Да, если кому пригодится:

Ошибка

Starting OpenBSD Secure Shell server: sshdCould not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_dsa_key

лечится выполнением команды (внутри контейнера)

dpkg-reconfigure openssh-server

SaBo ★★ ()

Разобрался в чём проблема большинства ошибок mount: из LXC-контейнера недоступна tmpfs. Только вот как это побороть?

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

смонтировать ее через fstab контейнера, не?

А как?
Любая команда mount с tmpfs выдаёт ошибку:

mount -t tmpfs -o size=1G,nr_inodes=10k,mode=0700 tmpfs /mnt
mount: permission denied

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

Хз. У меня это монтирует скрипт /etc/init.d/lxc.${MACHINENAME}. Дистрибутив - Gentoo

Монтирует он перед стартом машины из /etc/lxc/${MACHINENAME}.fstab, там у меня строка вида:

none /var/lxc/${MACHINENAME}/dev/shm tmpfs  defaults 0 0

где ${MACHINENAME} - имя контейнера.

Изнутри контейнера я даже не пробовал монтировать - как-то не нужно никогда было.

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

Я пробовал монтировать до старта контейнера.

mount:

root@myfirstcontainer:~# mount
/dev/mapper/debian--x64-srv on / type ext4 (rw,relatime,user_xattr,barrier=1,data=ordered)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sysfs on /sys type sysfs (ro,relatime)
none on /dev/shm type tmpfs (ro,relatime)
devpts on /dev/console type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
devpts on /dev/tty1 type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
devpts on /dev/pts type devpts (rw,relatime,mode=600,ptmxmode=666)
devpts on /dev/ptmx type devpts (rw,relatime,mode=600,ptmxmode=666)

Но всё равно permission denied.

На самом деле, вся проблема в том, что в конфигурации контейнера есть строчка: lxc.cap.drop = sys_admin

Если её удалить, то запуск проходит нормально.
НО! Остановка контейнера через lxc-halt не работает (только lxc-stop) + я не до конца понимаю, что именно ограничивает sys_admin, поэтому оставил её.

П.С. Вот здесь: http://lists.debian.org/debian-live/2012/08/msg00051.html есть описание проблемы:

4. Next, if starting a container without «lxc.cap.drop = sys_admin», the
debian initscripts will mount a tmpfs on ${root}/run, which will block host
access to /run/initctl (as it is now on a file system inaccessible from outside
the container), which makes lxc-halt fail with an error message, and makes
lxc-start unable to detect a shutdown from within the container (thus
mandating a manual lxc-stop call). The only way I've found to stop that is to
disable the «mountkernfs.sh» and «mountall.sh» initscripts.

Disabling the «mountkernfs.sh» initscript necessitates adding lxc.mount.entry
lines in the lxc configuration file for proc, sys, and run/shm (and optionally
run/lock and tmp), while the removal of mountall.sh means that the
/etc/default/tmpfs size settings are not applied (should be set in the lxc
configure file instead) and unfortunately also prevents boot-time mounting of
stuff in /etc/fstab. However, static mounting is better done in the lxc
configuration file anyway, so the loss of /etc/fstab support is no big deal.

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

а что делает lxc-halt и чем он отличается от lxc-stop? в сквизи и прецисе lxc-halt'а вообще нет.

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

lxc-halt - даёт команду на корректное выключение (завершает работу initd).
lxc-stop - принудительно выключает контейнер.

Грубо говоря, lxc-stop - выдернуть шнур из розетки :)

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

У меня это монтирует скрипт /etc/init.d/lxc.${MACHINENAME}. Дистрибутив - Gentoo

А у вас есть lxc.cap.drop = sys_admin в конфигурации контейнера?

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

Мой конфиг для контейнера, если нужно:

lxc.utsname = ${MACHINENAME}
lxc.network.type = veth
lxc.network.veth.pair = veth_pm
lxc.network.flags = up
lxc.network.ipv4 = 172.xx.0.xx/24
lxc.network.name = eth0
lxc.network.link = br0
lxc.mount = /etc/lxc/${MACHINENAME}.fstab
lxc.rootfs = /var/lxc/${MACHINENAME}
lxc.tty = 1
lxc.cap.drop = sys_boot sys_module mknod mac_override
Pinkbyte ★★★★★ ()
Ответ на: комментарий от SaBo

Как можешь увидеть по вышеупомянутому конфигу - нет

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

Хм... Ясно, спасибо. Пойду читать зачем вообще нужен sys_admin (в wheezy он по умолчанию включён).

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