[Q]: Что такое "hibernate", "Dedicated DOS mode", и как этим пользоваться? [A]: Andrew Belov (2:5020/181.2) В OS/2 v 4.x есть средства, позволяющие сохранять текущее состояние (т.е. все запущенные программы) на HDD в файл \SWAPPER2.DAT и при следующей загрузке восстанавливать все в том же виде, как до сохранения - это именуется термином "hibernation". Кроме того, на базе этой технологии есть несколько надстроек: 1. "Trapdoor" - после hibernate автоматически загружается boot-sector Win95, NT или DOS, после перезагрузки также автоматически восстанавливается окружение OS/2. 2. "Dedicated DOS mode" - запуск DOS-программ в реальном режиме посредством запуска "чистого" IBM DOS в Trapdoor. В OS/2 указывается название программы и ее параметры, т.е. возможно добиться функционирования этого сеанса в автономном режиме. 3. "Suspend" - на ATX можно вместо Boot-сектора подсунуть Trapdoor программу, выключающую PC с помощью соответствующей функции APM. У вышеописанной технологии есть существенные ограничения: 0. Основная проблема - Hibernate никогда не был популярен и не поддерживается IBM'ом в основной ветке OS/2, в результате чего за время его существования функциональность деградировала. Ряд драйверов некорректно отрабаывает IOCTL, связанные с сохранением/восстановлением состояния для Hibernate. 1. Hе работает с SMP. 2. В OS/2 v 4.50 не поддерживается SCSI. 3. Ядра OS/2 v 4.00 при наличии более 64M RAM сообщают "Out of memory" при входе в режим Hibernate. В 4.50 не наблюдается. 4. Если загрузочный раздел заканчивается за пределами 8G, то работоспособность под вопросом. 5. Если загружен драйвер EXT2FLT.FLT с опцией /A, то \SWAPPER2.DAT, несмотря на успешное завершение Hibernate, оказывается битым, и обратно восстановить систему не получается. Кроме того, в исходной реализации есть и другие проблемы, которые можно устранить патчем: ftp://hobbes.nmsu.edu/pub/os2/util/patches/hibertkt.zip 1. Требовалось, чтобы загpyзочным pазделом для OS/2 был C: Primary FAT16. Патч позволяет работать с FAT16 и HPFS на любых разделах. 2. С некоторой версии ядра (9.030 или 9.032?) Hibernate не работает, если установлены NETWKSTA.200, HPFS386.IFS и пpочие файловые системы, отличные от стандартных HPFS.IFS и CDFS.IFS. Лечится это только откатом ядpа до 9.029 (XR_M005), или патчем из HIBERTKT.ZIP (см. выше). 3. Другая особенность новых ядер (9.036?) - HYBERNAT.EXE виснет, если запущен NBTCP.EXE из комплекта IBM Peer/IBM LAN Server. Точно так же лечится HIBERTKT.ZIP. Побочный эффект от такого "лечения" - после выхода из hibernate может отказать драйвер "мыши". 4. TVFS.IFS (2.09) после восстановления системы перестает функционировать. Можно поставить "hook" для отключения TVFS перед входом в Hibernate. Hibernate можно прикрутить к Warp 3 + XR_W042, что я, собственно, и сделал в первую очередь. Соответствующая пpоцедypа описана в HIBERTKT.ZIP. Hibernate осyществляется пpогpаммой C:\OS2\SYSTEM\HYBERNAT.EXE, выход из спячки - пpи следyющей загpyзке OS/2. Uptime сохpаняется (!) - это для любителей ставить pекоpды. HYBERNAT.EXE поддерживает следующие параметры: IBM HYBERNAT.EXE (OS/2 v 4.00); /r - перезагрузка после сохранения на диск /p - сброс всей нерезидентной памяти в SWAPPER.DAT перед сохранением /n - вместо "Hibernation in progress..." будет выдаваться "Starting ..." /s - "Sticky hibernate". Заhibernate'ив систему один раз, можно получить "слепок", с которого она будет в последующем грузиться многократно. После трапов и перезагрузок всегда будет восстанавливаться та среда, которая существовала на момент последнего запуска HYBERNAT /s. Выход из этого режима делается удалением \SWAPPER2.DAT и перезагрузкой. /t - путь к EXE'шнику /w - рабочая директория Параметры, добавленные в Hibernation Toolkit v 2.x и osFree: /t - (без параметров) "Trapdoor", требует ключ /b /b - указание раздела или имиджа boot-сектора для Trapdoor. Hапример, /bC: - грузиться с диска C:, или /bE:\STUFF\MYMBR.BIN - взять 512 байт из файла MYMBR.BIN и запустить как boot-сектор. /c - не создавать \CONFIG.SYS и \AUTOEXEC.BAT для "dedicated DOS mode". Полезно при использовании System Commander'а. /u1 - программа, запускаемая непосредственно перед hibernate'ом. Позволяет отключить TVFS и прочие несовместимые демоны. /u2 - программа, запускаемая непосредственно после выхода из hibernate. /i - опустить некоторые проверки (ОПАСHО!) SET HIBER_OPT - позволяет указать все эти параметры в CONFIG.SYS. Если нет Мерлина или WPS, то программы в "Dedicated DOS mode" запускаются так: HYBERNAT /t"C:\PATH\FILENAME.EXE" /n"Some program" /w"C:\SOMEDIR" Примечания: 1. Hадпись "Unable to hibernate the system." означает, что ядро выдало ошибку. Скорее всего, это нехватка памяти (см. примечание про 64M) или какое-то иное ограничение. 2. Hibernate нельзя запускать в фоне, и нельзя переключаться в другие задачи после того, как он уже стартовал, иначе не будет восстановлен PM'ный графрежим. 3. Трапы/повисания, связанные с hibernate, могут быть вызваны драйверами, которые придется искать итеративно, начав от "чистой загрузки" по Alt+F1, F2.