From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Tue, 30 Aug 2005 12:29:29 +0400 From: =?koi8-r?B?5MXOydMg883J0s7P1w==?= To: devel@altlinux.ru Message-ID: <20050830082929.GA26965@mithraen.dimline.ru> Mail-Followup-To: =?koi8-r?B?5MXOydMg883J0s7P1w==?= , devel@altlinux.ru, mike@altlinux.ru Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="k+w/mQv8wyuph6w0" Content-Disposition: inline Content-Transfer-Encoding: 8bit Cc: mike@altlinux.ru Subject: [devel] coldplug X-BeenThere: devel@altlinux.ru X-Mailman-Version: 2.1.5 Precedence: list Reply-To: ALT Devel discussion list List-Id: ALT Devel discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Aug 2005 08:29:31 -0000 Archived-At: List-Archive: List-Post: --k+w/mQv8wyuph6w0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit Проблема: Есть новый установки дистрибутива, хотелось бы при их установке автоматически определять список требуемых модулей, и прописывать их в /etc/modules. Соответственно если после этого будет обновлён hotplug и libhw, и "вдруг" для имеющегося железа изменится в его базе соответствие модулей, не хотелось бы чтобы производились какие-либо лишние изменения. При этом установка нового оборудования должна отрабатывать корректно. Решение: Скрипт, поверх pciscan -r, который сам пропишет модули в /etc/modules, что весьма удобно. Скрипт не трогает старые записи (чтобы сохранять порядок загрузки модулей), исключительно добавляя новые при необходимости. Процедура добавления выглядит так: - сначала формируем временный файл со списком - если в нём что-то есть -- _добавляем_ это прямо в /etc/modules. Скрипт в аттаче. Скоро в сизиф уйдёт пакет с этим скриптом (у меня он, видимо, будет одной из системообразующих компонент). -- С уважением, Денис http://freesource.info ---------------------------------------------------------------------------- Посмотрите MTU на интерфейсах. Фрагментация IP-пакетов разрешена? Всё, мой телепатический модуль перегрелся. -- alb in community@ --k+w/mQv8wyuph6w0 Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename=cold #!/bin/sh # coldplug Adding new modules to /etc/modules # # chkconfig: 2345 29 69 # description: Script for adding new modules to /etc/modules, \ # for don't depend to hotplug correctly works # processname: coldplug ##config: /etc/template.conf ##pidfile: /var/run/template.pid #=============================================================================# # Add modules for loading to modules.conf # #=============================================================================# # (c) Denis Smirnov #=============================================================================# # + must be run _before_ sound # + must be run _before_ hotplug # + must be run _after_ mounting /usr (for comm and uniq utilites) set +e WITHOUT_RC_COMPAT=1 # Source function library. . /etc/init.d/functions #PIDFILE=/var/run/template.pid #LOCKFILE=/var/lock/subsys/template RETVAL=0 start() { T_OLD=`mktemp` T_NEW=`mktemp` T_DIFF=`mktemp` cat /etc/modules \ | /bin/grep -v '^#' \ | /bin/grep . \ | /bin/sort \ | /usr/bin/uniq \ > $T_OLD # Get list for PCI-card drivers /usr/bin/pciscan -r \ | /bin/sort \ | /usr/bin/uniq \ > $T_NEW /usr/bin/comm -13 $T_OLD $T_NEW > $T_DIFF /bin/rm -f $T_OLD $T_NEW if [ -s $T_DIFF ]; then echo "# Added by coldplug @ `date -I`" >> /etc/modules cat $T_DIFF >> /etc/modules fi RETVAL=$? return $RETVAL } stop() { # stop_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --expect-user root -- template RETVAL=$? return $RETVAL } restart() { # stop start } reload() { # msg_reloading template # stop_daemon --pidfile "$PIDFILE" --expect-user root -HUP -- template RETVAL=$? return $RETVAL } # See how we were called. case "$1" in start) start ;; stop) stop ;; reload) reload ;; restart) restart ;; condstop) if [ -e "$LOCKFILE" ]; then stop fi ;; condrestart) if [ -e "$LOCKFILE" ]; then restart fi ;; condreload) if [ -e "$LOCKFILE" ]; then reload fi ;; status) status --pidfile "$PIDFILE" --expect-user root -- template RETVAL=$? ;; *) msg_usage "${0##*/} {start|stop|reload|restart|condstop|condrestart|condreload|status}" RETVAL=1 esac --k+w/mQv8wyuph6w0--