拒绝使用主机控制台/tty 到 lxc 容器

拒绝使用主机控制台/tty 到 lxc 容器

我正在运行带有单个 lxc 客户机的 Ubuntu 12.04.5 LTS(lxc 软件包 0.7.5-3ubuntu69)。一切正常,只是 lxc 容器似乎使用/干扰了主机 tty 设备。

一旦启动容器,我就无法再使用其控制台登录主机,因为输入用户名后,它总是显示“无法确定您的 tty 名称。”然后就挂起了。主机上的系统日志慢慢地充满了“init:tty1 主进程 (17911) 以状态 1 终止”和“init:tty1 主进程已结束,正在重生”。

有没有办法拒绝 lxc 访问主机控制台/tty?有没有办法修复主机而不必重新启动?

这是我当前的 lxc 容器配置:

lxc.utsname = guest1
lxc.rootfs = /var/lib/lxc/guest1/rootfs

lxc.devttydir = lxc
lxc.tty = 4
lxc.pts = 1024
lxc.mount  = /var/lib/lxc/guest1/fstab
lxc.arch = amd64
lxc.cap.drop = sys_module mac_admin mac_override
lxc.pivotdir = lxc_putold

# Interface for public network
lxc.network.type=veth
lxc.network.link=br0
lxc.network.flags=up
lxc.network.hwaddr = 00:16:3e:d6:01:04

# Interface for private network
lxc.network.type=veth
lxc.network.link=br1
lxc.network.flags=up
lxc.network.hwaddr = 00:16:3e:d6:01:05

# Deny access to all devices by default
lxc.cgroup.devices.deny = a

# Allow any mknod (but not using the node)
lxc.cgroup.devices.allow = c *:* m
lxc.cgroup.devices.allow = b *:* m

# /dev/null and /dev/zero
lxc.cgroup.devices.allow = c 1:3 rwm
lxc.cgroup.devices.allow = c 1:5 rwm

# /dev/full
lxc.cgroup.devices.allow = c 1:7 rwm

# consoles
#lxc.cgroup.devices.allow = c 5:1 rwm
#lxc.cgroup.devices.allow = c 5:0 rwm
#lxc.cgroup.devices.allow = c 4:0 rwm
#lxc.cgroup.devices.allow = c 4:1 rwm

# /dev/{,u}random
lxc.cgroup.devices.allow = c 1:9 rwm
lxc.cgroup.devices.allow = c 1:8 rwm
lxc.cgroup.devices.allow = c 136:* rwm
lxc.cgroup.devices.allow = c 5:2 rwm

# rtc
lxc.cgroup.devices.allow = c 254:0 rwm

# fuse
#lxc.cgroup.devices.allow = c 10:229 rwm

# tun
#lxc.cgroup.devices.allow = c 10:200 rwm

# hpet
lxc.cgroup.devices.allow = c 10:228 rwm

# kvm
#lxc.cgroup.devices.allow = c 10:232 rwm

答案1

恢复主机 TTY 的解决方案似乎是删除主机上现有的 /dev/tty[1-4] 设备并使用 mknod 重新创建它们。

我还没有测试重新启动容器后 lxc 是否会再次破坏它们,但至少上述方法修复了它。

答案2

尝试将此选项作为配置的一部分

     lxc.devttydir = lxc

这将为特定容器的 tty1 和 console 创建目录 rootfs/dev/lxc;在这种情况下,tty1 是容器可以使用的下一个可用终端;

相关内容