OS/2 Repair Disk


Задача: иметь загружаемый CD, который даст командную стороку и доступ к винту. Другими словами, repair disk.

Данная статья не претендует на открытие чего-нибудь нового, кроме того, многие моменты я сам не могу объяснить. Это скорее протокол проделанного, за исключением итераций, которые, как вы понимаете, все же имели место :)

Комментарий banshee: этот метод, в отличие от описанного в предыдущей статье, позволяет разместить на диске большое количество полезных утилит -- все они будут запускаться с CD-ROM, а не с виртуального диска в памяти.

Прочитанные первоисточники

Необходимый/полезный софт

Последовательность действий

  1. Для работы нам будет необходим виртуальный диск:
     DEVICE=C:\OS2\BOOT\VFDISK.SYS 4
    
    у меня он имеет букву E:

  2. mkisofs.exe и SAVEDSKF.EXE должны быть доступны в путях.

  3. Создаем следующую структуру каталогов и заполняем их указанными файлами:
    (после ;; буду писать свои коментарии)

    общая структура каталогов:

    \OS2BOOT
         2.88
             OS2
                 BOOT
                 DLL
         ProtoType
             OS2
                 BOOT
                 DLL
                 SYSTEM
             IBM386FS
             FC2
             Tools 
    

    Directory of J:\OS2BOOT

    25.11.02  18:37      <DIR>             0  2.88
    26.11.02  11:27      <DIR>             0  ProtoType
    25.11.02  16:49        162             0  1_os2.cmd
    25.11.02  11:31        143             0  3_iso.cmd
    25.11.02  18:37    8577024             0  IMAGE.ISO
                    ;; файл IMAGE.ISO создается сомандой 3_iso.cmd
    

    Directory of J:\OS2BOOT\2.88

    22.11.02  19:00      <DIR>             0  OS2
    25.11.02  15:46       1113             0  config.sys
                    ;; содержание config.sys смотри ниже
     9.10.02  13:10     847746            54  os2krnl
     9.10.02  14:14      44544             0  OS2LDR
    29.10.01  20:38       8878             0  OS2LDR.MSG
    

    Directory of J:\OS2BOOT\2.88\OS2

    25.11.02  11:28      <DIR>             0  BOOT
    24.11.02  14:28      <DIR>             0  DLL
    

    Directory of J:\OS2BOOT\2.88\OS2\BOOT

     9.08.96   1:35          3             0  altf1bot.scr
     9.08.96   1:35        282             0  altf1top.scr
     9.10.02  16:49      45159             0  CDFS.IFS
    28.08.02  16:37        795             0  CHKDSK.SYS
    25.10.01  18:20       4552             0  CLOCK01.SYS
    24.09.01  15:46      50947             0  COUNTRY.SYS
    30.09.02   3:12      25622             0  DanATAPI.FLT
                    ;; переименованый DaniATAPI.FLT
    20.02.02   1:00       5106             0  DaniBoot.FLT
     5.11.02   1:52      67502             0  DaniS506.ADD
    25.04.02  14:03       8714             0  IBMKBD.SYS
    25.10.01  17:52      21374             0  ISAPNP.SNP
    19.11.02   8:11      40264             0  JJSCDROM.dmd
                    ;; использовать jjscdrom.dmd, а не os2cdrom.dmd!
    25.04.02  14:07      24989             0  KBDBASE.SYS
     3.10.01   6:45     315109             0  KEYBOARD.DCP
     8.05.00  14:55      24274             0  MRAID.ADD
                    ;; драйвер моего райда
     9.10.02  16:58      37467            54  OS2DASD.DMD
    16.10.01  13:25      31483            54  OS2LVM.DMD
     3.04.02  15:23       2496            49  PCIBUS.SNP
    25.10.01  17:51       2152             0  PNP.SYS
    25.04.02  13:32      55402             0  RESOURCE.SYS
    25.10.01  17:58       5257             0  RESRV.SNP
    28.08.02  15:42      12172             0  screen01.sys
    22.11.02  19:13         26             0  snoop.lst
    24.09.01  17:45       2554             0  TIMER0.SYS
    23.10.98  13:27      26002             0  tmscsiw.add
                    ;; мой драйвер SCSI
     3.10.01   6:43     225355             0  VIOTBL.DCP
    

    Directory of J:\OS2BOOT\2.88\OS2\DLL

    29.10.01  22:29        512             0  BKSCALLS.DLL
    29.10.01  22:29        512             0  BMSCALLS.DLL
    28.08.02  15:42      42385            49  bvhvga.dll
    29.10.01  22:29        512             0  BVSCALLS.DLL
     9.10.02  13:12     137445             0  DOSCALL1.DLL
    29.10.01  22:29       1024             0  KBDCALLS.DLL
    29.10.01  22:29       1024             0  MOUCALLS.DLL
    29.10.01  22:29        512             0  MSG.DLL
    29.10.01  22:29        512             0  NLS.DLL
    29.10.01  20:40      21812            49  NPXEMLTR.DLL
    29.10.01  22:29        512             0  OS2CHAR.DLL
    29.10.01  22:29       1024             0  QUECALLS.DLL
    29.10.01  22:29       1536             0  SESMGR.DLL
    16.10.01  13:56       2048             0  VIOCALLS.DLL
    

    Directory of J:\OS2BOOT\ProtoType

    26.11.02  11:27      <DIR>             0  FC
    24.11.02  18:26      <DIR>             0  IBM386FS
    25.11.02  15:12      <DIR>             0  OS2
    25.11.02  13:13      <DIR>             0  Tools
    25.11.02  18:37    2949120             0  OS2BOOT.IMG
                    ;; файл создается сомандой 1_os2.cmd
    

    Directory of J:\OS2BOOT\ProtoType\FC

                    ;; здесь лежит File Commander/2
    

    Directory of J:\OS2BOOT\ProtoType\IBM386FS

                    ;; здесь лежит HPFS386
    

    Directory of J:\OS2BOOT\ProtoType\OS2

    25.11.02  11:24      <DIR>             0  BOOT
    25.11.02  14:53      <DIR>             0  DLL
    24.11.02  18:26      <DIR>             0  SYSTEM
     5.02.93  21:34       3094             0  BOS2REXX.EXE
                    ;; это дает возможность пользовать REXX
     1.04.94  22:45       9605             0  BOS2SHL.EXE
                    ;; это дает возможность пользовать команду START
                    ;; и переключение между задачами по Alt+Esc
    29.10.01  22:56      70720             0  CHKDSK.COM
    28.08.02  10:11       6417             0  CHKDSK32.EXE
     9.10.02  17:19      87283            61  CHKLGJFS.EXE
     9.10.02  16:51     100620             0  CMD.EXE
     9.10.02  17:03     190132            54  JFS.IFS
    16.10.01  13:28      12619             0  JFS.MSG
    16.10.01  13:43       6495             0  JFSCHK32.EXE
    16.10.01  13:28       9515             0  JFSH.MSG
    25.03.99  16:23      34855             0  MORE.COM
    

    Directory of J:\OS2BOOT\ProtoType\OS2\BOOT

    29.10.01  23:04       1142             0  DOS.SYS
    25.04.02  14:02      30947             0  MOUSE.SYS
    16.10.01  13:56       6815            49  PMDD.SYS
    25.10.01  17:33       3846             0  POINTDD.SYS
    25.04.02  14:15       9808             0  TESTCFG.SYS
    
    Directory of J:\OS2BOOT\ProtoType\OS2\DLL
                    ;; очень многие файлы попали сюда из-за go.exe
    29.10.01  22:29        512             0  ANSICALL.DLL
    10.09.01  16:17      16797            49  BVHWNDW.DLL
    28.08.02  10:23     147268             0  CHKDSK32.DLL
    29.10.01  20:43      11425            49  FFST.DLL
     9.10.02  16:59     166348            54  LVM.DLL
    10.10.01  15:11       7022             0  MAILSLOT.DLL
    29.10.01  22:29       1024             0  NAMPIPES.DLL
    11.10.01   2:17     363813             0  NETAPI.DLL
    11.10.01   2:14      63638             0  NETAPI32.DLL
    10.10.01  15:11       2289             0  NETOEM.DLL
    10.10.01  18:44       6588             0  NETSPOOL.DLL
    16.10.01  13:31     248446            49  PMGPI.DLL
    16.10.01  14:46       2231             0  PMGRE.DLL
     3.09.02  20:03    1269801            49  PMMERGE.DLL
    16.10.01  13:38       4549             0  PMSHAPI.DLL
     6.09.00  12:45      44232             0  PMSHLTKT.DLL
    28.08.02  11:05     280283             0  PMSPL.DLL
     3.09.02  12:11      64242          4070  PMVIOP.DLL
    16.10.01  13:33      11264             0  PMWIN.DLL
     6.09.00  12:42     266031             0  REXX.DLL
     6.09.00  12:42      40995             0  REXXAPI.DLL
     6.09.00  12:42       8360             0  REXXINIT.DLL
     3.09.02  11:39     416735            49  SOFTDRAW.DLL
    28.08.02  11:05       7125            49  SPL1B.DLL
     4.09.02  17:30      23331            61  UCONV.DLL
     9.10.02  16:48     105008             0  UHPFS.DLL
    

    Directory of J:\OS2BOOT\ProtoType\OS2\SYSTEM

    29.10.01  19:22     175354             0  OSO001.MSG
    29.10.01  19:23     240256             0  OSO001H.MSG
    

    Directory of J:\OS2BOOT\ProtoType\Tools

     1.07.96  12:20      32543             0  go.exe
                    ;; а также любые другие утилиты по вкусу
    
  4. Содержимое некоторых файлов:

    J:\OS2BOOT\1_os2.cmd:

    REM *** e: -- виртуальный диск, созданный VDISK
    format e: /once /V:SYS
    C:\OS2\INSTALL\BOOTDISK\SYSINSTX.COM E:
    XCOPY \OS2BOOT\2.88\* e: /h/o/t/s/e/r/v
    SAVEDSKF.EXE e: \OS2BOOT\ProtoType\os2boot.img /D /A
    

    J:\OS2BOOT\3_iso.cmd:

    REM *** mkisofs чуствителен к регистру клавиатуры: имена файлов
    REM *** и каталогов должны в точности соответствовать тем, что на диске
    mkisofs -D -national -hpfsnames -o IMAGE.ISO -b OS2BOOT.IMG -c bootcat.bin -v -allow-lowercase -no-iso-translate -V ACP2 /OS2BOOT/ProtoType
    

    Тут тоже позволю себе некоторые коментарии:
    очень важен (в нескольких местах) порядок строк

    J:\OS2BOOT\2.88\config.sys:

    buffers=99
    iopl=yes
    diskcache=D2,LW
    protectonly=yes
    pauseonerror=no
    RESERVEDRIVELETTER=Y:
    REM написал все что было, не факт что все это нужно
    REM CD при такой загрузке будет буквой Z:
    LIBPATH=.;\;A:\;\os2\dll;A:\OS2\dll;Z:\OS2\dll;Z:\IBM386FS;
    SET PATH=.;\;A:\;A:\OS2;Z:\FC;Z:\OS2;Z:\IBM386FS;Z:\FC2;Z:\Tools;
    SET DPATH=.;\;A:\;A:\os2;Z:\os2;Z:\OS2\SYSTEM;Z:\IBM386FS;
    MEMMAN=NOSWAP,MOVE
    
    COUNTRY=007,\OS2\BOOT\COUNTRY.SYS
    CODEPAGE=866,850
    DEVINFO=KBD,RU441,\OS2\BOOT\KEYBOARD.DCP
    DEVINFO=SCR,VGA,\OS2\BOOT\VIOTBL.DCP
    
    basedev=ibmkbd.sys
    BASEDEV=TIMER0.SYS
    basedev=CHKDSK.SYS
    
    REM *** нужные мне драйвера
    basedev=tmscsiw.add
    basedev=mraid.add
    
    basedev=DaniS506.ADD /v
    BASEDEV=DanATAPI.FLT
    
    REM *** согласно первоисточникам, следующая строчка
    REM *** после переключения в PROTECT MODE сделает доступным
    REM *** загрузочный имидж OS2BOOT.IMG в виде буквы A:
    REM *** до переключения это делает BIOS
    REM *** я так и не понял зачем мне этот доступ после загрузки
    basedev=DaniBoot.FLT /D:2
    basedev=os2dasd.dmd
    basedev=os2lvm.dmd
    
    REM *** после следующих двух строк появляется буква CD,
    REM *** в нашем случае Z:
    REM *** теперь можно грузить все, что угодно
    device=\OS2\BOOT\JJSCDROM.dmd /v
    ifs=\OS2\BOOT\cdfs.ifs /v /w
    
    REM *** дальнейшую загрузку проводим с CD
    REM *** не утверждаю, что все это нужно
    device=Z:\OS2\BOOT\dos.sys
    device=Z:\OS2\BOOT\mouse.sys
    DEVICE=Z:\OS2\BOOT\POINTDD.SYS
    DEVICE=Z:\OS2\BOOT\PMDD.SYS
    device=Z:\OS2\BOOT\testcfg.sys
    
    IFS=Z:\IBM386FS\HPFS386.IFS Z:\IBM386FS\hpfs386.ini /A:*
    ifs=Z:\OS2\jfs.ifs
    
    set os2_shell=Z:\OS2\CMD.EXE
    SET COMSPEC=Z:\OS2\CMD.EXE
    SET PROMPT=[$p]
    SET KEYS=ON
    
    PROTSHELL=Z:\IBM386FS\BOOTSH.EXE Z:\OS2\BOS2SHL.EXE
    REM *** без следующей строчки REXX не будет работать
    RUN=Z:\OS2\BOS2REXX.EXE
    
  5. Ну вот, собственно, и всё.
    Запускаем сначала 1_os2.cmd, потом 3_iso.cmd. Получаем IMAGE.ISO, который при помощи RSJ/cdrecord/cdrdao записываем на болванку.
MultiBoot CD создать не удалось. DaniBoot.FLT теряется и не знает, какой имидж делать буквой A: Хотя отдельно бутовый Win98 получился.

Попутно наступил на одни грабли: если диск содержит слишком мало данных, то загружается через раз (два, три).

Заключение

Самое трудное из проделанной работы -- писать эту статью, но Elephant насел очень крепко, и, похоже, что только он может заставить меня что-то сделать (кроме НН) :)

Буду рад, если кому она пригодится. Не претендую на оптимальный вариант -- многое можно добавить/убрать/заменить. Если смогу, то отвечу на любые вопросы в форуме :)

Алексей Тимошенко


Интересные ссылки:
Комментариев к странице: 0 | Добавить комментарий
Домой | Проект ядро Core/2 | Проект OS/4 Download | Новости | Гостевая книга | Подробно обо всем | Нужные программы | Проекты | OS/2 FAQ | Всячина | За и Против | Металлолом | #OS2Russian | RDM/2 | Весёлые картинки | Наша галерея | Доска объявлений | Карта сайта | ПОИСК | ФОРУМ