Browse Source

LXC: add /.lxcenv

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
Markus Heiser 5 years ago
parent
commit
d2cfe9ce5b
3 changed files with 23 additions and 7 deletions
  1. 18 5
      utils/lib.sh
  2. 1 0
      utils/lxc-searx.env
  3. 4 2
      utils/lxc.sh

+ 18 - 5
utils/lib.sh

@@ -1065,18 +1065,31 @@ EOF
 in_container() {
     # Test if shell runs in a container.
     #
-    # hint:   Reads init process environment, therefore root access is required!
-    #
     # usage:  in_container && echo "process running inside a LXC container"
     #         in_container || echo "process is not running inside a LXC container"
     #
-
-    sudo_or_exit
+    # sudo_or_exit
+    # hint:   Reads init process environment, therefore root access is required!
     # to be safe, take a look at the environment of process 1 (/sbin/init)
-    grep -qa 'container=lxc' /proc/1/environ
+    # grep -qa 'container=lxc' /proc/1/environ
+
+    # see lxc_init_container
+    [[ -f /.lxcenv ]]
 }
 
+lxc_init_container() {
 
+    # Create a /.lxcenv file in the root folder.  Call this once after container
+    # is inital started.
+
+    # usage: lxc_create_root_dot_lxcenv <name>
+
+    info_msg "create /.lxcenv in container $1"
+    cat <<EOF | lxc exec "${1}" -- bash | prefix_stdout "[${_BBlue}${1}${_creset}] "
+touch "/.lxcenv"
+ls -l "/.lxcenv"
+EOF
+}
 lxc_exists(){
 
     # usage: lxc_exists <name> || echo "container <name> does not exists"

+ 1 - 0
utils/lxc-searx.env

@@ -51,6 +51,7 @@ lxc_suite_prepare_buildhost() {
     (
         lxc_set_suite_env
         export FORCE_TIMEOUT=0
+        # "${LXC_REPO_ROOT}/utils/searx.sh* install packages
         "${LXC_REPO_ROOT}/utils/searx.sh"   install buildhost
         rst_title "buildhost installation finished ($(hostname))" part
         echo

+ 4 - 2
utils/lxc.sh

@@ -82,7 +82,7 @@ usage::
   $_cmd [start|stop] [containers|<name>]
   $_cmd show         [info|config|suite|images]
   $_cmd cmd          [--|<name>] '...'
-  $_cmd install      [suite]
+  $_cmd install      [suite|buildhost]
 
 build
   :containers:   build & launch all LXC containers of the suite
@@ -443,10 +443,12 @@ lxc_boilerplate_containers() {
         boilerplate_script="${image_name}_boilerplate"
         boilerplate_script="${!boilerplate_script}"
 
-        info_msg "[${_BBlue}${container_name}${_creset}] install /.lxcenv.mk .."
+        info_msg "[${_BBlue}${container_name}${_creset}] init .."
         if lxc start -q "${container_name}" &>/dev/null; then
             sleep 5 # guest needs some time to come up and get an IP
         fi
+        lxc_init_container "${container_name}"
+        info_msg "[${_BBlue}${container_name}${_creset}] install /.lxcenv.mk .."
         cat <<EOF | lxc exec "${container_name}" -- bash | prefix_stdout "[${_BBlue}${container_name}${_creset}] "
 rm -f "/.lxcenv.mk"
 ln -s "${LXC_REPO_ROOT}/utils/makefile.lxc" "/.lxcenv.mk"