[MEGOLDVA] lxc wheezy nincs console

Fórumok

Sziasztok!

Egy frissen telepített wheezy-ben kisérletezek az lxc-vel.
Mindent a http://wiki.debian.org/LXC szerint csináltam. Sajnos nincs console amikor be akarok lépni
a virtuális gépbe. A következő parancsokat adtam ki:

lxc-create -n lxc-debian -t debian
lxc-start -d -n lxc-debian
lxc-console -n lxc-debian

Később módosítottam a config file-t, majd chrottal raktam rá openssh servert.
Így ssh-val most be tudok lépni. De sajnos console most sincs.

A config file mostani tartalma:
# /var/lib/lxc/lxc-debian/config

## Container
lxc.utsname = lxc-debian
lxc.rootfs = /var/lib/lxc/lxc-debian/rootfs
lxc.arch = x86_64
#lxc.console = /var/log/lxc/lxc-debian.console
lxc.tty = 6
lxc.pts = 1024

## Capabilities
lxc.cap.drop = mac_admin
lxc.cap.drop = mac_override
lxc.cap.drop = sys_admin
lxc.cap.drop = sys_module
## Devices
# Allow all devices
#lxc.cgroup.devices.allow = a
# Deny all devices
lxc.cgroup.devices.deny = a
# Allow to mknod all devices (but not using them)
lxc.cgroup.devices.allow = c *:* m
lxc.cgroup.devices.allow = b *:* m

# /dev/console
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/fuse
lxc.cgroup.devices.allow = c 10:229 rwm
# /dev/null
lxc.cgroup.devices.allow = c 1:3 rwm
# /dev/ptmx
lxc.cgroup.devices.allow = c 5:2 rwm
# /dev/pts/*
lxc.cgroup.devices.allow = c 136:* rwm
# /dev/random
lxc.cgroup.devices.allow = c 1:8 rwm
# /dev/rtc
lxc.cgroup.devices.allow = c 254:0 rwm
# /dev/tty
lxc.cgroup.devices.allow = c 5:0 rwm
# /dev/urandom
lxc.cgroup.devices.allow = c 1:9 rwm
# /dev/zero
lxc.cgroup.devices.allow = c 1:5 rwm

## Limits
#lxc.cgroup.cpu.shares = 1024
#lxc.cgroup.cpuset.cpus = 0
#lxc.cgroup.memory.limit_in_bytes = 256M
#lxc.cgroup.memory.memsw.limit_in_bytes = 1G

## Filesystem
lxc.mount.entry = proc /var/lib/lxc/lxc-debian/rootfs/proc proc nodev,noexec,nosuid 0 0
lxc.mount.entry = sysfs /var/lib/lxc/lxc-debian/rootfs/sys sysfs defaults,ro 0 0
#lxc.mount.entry = /srv/lxc-debian /var/lib/lxc/lxc-debian/rootfs/srv/lxc-debian none defaults,bind 0 0
# Container with network virtualized using a pre-configured bridge named br0 and
# veth pair virtual network devices
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.hwaddr = 4a:49:43:49:79:bf
lxc.network.ipv4 = 10.2.3.5/24
lxc.network.ipv6 = 2003:db8:1:0:214:1234:fe0b:3597

Már kiolvastam a teljes internetet és nem találok megoldást. :(
Tudna valaki segíteni?

Hozzászólások

Irjal aa csomag karbantartojnak, vagy az lxc levlistara. Ha default telepitessel ezt csinalja, akkor bug.

Mit mutat, ha -d nelkul inditod a kontenert?

tompos

Persze, majd írok hibajegyet. A meglévőeket már el is olvastam a témában.

^MINIT: version 2.88 booting^M
[ESC[36minfoESC[39;49m] Using makefile-style concurrent boot in runlevel S.
hostname: you must be root to change the host name
mount: permission denied
mount: permission denied
mount: permission denied
[ESC[36minfoESC[39;49m] Setting the system clock.
hwclock: Cannot access the Hardware Clock via any known method.
hwclock: Use the --debug option to see the details of our search for an access method.
[....] Unable to set System Clock to: 2013. jan. 21., hétfő, 15.20.30 UTC ...ESC[?25lESC7ESC[1G[ESC[33mwarnESC[39;49mESC8ESC[?12lESC[?25h ESC[33m(warning).ESC[39;49m
[....] Activating swap...ESC[?25lESC7ESC[1G[ESC[32m ok ESC[39;49mESC8ESC[?12lESC[?25hdone.
mount: permission denied
[....] Cleaning up temporary files... /tmpESC[?25lESC7ESC[1G[ESC[32m ok ESC[39;49mESC8ESC[?12lESC[?25h.
mount: permission denied
mount: permission denied
mount: permission denied
[....] Mount point '/dev/console' does not exist. Skipping mount. ...ESC[?25lESC7ESC[1G[ESC[33mwarnESC[39;49mESC8ESC[?12lESC[?25h ESC[33m(warning).ESC[39;49m
[....] Mount point '/dev/ptmx' does not exist. Skipping mount. ...ESC[?25lESC7ESC[1G[ESC[33mwarnESC[39;49mESC8
ESC[?12lESC[?25h ESC[33m(warning).ESC[39;49m
[....] Activating lvm and md swap...ESC[?25lESC7ESC[1G[ESC[32m ok ESC[39;49mESC8ESC[?12lESC[?25hdone.
[....] Checking file systems...fsck from util-linux 2.20.1
ESC[?25lESC7ESC[1G[ESC[32m ok ESC[39;49mESC8ESC[?12lESC[?25hdone.
[....] Mounting local filesystems...ESC[?25lESC7ESC[1G[ESC[32m ok ESC[39;49mESC8ESC[?12lESC[?25hdone.
[....] Activating swapfile swap...ESC[?25lESC7ESC[1G[ESC[32m ok ESC[39;49mESC8ESC[?12lESC[?25hdone.
mount: permission denied
mount: permission denied
mount: permission denied
[....] Cleaning up temporary files...ESC[?25lESC7ESC[1G[ESC[32m ok ESC[39;49mESC8ESC[?12lESC[?25h.
[....] Setting kernel variables ...ESC[?25lESC7ESC[1G[ESC[32m ok ESC[39;49mESC8ESC[?12lESC[?25hdone.
[....] Configuring network interfaces...ESC[?25lESC7ESC[1G[ESC[32m ok ESC[39;49mESC8ESC[?12lESC[?25hdone.
[....] Cleaning up temporary files...ESC[?25lESC7ESC[1G[ESC[32m ok ESC[39;49mESC8ESC[?12lESC[?25h.
[....] startpar: service(s) returned failure: hostname.sh ...ESC[?25lESC7ESC[1G[ESC[31mFAILESC[39;49mESC8ESC[?12lESC[?25h ESC[31mfailed!ESC[39;49m
^MINIT: Entering runlevel: 2^M
[ESC[36minfoESC[39;49m] Using makefile-style concurrent boot in runlevel 2.
[....] Starting OpenBSD Secure Shell server: sshdESC[?25lESC7ESC[1G[ESC[32m ok ESC[39;49mESC8ESC[?12lESC[?25h.
ESC[rESC[HESC[J^M
Debian GNU/Linux 7.0 lxc-debian console

Szerencsére az ssh működik, a konténerben kiadott mount parancs kimenete:

/dev/disk/by-uuid/deb3e5b5-91f3-440d-b48f-455327949635 on / type ext4 (rw,relatime,errors=remount-ro,user_xattr,barrier=1,data=ordered)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sysfs on /sys type sysfs (ro,relatime)
devpts on /dev/console 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)

En nagyjabol passzolom.
Kb. hasonlo configgal, de ubuntu hoston es squeeze guest-tel nekem mukodik.

Milyen kernel van ott egyebkent most? Miert wheezy? Miert nem squeeze legalabb a guest?
Volt vmi kernel bug is, ami vmi galibat csinalt nemregen, de a reszletekre nem emlekszem.

Az lxc-start-ot nezd meg esetleg debug-gal futtatva, vhogy igy:

$ lxc-start -l DEBUG -o $(tty) --name machine

tompos

Soha nem probaltam, de feltetelezem, Squeeze-vel mukodik, igy az is opcio.

Probalhattatok volna meg ezen kivul az upstream forrast hasznalni, de legalabbis az lxc-debian scriptet belole.

Egy kis utanajarassal egyebkent altalaban viszonylag konnyen ki lehet deriteni az ilyesmit, de utoljara akkor volt erre szuksegem, amikor meg 10.04 volt a host es a guest is.

udv,
tompos

Viszont van openvz kernel nélkül is működő vzctl.

Másrészt pedig az lxc mint "security container" nem használható jelenleg. 3.8 kernelben van csak "kész" core user namespace support, és akkor még meg kell csinálniuk hozzá a drivert. Szóval a wheezy 3.2-es kernelét is cserélni kell majd.

Mi a hibaüzenet?
Mi van a logban?

Getty fut a konténerben? (/etc/inittab)

lxc-console -n lxc-debian -t1

meg tudod adni hogy melyik tty-ra akarsz bemenni.

Hibaüzenet nincs, csak üres a consol és nem ír semmit. CTRL a majd q -val ki tudok lépni.

A log feljebb.

root 9770 0.0 0.0 20912 984 ? Ss 16:20 0:00 lxc-start -d -n lxc-debian
root 9781 0.0 0.0 10648 832 ? Ss 16:20 0:00 \_ init [2]
root 10890 0.0 0.0 49848 1200 ? Ss 16:20 0:00 \_ /usr/sbin/sshd
root 10922 0.0 0.0 16152 1072 ? Ss 16:20 0:00 \_ /sbin/getty 38400 console
root 10923 0.0 0.0 16088 912 pts/8 Ss+ 16:20 0:00 \_ /sbin/getty 38400 console

lxc-console -n lxc-debian -t1-től t6-ig nincs hiba, csak nem működik.
lxc-console -n lxc-debian -t7
lxc-console: console denied by 'lxc-debian'

Rakd be legyszíves a

/usr/share/lxc/packages

alá a

következő deb csomagot:

live-debconfig_4.0~a12-1_all.deb

Aztán a lenti linken található presseed fájlal és konfiggal csinálj légyszíves egy konténert, nézzük meg hogy így működik-e.

https://gist.github.com/4374177
https://gist.github.com/4598721

Nálam

lxc version: 0.9.0.alpha2

van, Debian Wheezy hoston.

Valamint a hoston nálam csak 2 tty van, a harmadik konzolon (Alt+F3) a futó 1db konténerbe lehet bejelentkezni a fenti konfiggal.

Megcsináltam, amit javasoltál. Persze a hálózatot be kellett állítani.
Van két sor a config file-ban:

lxc.mount.entry = proc proc proc nodev,noexec,nosuid 0 0
#lxc.mount.entry = sysfs sys sysfs defaults,ro 0 0

Ha bármelyik benne van nem indul a a quest. Dél előtt még vizsgálom miért.

lxc-start -n template
lxc-start: Device or resource busy - failed to mount 'sysfs' on '/usr/lib/x86_64-linux-gnu/lxc//sys'
lxc-start: failed to setup the mount entries for 'template'
lxc-start: failed to setup the container
lxc-start: invalid sequence number 1. expected 2
lxc-start: failed to spawn 'template'

lxc-start -n template
lxc-start: Device or resource busy - failed to mount 'proc' on '/usr/lib/x86_64-linux-gnu/lxc//proc'
lxc-start: failed to setup the mount entries for 'template'
lxc-start: failed to setup the container
lxc-start: invalid sequence number 1. expected 2
lxc-start: failed to spawn 'template'

MEGOLDVA

Előszó:
Miután megtaláltam a megoldást csináltam még egy telepítést a debian wiki szerint,
hogy a dokumentáció pontos legyen. A hibakeresésben és a működés megértésében a
https://wiki.archlinux.org/index.php/Linux_Containers oldal és a tisztelt hozzászólók segítettek.

Megoldás:Linux nagysa 3.2.0-4-amd64 #1 SMP Debian 3.2.35-2 x86_64 GNU/Linux (wheezy)
Az operációs rendszer:
Telepítsünk egy lxc containert!
lxc-create -n teszt -t debian
válaszoljunk a kérdésekre értelem szerűen, semmi izgalmas.

ÉS ITT KÖVETKEZIK A MEGOLDÁS!!
mknod -m 666 /var/lib/lxc/teszt/rootfs/dev/tty1 c 4 1
mknod -m 666 /var/lib/lxc/teszt/rootfs/dev/tty2 c 4 2
mknod -m 666 /var/lib/lxc/teszt/rootfs/dev/tty3 c 4 3
mert a debian telepítő script nem hozza létre a containerben a tty device file-okat.
Aztán még érdemes a container inittab-ban beállítani, hogy csak három getty induljon el.
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
#4:23:respawn:/sbin/getty 38400 tty4
#5:23:respawn:/sbin/getty 38400 tty5
#6:23:respawn:/sbin/getty 38400 tty6
És működik :)

Indulás után a containerben nézve a tty device-ok a következő képpen néznek ki:
ls -l /dev/tty*
crw-rw-rw- 1 root tty 5, 0 Nov 20 23:30 /dev/tty
crw------- 1 root tty 4, 0 Nov 20 23:30 /dev/tty0
crw------- 1 root tty 136, 1 Jan 25 06:48 /dev/tty1
crw-rw---- 1 root tty 136, 2 Jan 25 06:48 /dev/tty2
crw-rw---- 1 root tty 136, 3 Jan 25 06:48 /dev/tty3

Tehát a container indítás átírja major-t, hogy ne ütközzön a gazdával.

Utószó:
A debian wheezy-ben végzett vizsgálatok során még a következőket tapasztaltam.

Az /etc/default/lxc file tartalma a következő:
# /etc/default/lxc
LXC_AUTO="true"
LXC_DIRECTORY="/var/lib/lxc"
Hiába írod át az LXC_DIRECTORY változót másra (én pl. egy storage-re akartam dolgozni)
nem veszi figyelembe.

Ha elrontod a container configban a hálózat beállítását, a container indításakor
képes down-ba tenni a gazda gép interface-ét. Ez igen kellemetlen lehet egy távoli gépen
végzett munka során. A körülményeket sajnos nem dokumentáltam, mert nagyon a consolra koncentráltam.
De többször előfordult.

Miután megértettem (nagyjából) a container config file-ban az lxc.cgroup.devices.allow
működését megcsináltam a consolt más módon is.
Beírtam a configba: lxc.cgroup.devices.allow = c 4:2 rwm ## /dev/tty2
Majd kilőttem a gazda gépen futó /sbin/getty 38400 tty2 proceszt (na jó ezt egy kicsit trükkösen kell)
Elindítottam a containert és ctrl+alt+f2 és ott várt a container consolja. :)

Tennivalók:
- további tesztelés
- jövő héten újra átnézni a debian hibajegyeket és amit kell jelenteni

Még egyszer!
Köszönöm mindenkinek a segítséget!

> LXC_DIRECTORY="/var/lib/lxc"
> Hiába írod át az LXC_DIRECTORY változót másra (én pl. egy storage-re akartam dolgozni)
nem veszi figyelembe.

Mikor nem veszi figyelembe? Amikor telepiti? Akkor van elvileg jelentosege, hogy hova telepitse. Az, hogy honnan fit. a per-container config-ban szerepel.

En a /var/lib-be szoktam letrehozni es atmozgatni egy custom helyre.
Ez azert is jo, mert a destroy nem torli. Ki tudja miert, de ugy csinaltak, hogy a /var/lib/-bol torli a destroy a kontenert.
Legalabbis ubuntu-n.

tompos