This section of the document by Hans, <lermen@fgan.de>. Last updated on June 16, 1997.
Наверное, вам было интересно, что означает расширение *.dexe. Теперь из названия параграфа вы это знаете ;-)
На самом деле это маленький загружаемый образ диска, содержащий всего одно DOS-приложение. Поскольку оно имеет доступ только к образу диска, то порождает меньше проблем с обеспечением безопасности, чем полное DOS-окружение под linux. Что еще лучше, вам не нужно возиться с установкой, так как это уже сделал тот, кто готовил dexe.
С другой стороны, можно создавать свои собственные *.dexe файлы, используя скрипт 'mkdexe'. Для его запуска, однако, вам понадобятся как минимум mtools-3.6, покольку эта версия имеет некоторые дополнительные возможности по сравнению с предыдущими.
Подробнее, для изготвления *.dexe нужно следющее:
# cd ./dexe
# mkdexe myapp.zip -x myapp.exe -o confirm
# dos -L myapp.dex [ dosemu-options ]
либо
# dosexec myapp.dex [ dosemu-options ]
Вот что ./mkdexe напечатает в качестве подсказки, если его вызвать без аргументов:
USAGE:
mkdexe [{ application | hdimage}]
[-b dospart] [{-s|-S} size] [-x appname]
[-c confsys] [-a autoexe] [-C comcom ] [-d dosemuconf]
[-i IOname] [-m MSname]
[-o <option> [-o ...]]
application полная DOS-программа в виде *.zip файла
hdimage имя образа диска для результата, если задано -o noapp
(см. ниже)
dospart Если не указано, будет использоваться система FreeDos
Если указано, то это должен быть либо загружаемый DOS
раздел (/dev/...), либо уже готовый образ диска.
-s size _Дополнительное_ свободное место (в Kб) на образе диска
-S size Полный размер (в Кб) образа диска (-s,-S взаимоисключающи)
appname Название запускаемой DOS-программы
confsys Заготовка для config.sys
autoexe Заготовка для autoexec.bat
comcom имя командного интерпретатора, обычно command.com
dosemuconf Заготовка для используемого dosemu.conf
IOname Имя DOS файла, обычно называемого IO.SYS,
(по умолчанию для FreeDos: IPL.SYS) который всегда помещается
первым файлом на образ диска
MSname Имя DOS файла, обычно называемого MSDOS.SYS,
(по умолчанию для FreeDos: MSDOS.SYS) который всегда
помещается вторым на образ диска
-o <option> Распознаются следующие вспомогательные флаги:
confirm предложить редактировать config.sys, autoexec.bat
и dconfig с помощью $EDITOR
nocomcom Опустить command.com, поскольку он все равно не
используется, когда shell=c:\appname.exe
noapp Сделать простой загружаемый образ диска для
обычной работы с DOSEMU (вместо hdimage.dist)
При необходимости изменить встроенный конфигурационный файл, можно использовать ./src/tools/periph/dexeconfig для извлечения/сохранения настроек.
# dexeconfig -x configfile dexefile
Извлечение настроек из 'dexefile' и помещение их в 'configfile'
;
# dexeconfig -i configfile dexefile
делает обратное преобразование.
Есть одна тонкость: когда вы желаете дать пользователю право выполнять DEXE, а сама эта DOS-задача хочет произвести запись в файл внутри DEXE (который на самом деле - целая DOS-овская файловая система). Для этого понадобилось бы дать пользователю право записи (что нежелательно). В DEXE предусмотрен обходной путь: можно установить права read-only на сам DEXE файл, но предусмотреть флажок, который позволит DOSEMU все равно открывать его на чтение/запись. То есть, пользователь не может удалить или подменить DEXE, но встроенное DOS-приложение сможет (полностью изолированно) писать в DOS файлы внутри DEXE (сложно, да?). Для установки такого разрешения вам снова понадобится 'dexeconfig':
# dexeconfig -p W dexefile
Вот что 'dexeconfig' напечатает в качестве подсказки, если его вызвать без параметров:
USAGE:
dexeconfig [-M] [-p {w|W}] -i configfile dexefile
dexeconfig -x configfile dexefile
dexeconfig -v dexefile
dexeconfig -p {w|W} dexefile
где
-i записать конфигурационный файл в dexe
-x извлечь конфигурационный файл
-p w сбросить разрешение на запись
-p W установить разрешение на запись
-v посмотреть текущие установки
Было бы здорово собрать архив работающих, свободно распространяемых *.dexe программ, и здесь я прошу о таких вкладах. Однако, ОЧЕНЬ ВАЖНО, если вы решите предложить *.dexe программы в общественное использование, пожалуйста, НЕ ИСПОЛЬЗУЙТЕ никаких других DOS, кроме FreeDos, иначе вы нарушите авторские права. Это (к сожалению) так и для OpenDOS, который можно распространять только с разрешения Caldera :-(
Усли вы уже собрали *.dexe и хотите им поделиться, пожалуйста, пошлите мне письмо и загружайте хозяйство на
tsx-11.mit.edu:/pub/linux/ALPHA/dosemu/Development/Incoming
Затем я переложу это в
tsx-11.mit.edu:/pub/linux/ALPHA/dosemu/dexe/*
ftp.suse.com:/pub/dosemu/dexe/*
Пока там только одна программа : fallout.dexe Это симпатичная Тетрис-подобнаая игра, которую я нашел на старом CD-ROM и которая работает в 300x200 в консоли и под X-ами (не в slang-терминале). Когда вы поместите ее в каталог /var/lib/dosemu/* , ее можно запустить так:
dosexec fallout.dexe -X
Надеюсь, в будущем у нас появятся и другие *.dexe ....
Есть хитрый патч к ядру от Richard Guenther <zxmpm11@student.uni-tuebingen.de>. Его можно получить с
<http://www.anatom.uni-tuebingen.de/~richi/linux/binfmt_misc.html>
Мы надеемся, что он войдет в ядро, поскольку тогда будет можно запускать DEXE просто набрав имя в командной строке. Для регистрации DEXE формата с помошью binfmt_misc сделайте (в своем /etc/rc.-что_у_вас_там)
cd /proc/sys/fs/binfmt_misc
echo :DEXE:M::\\x0eDEXE::/usr/bin/dosexec: >register
и все.
Вы можете применить './mkdexe' для создания _обычного_ образа загрузочного диска, в этом есть то достоинство, что вам более не нужно возиться с DOS-овским загрузочным диском. У меня получилось сделать загрузочный образ с FreeDos, MSDOS-6.2 и даже WINDOWS'95 (да, его можно загрузить с DOSEMU-шного MBR ;-) Я не проверял другие DOS-ы, но думаю, что они тоже будут работать, если вы передадите 'mkdexe' (ключи -i, -m) правильные имена системных файлов.
Пример: Пусть загрузочный DOS-раздел на /dev/hda1, тогда ...
# cd ./dexe
# ./mkdexe myhdimage -b /dev/hda1 -o noapp
создаст непосредственно загружаемый 'myhdimage' из существующей установки DOS. Не нужно делать загрузочную дискету, не нужно больше возиться с fdisk /MBR и sys.com . С помощью -o confirm можно также подправить файлы конфигурации перед их переносом на образ диска.
Более того, на базе mkdexe есть скрипт setup-hdimage, который облегчает первую установку образа диска для DOSEMU. Он запрашивает все, что нужно, и должен работать на большинстве машин.
# cd /where/I/have/dosemu
# ./setup-hdimage
В каталоге ./dexe также есть скрипт, который позволяет получить прямой доступ к файлам на образе диска, даже не изменяя настроек в /etc/mtools.conf. Используется он так:
USAGE:
do_mtools device mcommand [ arg1 [...] ]
где:
device = DOS-раздел, например '/dev/hda1'
или образ диска DOSEMU
mcommand = любая разрешенная команда mtools
argX = любой разрешенный аргумент для mtools.
ВНИМАНИЕ: для диска DOS используйте 'W:'
пример:
do_mtools /var/lib/dosemu/hdimage mcopy W:/autoexec.bat -