3 # Copyright © 2009 Nick Bowler
5 # Generate module listings for an initramfs by searching a subset of the
6 # installed modules for a particular kernel version. Currently, all
7 # filesystem and MD drivers, plus all their (recursive) dependencies,
10 # License WTFPL2: Do What The Fuck You Want To Public License, version 2.
11 # This is free software: you are free to do what the fuck you want to.
12 # There is NO WARRANTY, to the extent permitted by law.
15 echo "usage: modules.zsh kernel-version" 1>&2
24 for i in {1..$#path}; do
25 echo "dir $base/${(j./.)path[1,i]} 0755 0 0"
35 moduledir=/lib/modules/$kver
37 if ! [ -d "$moduledir" ]; then
38 echo "module directory for kernel \`\`$kver'' does not exist." 1>&2
42 kmods=(`find $moduledir/kernel/fs $moduledir/kernel/drivers/md \
43 -type f -name '*.ko' -exec basename {} .ko \;`)
47 while [ $#kmods -gt 0 ]; do
49 kmods=(${kmods[2,-1]})
51 info=`modinfo -k $kver $i`
52 paths+=`echo $info | sed -n 's/^filename:[[:space:]]*//p'`
54 kmods+=(${(s.,.)$(echo $info | sed -n 's/^depends:[[:space:]]*//p')})
57 echo "dir $moduledir 0755 0 0"
58 echo "file $moduledir/modules.dep $moduledir/modules.dep 0644 0 0"
59 echo "file $moduledir/modules.alias $moduledir/modules.alias 0644 0 0"
62 out_mkdir_p $moduledir $(dirname $i)
63 echo "file $moduledir/$i $moduledir/$i 0644 0 0"