slitaz-boot-scripts annotate etc/init.d/hwconf.sh @ rev 189
hwconf.sh: add support for Xorg autoconfig
author | Christophe Lincoln <pankso@slitaz.org> |
---|---|
date | Mon Jan 04 23:34:50 2010 +0100 (2010-01-04) |
parents | ddd1db038d3b |
children | 50b48a25519f |
rev | line source |
---|---|
pankso@11 | 1 #!/bin/sh |
pankso@153 | 2 # /etc/init.d/hwconf.sh - SliTaz hardware configuration. |
pankso@153 | 3 # |
paul@181 | 4 # This script configures the sound card and screen. Tazhw is used earlier |
pankso@153 | 5 # at boot time to autoconfigure PCI and USB devices. |
pankso@11 | 6 # |
pankso@12 | 7 . /etc/init.d/rc.functions |
pankso@11 | 8 |
pankso@169 | 9 # Parse cmdline args for boot options (See also rcS and bootopts.sh). |
pascal@180 | 10 XARG="" |
pankso@169 | 11 for opt in `cat /proc/cmdline` |
pankso@169 | 12 do |
pankso@169 | 13 case $opt in |
pankso@169 | 14 sound=*) |
pankso@169 | 15 DRIVER=${opt#sound=} ;; |
pascal@180 | 16 xarg=*) |
pascal@180 | 17 XARG="$XARG ${opt#xarg=}" ;; |
pankso@189 | 18 screen=text) |
pankso@189 | 19 # Disable X. |
pankso@189 | 20 echo -n "Disabling X login manager: slim..." |
pankso@189 | 21 . /etc/rcS.conf |
pankso@189 | 22 RUN_DAEMONS=`echo $RUN_DAEMONS | sed s/' slim'/''/` |
pankso@189 | 23 sed -i s/"RUN_DAEMONS.*"/"RUN_DAEMONS=\"$RUN_DAEMONS\"/" /etc/rcS.conf |
pankso@189 | 24 status ;; |
pankso@169 | 25 screen=*) |
pankso@169 | 26 SCREEN=${opt#screen=} ;; |
pankso@169 | 27 *) |
pankso@169 | 28 continue ;; |
pankso@169 | 29 esac |
pankso@169 | 30 done |
pankso@169 | 31 |
pankso@81 | 32 # Sound configuration stuff. First check if sound=no and remove all |
pankso@76 | 33 # sound Kernel modules. |
pankso@169 | 34 if [ -n "$DRIVER" ]; then |
pascal@42 | 35 case "$DRIVER" in |
pascal@42 | 36 no) |
pascal@42 | 37 echo -n "Removing all sound kernel modules..." |
pascal@42 | 38 rm -rf /lib/modules/`uname -r`/kernel/sound |
pascal@42 | 39 status |
pascal@42 | 40 echo -n "Removing all sound packages..." |
pascal@42 | 41 for i in $(grep -l '^DEPENDS=.*alsa-lib' /var/lib/tazpkg/installed/*/receipt) ; do |
pascal@42 | 42 pkg=${i#/var/lib/tazpkg/installed/} |
pascal@42 | 43 echo 'y' | tazpkg remove ${pkg%/*} > /dev/null |
pascal@42 | 44 done |
pankso@53 | 45 for i in alsa-lib mhwaveedit asunder libcddb ; do |
pankso@53 | 46 echo 'y' | tazpkg remove $i > /dev/null |
pankso@53 | 47 done |
pankso@169 | 48 status ;; |
pascal@42 | 49 noconf) |
pankso@169 | 50 echo "Sound configuration was disabled from cmdline..." ;; |
pascal@42 | 51 *) |
pascal@61 | 52 if [ -x /usr/sbin/soundconf ]; then |
pascal@61 | 53 echo "Using sound kernel module $DRIVER..." |
pascal@61 | 54 /usr/sbin/soundconf -M $DRIVER |
pankso@169 | 55 fi ;; |
pascal@42 | 56 esac |
MikeDSmith25@107 | 57 # Sound card may already be detected by PCI-detect. |
pankso@76 | 58 elif [ -d /proc/asound ]; then |
pankso@136 | 59 # Restore sound config for installed system. |
pankso@136 | 60 if [ -s /etc/asound.state ]; then |
pankso@136 | 61 echo -n "Restoring last alsa configuration..." |
pankso@136 | 62 alsactl restore |
pankso@136 | 63 status |
pankso@136 | 64 else |
pankso@136 | 65 /usr/sbin/setmixer |
pankso@136 | 66 fi |
pankso@140 | 67 # Start soundconf to config driver and load module for Live mode |
pankso@140 | 68 # if not yet detected. |
pankso@140 | 69 /usr/bin/amixer >/dev/null || /usr/sbin/soundconf |
pankso@140 | 70 else |
pankso@140 | 71 echo "Unable to configure sound card." |
pankso@11 | 72 fi |
pascal@42 | 73 |
pankso@189 | 74 # Xorg auto configuration. |
pankso@189 | 75 if [ ! -s /etc/X11/xorg.conf -a -x /usr/bin/Xorg ]; then |
pankso@189 | 76 echo "Configuring Xorg..." |
pankso@189 | 77 # $HOME is not yet set. |
pankso@189 | 78 HOME=/root |
pankso@189 | 79 Xorg -configure |
pankso@189 | 80 mv -f /root/xorg.conf.new /etc/X11/xorg.conf |
pankso@189 | 81 sed -i 's|/usr/bin/Xvesa|/usr/bin/Xorg|' /etc/slim.conf |
pankso@189 | 82 sed -i s/"^xserver_arguments"/'\#xserver_arguments'/ /etc/slim.conf |
pankso@189 | 83 tazx config-xorg |
pankso@189 | 84 fi |
pankso@189 | 85 |
MikeDSmith25@107 | 86 # Screen size config for slim/Xvesa (last config dialog before login). |
pankso@189 | 87 # |
pankso@189 | 88 # NOTE: Xvesa is unmaintained, package will be removed and all related |
pankso@189 | 89 # code cleaned |
pankso@189 | 90 # |
pankso@189 | 91 if [ ! -s /etc/X11/screen.conf -a -x /usr/bin/Xvesa ]; then |
pankso@76 | 92 # $HOME is not yet set. |
pankso@76 | 93 HOME=/root |
pascal@180 | 94 if [ -n "$XARG" ]; then |
pascal@145 | 95 # Add an extra argument to xserver_arguments (xarg=-2button) |
pascal@180 | 96 sed -i "s| -screen|$XARG -screen|" /etc/slim.conf |
pascal@145 | 97 fi |
pankso@169 | 98 if [ -n "$SCREEN" ]; then |
pankso@170 | 99 case "$SCREEN" in |
pankso@170 | 100 text) |
pankso@170 | 101 # Disable X. |
pankso@170 | 102 echo -n "Disabling X login manager: slim..." |
pankso@170 | 103 . /etc/rcS.conf |
pankso@170 | 104 RUN_DAEMONS=`echo $RUN_DAEMONS | sed s/' slim'/''/` |
pankso@170 | 105 sed -i s/"RUN_DAEMONS.*"/"RUN_DAEMONS=\"$RUN_DAEMONS\"/" /etc/rcS.conf |
pankso@170 | 106 status ;; |
pankso@170 | 107 auto) |
pankso@170 | 108 # Auto detect screen resolution. |
pankso@170 | 109 export NEW_SCREEN=`Xvesa -listmodes 2>&1 | grep ^0x | \ |
pankso@170 | 110 awk '{ printf "%s %s\n",$2 }' \ |
pankso@170 | 111 | sort -nr | grep x[1-2][4-6] | head -n 1` |
pankso@170 | 112 tazx `cat /etc/X11/wm.default` ;; |
pascal@182 | 113 1024x600*|800x480*) |
pascal@182 | 114 set -- $(echo $SCREEN | sed 's/x/ /g') |
pascal@182 | 115 915resolution -l 2>/dev/null | \ |
pascal@182 | 116 grep " ${1}x" | awk -v h=$1 -v v=$2 \ |
pascal@182 | 117 'END {system("915resolution " $2 " " h " " v)}' |
pascal@182 | 118 # Use specified screen resolution. |
pascal@182 | 119 export NEW_SCREEN=$SCREEN |
pascal@182 | 120 tazx `cat /etc/X11/wm.default` ;; |
pankso@170 | 121 *) |
pankso@170 | 122 # Use specified screen resolution. |
pankso@170 | 123 export NEW_SCREEN=$SCREEN |
pankso@170 | 124 tazx `cat /etc/X11/wm.default` ;; |
pankso@170 | 125 esac |
pascal@40 | 126 else |
pankso@64 | 127 tazx `cat /etc/X11/wm.default` |
pascal@40 | 128 fi |
pankso@28 | 129 fi |