Browse Source

Merge branch 'optimization' of https://github.com/ryncsn/dracut into ryncsn-optimization

master
Harald Hoyer 6 years ago
parent
commit
86f4dd0273
No known key found for this signature in database
GPG Key ID: 340F12141EA0994D
  1. 63
      dracut-init.sh
  2. 8
      dracut.sh

63
dracut-init.sh

@ -154,6 +154,10 @@ dracut_no_switch_root() {
>"$initdir/lib/dracut/no-switch-root" >"$initdir/lib/dracut/no-switch-root"
} }


dracut_module_path() {
echo ${dracutbasedir}/modules.d/??${1} | { read a b; echo "$a"; }
}

if ! [[ $DRACUT_INSTALL ]]; then if ! [[ $DRACUT_INSTALL ]]; then
DRACUT_INSTALL=$(find_binary dracut-install) DRACUT_INSTALL=$(find_binary dracut-install)
fi fi
@ -571,15 +575,16 @@ inst_opt_decompress() {
done done
} }


# module_check <dracut module> # module_check <dracut module> [<forced>] [<module path>]
# execute the check() function of module-setup.sh of <dracut module> # execute the check() function of module-setup.sh of <dracut module>
# or the "check" script, if module-setup.sh is not found # or the "check" script, if module-setup.sh is not found
# "check $hostonly" is called # "check $hostonly" is called
module_check() { module_check() {
local _moddir=$(echo ${dracutbasedir}/modules.d/??${1} | { read a b; echo "$a"; }) local _moddir=$3
local _ret local _ret
local _forced=0 local _forced=0
local _hostonly=$hostonly local _hostonly=$hostonly
[[ -z $_moddir ]] && _moddir=$(dracut_module_path "$1")
[ $# -eq 2 ] && _forced=$2 [ $# -eq 2 ] && _forced=$2
[[ -d $_moddir ]] || return 1 [[ -d $_moddir ]] || return 1
if [[ ! -f $_moddir/module-setup.sh ]]; then if [[ ! -f $_moddir/module-setup.sh ]]; then
@ -602,14 +607,15 @@ module_check() {
return $_ret return $_ret
} }


# module_check_mount <dracut module> # module_check_mount <dracut module> [<module path>]
# execute the check() function of module-setup.sh of <dracut module> # execute the check() function of module-setup.sh of <dracut module>
# or the "check" script, if module-setup.sh is not found # or the "check" script, if module-setup.sh is not found
# "mount_needs=1 check 0" is called # "mount_needs=1 check 0" is called
module_check_mount() { module_check_mount() {
local _moddir=$(echo ${dracutbasedir}/modules.d/??${1} | { read a b; echo "$a"; }) local _moddir=$2
local _ret local _ret
mount_needs=1 mount_needs=1
[[ -z $_moddir ]] && _moddir=$(dracut_module_path "$1")
[[ -d $_moddir ]] || return 1 [[ -d $_moddir ]] || return 1
if [[ ! -f $_moddir/module-setup.sh ]]; then if [[ ! -f $_moddir/module-setup.sh ]]; then
# if we do not have a check script, we are unconditionally included # if we do not have a check script, we are unconditionally included
@ -628,12 +634,13 @@ module_check_mount() {
return $_ret return $_ret
} }


# module_depends <dracut module> # module_depends <dracut module> [<module path>]
# execute the depends() function of module-setup.sh of <dracut module> # execute the depends() function of module-setup.sh of <dracut module>
# or the "depends" script, if module-setup.sh is not found # or the "depends" script, if module-setup.sh is not found
module_depends() { module_depends() {
local _moddir=$(echo ${dracutbasedir}/modules.d/??${1} | { read a b; echo "$a"; }) local _moddir=$2
local _ret local _ret
[[ -z $_moddir ]] && _moddir=$(dracut_module_path "$1")
[[ -d $_moddir ]] || return 1 [[ -d $_moddir ]] || return 1
if [[ ! -f $_moddir/module-setup.sh ]]; then if [[ ! -f $_moddir/module-setup.sh ]]; then
# if we do not have a check script, we have no deps # if we do not have a check script, we have no deps
@ -651,12 +658,13 @@ module_depends() {
fi fi
} }


# module_cmdline <dracut module> # module_cmdline <dracut module> [<module path>]
# execute the cmdline() function of module-setup.sh of <dracut module> # execute the cmdline() function of module-setup.sh of <dracut module>
# or the "cmdline" script, if module-setup.sh is not found # or the "cmdline" script, if module-setup.sh is not found
module_cmdline() { module_cmdline() {
local _moddir=$(echo ${dracutbasedir}/modules.d/??${1} | { read a b; echo "$a"; }) local _moddir=$2
local _ret local _ret
[[ -z $_moddir ]] && _moddir=$(dracut_module_path "$1")
[[ -d $_moddir ]] || return 1 [[ -d $_moddir ]] || return 1
if [[ ! -f $_moddir/module-setup.sh ]]; then if [[ ! -f $_moddir/module-setup.sh ]]; then
[[ -x $_moddir/cmdline ]] && . "$_moddir/cmdline" [[ -x $_moddir/cmdline ]] && . "$_moddir/cmdline"
@ -672,12 +680,13 @@ module_cmdline() {
fi fi
} }


# module_install <dracut module> # module_install <dracut module> [<module path>]
# execute the install() function of module-setup.sh of <dracut module> # execute the install() function of module-setup.sh of <dracut module>
# or the "install" script, if module-setup.sh is not found # or the "install" script, if module-setup.sh is not found
module_install() { module_install() {
local _moddir=$(echo ${dracutbasedir}/modules.d/??${1} | { read a b; echo "$a"; }) local _moddir=$2
local _ret local _ret
[[ -z $_moddir ]] && _moddir=$(dracut_module_path "$1")
[[ -d $_moddir ]] || return 1 [[ -d $_moddir ]] || return 1
if [[ ! -f $_moddir/module-setup.sh ]]; then if [[ ! -f $_moddir/module-setup.sh ]]; then
[[ -x $_moddir/install ]] && . "$_moddir/install" [[ -x $_moddir/install ]] && . "$_moddir/install"
@ -693,12 +702,13 @@ module_install() {
fi fi
} }


# module_installkernel <dracut module> # module_installkernel <dracut module> [<module path>]
# execute the installkernel() function of module-setup.sh of <dracut module> # execute the installkernel() function of module-setup.sh of <dracut module>
# or the "installkernel" script, if module-setup.sh is not found # or the "installkernel" script, if module-setup.sh is not found
module_installkernel() { module_installkernel() {
local _moddir=$(echo ${dracutbasedir}/modules.d/??${1} | { read a b; echo "$a"; }) local _moddir=$2
local _ret local _ret
[[ -z $_moddir ]] && _moddir=$(dracut_module_path "$1")
[[ -d $_moddir ]] || return 1 [[ -d $_moddir ]] || return 1
if [[ ! -f $_moddir/module-setup.sh ]]; then if [[ ! -f $_moddir/module-setup.sh ]]; then
[[ -x $_moddir/installkernel ]] && . "$_moddir/installkernel" [[ -x $_moddir/installkernel ]] && . "$_moddir/installkernel"
@ -714,15 +724,16 @@ module_installkernel() {
fi fi
} }


# check_mount <dracut module> # check_mount <dracut module> [<use_as_dep>] [<module path>]
# check_mount checks, if a dracut module is needed for the given # check_mount checks, if a dracut module is needed for the given
# device and filesystem types in "${host_fs_types[@]}" # device and filesystem types in "${host_fs_types[@]}"
check_mount() { check_mount() {
local _mod=$1 local _mod=$1
local _moddir=$(echo ${dracutbasedir}/modules.d/??${1} | { read a b; echo "$a"; }) local _moddir=$3
local _ret local _ret
local _moddep local _moddep


[[ -z $_moddir ]] && _moddir=$(dracut_module_path "$1")
[ "${#host_fs_types[@]}" -le 0 ] && return 1 [ "${#host_fs_types[@]}" -le 0 ] && return 1


# If we are already scheduled to be loaded, no need to check again. # If we are already scheduled to be loaded, no need to check again.
@ -739,7 +750,7 @@ check_mount() {
fi fi


if [[ " $dracutmodules $add_dracutmodules $force_add_dracutmodules" == *\ $_mod\ * ]]; then if [[ " $dracutmodules $add_dracutmodules $force_add_dracutmodules" == *\ $_mod\ * ]]; then
module_check_mount $_mod; ret=$? module_check_mount $_mod $_moddir; ret=$?


# explicit module, so also accept ret=255 # explicit module, so also accept ret=255
[[ $ret = 0 || $ret = 255 ]] || return 1 [[ $ret = 0 || $ret = 255 ]] || return 1
@ -747,14 +758,14 @@ check_mount() {
# module not in our list # module not in our list
if [[ $dracutmodules = all ]]; then if [[ $dracutmodules = all ]]; then
# check, if we can and should install this module # check, if we can and should install this module
module_check_mount $_mod || return 1 module_check_mount $_mod $_moddir || return 1
else else
# skip this module # skip this module
return 1 return 1
fi fi
fi fi


for _moddep in $(module_depends $_mod); do for _moddep in $(module_depends $_mod $_moddir); do
# handle deps as if they were manually added # handle deps as if they were manually added
[[ " $dracutmodules " == *\ $_mod\ * ]] \ [[ " $dracutmodules " == *\ $_mod\ * ]] \
&& [[ " $dracutmodules " != *\ $_moddep\ * ]] \ && [[ " $dracutmodules " != *\ $_moddep\ * ]] \
@ -778,15 +789,17 @@ check_mount() {
return 0 return 0
} }


# check_module <dracut module> [<use_as_dep>] # check_module <dracut module> [<use_as_dep>] [<module path>]
# check if a dracut module is to be used in the initramfs process # check if a dracut module is to be used in the initramfs process
# if <use_as_dep> is set, then the process also keeps track # if <use_as_dep> is set, then the process also keeps track
# that the modules were checked for the dependency tracking process # that the modules were checked for the dependency tracking process
check_module() { check_module() {
local _mod=$1 local _mod=$1
local _moddir=$(echo ${dracutbasedir}/modules.d/??${1} | { read a b; echo "$a"; }) local _moddir=$3
local _ret local _ret
local _moddep local _moddep

[[ -z $_moddir ]] && _moddir=$(dracut_module_path "$1")
# If we are already scheduled to be loaded, no need to check again. # If we are already scheduled to be loaded, no need to check again.
[[ " $mods_to_load " == *\ $_mod\ * ]] && return 0 [[ " $mods_to_load " == *\ $_mod\ * ]] && return 0
[[ " $mods_checked_as_dep " == *\ $_mod\ * ]] && return 1 [[ " $mods_checked_as_dep " == *\ $_mod\ * ]] && return 1
@ -803,9 +816,9 @@ check_module() {


if [[ " $dracutmodules $add_dracutmodules $force_add_dracutmodules" == *\ $_mod\ * ]]; then if [[ " $dracutmodules $add_dracutmodules $force_add_dracutmodules" == *\ $_mod\ * ]]; then
if [[ " $dracutmodules $force_add_dracutmodules " == *\ $_mod\ * ]]; then if [[ " $dracutmodules $force_add_dracutmodules " == *\ $_mod\ * ]]; then
module_check $_mod 1; ret=$? module_check $_mod 1 $_moddir; ret=$?
else else
module_check $_mod 0; ret=$? module_check $_mod 0 $_moddir; ret=$?
fi fi
# explicit module, so also accept ret=255 # explicit module, so also accept ret=255
[[ $ret = 0 || $ret = 255 ]] || return 1 [[ $ret = 0 || $ret = 255 ]] || return 1
@ -813,7 +826,7 @@ check_module() {
# module not in our list # module not in our list
if [[ $dracutmodules = all ]]; then if [[ $dracutmodules = all ]]; then
# check, if we can and should install this module # check, if we can and should install this module
module_check $_mod; ret=$? module_check $_mod 0 $_moddir; ret=$?
if [[ $ret != 0 ]]; then if [[ $ret != 0 ]]; then
[[ $2 ]] && return 1 [[ $2 ]] && return 1
[[ $ret != 255 ]] && return 1 [[ $ret != 255 ]] && return 1
@ -824,7 +837,7 @@ check_module() {
fi fi
fi fi


for _moddep in $(module_depends $_mod); do for _moddep in $(module_depends $_mod $_moddir); do
# handle deps as if they were manually added # handle deps as if they were manually added
[[ " $dracutmodules " == *\ $_mod\ * ]] \ [[ " $dracutmodules " == *\ $_mod\ * ]] \
&& [[ " $dracutmodules " != *\ $_moddep\ * ]] \ && [[ " $dracutmodules " != *\ $_moddep\ * ]] \
@ -849,7 +862,7 @@ check_module() {
} }


# for_each_module_dir <func> # for_each_module_dir <func>
# execute "<func> <dracut module> 1" # execute "<func> <dracut module> 1 <module path>"
for_each_module_dir() { for_each_module_dir() {
local _modcheck local _modcheck
local _mod local _mod
@ -861,7 +874,7 @@ for_each_module_dir() {
[[ -e $_moddir/install || -e $_moddir/installkernel || \ [[ -e $_moddir/install || -e $_moddir/installkernel || \
-e $_moddir/module-setup.sh ]] || continue -e $_moddir/module-setup.sh ]] || continue
_mod=${_moddir##*/}; _mod=${_mod#[0-9][0-9]} _mod=${_moddir##*/}; _mod=${_mod#[0-9][0-9]}
$_func $_mod 1 $_func $_mod 1 $_moddir
done done


# Report any missing dracut modules, the user has specified # Report any missing dracut modules, the user has specified

8
dracut.sh

@ -1373,7 +1373,7 @@ do_print_cmdline()
for moddir in "$dracutbasedir/modules.d"/[0-9][0-9]*; do for moddir in "$dracutbasedir/modules.d"/[0-9][0-9]*; do
_d_mod=${moddir##*/}; _d_mod=${_d_mod#[0-9][0-9]} _d_mod=${moddir##*/}; _d_mod=${_d_mod#[0-9][0-9]}
[[ ${_mods_to_print[$_d_mod]} ]] || continue [[ ${_mods_to_print[$_d_mod]} ]] || continue
module_cmdline "$_d_mod" module_cmdline "$_d_mod" "$moddir"
done done
unset moddir unset moddir
} }
@ -1454,14 +1454,14 @@ for moddir in "$dracutbasedir/modules.d"/[0-9][0-9]*; do
dinfo "*** Including module: $_d_mod ***" dinfo "*** Including module: $_d_mod ***"
fi fi
if [[ $kernel_only == yes ]]; then if [[ $kernel_only == yes ]]; then
module_installkernel "$_d_mod" || { module_installkernel "$_d_mod" "$moddir" || {
dfatal "installkernel failed in module $_d_mod" dfatal "installkernel failed in module $_d_mod"
exit 1 exit 1
} }
else else
module_install "$_d_mod" module_install "$_d_mod" "$moddir"
if [[ $no_kernel != yes ]]; then if [[ $no_kernel != yes ]]; then
module_installkernel "$_d_mod" || { module_installkernel "$_d_mod" "$moddir" || {
dfatal "installkernel failed in module $_d_mod" dfatal "installkernel failed in module $_d_mod"
exit 1 exit 1
} }

Loading…
Cancel
Save