slitaz-tools annotate tinyutils/tazhw @ rev 941
tazhw: fix module names (again)
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Mon Apr 27 12:14:05 2015 +0200 (2015-04-27) |
parents | 6ca520c64f35 |
children | 3be081525506 |
rev | line source |
---|---|
pankso@299 | 1 #!/bin/sh |
pankso@299 | 2 # |
pankso@299 | 3 # SliTaz Hardware configuration tool. Auto-detect and configure in a |
paul@317 | 4 # simple way all PCI, PCMCIA and USB devices. Some Wireless Adapters |
paul@317 | 5 # need non-free firmware not installed by default. Users must use the |
paul@835 | 6 # option --get-firmware to force installation. GUI uses Yad and is |
paul@317 | 7 # called by args such as all box functions. |
pankso@299 | 8 # |
al@939 | 9 # (c) 2009-2015 SliTaz GNU/Linux - GNU GPL v3 |
pankso@299 | 10 # |
al@813 | 11 # Authors: Christophe Lincoln <pankso@slitaz.org> |
al@813 | 12 # Rohit Joshi <jozee@slitaz.org> |
jozee@457 | 13 # |
al@939 | 14 |
al@813 | 15 . /lib/libtaz.sh |
pankso@830 | 16 export TEXTDOMAIN='slitaz-tools' # i18n text mode |
pankso@299 | 17 |
al@813 | 18 usage() { |
al@813 | 19 cat << EOT |
al@813 | 20 |
al@813 | 21 $(_n 'SliTaz Hardware configuration') |
al@813 | 22 |
al@813 | 23 $(boldify "$(_n 'Usage:')") $(basename $0) [$(_n 'command')] [--$(_n 'option')] |
al@813 | 24 |
al@813 | 25 $(boldify "$(_n 'Commands:')") |
al@813 | 26 usage $(_n 'Print this short usage.') |
al@813 | 27 init $(_n 'Used at boot time to configure devices.') |
al@813 | 28 setup $(_n 'Setup hardware devices.') |
al@813 | 29 detect-pci $(_n 'Detect all PCI devices.') |
al@813 | 30 detect-usb $(_n 'Detect all USB devices.') |
al@813 | 31 detected-modules $(_n 'List all detected Kernel modules.') |
al@813 | 32 |
al@813 | 33 $(boldify "$(_n 'Options:')") |
al@813 | 34 --get-firmware $(_n 'Get and install non-free firmware (PCI and USB).') |
al@813 | 35 |
al@813 | 36 EOT |
pankso@299 | 37 } |
pankso@299 | 38 |
al@939 | 39 |
al@813 | 40 check_firmware() { |
pankso@299 | 41 if [ -x /usr/bin/get-$mod-firmware ]; then |
pankso@299 | 42 if [ ! -d /var/lib/tazpkg/installed/$mod-firmware ]; then |
paul@811 | 43 # We need an active connection to install firmware and we |
pankso@299 | 44 # only install firmware if specified from cmdline. |
pankso@299 | 45 if ifconfig | grep -q "inet addr"; then |
al@813 | 46 # Ensure module is not loaded and get files. |
pankso@299 | 47 if [ "$firmware" == "get" ]; then |
pankso@299 | 48 rmmod $mod 2>/dev/null |
pankso@299 | 49 get-$mod-firmware |
pankso@299 | 50 else |
al@813 | 51 _ '* Use --get-firmware option to install missing files.' |
pankso@299 | 52 fi |
pankso@299 | 53 else |
al@813 | 54 _ '* No active connection to get and install firmware.' |
pankso@299 | 55 fi |
pankso@299 | 56 else |
al@813 | 57 _ '> Firmware in use: $mod-firmware' |
pankso@299 | 58 fi |
pankso@299 | 59 fi |
pankso@299 | 60 } |
pankso@299 | 61 |
al@939 | 62 |
al@813 | 63 load_module() { |
pankso@299 | 64 if ! lsmod | grep -q "^$mod"; then |
pankso@829 | 65 # Check if builtin, loaded or missing |
pankso@829 | 66 if modprobe $mod 2>/dev/null; then |
pankso@829 | 67 if zcat /proc/config.gz | fgrep -i $mod | fgrep -q '=y'; then |
pankso@829 | 68 _ '* Builtin module : $mod' |
pankso@829 | 69 unset mod |
pankso@829 | 70 else |
pankso@829 | 71 _ "* Loaded module : $mod" |
pankso@829 | 72 fi |
pankso@829 | 73 else |
pankso@829 | 74 if zcat /proc/config.gz | fgrep -i $mod | fgrep -q '=y'; then |
pankso@829 | 75 _ '* Builtin module : $mod' |
pankso@829 | 76 unset mod |
pankso@829 | 77 else |
pankso@829 | 78 _ '! Missing module : $mod' |
pankso@829 | 79 fi |
gokhlayeh@705 | 80 fi |
pankso@299 | 81 else |
pankso@829 | 82 _ '> Module in use : $mod' |
pankso@299 | 83 fi |
pankso@829 | 84 # Add it to load automatically at next boot. |
pankso@829 | 85 if ! echo "$LOAD_MODULES" | grep -q "$mod"; then |
pankso@829 | 86 sed -i s/"LOAD_MODULES=\"$LOAD_MODULES\""/"LOAD_MODULES=\"$LOAD_MODULES $mod\""/ \ |
pankso@829 | 87 /etc/rcS.conf |
pankso@829 | 88 fi |
pankso@829 | 89 . /etc/rcS.conf |
pankso@299 | 90 } |
pankso@299 | 91 |
al@939 | 92 |
pascal@940 | 93 module_name() |
pascal@940 | 94 { |
pascal@940 | 95 local mod mod2 |
pascal@940 | 96 while read mod; do |
pascal@941 | 97 if [ -d /sys/module -a ! -d /sys/module/${mod//-/_} ]; then |
pascal@940 | 98 mod2=$(ls -d /sys/module/*/drivers/*:$mod 2>/dev/null | \ |
pascal@940 | 99 sed 's|/sys/module/\(.*\)/drivers/.*|\1|') |
pascal@940 | 100 [ "$mod2" ] && mod=$mod2 |
pascal@940 | 101 fi |
pascal@940 | 102 echo ${mod//-/_} |
pascal@940 | 103 done |
pascal@940 | 104 } |
pascal@940 | 105 |
pascal@940 | 106 |
pankso@299 | 107 # Detect PCI devices and load kernel module only at first boot, |
pankso@299 | 108 # in LiveCD mode or with the command 'detect-pci'. |
al@939 | 109 |
al@813 | 110 detect_pci_devices() { |
pankso@299 | 111 if [ ! -s /var/lib/detected-modules ]; then |
pankso@299 | 112 . /etc/rcS.conf |
pankso@299 | 113 # We need module_name to match output of lsmod. |
pascal@940 | 114 list=$(lspci -k | grep "driver" | cut -d ":" -f 2 | module_name) |
pankso@299 | 115 echo "$list" > /var/lib/detected-modules |
pascal@941 | 116 for mod in $(sort < /var/lib/detected-modules | uniq) |
pankso@829 | 117 do |
pankso@299 | 118 check_firmware |
pankso@299 | 119 load_module |
pankso@299 | 120 done |
pankso@299 | 121 fi |
pankso@299 | 122 } |
pankso@299 | 123 |
al@939 | 124 |
pankso@299 | 125 # Detect all USB devices. |
al@939 | 126 |
al@813 | 127 detect_usb_devices() { |
pascal@834 | 128 if [ -e /sys/bus/usb/devices/usb/usb1 ]; then |
pankso@832 | 129 for product in /sys/bus/usb/devices/*/product |
pankso@832 | 130 do |
pankso@832 | 131 path=$(dirname $product) |
pankso@832 | 132 product=$(cat $product) |
pankso@832 | 133 config=$(cat $path/configuration) |
pankso@832 | 134 debug "$path" |
pankso@832 | 135 . $path/[0-9]*/uevent |
pankso@832 | 136 [ ! "$DRIVER" ] && DRIVER="(none)" |
pankso@832 | 137 echo "$product $config $(indent 40 $DRIVER)" |
pankso@832 | 138 unset DRIVER |
pankso@299 | 139 done |
pankso@299 | 140 fi |
pankso@299 | 141 } |
pankso@299 | 142 |
al@939 | 143 |
pankso@299 | 144 # Get firmware used by check_firmware() |
al@939 | 145 |
pankso@299 | 146 if [ "$2" == "--get-firmware" ]; then |
pankso@299 | 147 firmware='get' |
pankso@299 | 148 fi |
al@813 | 149 |
al@939 | 150 |
pankso@299 | 151 # What to do. |
al@939 | 152 |
pankso@299 | 153 case "$1" in |
pankso@830 | 154 -i|init) |
pankso@299 | 155 check_root |
al@813 | 156 _ 'Detecting PCI devices Kernel modules...' |
pankso@299 | 157 detect_pci_devices |
al@813 | 158 _ 'Detecting USB devices Kernel modules...' |
pankso@326 | 159 detect_usb_devices ;; |
pankso@830 | 160 -dp|detect-pci) |
pankso@299 | 161 check_root |
al@813 | 162 newline; _ 'Detected PCI devices Kernel modules'; separator |
pankso@299 | 163 rm -f /var/lib/detected-modules |
pankso@299 | 164 detect_pci_devices |
al@813 | 165 separator; newline ;; |
pankso@830 | 166 -du|detect-usb) |
pankso@299 | 167 check_root |
al@813 | 168 newline; _ 'Detected USB devices Kernel modules'; separator |
pankso@299 | 169 rm -f /var/lib/detected-usb-modules |
pankso@299 | 170 detect_usb_devices |
al@813 | 171 separator; newline ;; |
pankso@830 | 172 -s|setup) |
al@813 | 173 SETUP_OPTIONS=$(echo "$@" | sed 's/setup//') |
pankso@828 | 174 check_root |
jozee@457 | 175 hwsetup $SETUP_OPTIONS ;; |
pankso@830 | 176 -dm|detected-modules) |
al@813 | 177 newline; _ 'Detected PCI and USB modules'; separator |
pankso@299 | 178 cat /var/lib/detected-modules |
pankso@304 | 179 cat /var/lib/detected-usb-modules 2>/dev/null |
al@813 | 180 separator; newline ;; |
pankso@830 | 181 *) |
pankso@299 | 182 usage ;; |
pankso@299 | 183 esac |
pankso@299 | 184 |
pankso@299 | 185 exit 0 |