[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] Libvirt + LXC terminals



Thank you very much for the detailed help! Your setup worked flawlessly.

Best regards,
Bogdan P.


> -----Original Message-----
> From: Daniel P. Berrange [mailto:berrange redhat com]
> Sent: Thursday, March 14, 2013 2:31 PM
> To: Purcareata Bogdan-B43198
> Cc: libvirt-list redhat com
> Subject: Re: [libvirt] Libvirt + LXC terminals
> 
> On Thu, Mar 14, 2013 at 11:10:31AM +0000, Purcareata Bogdan-B43198 wrote:
> > Hello all,
> >
> > I am looking for a way to start a container with libvirt and bind
> > multiple consoles to it. My container is running busybox, the filesystem
> > created using the LXC package (0.8.0). My libvirt version is 0.10.1.
> >
> > Configuration of the filesystem:
> > - in the container rootfs, /dev contains 2 devices - /dev/console and /dev/tty1
> 
> Ok, there's no need to put anything in /dev. Libvirt will mount a
> tmpfs on /dev and a devpts on /dev/pts create all the devices nodes
> itself.
> 
> > - the inittab file looks like this:
> > ::sysinit:/etc/init.d/rcS
> > tty1::respawn:/bin/getty -L tty1 115200 vt100
> > console::askfirst:/bin/sh
> > - it will link the /bin/sh process to /dev/console and the /bin/getty process to /dev/tty
> > - when starting the container with lxc-start, each of these processes gets his own local /dev/pts
> device:
> 
> I'm not sure how sf.net LXC tools setup consoles, but what you have won't
> work with Libvirt LXC. The primary console is setup as /dev/console and
> /dev/tty1, so your inittab here is putting both processes on the same
> console device. The second console is /dev/tty2 with libvirt.
> 
> > I've found some documentation at [1], hence my trials in the presented .xml. Is my scenario possible
> / supported?
> 
> Here is the XML I have just used to test the scenario you want:
> 
> <domain type='lxc'>
>   <name>busyinit</name>
>   <uuid>dda7b948-0846-1759-2873-0f375df7d7eb</uuid>
>   <memory unit='KiB'>32768</memory>
>   <currentMemory unit='KiB'>32768</currentMemory>
>   <vcpu placement='static'>1</vcpu>
>   <os>
>     <type arch='x86_64'>exe</type>
>     <init>/init</init>
>   </os>
>   <clock offset='utc'/>
>   <on_poweroff>destroy</on_poweroff>
>   <on_reboot>restart</on_reboot>
>   <on_crash>destroy</on_crash>
>   <devices>
>     <emulator>/usr/libexec/libvirt_lxc</emulator>
>     <filesystem type='mount' accessmode='passthrough'>
>       <source dir='/root/containers/root-busybox'/>
>       <target dir='/'/>
>     </filesystem>
>     <console type='pty'>
>       <target type='serial' port='0'/>
>     </console>
>     <console type='pty'>
>       <target type='serial' port='1'/>
>     </console>
>     <console type='pty'>
>       <target type='serial' port='2'/>
>     </console>
>     <console type='pty'>
>       <target type='serial' port='3'/>
>     </console>
>   </devices>
>   <seclabel type='static' model='selinux' relabel='no'>
>     <label>system_u:system_r:svirt_t:s0:c724,c995</label>
>   </seclabel>
> </domain>
> 
> 
> And I have this inittab
> 
> # cat /root/containers/root-busybox/etc/inittab
> ::sysinit:/etc/init.d/rcS
> tty1::askfirst:/bin/sh
> tty2::respawn:/bin/getty -L tty2 115200 vt100
> tty3::respawn:/bin/getty -L tty3 115200 vt100
> tty4::respawn:/bin/getty -L tty4 115200 vt100
> 
> 
> Now if you start this 'virsh -c lxc:/// start busyinit'
> 
> Then
> 
>   # virsh -c lxc:/// console busyinit
>   Connected to domain busyinit
>   Escape character is ^]
> 
>   Please press Enter to activate this console.
>   /bin/sh: can't access tty; job control turned off
>   # ...
> 
> 
> will connect you to the first console, which is tty1 and your /bin/sh
> 
> To connect to the 2nd, 3rd, etc consoles you can use
> 
>   # virsh -c lxc:/// console --devname console1 busyinit
>   Connected to domain busyinit
>   Escape character is ^]
> 
>   t500wlan.home.berrange.com login:
> 
> 
> Use 'virsh -c lxc:/// dumpxml busyinit' to see what console device
> names libvirt gave to each - for LXC they'll be named 'console0',
> 'console1', 'console2', etc.  NB the tty paths in the XML are the
> host side TTY names, which are different from the guest side names.
> 
> Regards,
> Daniel
> --
> |: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
> |: http://libvirt.org              -o-             http://virt-manager.org :|
> |: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
> |: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]