Feb
28
Скрипт для демона Logitech G15 в Linux | 28 February 2008, 17:28

Эта клавиатура – поистине удивительная вещь, скрывающая за небольшим экранчиком массу возможностей! :)

Для тех кто незнаком с таким замечательным девайсом как клавиатура Logitech G15 – вот ее фото:

[singlepic id=117 mode=watermark float=center]

Полного описания как и что делать с таким замечательным девайсом как
Logitech G15 пока нету, есть только наброски. ;) Но для облегчения жизни, я написала скрипт по автозапуску демона клавиатуры G15. Строго не судите, это моё первое творение :)

Собственно сам сценарий представляет и себя вот этот листинг(скачать файл с листингом можно отсюда http://downloads.karina-online.ru/linux/logitech_g15/g15

#! /bin/bash              
# Copyright (c) 2008       
# All rights reserved        
#                                 
# Author: Karina       
# /etc/rc.d/g15      
#	
### BEGIN INIT INFO           
# Provides:       g15daemon  
# Required-Start:                
# Required-Stop:                   
# Default-Start:  3 5               
# Default-Stop:   0 1 2 6        
# Description:    Logitech G15 Keyboard daemon   
### END INIT INFO  

G15_BIN=/usr/local/sbin/g15daemon  
G15_DAEMON_OPTIONS=-d        
G15_PID=/var/run/g15daemon.pid 

. /etc/rc.status         
rc_reset                           

#check for missing binary 
# if [ ! -x ${G15_BIN}];        
#  then                                 
#    echo -n >&2 "G15 daemon:  ${G15_BIN} is not found."  
#    rc_status -s    
#    exit 3	  
#  fi  		

start()                           
 {                                     
   echo -n "Starting G15daemon..." 
   checkproc ${G15_BIN}                 
    if ["$?" == "0"];   
    then        
     echo -n "G15 daemon: - Warning! Daemon is already running! Try 'restart' instead !"
      exit 2;                                             
    fi                                                      
   #start daemon                      
   startproc -f -p ${G15_PID} ${G15_BIN} ${G15_DAEMON_OPTIONS}
   rc_status -v
   exit 0          
 }                     
#-------------------------------------------------------------------- 
stop()             
 {                            
   echo -n "Shutting down G15daemon..." 
   checkproc -p ${G15_PID} ${G15_BIN} || \   
   echo -n "G15 daemon: - Warning! G15 daemon is not running! "
   killproc -p ${G15_PID} -t 2 ${G15_BIN} 
   rc_status -v 
    exit 0 
 } 

#check parametr for daemon    
case "$1" in                          
  start)	      
    start 
      ;;      
  stop) 
    stop          
      ;;          
  restart|reload)  
    stop   
    start  
      ;;           
  *)                    
    echo -n "Usage: $0 start|stop|restart|reload"
     exit 1    
      ;;        
esac                             
rc_exit                                
#EOF                      

Сценарий запуска разработан для дистрибутивов, использующих схему загрузки типа System V(Suse, Mandriva, Debian, RedHat и другие). Отличить такие системы несложно – они используют сценарии для различных уровней выполнения. А значит в каталоге /etc/init.d, или /etc/rc.d, часто являющимся символической ссылкой на init.d, расположены каталоги вида:

$ ls /etc/init.d 
...
 rc0.d
 rc1.d
 rc2.d
 rc3.d
 rc4.d
 rc5.d
 rc6.d
 rcS.d
...

Эти каталоги содержат символические ссылки на сервисы, которые нужно выполнить демону init для достижения уровня(run level) с номером 0-6+S соотвественно. Кратко рассмотрим эти уровни чтобы понять о чем пойдет речь.

  • 0 – остановка системы
  • 1 – однопользовательский режим (для специальных случаев администрирования)
  • 2 – многопользовательский режим без NFS (то же, что и 3, если компьютер не работает с сетью)
  • 3 – полный многопользовательский режим
  • 4 – использование не регламентировано
  • 5 – запуск системы в графическом режиме
  • 6 – перезагрузка системы
  • S (или s) – примерно то же, что и однопользовательский режим, но S и s используются в основном в скриптах

Ну вот, теперь очевидно что драйвер нужно грузить на двух уровнях – 3(многопользовательская консоль) и 5(десктоп с запущенным X-сервером).

Все скрипты расположены в папке /etc/init.d, поэтому для начала нужно скопировать туда данный сценарий, назвав его, к примеру, g15 и дав права на выполнение(chmod +x). В папках соотвествующим уровням выполнения расположены символические ссылки на этот скрипт. Имя символической ссылки неслучайно ;) его можно условно арзделить на три части:

старт/стоп номер запуска имя демона

Первый параметр может принимать значения S – старт или K – стоп. Номер запуска – это двухразрядное число(если требуется – то с нулем в первой цифре), описывающее каким по порядку запускать демон(ведь демонов много!). Ну а имя демона – это имя сценария для запуска, у нас это g15.

Чтобы не ошибиться, можно не создавать такие ссылки вручную, а воспользоваться командой chkconfig

# chkconfig g15 35

Этой командой создаются ссылки на запуск/остановку демона g15 на уровнях 3 и 5. Посмотрите в папки rc3.d и rc5.d – и увидите там нечто вроде этого

[singlepic id=116 w=500 mode=watermark float=center]

После перезаргузки демон g15 запустится и вы увидите вот что :)

[singlepic id=115 w=500 mode=watermark float=center]

P.S. При желании скрипт можно заюзать и на система с загрузкой BSD-типа(Slackware, например). ;)

При написании очерка были использованы следующие материалы:

28 February 2008, 17:28  
Рубрика: softoкопательство, разборки с devicАМИ  |  
Метки:   |  

Листинги патчей ;)


Хотите пропатчить? ;)

Вы должны быть залогинены что бы оставить патч.


  karina ©
2007-2010