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?
- 6885 megtekintés
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
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
Mi a mount kimenete?
- A hozzászóláshoz be kell jelentkezni
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)
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
Azért wheezy, mert valószínűsíthetőleg a wheezy már stabil lesz, mire üzembe kerül a vas. Sajnos openVZ-ről át kell álljunk, mert már a wheezyben nem elérhető. A squeeze guestet kipróbálom, az eredményekről majd beszámolok.
- A hozzászóláshoz be kell jelentkezni
Hasznaljatok Ubuntu-t:)
t
- A hozzászóláshoz be kell jelentkezni
Mondjuk ott tényleg más egy kicsit az lxc. Lásd ezt a blogot: https://www.stgraber.org/page/2/
- A hozzászóláshoz be kell jelentkezni
Tudom nem megoldás, de mivel sok időm nem volt szórakozni azzal hogy debianon lxc ben ubuntu guest miért nem megy rendesen pl. console se ment, végül ubuntu LTS lett csak emiatt ott.
De remélem lesz megoldás erre is.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
Ez igy ebben a formabanan nem teljesen igaz. Security extensionokkel megtamogatva egeszen komoly tud lenni, bar az openvz szintjet egyelore valoban nem eri el.
tompos
- A hozzászóláshoz be kell jelentkezni
A live-debconfig nem futott le.
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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'
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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'
- A hozzászóláshoz be kell jelentkezni
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!
- A hozzászóláshoz be kell jelentkezni
> 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
- A hozzászóláshoz be kell jelentkezni
Arra emlékszem, hogy semmiképp nem veszi figyelembe.
lxc-create nem
destroy-t Te írtad.
Nem teszteltem teljesen. Majd megteszem.
- A hozzászóláshoz be kell jelentkezni
Ezeknek a soroknak nincs ertelmuk:)
tompos
- A hozzászóláshoz be kell jelentkezni
Bocsánat!
A tennivalók helyett fáradtan a hozzászólásba írtam.
- A hozzászóláshoz be kell jelentkezni