On 09/26/2010 12:06 AM, Amadeusz Żołnowski wrote:
Let take a look at Linux sources, /usr/src/linux-2.6.35/init/main.c:

   204: char * envp_init[MAX_INIT_ENVS+2] = { "HOME=/", "TERM=linux", NULL, };

   857: run_init_process("/sbin/init");

   817: static void run_init_process(char *init_filename)
   818: {
   819:        argv_init[0] = init_filename;
   820:        kernel_execve(init_filename, argv_init, envp_init);
   821: }

As we can see HOME=/ and TERM=linux are provided for init and this might be
expected on some systems (Gentoo comes to my mind, here ;-)).  That's why we
should give to init the same set of env. vars as Linux kernel does.
---
  modules.d/99base/init |    6 +++---
  1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/modules.d/99base/init b/modules.d/99base/init
index 5a02ade..dc0a0df 100755
--- a/modules.d/99base/init
+++ b/modules.d/99base/init
@@ -59,8 +59,8 @@ emergency_shell()
      fi
  }

+OLD_PATH="$PATH"
  export PATH=/sbin:/bin:/usr/sbin:/usr/bin
-export TERM=linux
  NEWROOT="/sysroot"

  trap "emergency_shell Signal caught!" 0
@@ -327,8 +327,8 @@ info "Switching root"
  wait_for_loginit

  umask $OLD_UMASK
-unset HOME
-unset TERM
+export PATH="$OLD_PATH"
+
  exec switch_root "$NEWROOT" "$INIT" $initargs || {
      echo "Something went very badly wrong in the initramfs.  Please "
      echo "file a bug against dracut."

pushed
--
To unsubscribe from this list: send the line "unsubscribe initramfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to