Для автозапуска сменных носителей, например CD-ROM'а, служит специальный даемон gnome-volume-manager. Но что делать, когда он просто не запускается (или не устанавливается)? Пытался решить эту проблему, но оказалось, что проще создать свой собственный скрипт для реализации этой функции.
Итак, с чего начать? Сперва создайте файл со скриптом autorun и поместите его в один из каталогов, перечисленных в переменной окружения PATH. Чтобы получить значение этой переменной, используем команду echo $PATH У меня получилось следующее: michael@michael-desktop:~$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games Лично я для своих скриптов выбрал каталог /usr/local/sbin. Если вы поместили файл со скриптом autorun в этот католог, тогда выполните команду: sudo chmod +x /usr/local/sbin/autorun— чтобы сделать файл сценария исполняемым. Скрипт для реализации функции автозапуска:
echo $PATH
michael@michael-desktop:~$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
sudo chmod +x /usr/local/sbin/autorun
#!/bin/bash# Скрипт для реализации функции автозапуска. Требует параметры:# 1-[устройство для чтения компакт-дисков и DVD-дисков; или устройство USB Flash Disk]#SETTINGSWINEPREFIX=$HOME/.wine # конфигурация wineIE="$HOME/.PlayOnLinux/wineprefix/IE7" # конфигурация wine с установленным MS Internet Explorer#END OF SETTINGSChkDrv() { array2=(`ls -l $WINEPREFIX/dosdevices | grep -E "${array1[0]}"`) ln -fs "$1" "$WINEPREFIX/dosdevices/${array2[${#array2[@]}-3]%:}"}run() { line=`grep -Ei "^$3=" "$1/$2" | sed 's/^[A-Za-z]*=//' | tr -d '\015'` if [ "${#line}" -ne "0" ]; then case "${line##*.}" in htm|html) #Три варианта открытия html-файлов. Закомментируйте один из вариантов: #1) html-файлы открываются в Internet Explorer #1a) html-файлы открываются в Wine Internet Explorer ChkDrv "$1" wine iexplore ${array2[${#array2[@]}-3]%:}\\${line##* } #1b) html-файлы открываются в MS Internet Explorer# export WINEPREFIX="$IE"# ChkDrv "$1" # ( wine "$WINEPREFIX/drive_c/Program Files/Internet Explorer/IEXPLORE.EXE" "${array2[${#array2[@]}-3]%:}\\${line##* }" 2>&1 ) | debugPipe #2) html-файлы открываются в веб-броузере, используемом по умолчанию, например Konqueror# ChkDrv "$1"# browser `update-alternatives --display x-www-browser | sed --silent '2p' | awk '{print $5}'` file://${1/ /%20}/${line##* } & exit $? ;; doc|rtf) ChkDrv "$1" ooffice -writer "$1/${line##* }" & exit $? ;; bat) ChkDrv "$1" cd "$1" && wine start ${array2[${#array2[@]}-3]%:}\\$line exit $? ;; hta) ChkDrv "$1" env WINEPREFIX="$IE" wine start /ProgIDOpen htafile "$1/${line##* }" exit $? ;; *) WarningScreenResolution kdialog --title "**************************************" --passivepopup "Сейчас последует запуск ${array2[${#array2[@]}-3]%:}\\$line" 15 & ChkDrv "$1" cd "$1" && wine ${array2[${#array2[@]}-3]%:}\\$line [ "${#ScreenResolution}" -ne "0" ] && xrandr -s ${ScreenResolution[7]}x${ScreenResolution[9]%,} exit $? ;; esac fi}browser() { `basename "${1%.}"` $2}check_autorun() { for filename in "$1/"* # Обход всех файлов в каталоге. do fname=`basename "$filename"` n=`echo $fname | tr A-Z a-z` # Перевести символы в нижний регистр. if [ "autorun.inf" == "$n" ] then break fi done if [ ! -z "$fname" ]; then run "$1" $fname open run "$1" $fname ShellExecute #команда open в файле autorun.inf не обнаружена fi}WarningScreenResolution() { kdialog --title "Разрешение монитора" --yesno "Для лучших результатов установите переключение разрешения монитора на 640x480 точек.\nИспользовать переключение разрешения монитора?" if [ "$?" -eq "0" ] then ScreenResolution=(`xrandr`) xrandr -s 640x480 fi}array1=(`grep -Ei "${1##*/}" /etc/mtab`)if [ "`basename "${1%[0-9]}"`" = "scd" -o "`basename "${1%[0-9]}"`" = "sr" ]; then if [ "${#array1}" -eq "0" ]; then array1=(`grep -Ei "${1##*/}" /etc/fstab | grep -v "^#"`) if [ "${#array1}" -eq "0" ]; then sleep 1 array1=(`grep -Ei "${1##*/}" /etc/mtab`) if [ "${#array1}" -eq "0" ]; then exit $? fi else kdialog --title "Монтирование CDROM-а" --passivepopup "Это может занять какое-то время. Пожалуйста подождите." 5 & mount ${array1[0]} #[/dev/sr2] fi fi check_autorun "${array1[1]/\\040/ }" #Параметры: 1-[/media/Bible] browser "`update-alternatives --display x-www-browser | tail -1`" $1 &else if [ "${#array1}" -ne "0" ]; then check_autorun "${array1[1]/\\040/ }" browser "`update-alternatives --display x-www-browser | tail -1`" $1 & else kdialog --title "Монтирование внешнего диска" --passivepopup "Это может занять какое-то время. Пожалуйста подождите." 3 array1=(`mount -l | grep -Ei "${1##*/}"`) check_autorun ${array1[2]} browser "`update-alternatives --display x-www-browser | tail -1`" $1 & fifiexit $?
Примечание: Любители консоли ниже смогут найти команду, которая сделает за вас всё то, что сейчас столь подробно с картинками будет описано.
Настройки для релизов 8.04 Hardy Heron и 9.10 Karmic Koala будут отличаться друг от друга:
Вставьте какой-нибудь диск, который имеет функцию автозапуска, в устройство для чтения компакт-дисков и DVD-дисков. Через несколько секунд выскочит диалоговое окно подобное этому: Щелкните на кнопке "Настроить" для добавления новой команды. Щелкните на кнопке "Добавить". Щелкните на кнопке с изображением красного креста, если хотите изменить иконку. Выберите из диалогового окна нужный рисунок, нажмите на ОК. Введите имя команде: "Автозапуск". В списке "Доступные типы дисков" дважды щёлкните строчку "Отмонтированный CD (с возможностью записи)" так, чтобы она появилась в списке справа "Показать службы для". Можно таким же образом добавить и другие типы дисков, если вы хотите использовать эту функцию для них:
В поле "Команда" введите команду: autorun %u и нажмите Enter или щелкните на "OK". Теперь в списке команд должна появиться наша новая команда "Автозапуск": Щелкните на кнопке "OK" ещё раз. На этом наши настройки подошли к концу. Теперь мы можем выбрать команду Автозапуск и наслаждаться запуском программы.
Примечание: Скрин-шоты приведены из 10.04 LTS Lucid Lynx, поэтому в некоторых местах будут несущественные отличия во внешнем виде диалоговых окон, но в целом инструкция остаётся неизменной как для 9.10 так и для 10.04
Воспользуйтесь K-меню и откройте "Параметры системы". Щелкните на вкладке "Дополнительно" и выберите модуль "Действия для устройств". Теперь щелкните на кнопке "Добавить". В окошке Название действия напечатайте "Автозапуск" и щелкните на OK.
Щелкните на значке с вопросительным знаком, чтобы изменить значок для данного действия (слева от введённого названия — "Автозапуск"). Напечатайте в поле Команда autorun %d и щелкните на OK. На этом настройка закончена. Возможно, потребуется перезапустить сеанс (перегрузить компьютер).
Вставьте диск в устройство для чтения компакт-дисков и DVD-дисков. Через несколько секунд виджет "Подключаемые устройства" покажет список недавно подключенных устройств. Выберите ваш диск из списка — откроются все доступные действия над этим устройством, среди которых вы увидите созданное вами действие "Автозапуск": Теперь просто выберите его мышью из списка. Через несколько секунд программа, предназначенная для автозапуска, заработает.
Установка и настройка скрипта для пользователей Ubuntu.
KERNEL=="sr*", ACTION=="change", SUBSYSTEM=="block", ENV{ID_CDROM_MEDIA_TRACK_COUNT_DATA}!="", RUN+="/usr/local/sbin/udev-autorun %k"
#!/bin/bashUSERNAME=usernameexport DISPLAY=":0.0" /bin/su $USERNAME -c "autorun /dev/$1" &
sudo chmod +x /usr/local/sbin/udev-autorun
Все выше описанное, после того момента, как был создан файл со скриптом и ему присвоены права на запуск, можно сделать с помощью командной строки
echo $'[Desktop Action Автозапуск]\nExec=autorun %u\nIcon=wine\nName=Автозапуск\n\n[Desktop Entry]\nActions=Автозапуск\nServiceTypes=media/cdwriter_unmounted'>$HOME/.kde/share/apps/konqueror/servicemenus/Автозапуск.desktop
echo $'[Desktop Action Автозапуск]\nExec=autorun %u\nIcon=wine\nName=Автозапуск\n\n[Desktop Entry]\nActions=Автозапуск\nServiceTypes=media/removable_unmounted,media/removable_mounted,media/dvd_unmounted,media/cdwriter_unmounted,media/cdwriter_mounted,media/dvd_mounted'>$HOME/.kde/share/apps/konqueror/servicemenus/Автозапуск.desktop
echo $'[Desktop Action open]\nExec=autorun %d\nIcon=wine\nName=Автозапуск\nX-Ubuntu-Gettext-Domain=desktop_kdebase-workspace\n\n[Desktop Entry]\nActions=open;\nType=Service\nX-KDE-Action-Custom=true\nX-KDE-Solid-Predicate=[ IS StorageVolume AND StorageVolume.ignored == false ]'>$HOME/.kde/share/apps/solid/actions/Автозапуск.desktop
Скрипт рассчитан на обработку основных команд, которые могут быть в файле autorun.inf, — специальный конфигурационный файл, находящийся в корневой папке компакт-диска. Всего таких команд совсем немного: Open и Shellexecute. При этом не все возможные случаи предусмотрены в связи с употреблением команды Shellexecute. Для обработки непредусмотренных скриптом случаев, например открытие pdf-файла, предполагается добавление в скрипте новых "случаев" в операторе case, который используется в функции run.
В случае открытия html-файла скрипт может использовать один из трёх вариантов:
Выберите самый подходящий, а остальные закомментируйте. Изначально скрипт настроен на использование Wine Internet Explorer.
В скрипте есть возможность указать каталог конфигурации wine — в начале скрипта в секции SETTINGS переменная WINEPREFIX. Отдельно для Microsoft Internet Explorer можно запускать wine с особой конфигурацией, которая указывается в переменной IE. Например, если вы хотите, чтобы при открытии html-документов wine использовал особую конфигурацию настроенную для запуска Internet Explorer 6, и которая находится в каталоге "$HOME/.ies4linux/ie6", тогда в скрипте укажите IE="$HOME/.ies4linux/ie6".
Для установки Microsoft Internet Explorer рекомендую использовать утилиту PlayOnLinux. Краткая инструкция по установке: wget -q "http://deb.playonlinux.com/public.gpg" -O- | sudo apt-key add -sudo wget http://deb.playonlinux.com/playonlinux_trusty.list -O /etc/apt/sources.list.d/playonlinux.listsudo apt-get updatesudo apt-get install playonlinux
wget -q "http://deb.playonlinux.com/public.gpg" -O- | sudo apt-key add -sudo wget http://deb.playonlinux.com/playonlinux_trusty.list -O /etc/apt/sources.list.d/playonlinux.listsudo apt-get updatesudo apt-get install playonlinux
Внимание! В файле playonlinux_trusty.list замените слово trusty на имя вашего релиза
Подробнее о форматировании
Отправить комментарий