summarylogtreecommitdiffstats
path: root/wifi.install
diff options
context:
space:
mode:
Diffstat (limited to 'wifi.install')
-rw-r--r--wifi.install65
1 files changed, 65 insertions, 0 deletions
diff --git a/wifi.install b/wifi.install
new file mode 100644
index 000000000000..ba299cd24a79
--- /dev/null
+++ b/wifi.install
@@ -0,0 +1,65 @@
+#!/bin/bash
+
+get_mods_depending_on () {
+ local res
+
+ res=$(lsmod | grep -e "^\\<${1}\\>" | awk '{print $4}')
+ res=(${res//,/ })
+
+ (( ${#res[*]} )) && printf "%s\n" "${res[@]}"
+}
+
+get_mods_depending_on_recursive () {
+ local mods queue i_mod i_testmod
+
+ mods=($1 $(get_mods_depending_on $1))
+ queue=(${mods[@]})
+
+ while (( ${#queue[*]} )) ; do
+ i_mod=${queue[${#queue[@]}-1]}
+ unset queue[${#queue[@]}-1]
+
+ for i_testmod in $(get_mods_depending_on ${i_mod}) ; do
+ in_array ${i_testmod} ${mods[@]}
+ if [ $? != 0 ] ; then
+ mods[${#mods[*]}]=${i_testmod}
+ queue[${#queue[*]}]=${i_testmod}
+ fi
+ done
+ done
+
+ (( ${#mods[*]} )) && printf "%s\n" "${mods[@]}"
+}
+
+
+build ()
+{
+ # Are we even needed?
+ if [ ! -r "/etc/wpa_supplicant/initcpio.conf" ]; then
+ echo "There is no wifi config /etc/wpa_supplicant/initcpio.conf; (create and rerun?); exit"
+ return 0
+ fi
+
+ # wireless modules
+ add_checked_modules "/drivers/net/wireless/"
+
+ # make sure loaded modules depending on cfg80211 are included (e.g. iwlmvm)
+ local mod
+ for mod in $(get_mods_depending_on_recursive cfg80211) ; do
+ add_module $mod
+ done
+
+ add_binary "killall"
+ add_binary "wpa_supplicant"
+ add_binary "ip"
+ add_runscript
+
+ add_file "/etc/wpa_supplicant/initcpio.conf" "/etc/wpa_supplicant/initcpio.conf"
+}
+
+help ()
+{
+cat<<HELPEOF
+ Enables wifi on boot, for ssh unlocking of disk.
+HELPEOF
+}