dnes jsem byl opet svedkem caste priciny zatuhu systemu kvuli ide_mod (opcode.*error). napsal jsem tedy nasledujici skript, kterej problem opravi, pocitac "odtuhne" bez restartu a vubec, prinese kyzeny mir a lasku do Vaseho case:
takze, tuhne-li Vam zahadne pocitac, otevrete si po startu terminal a v nem jako root spustte nize uvedeny skript a cekejte, jak to dopadne pri pripadnem zatuhu..
v pripade nutnosti skript editujte..
pokud se v pripade zatuhu nic nestane (skript nic neudela), problem je jinde, nez k cemu je skript urcen == hodne stesti, skript uz potrebovat nebudete..
ad.1) skript predpoklada jedinou optickou mechaniku.. mate-li jich vice rucne upravte hodnotu DEVICE=.. tak aby odpovidala vasi mechanice, ktera zatuh zpusobuje (napr: "DEVICE=/dev/hdc"):
ad.2) pouzitim skriptu souhlasim s jedinou podminkou autora:
>> skript spoustim na vlastni nebezpeci a v pripade jakekoliv ujmy neni ze strany autora pozadovatelna nahrada libovolneho druhu.. <<
Pouziti:
.otevri terminal a zadej:
.$ cat << 'EOF' >opcode_defender.sh // otevre soubor pro zapis
.cutni a pastni text zacinajici #! a koncici "exit 1" do terminalu a zmackni 2x enter a napis:
.> EOF // a zmackni enter. ve tvem domovskem adresari je vytvoren soubor opcode_defender.sh
.$ chmod +x opcode_defender.sh // priradi priznak spustitelnosti souboru.
.spusti se z aktualni slozky jako
.$ ./opcode_defender.sh
zdravi ntz
#############################################################################################
#!/bin/bash
# this script will hopefully fix your problem with opcode error caused by modul ide_mod..
# this script add rule for hal, disabling polling of rioting physical device.
# written by nettezzaumana
# test if executor is root or not..
if [ "$UID" -ne "0" ]; then
echo "run this script as root please"
exit 1
fi
# test if hparm and hwinfo commands are accessible
if [ -z "$(which hdparm)" ] || [ -z "$(which hwinfo)" ]; then
echo "you need to have installed packages \"hdparm\" and \"hwinfo\""
echo "simply run \"apt-get install hdparm hwinfo\""
exit 1
fi
# test if dbus configuration files and init script are accessible
if [ ! -d "/etc/hal/fdi/preprobe" ] || [ ! -e "/etc/init.d/dbus" ]; then
echo "there is something strange with your dbus configuration"
echo "exiting now, check your dbus configuration.."
exit 1
fi
# declaration of default cdrom device. when needed, edit this variable to yours requirements
DEVICE="$(hwinfo --cdrom | grep 'Device File:' | awk -F: '{ print $2; }' | sed 's/^.//')"
# function, which writes a rule for hal into single file..
WRULE() {
DBUS_PATH="/etc/hal/fdi/preprobe"
echo -e "dbus rule /etc/hal/fdi/preprobe/dvdrom.fdi will be written.."
echo -e "in case of malfunction or another problem, simply delete that file and restart dbus.."
echo -e "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" &> $DBUS_PATH/mydvdrom.fdi
echo -e "<deviceinfo version=\"0.2\">\n<device>" >> $DBUS_PATH/mydvdrom.fdi
echo -e "<match key=\"block.device\" string=\"$DEVICE\">" >> $DBUS_PATH/mydvdrom.fdi
echo -e "<merge key=\"storage.media_check_enabled\" type=\"bool\">false</merge>" >> $DBUS_PATH/mydvdrom.fdi
echo -e "</match>\n</device>\n</deviceinfo>\n" >> $DBUS_PATH/mydvdrom.fdi
}
# main part. there is a cycle, which in each round check the system log and when
# finds message indicating problem with opcode, starts function WRULE, restarts dbus
# and prints status message ..
key=""
until [ "$key" = "check" ]; do
clear && echo "checking for enemy called \"opcode\".." && sleep 3
if [ "$(grep -E "opcode.*$DEVICE" /var/log/syslog)" ]; then
key=check
hdparm -w $DEVICE
WRULE
echo "ordering dbus to restart.."
/etc/init.d/dbus restart
echo "exiting successfully.."
exit 0
fi
done
echo "pff, there is something strange .. script is ending unexpectly.."
exit 1
############################################################################################