Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
L
lxc
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
lxc
Commits
67c660d0
Commit
67c660d0
authored
Nov 26, 2014
by
Stéphane Graber
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Define a new lxc.init_cmd config option
Signed-off-by:
Stéphane Graber
<
stgraber@ubuntu.com
>
Acked-by:
Dwight Engen
<
dwight.engen@oracle.com
>
parent
c464fd7e
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
56 additions
and
10 deletions
+56
-10
lxc-start.sgml.in
doc/lxc-start.sgml.in
+1
-1
lxc.container.conf.sgml.in
doc/lxc.container.conf.sgml.in
+23
-0
lxc.sgml.in
doc/lxc.sgml.in
+2
-1
conf.c
src/lxc/conf.c
+2
-0
conf.h
src/lxc/conf.h
+3
-0
confile.c
src/lxc/confile.c
+10
-0
lxc_autostart.c
src/lxc/lxc_autostart.c
+1
-5
lxc_start.c
src/lxc/lxc_start.c
+4
-1
lxccontainer.c
src/lxc/lxccontainer.c
+10
-2
No files found.
doc/lxc-start.sgml.in
View file @
67c660d0
...
...
@@ -80,7 +80,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
</para>
<para>
If no command is specified, <command>lxc-start</command> will
use the default
use the
command defined in lxc.init_cmd or if not set, the
default
<command>"/sbin/init"</command> command to run a system
container.
</para>
...
...
doc/lxc.container.conf.sgml.in
View file @
67c660d0
...
...
@@ -202,6 +202,29 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
</refsect2>
<refsect2>
<title>Init command</title>
<para>
Sets the command to use as the init system for the containers.
This option is ignored when using lxc-execute.
Defaults to: /sbin/init
</para>
<variablelist>
<varlistentry>
<term>
<option>lxc.init_cmd</option>
</term>
<listitem>
<para>
Absolute path from container rootfs to the binary to use as init.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect2>
<refsect2>
<title>Network</title>
<para>
The network section defines how the network is virtualized in
...
...
doc/lxc.sgml.in
View file @
67c660d0
...
...
@@ -376,7 +376,8 @@ rootfs
command into the container.
The pid of the first process is 1. If no command is
specified <command>lxc-start</command> will
run <filename>/sbin/init</filename>.
run the command defined in lxc.init_cmd or if not set,
<filename>/sbin/init</filename> .
</para>
<para>
...
...
src/lxc/conf.c
View file @
67c660d0
...
...
@@ -4537,6 +4537,8 @@ void lxc_conf_free(struct lxc_conf *conf)
free
(
conf
->
fstab
);
if
(
conf
->
rcfile
)
free
(
conf
->
rcfile
);
if
(
conf
->
init_cmd
)
free
(
conf
->
init_cmd
);
free
(
conf
->
unexpanded_config
);
lxc_clear_config_network
(
conf
);
if
(
conf
->
lsm_aa_profile
)
...
...
src/lxc/conf.h
View file @
67c660d0
...
...
@@ -356,6 +356,9 @@ struct lxc_conf {
/* text representation of the config file */
char
*
unexpanded_config
;
size_t
unexpanded_len
,
unexpanded_alloced
;
/* init command */
char
*
init_cmd
;
};
int
run_lxc_hooks
(
const
char
*
name
,
char
*
hook
,
struct
lxc_conf
*
conf
,
...
...
src/lxc/confile.c
View file @
67c660d0
...
...
@@ -101,6 +101,7 @@ static int config_stopsignal(const char *, const char *, struct lxc_conf *);
static
int
config_start
(
const
char
*
,
const
char
*
,
struct
lxc_conf
*
);
static
int
config_group
(
const
char
*
,
const
char
*
,
struct
lxc_conf
*
);
static
int
config_environment
(
const
char
*
,
const
char
*
,
struct
lxc_conf
*
);
static
int
config_init_cmd
(
const
char
*
,
const
char
*
,
struct
lxc_conf
*
);
static
struct
lxc_config_t
config
[]
=
{
...
...
@@ -162,6 +163,7 @@ static struct lxc_config_t config[] = {
{
"lxc.start.order"
,
config_start
},
{
"lxc.group"
,
config_group
},
{
"lxc.environment"
,
config_environment
},
{
"lxc.init_cmd"
,
config_init_cmd
},
};
struct
signame
{
...
...
@@ -965,6 +967,12 @@ static int config_seccomp(const char *key, const char *value,
return
config_path_item
(
&
lxc_conf
->
seccomp
,
value
);
}
static
int
config_init_cmd
(
const
char
*
key
,
const
char
*
value
,
struct
lxc_conf
*
lxc_conf
)
{
return
config_path_item
(
&
lxc_conf
->
init_cmd
,
value
);
}
static
int
config_hook
(
const
char
*
key
,
const
char
*
value
,
struct
lxc_conf
*
lxc_conf
)
{
...
...
@@ -2327,6 +2335,8 @@ int lxc_get_config_item(struct lxc_conf *c, const char *key, char *retv,
v
=
c
->
seccomp
;
else
if
(
strcmp
(
key
,
"lxc.environment"
)
==
0
)
return
lxc_get_item_environment
(
c
,
retv
,
inlen
);
else
if
(
strcmp
(
key
,
"lxc.init_cmd"
)
==
0
)
v
=
c
->
init_cmd
;
else
return
-
1
;
if
(
!
v
)
...
...
src/lxc/lxc_autostart.c
View file @
67c660d0
...
...
@@ -330,10 +330,6 @@ int main(int argc, char *argv[])
struct
lxc_container
**
containers
=
NULL
;
struct
lxc_list
**
c_groups_lists
=
NULL
;
struct
lxc_list
*
cmd_group
;
char
*
const
default_start_args
[]
=
{
"/sbin/init"
,
NULL
,
};
if
(
lxc_arguments_parse
(
&
my_args
,
argc
,
argv
))
return
1
;
...
...
@@ -470,7 +466,7 @@ int main(int argc, char *argv[])
printf
(
"%s %d
\n
"
,
c
->
name
,
get_config_integer
(
c
,
"lxc.start.delay"
));
else
{
if
(
!
c
->
start
(
c
,
0
,
default_start_args
))
if
(
!
c
->
start
(
c
,
0
,
NULL
))
fprintf
(
stderr
,
"Error starting container: %s
\n
"
,
c
->
name
);
else
sleep
(
get_config_integer
(
c
,
"lxc.start.delay"
));
...
...
src/lxc/lxc_start.c
View file @
67c660d0
...
...
@@ -336,7 +336,10 @@ int main(int argc, char *argv[])
if
(
my_args
.
close_all_fds
)
c
->
want_close_all_fds
(
c
,
true
);
err
=
c
->
start
(
c
,
0
,
args
)
?
0
:
1
;
if
(
args
==
default_args
)
err
=
c
->
start
(
c
,
0
,
NULL
)
?
0
:
1
;
else
err
=
c
->
start
(
c
,
0
,
args
)
?
0
:
1
;
if
(
err
)
{
ERROR
(
"The container failed to start."
);
...
...
src/lxc/lxccontainer.c
View file @
67c660d0
...
...
@@ -555,6 +555,7 @@ static bool lxcapi_start(struct lxc_container *c, int useinit, char * const argv
"/sbin/init"
,
NULL
,
};
char
*
init_cmd
[
2
];
/* container exists */
if
(
!
c
)
...
...
@@ -591,8 +592,15 @@ static bool lxcapi_start(struct lxc_container *c, int useinit, char * const argv
return
ret
==
0
?
true
:
false
;
}
if
(
!
argv
)
argv
=
default_args
;
if
(
!
argv
)
{
if
(
conf
->
init_cmd
)
{
init_cmd
[
0
]
=
conf
->
init_cmd
;
init_cmd
[
1
]
=
NULL
;
argv
=
init_cmd
;
}
else
argv
=
default_args
;
}
/*
* say, I'm not sure - what locks do we want here? Any?
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment