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
parent
94388aaffa
commit
4bacdf2811
|
|
@ -59,8 +59,8 @@ emergency_shell()
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
OLD_PATH="$PATH"
|
||||||
export PATH=/sbin:/bin:/usr/sbin:/usr/bin
|
export PATH=/sbin:/bin:/usr/sbin:/usr/bin
|
||||||
export TERM=linux
|
|
||||||
NEWROOT="/sysroot"
|
NEWROOT="/sysroot"
|
||||||
|
|
||||||
trap "emergency_shell Signal caught!" 0
|
trap "emergency_shell Signal caught!" 0
|
||||||
|
|
@ -327,8 +327,8 @@ info "Switching root"
|
||||||
wait_for_loginit
|
wait_for_loginit
|
||||||
|
|
||||||
umask $OLD_UMASK
|
umask $OLD_UMASK
|
||||||
unset HOME
|
export PATH="$OLD_PATH"
|
||||||
unset TERM
|
|
||||||
exec switch_root "$NEWROOT" "$INIT" $initargs || {
|
exec switch_root "$NEWROOT" "$INIT" $initargs || {
|
||||||
echo "Something went very badly wrong in the initramfs. Please "
|
echo "Something went very badly wrong in the initramfs. Please "
|
||||||
echo "file a bug against dracut."
|
echo "file a bug against dracut."
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue