99base/init: honor env. vars provided by kernel (PATH, HOME and TERM)

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.
master
Amadeusz Żołnowski 2010-09-26 00:06:54 +02:00 committed by Harald Hoyer
parent 94388aaffa
commit 4bacdf2811
1 changed files with 3 additions and 3 deletions

View File

@ -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."