- 21 Oct, 2017 5 commits
-
-
Christian Brauner authored
liblxc will use a ringbuffer implementation that employs mmap()ed memory. Specifically, the ringbuffer will create an anonymous memory mapping twice the requested size for the ringbuffer. Afterwards, an in-memory file the requested size for the ringbuffer will be created. This in-memory file will then be memory mapped twice into the previously established anonymous memory mapping thereby effectively splitting the anoymous memory mapping in two halves of equal size. This will allow the ringbuffer to get rid of any complex boundary and wrap-around calculation logic. Since the underlying physical memory is the same in both halves of the memory mapping only a single memcpy() call for both reads and writes from and to the ringbuffer is needed. Design Notes: - Since we're using MAP_FIXED memory mappings to map the same in-memory file twice into the anonymous memory mapping the kernel requires us to always operate on properly aligned pages. To guarantee proper page aligment the size of the ringbuffer must always be a muliple of the kernel's page size. This also implies that the minimum size of the ringbuffer must be at least equal to one page size. This additional requirement is reasonably unproblematic. First, any ringbuffer smaller than the size of a single page is very likely useless since the standard page size on linux is 4096 bytes. - Because liblxc is not able to predict the output a user is going to produce (e.g. users could cat binary files onto the console) and because the ringbuffer is located in a hotpath and needs to be as performant as possible liblxc will not parse the buffer. Use Case: The ringbuffer is needed by liblxc in order to safely log the output of write intensive callers that produce unpredictable output or unpredictable amounts of output. The console output created by a booting system and the user is one of those cases. Allowing a container to log the console's output to a file it would be possible for a malicious user to fill up the host filesystem by producing random ouput on the container's console if quota support is either not enabled or not available for the underlying filesystem. Using a ringbuffer is a reliable and secure way to ensure a fixed-size log. Closes #1857. Signed-off-by:Christian Brauner <christian.brauner@ubuntu.com>
-
Christian Brauner authored
Signed-off-by:Christian Brauner <christian.brauner@ubuntu.com>
-
Christian Brauner authored
Signed-off-by:Christian Brauner <christian.brauner@ubuntu.com>
-
Christian Brauner authored
Signed-off-by:Christian Brauner <christian.brauner@ubuntu.com>
-
Christian Brauner authored
Signed-off-by:Christian Brauner <christian.brauner@ubuntu.com>
-
- 20 Oct, 2017 2 commits
-
-
Christian Brauner authored
Fix start of Sabayon unprivileged containers
-
Geaaru authored
Problem happens for image with systemd >=233. Minor fix for mirrors list. Signed-off-by:Geaaru <geaaru@gmail.com>
-
- 18 Oct, 2017 1 commit
-
-
Christian Brauner authored
fix build failures on x32
-
- 17 Oct, 2017 2 commits
-
-
Christian Brauner authored
Change locale "en-US.UTF-8" to "en_US.UTF-8"
-
Fridtjof Mund authored
This template would always add "en-US.UTF-8" to the end of the container's locale.gen, which in turn confused locale-gen. Signed-off-by:Fridtjof Mund <fridtjofmund@gmail.com>
-
- 16 Oct, 2017 5 commits
-
-
Serge Hallyn authored
log: bugfixes
-
Adam Borowski authored
Assuming a particular width of a type (or equivalence with "long") doesn't work everywhere. On new architectures, LFS/etc is enabled by default, making rlim_t same as rlim64_t even if long is only 32-bit. Not sure how you handle too big values -- you may want to re-check the strtoull part. Signed-off-by:Adam Borowski <kilobyte@angband.pl>
-
Adam Borowski authored
Both of struct timespec fields are 64-bit on any new architecture, even 32-bit ones. Signed-off-by:Adam Borowski <kilobyte@angband.pl>
-
Christian Brauner authored
The kernel only allows 4k writes to most files in /proc including {g,u}id_map so let's not try to write partial mappings. (This will obviously become a lot more relevant when my patch to extend the idmap limit in the kernel is merged.) Signed-off-by:Christian Brauner <christian.brauner@ubuntu.com>
-
Christian Brauner authored
Signed-off-by:Christian Brauner <christian.brauner@ubuntu.com>
-
- 12 Oct, 2017 4 commits
-
-
Stéphane Graber authored
lxccontainer: preserve ABI compatibility
-
Christian Brauner authored
Signed-off-by:Christian Brauner <christian.brauner@ubuntu.com>
-
Stéphane Graber authored
arguments: print "-devel" when LXC_DEVEL is true
-
Christian Brauner authored
liblxc should inform users that they are using a devel version. This will have liblxc print MAJOR.MINOR.PATCH-devel if LXC_DEVEL is true and MAJOR.MINOR.PATCH otherwise. Signed-off-by:Christian Brauner <christian.brauner@ubuntu.com>
-
- 11 Oct, 2017 4 commits
-
-
Serge Hallyn authored
init: rework dumb init
-
Serge Hallyn authored
POC: container live patching
-
Christian Brauner authored
Signed-off-by:Christian Brauner <christian.brauner@ubuntu.com>
-
Christian Brauner authored
This adds set_running_config_item() which is the analogue of get_running_config_item(). In essence it allows a caller to livepatch the container's in-memory configuration. This POC is severly limited. Here are the most obvious ones: - Only the container's in-memory config can be updated but no further actions (e.g. on-disk actions) are made. - Only keys in the "lxc.net." namespace can be changed. This POC also allows updating an existing network. For example it allows to change the network type of an existing network. This is obviously nonsense and in a non-POC implementation this should be blocked. Use Case: Callers can hotplug a new network for the container. For example, LXD can create a pair of veth devices in the host and in the container and add it to the container's in-memory config. This means, the container can later be queried for the name of the device later on etc. Note that liblxc will currently not delete hotplugged network devices on container shutdown since it won't have the ifindex of the container. Relates to https://github.com/lxc/lxd/issues/3920 . Signed-off-by:
Christian Brauner <christian.brauner@ubuntu.com>
-
- 10 Oct, 2017 4 commits
-
-
Christian Brauner authored
Signed-off-by:Christian Brauner <christian.brauner@ubuntu.com>
-
Serge Hallyn authored
confile: make update warning opt-in
-
Christian Brauner authored
Before exec()ing we need to become session leader otherwise some shells will not be able to correctly initialize job control. Signed-off-by:Christian Brauner <christian.brauner@ubuntu.com>
-
Christian Brauner authored
With the release LXC 2.1 we started warning users who use LXC through the API and users who use LXC through the tools equally about updating their config. This quickly got confusing and annoying to API users who e.g. generate configs on the fly (e.g. LXD). So instead of unconditionally warning users we make this opt-in. If LXC detects that the env variable LXC_UPDATE_CONFIG_FORMAT is set then it will warn the user if any legacy configuration keys are present. If it is not set however, it will not warn the user. This is ok, since the log will still log WARN()s for all legacy configuration keys. The tools will all set LXC_UPDATE_CONFIG_FORMAT since it is very much required that users update to the new configuration format pre-LXC 3.0. Signed-off-by:Christian Brauner <christian.brauner@ubuntu.com>
-
- 06 Oct, 2017 4 commits
-
-
Stéphane Graber authored
Don't force getty@ configuration
-
Christian Brauner authored
Add lxc.hook.start-host and lxc.execute.cmd to Japanese man page
-
KATOH Yasufumi authored
* Add lxc.execute.cmd to Japanese lxc.container.conf(5) * Tweak the description of the "INIT COMMAND" section and lxc.init.cmd in en and ja man pages. Signed-off-by:KATOH Yasufumi <karma@jazz.email.ne.jp>
-
KATOH Yasufumi authored
Update for commit 08dd2805Signed-off-by:
KATOH Yasufumi <karma@jazz.email.ne.jp>
-
- 05 Oct, 2017 4 commits
-
-
Christian Brauner authored
implement lxc_string_split_quoted
-
Serge Hallyn authored
confile: ignore lxc.kmsg and lxc.pivotdir
-
Christian Brauner authored
Signed-off-by:Christian Brauner <christian.brauner@ubuntu.com>
-
Christian Brauner authored
Signed-off-by:Christian Brauner <christian.brauner@ubuntu.com>
-
- 04 Oct, 2017 1 commit
-
-
Serge Hallyn authored
lxc_string_split_quoted() splits a string on spaces, but keeps groups in single or double qoutes together. In other words, generally what we'd want for argv behavior. Switch lxc-execute to use this for lxc.execute.cmd. Switch lxc-oci template to put the lxc.execute.cmd inside single quotes, because parse_line() will eat those. If we don't do that, then if we have lxc.execute.cmd = /bin/echo "hello, world", then the last double quote will disappear. Signed-off-by:Serge Hallyn <shallyn@cisco.com>
-
- 03 Oct, 2017 4 commits
-
-
Christian Brauner authored
Add OCI container creation template
-
Serge Hallyn authored
Closes #1813 This adds preliminary (but working) support for creating application containers from OCI formats. Examples: create a container from a local OCI layout in ../oci: sudo lxc-create -t oci -n a1 -- -u oci:../oci:alpine Or, create a container pulling from the docker hub. sudo lxc-create -t oci -n u1 -- -u docker://ubuntu The url is specified in the same format as for 'skopeo copy'. Comments appreciated. Signed-off-by:Serge Hallyn <shallyn@cisco.com>
-
Christian Brauner authored
drop useless apparmor denies
-
Tycho Andersen authored
mem and kmem are really in /dev, so this does us no good. Signed-off-by:Tycho Andersen <tycho@tycho.ws>
-