Олег Татарников
КомпьютерПресс 11'2002
Введение
Компьютер без жесткого диска
Подготовка дистрибутива
Популярный двоичный редактор Hiew
Введение
Вездисковая операционная система, загружающаяся и работающая с компакт-диска, может
понадобиться в следующих случаях:
Естественно, что для чтения информации с какого-либо носителя можно было бы ограничиться
традиционной загрузкой операционной системы DOS с системной дискеты. И даже если бы
исходная операционная система работала с файловой системой NTFS, можно было бы заранее
подготовить системный диск с какой-нибудь утилитой типа NTFS Reader For DOS, которая
может читать разделы NTFS из-под окружения MS DOS и копировать данные из этих разделов
на FAT-диски. Для доступа к NTFS-дискам из-под DOS используются популярные утилиты от
Марка Русиновича, которые можно бесплатно взять с сайтов http://www.ntfs.com/ или
http://www.sysinternals.com/ (бесплатными являются только драйверы для чтения таких дисков,
а для записи или восстановления разделов понадобятся уже коммерческие версии).
Поэтому более удобным было бы решение с загрузкой, например, под Windows 95/98/Mе и
полноценная работа с любыми устройствами под управлением этой операционной системы. К
тому же и программа NTFS for Win98 (http://www.winternals.com/products/fct/ntfswin98.asp)
более удобна и обладает большими возможностями, чем NTFS For DOS.
Кроме того, наличие утилиты ERD Commander позволяет проводить любые восстановительные
работы на диске, вплоть до редактирования реестра в незапускающейся системе.
К тому же имеется возможность инсталлировать на CD-ROM-систему какую-либо программу
для записи CD-R/RW и сохранять необходимую информацию на записываемых и
перезаписываемых болванках.
После того как необходимая информация будет сохранена, исходную систему можно
восстановить из резервной копии разрушенного жесткого диска, которую опять же можно
предварительно сохранить на том же компакт-диске, с которого мы будем загружаться.
Кроме того, в качестве основного носителя можно будет использовать флэш-карту или USB-
Drive, которые, к сожалению, пока не поддерживаются непосредственно из BIOS материнской
платы и нуждаются в подключении из уже загруженной операционной системы.
В итоге после запуска Windows CD-ROM можно будет даже вынуть из лотка, а привод
использовать для чтения других дисков.
Для того чтобы изготовить загружаемую таким образом систему, вам понадобятся:
Подготовка дистрибутива
Для предотвращения возможного разрушения рабочей операционной среды все приготовления
лучше выполнять на отдельном жестком диске, предварительно установив туда свежую
Windows 98SE.
Если же лишнего диска нет, можно проделать все на своем рабочем диске, но в этом случае
необходимо сделать резервные копии файлов IO.SYS, MSDOS.SYS, AUTOEXEC.BAT,
CONFIG.SYS, а также создать резервную копию реестра.
Программа 98lite создает на диске специальный рабочий каталог С:\98SETUP, в котором она
изготавливает дистрибутив усеченной системы Windows (в качестве исходника она использует
оригинальный дистрибутив, например с CD от Microsoft). Естественно, что после такой
операции вы лишаетесь поддержки от компании Microsoft, но 2-4-кратная экономия
занимаемого пространства и значительное ускорение работы того стоят. В зависимости от
вашего выбора установленная после такой процедуры операционная система Windows 98SE
Lite может ужаться c 200 до 50 Мбайт (минимум при выборе 98micro и полном отказе от
Internet Explorer и всех компонентов MS HTML).
Далее создадим системную дискету командой SYS A:\ и скопируем туда все необходимые
файлы, которые нам понадобятся в дальнейшем: COUNTRY.SYS, DISPLAY.SYS,
DRVLOAD.COM, DBLBUFF.SYS, EGA3.CPI, HIMEM.SYS, IFSHLP.SYS, KEYB.COM,
KEYBRD3.SYS, MODE.COM, MSCDEX.EXE, SMARTDRV.EXE, SUBST.EXE, UNIIDECD.SYS,
XCOPY.EXE, XMSDSK.EXE. В принципе в качестве базовой можно воспользоваться
стандартной загрузочной дискетой Windows 98, убрав оттуда все лишнее и добавив
недостающие файлы из каталогов WINDOWS и WINDOWS\COMMAND, а также
вышеописанные DRVLOAD, UNIIDECD и XMSDSK. Места все они займут совсем немного,
поэтому туда же можно будет на всякий случай поместить еще какую-нибудь небольшую
командную оболочку типа Volkov Commander (VC). На этой дискете поправим (или создадим
заново) файл AUTOEXEC.BAT примерно такого содержания:
<Autoexec.bat>
subst.exe y: c:\ramdisk
subst.exe z: c:\cdrom
path a:\;c:\98setup
vc.com
Когда система потребует вынуть дискету и перегрузиться, то, ничего не вынимая, загружаемся
опять в MS-DOS, заходим в командную оболочку, переписываем программу SUBST.EXE в
каталог C:\98SETUP, а в файл AUTOEXEC.BAT на жестком диске добавляем строки:
c:\98setup\subst.exe y: c:\ramdisk
c:\98setup\subst.exe z: c:\cdrom
path y:\windows;y:\windows\command;y:\windows\system; c:\98setup
Теперь мы должны решить проблему с длинными именами файлов. Дело в том, что при
переписывании под MS-DOS они у нас неизбежно будут усечены до восьми символов. Здесь
есть три пути. Первый — это подчистить систему, удалив все длинные имена папок и файлов, а
программы инсталлировать не в каталог Program Files, а в какой-нибудь короткий каталог
Programs, чтобы затем смело переписать все содержимое на RAM-диск в один прием командой
XCOPY (файл XCOPY.EXE ) или распаковать одним архивом (например, исполняемым под MS
DOS SFX-файлом). Второй (более сложный) — это переписать систему в два приема: сначала
переписать все файлы и папки, имеющие короткие имена (что будет достаточно для загрузки и
работы Windows 98), а уже после ее загрузки дописать все то, что выходит за заветные 8+3
символа (автозапуском из-под Windows). Причем это можно сделать как вторым архивом,
созданным уже под Windows, так и той же командой XCOPY (но это будет уже XCOPY32). И
наконец, третий путь (комбинированный) — все короткое переносится на RAM-диск, а все
длинное остается на CD-ROM. В принципе, в наиболее важных папках (типа Windows или
Windows\System) длинных имен нет.
Теперь исправим файл MSDOS.SYS (взяв за основу тот, который находится на диске C:\
полноценной системы Windows 98, и не забыв, что старый мы сохранили). Поправим в нем
некоторые параметры (для этого можно воспользоваться простым текстовым редактором типа
Notepad или Edit.com из набора Windows, сняв предварительно параметр «Только для чтения»):
<MSDOS.SYS>
[Paths]
WinDir=Y:\WINDOWS
WinBootDir=Y:\WINDOWS
HostWinBootDrv=Y
[Options]
BootDelay=0
DisableLog=1
DblSpace=0
DrvSpace=0
Logo=0
BootMulti=0
BootGUI=0
DoubleBuffer=0
AutoScan=0
Network=0
BootWarn=0
После этого в последний раз перегружаем систему с дискеты, входим в командную оболочку и
восстанавливаем исходную рабочую среду: опять переименовываем папку Windows, а также
файлы win.com, system.ini, system.dat, user.dat, с тем чтобы вернуть исходную конфигурацию. А
кроме того, возвращаем сохраненные IO.SYS, MSDOS.SYS, AUTOEXEC.BAT, CONFIG.SYS,
то есть приводим все к тому, что было вначале.
<Config.sys>
DOS=HIGH, UMB, NOAUTO
device=himem.sys /testmem:off
AccDate = a- b- c- d- e- f- g- h-
Lastdrive=Z
Switches = /F
NumLock = Off
STACKS=0,0
Break = On
devicehigh=dblbuff.sys
devicehigh=display.sys con=(ega,,1)
devicehigh=Ifshlp.sys
country=007,866,country.sys
install=mode.com con cp prepare=((866) ega3.cpi)
install=mode.com con cp select=866
install=keyb.com ru,,keybrd3.sys
files=10
buffers=10
stacks=9,256
<Autoexec.bat>
@ECHO OFF
SET DIRCMD=/O:N
set RAMDRIVE=Y
set CDROM=Z
xmsdsk 128000 %RAMDRIVE%: /y /t /c1
REM == Объем памяти, отводимой под RAM-диск, подбирается исходя из имеющихся
ресурсов
set temp=%RAMDRIVE%:\
set tmp=%RAMDRIVE%:\
path=%RAMDRIVE%:\;%CDROM%:\
set comspec=%RAMDRIVE%:\command.com
set cmdline=%RAMDRIVE%:\
set shell=%RAMDRIVE%:\command.com
drvload %RAMDRIVE%:\uniidecd.sys /D:MSCD001
REM == Это универсальный драйвер CD-ROM
%RAMDRIVE%:\MSCDEX.EXE /D:MSCD001 /L:%CDROM%
REM == Параметр D:MSCD001 должен совпадать с одноименным параметром драйвера
CD-ROM
%RAMDRIVE%:\SMARTDRV.EXE 512
REM == Дисковый кэш для DOS, без него компьютер будет сильно тормозить
xcopy /E /Q /H /I %CDROM%:\WINDOWS %RAMDRIVE%:\WINDOWS
REM == Переписывание системы с CD-ROM на RAM-диск (длинные имена усекаются).
Возможно, вам потребуется переписать несколько каталогов, а не только Windows.
SET PATH=%RAMDRIVE%:\;%RAMDRIVE%:\WINDOWS; %RAMDRIVE%:\WINDOWS\SYSTEM;
%RAMDRIVE%:\WINDOWS\COMMAND
%RAMDRIVE%:\win
При помощи какой-нибудь программы для записи CD-R/RW (например, Nero — Burning Rom)
записываем загрузочный CD-диск (указав в качестве загрузочного сектора подготовленную
дискету, а остальное взяв из каталогов C:\RAMDISK и C:\CDROM). Возможно, что с первого
раза у вас что-то не получится, поэтому лучше потренироваться на перезаписываемых CD-RW-
дисках.
После загрузки с CD операционная система Windows должна оказаться на диске Y:\ и работать
с него.
Для того чтобы сделать подобное решение универсальным (то есть способным работать на
компьютере любой конфигурации), можно удалить из «Панель
управления»/«Система»/«Устройства» все до одного устройства — тогда при последующей
загрузке система не будет искать новое оборудование и загрузится на любой машине (правда, в
VGA-режиме и без каких-либо устройств — только голая оболочка).
КомпьютерПресс 11'2002