[lxc-devel] [Lxc-users] [GIT] lxc branch, master, updated. 7f99e339363d9f005c9386f60a1d8c0953c85053

Serge Hallyn serge.hallyn at canonical.com
Mon Nov 5 15:04:40 UTC 2012


Quoting Michael H. Warfield (mhw at WittsEnd.com):
> On Thu, 2012-11-01 at 20:15 -0400, Michael H. Warfield wrote:
> > On Thu, 2012-11-01 at 19:17 -0400, Michael H. Warfield wrote:
> > > On Thu, 2012-11-01 at 23:28 +0100, Serge Hallyn wrote:
> > > > Quoting Michael H. Warfield (mhw at WittsEnd.com):
> > > > > On Thu, 2012-11-01 at 22:44 +0100, Serge Hallyn wrote:
> > > > > > Quoting Michael H. Warfield (mhw at WittsEnd.com):
> > > > > > > On Thu, 2012-11-01 at 21:20 +0100, Daniel Baumann wrote:
> > > > > > > > On 11/01/2012 09:08 PM, Michael H. Warfield wrote:
> > > > > > > > > I know, I KNOW this is an 11th hour request.  Can we please get Serge's
> > > > > > > > > autodev stuff into this release?  Please?
> > > > > > > 
> > > > > > > > release early, release often?
> > > > > > > 
> > > > > > > > just release current git as 0.8.0 now, and the one with the autofoo as 
> > > > > > > > 0.8.1 soon after that?
> > > > > > > 
> > > > > > > That would be ideal but we've been sitting at 0.8.0rc2 for something
> > > > > > > like 3-1/2 months now.  I know Daniel (the other Daniel, the Daniel) has
> > > > > > > been incredibly busy.  I have no objection to getting this out the door
> > > > > > > as 0.8.0 with a fast bump to 0.8.1 for the systemd stuff, but another
> > > > > > > several months is not good.  Can we get this fast bump?  We'll be
> > > > > > > staring Fedora 18 in the face by then.  The working versions of Fedora
> > > > > > > are no longer in support and we've got more distros adopting systemd.
> > > > > 
> > > > > > I think this will end up slated for 0.9.0 (which we're hoping will be
> > > > > > soon), but in any case I went ahead and created a branch at
> > > > > > git://github.com/hallyn/lxc called upstream.nov1.2012.autodev, with
> > > > > > an autodev patch on top of Daniel's latest push.
> > > > > 
> > > > > > I quickly tried my hand at fixing the error you had with /dev/ttyN.  I
> > > > > > haven't tested that bit.  I will not be able to be online at all from
> > > > > > now until weekend or monday, so if it needs more tweaks please feel
> > > > > > free to 'just fix it'.
> > > > > 
> > > > > Problem.  Works for the systemd containers but not for my older
> > > > > containers.  I get this...
> > > > > 
> > > > > [root at forest Plover]# cat 2012-10-30-18:17:46.log
> > > > >       lxc-start 1351635466.998 ERROR    lxc_conf - Operation not permitted - error 1 creating /usr/lib64/lxc/rootfs/dev/tty6
> > > > > 
> > > > >       lxc-start 1351635466.999 ERROR    lxc_conf - failed to setup the ttys for 'Plover'
> > > > >       lxc-start 1351635466.999 ERROR    lxc_start - failed to setup the container
> > > > >       lxc-start 1351635466.999 ERROR    lxc_sync - invalid sequence number 1. expected 2
> > > > >       lxc-start 1351635466.999 ERROR    lxc_start - failed to spawn 'Plover'
> > > > > 
> > > > > Alcove (the systemd container) was the first one started so it may be an
> > > > > ordinal thing or it may be a systemd thing.  But it's a problem.
> > > > \
> > > > Hm, perhaps the container doesn't have mknod?
> > 
> > > They all should have, but I will investigate.  Those devices would have
> > > existed in the static file system with /dev.  Could it be a problem with
> > > the device already existing in the /dev directory?
> > 
> > Ok...  Now this is just bloody weird.  I do not understand this.
> > 
> > Yes the containers come up.  But...
> > 
> > Here's what shows up in the detached container's log...
> > 
> > [root at forest Audience]# cat 2012-10-30-18:52:41.log
> >       lxc-start 1351637562.011 ERROR    lxc_conf - Operation not permitted - error creating /usr/lib64/lxc/rootfs/dev/tty6
> 
> > Now wait a minute...  What about 1, 2, 3, 4, and 5???  They succeeded
> > but 6 failed?  How does that make any sense.  In the container...
> 
> > crw-rw-rw- 1 root root   5,   0 Apr 13  2006 tty
> > crw--w---- 1 root tty  136,  16 Oct 30  2012 tty1
> > crw--w---- 1 root tty  136,  17 Oct 30  2012 tty2
> > crw--w---- 1 root tty  136,  18 Oct 30  2012 tty3
> > crw--w---- 1 root tty  136,  19 Oct 30  2012 tty4
> > crw--w---- 1 root tty  136,  20 Oct 30  2012 tty5
> > crw--w---- 1 root tty  136,  21 Oct 30  2012 tty6
> 
> > Ok...  That's probably from a couple of days ago.  But no error messages
> > for the others and they are not "freshly made" either...  That was a
> > CentOS 5 container.
> 
> > Trying it with another Fedora container but removed the tty? entries.
> > No errors.  Hmmm...  Wait...  Another problem...  Container "Plover"...
> 
> > [mhw at plover ~]$ who
> > mhw      pts/9        2012-10-30 19:47 (forest.ip6.wittsend.com)
> > [mhw at plover ~]$ sudo -s
> > sudo: sorry, you must have a tty to run sudo
> 
> > What?
> 
> Ok...  The problem with the container "plover" appears to have been an
> error on my part.  I think I cleaned out too many tty devices.
> 
> Carefully only removed tty? devices from the static /dev in that
> container and started it up...
> 
> [root at forest Plover]# cat 2012-10-31-06:41:37.log
>       lxc-start 1351680097.900 ERROR    lxc_conf - Operation not permitted - error creating /usr/lib64/lxc/rootfs/dev/tty6
> 
> Still got the error creating /dev/tty6 but not 1-5.
> 
> But wait.  In the container itself...
> 
> [mhw at canyon mhw]$ ssh plover.ip6.wittsend.com
> Last login: Tue Oct 30 18:40:12 2012 from canyon.ip6.wittsend.com
> [mhw at plover ~]$ sudo -s
> [root at plover mhw]# ls -l /dev/tty?
> crw-------. 1 root root 136, 36 Oct 31 06:41 /dev/tty1
> crw-------. 1 root root 136, 37 Oct 31 06:41 /dev/tty2
> crw-------. 1 root root 136, 38 Oct 31 06:41 /dev/tty3
> crw-------. 1 root root 136, 39 Oct 31 06:41 /dev/tty4
> crw-------. 1 root root 136, 40 Oct 31 06:41 /dev/tty5
> crw-------. 1 root root 136, 41 Oct 31 06:41 /dev/tty6
> 
> So it gave an error but did actual work.

What error is it giving?  Does it list the errno?

> I've got this narrowed down...  If "devtty" is defined you do one thing
> and, if not, you drop into the autodev logic.  Is that correct?  If I

devtty can be used with autodev = 1, and was working fine for me in
ubuntu containers using autodev = 1.  I just need to see if I can
better consolidate those codepaths.

> use devtty, then the INFO dump says "0 ttys created and, in fact, none
> are, so I guess I don't know how to use that parameter.

If you say

	lxc.devtty = joe

then lxc will create a directory /dev/joe in the container, create
/dev/joe/console and /dev/joe/tty{1-N}, bind mount the host ptys
to those, and then symlink those into /dev.  The purpose of this
sad hackery is to allow package upgrades which want to do

	rm /dev/console
	MAKEDEV /dev/console

to succeed.  If lxc has bind-mounted the lxc consoles onto /dev/console
directly, then 'rm /dev/console' fails because you can't delete the
mount target.

(This of course results in bad console until a restart with lxc, but
let's the container upgrade succeed.  Device namespaces, where are you?)

-serge




More information about the lxc-devel mailing list