Notebook pro Linux: ... - hotswapova zarizeni

Tomáš Hudec tom na abba.cz
Úterý Únor 12 00:42:57 CET 2002


Zdeněk Böhm wrote:

>>Mam zkusenosti s HOT SWAP na desktopu, ale mohlo by to pomoci i na
>>
> notebooku.
> 
>>Nevim, jak je to s CD-ROM, ale s HDD mi to funguje a Linux nepada.
>>Prostudujte si utilitu hdparm - parametry -U a -R. Lze tak odregistrovat
>>IDE zarizeni a znovu registrovat. Funguje to ale pouze na cely IDE kanal,
>>tj. odpoji/pripoji vzdy master i slave zarizeni. HOT SWAP zarizeni tedy
>>
> musi
> 
>>byt na jinem IDE kanale nez na jakem je namontovany "/".
>>
>>Postup pri vyjmuti:
>>- rmmod pro ide-cd / ide-scsi, cdrom
>>- hdparm -y /dev/hd? <- uspi disk (v pripade cd-rom asi na nic)
>>- hdparm -U 1 /dev/hda (odregistruje kanal 1 IDE, hda je spravne, pokud
>>/dev/hda je neodpojovany disk - to se v pripade
>>-U a -R ignoruje, ale je to vyzadovany parametr)
>>
> 
> Kde jste, prosim vas, sehnal ty parametry? Man hdparm mi akorat rekne, ze -U
> slouzi k odregistraci a -R k registraci, ale uz se nedovim nic vic. Jo,
> jeste me to varuje, ze je to nebezpecne. Na jednom miste se manual odkazuje
> na adresar contrib, kde jsou scripty od uzivatelu, ale rika zaroven, ze ten
> adresar je jen u zdrojoveho baliku (ja ho (contrib) v distribuci nemam).
> Freshmeat me na dotaz hdparm posle na www.ibiblio.org, kde mi napisou, ze
> maji momentalne problemy...
> Google mi vyhodi nekolik odkazu, kde se ale opet podrobnejsi informace
> nedovim.


Podle skriptiku idectl...

hudec na stig:~$ dpkg -L hdparm
...
/usr/share/doc/hdparm/examples/idectl
/usr/share/doc/hdparm/examples/ultrabayd
...


Tyto prikazy jsem pouzival na hot swap disku, kde na stejnym kabelu
byla CD-ROM (slave):

modprobe -r ide-cd ide-scsi cdrom
hdparm -y /dev/hdc # disk - sleep
# cdrom - netreba: hdparm -y /dev/hdd
hdparm -U 1 /dev/hde # root fs mam na hde - to se nikdy neodregistrovava
# tak to pouzivam jako nutny parametr (zatim se mi nechtelo hdparm
# upravit tak, aby parametr nebyl vyzadovan... :-))

# Timto se presvedcim, ze ide1 neni jadru zname...
grep ide /proc/devices


> 
> S pozdravem Zdenek Bohm

--
Tom
------------- další část ---------------
#!/bin/sh

HDPARM=/sbin/hdparm
MAX_IDE_NR=1

IDE_IO_0=0x1f0
IDE_IO_1=0x170

USE_IDE_DEV_0=/dev/hdc
USE_IDE_DEV_1=/dev/hda

usage () {
	if [ $# -gt 0 ]; then
		echo $* >&2
		echo
	fi

	echo "usage: $0 ide-channel-nr [off|on|rescan]" 2>&1
	exit 1
}

IDE_NR=$1
MODE=$2

do_register=0
do_unregister=0


if [ ! "$IDE_NR" ] || [ $IDE_NR -lt 0 ] || [ $IDE_NR -gt $MAX_IDE_NR ]; then
	usage "Unrecognized IDE-channel number"
fi

case "$MODE" in
on )		do_register=1 ;;
off )		do_unregister=1 ;;
rescan )	do_unregister=1; do_register=1 ;;
* )			usage "Unrecognized command" ;;
esac

eval "IDE_IO=\$IDE_IO_$IDE_NR"
eval "USE_IDE_DEV=\$USE_IDE_DEV_$IDE_NR"

[ $do_unregister -eq 1 ] && eval "$HDPARM -U $IDE_NR $USE_IDE_DEV > /dev/null"
[ $do_register -eq 1 ] && eval "$HDPARM -R $IDE_IO 0 0 $USE_IDE_DEV > /dev/null"

------------- další část ---------------
#!/bin/sh

VERSION="0.1.000"

TPCTL="/usr/bin/tpctl"
IDECTL="/sbin/idectl"

INTERVAL=5

case "$1" in
-V )
	echo "$0: Version $VERSION"
	exit 0
;;

-daemon )
	o_d_type=""
	o_d_id=""

	while true; do
		d_type=""
		d_type_n=""
		d_id=""
		d_id_n=""

		while read w1 w2 w3 wn; do
			case "$w1" in
			device )
				case "$w2" in
				type: )	d_type=$w3; d_type_n="$wn";;
				ID: )	d_id=$w3; d_id_n="$wn";;
				esac
			;;
			esac

			if [ "$d_type" ] && [ "$d_id" ]; then
				break;
			fi
		done <<- END
			`eval $TPCTL -iU`
		END

		if [ "$d_type" != "$o_d_type" ] || [ "$d_id" != "$o_d_id" ]; then
			echo -n "\07" > /dev/tty1

			o_d_type="$d_type"
			o_d_id="$d_id"

			case "$d_type" in
			0x10 )
				eval "$IDECTL 1 rescan"
			;;

			* )
				eval "$IDECTL 1 off"
			;;
			esac
		fi

		sleep $INTERVAL
	done
;;

* )
	exec nohup $0 -daemon 2>&1 > /dev/null &
;;
esac



Další informace o konferenci Linux