For starters, from "man lxc.container.conf"

lxc.hook.autodev
               A hook to be run in the container's namespace after mounting
               has been done and after any mount hooks have run, but before
               the pivot_root, if lxc.autodev == 1.

You can never modprobe in unprivileged container's namespace.

Another thing, AFAIK the hooks only accepts one parameter: a script name. So 
you need to have a script (e.g. /usr/local/bin/my_script) inside the container.

I actually tried that already as well and it resulted in the exact same error:

lxc.autodev = 1
lxc.hook.autodev = /home/lxcuser/.local/share/lxc/autodev/vpn_barracks
lxc.cgroup.devices.deny = a
lxc.cgroup.devices.allow = c 10:200 rwm

lxcuser@corsair:~/.local/share/lxc$ cat autodev/vpn_barracks
#!/bin/bash
cd ${LXC_ROOTFS_MOUNT}/dev
mkdir net
mknod net/tun c 10 200
chmod 0666 net/tun

lxc-start -n vpn_barracks --logpriority=DEBUG

...
lxc-start 1464620477.814 INFO     lxc_conf - conf.c:run_script_argv:362 - 
Executing script '/usr/share/lxcfs/lxc.mount.hook' for container 
'vpn_barracks', config section 'lxc'
      lxc-start 1464620477.893 INFO     lxc_conf - conf.c:run_script_argv:362 - 
Executing script '/home/lxcuser/.local/share/lxc/autodev/vpn_barracks' for 
container 'vpn_barracks', config section 'lxc'
      lxc-start 1464620477.900 ERROR    lxc_conf - conf.c:run_buffer:342 - 
Script exited with status 1
      lxc-start 1464620477.900 ERROR    lxc_conf - conf.c:lxc_setup:3947 - 
failed to run autodev hooks for container 'vpn_barracks'.
      lxc-start 1464620477.900 ERROR    lxc_start - start.c:do_start:717 - 
failed to setup the container
      lxc-start 1464620477.900 ERROR    lxc_sync - sync.c:__sync_wait:51 - 
invalid sequence number 1. expected 2
      lxc-start 1464620477.942 ERROR    lxc_start - start.c:__lxc_start:1192 - 
failed to spawn 'vpn_barracks'
      lxc-start 1464620477.998 WARN     lxc_commands - 
commands.c:lxc_cmd_rsp_recv:172 - command get_init_pid failed to receive 
response
      lxc-start 1464620477.999 WARN     lxc_cgmanager - cgmanager.c:cgm_get:994 
- do_cgm_get exited with error
      lxc-start 1464620483.004 ERROR    lxc_start_ui - lxc_start.c:main:344 - 
The container failed to start.
      lxc-start 1464620483.004 ERROR    lxc_start_ui - lxc_start.c:main:346 - 
To get more details, run the container in foreground mode.
      lxc-start 1464620483.004 ERROR    lxc_start_ui - lxc_start.c:main:348 - 
Additional information can be obtained by setting the --logfile and 
--logpriority options.

Since the error was exactly the same I figured LXC was simply executing 
whatever parameter lxc.hook.autodev was provided, regardless of whether it was 
a file or not.

My best advice is to bind-mount /dev/net/tun from the host (lxc.mount.entry) instead 
of using lxc.hook.autodev, and try again. I"m not even sure that /dev/net/tun 
works for unpriv containers (fuse doesn't), so if that still doesn't work, you 
probably want to try privileged container.


Okay, thanks, I'll try this, especially after Wojtek's comments saying this 
should work.

Thanks,
Joshua

_______________________________________________
lxc-users mailing list
[email protected]
http://lists.linuxcontainers.org/listinfo/lxc-users

Reply via email to