Russian version here
Installed Windows 95 minimization by SQ
Windows 95 minimized with docs 3.8M
Obligatory Disclaimer
AUTHOR OF THIS TEXT DOES NOT WARRANT OR MAKE ANY REPRESENTATIONS
REGARDING THE USE OR THE RESULTS OF THE USE OF THIS TEXT OR ANY
OTHER INFORMATION MENTIONED HEREWITH IN TERMS OF THEIR CORRECTNESS,
ACCURACY, RELIABILITY, OR OTHERWISE.
You may follow instructions described here on your own risk.
This text's version history:
- v0.2 of 14-Feb-2003: fdisk.exe updated from Japan ME for
>128Gb HDD support.
- v0.1 of 13-Jun-2001: added missing files: unicode.bin, vfd.vxd.
Added links to analogous projects and docs.
Added info abuot registry editing.
Preamble
History of MS-DOS comes to end. New age has begun with Windows 95.
Age of expansive growth. More HDD space, more memory...
But sometimes we have to build working system under very strange conditions.
- Small disk space... Old HDD, small HDD-like card, ROM disk, RAM disk
- Quick installation, quick starting system
- Minimal resources allowed for virtual machine running under other OS,
to run Win32 application
- No hardware autodetection, no driver list
changes when going to another computer with the same bootable HDD
- Run some DOS programs, that can't detect proper size of hard disk
under plain DOS. For example - TIRAMISU (restores data from crashed HDD)
can't see HDD larger than 8Gb under plain DOS. In 'minimized Win95'
environment it works properly with larger disks.
- Disable actions via system DLLs for trojans and other programms
- Simple control files and DLLs. Less files - more control, more proof
- And so on..
Of course - you know other OSes, that do it better.
Of course - there are special software to make it better.
But if you HAVE to use Win32 environment for at least two programs -
you HAVE to enter the 'world of misunderstanding and undocumenting',
built by Microsoft.
In tnis case, if you want to cut off unused things - do it.
I public results of my own experiments, because it was HARD job.
Microsoft programs assume all files are always in their right places.
We can't receive normal error message "File C:\WINDOWS\SYSTEM\... not
found" from them. Programs hang, behave erronous, give you idiotic
replies, simply do nothing. Many attempts. Every attempt - reboot.
I hope, my results will decrease number of your reboots. ;-)
Installed Windows minimization. 7.4-8.5M summary file size
Pan-Europe version is choosen, because I don't like russian
filenames. Minimized Win95 archive contains only 8.3 latin names for
more compatibility, and creates only one directory (Start Menu) and
one file (ShellIconCache) with long names. Enough.
But Russian long filenames are supported. Fat32 also. ;-)
Procedure of minimization
- Install Windows 95 Pan-Europe w/o network
- Tune all keyboard, mouse, Regional settings to your favorite.
I recommend at least:
- - change decimal ',' to '.' in TWO places of 'Regional Settings'
- - set English keyboard layout as default
- - set keyboard indicator visible in task bar
- - create all needed shortcuts to useful programs on desktop
- - Set videomode to some 'fixed' variant, if possible
- - Clear line 'AppWiz.cpl NewLink..." found in registry
- Keep configuration (see below, green and red files) in safe place
- Reboot, command prompt only mode
- Move all files, except mentioned below NECESSARY files, to some another place
- Edit configuration files manually, if you want.
- system.ini [386enh] edit line in :
mouse=*vmouse, msmouse.drv to mouse=*vmouse
(cosmetic change, needed to avoid error message after deleting
msmouse.drv from SYSTEM dir)
- system.ini [386enh] if you want to set manually ANOTHER drive
and parameters of virtual memory:
PagingDrive=Disk
MinPagingFileSize=Number
MaxPagingFileSize=Number
- Reboot again and check the result
Note, that some files and subdirs WILL be created by Win95
itself after starting.
Note, that some useful programs CANNOT run under this minimized Win95 -
they need specific DLL files. This is reason, why you moved unnecessary
files to another place, but not delete them. ;-)
Full list of NECESSARY files with useful comments
('?' means that I don't know file's meaning, but system can't work
correctly without it).
Green color marks editable text configuration files.
Red color marks binary configuration files.
Brown color marks files, needed for russian
locale. This files may be deleted, if you don't need russian at all.
Assumed configuration and installation options
- Standart PC
- Standart VGA driver (640*480/16 colors), regardless of videocard
If you need another - be carefull, it may be not obvious to keep
driver and it's settings
- Standart serial Mouse
- Standart Keyboard
- IDE harddisk
- IDE CD-Rom
- No SCSI or another exotic HDD controllers
- NO SoundCard, no sounds at all
- No network card, no networking settings
- No modem, no dialup networking
- Regional Setting - Russian (code page list, keyboard layouts affected)
- Do not forget to set 'Russian keyboard layout' during installation
- No changes in configuration after minimization, or via registry
Absolutely needed to start DOS 16 bit at the beginning:
- \AUTOEXEC.BAT - loading DOS resident programs, set environment
- \CONFIG.SYS - loading DOS drivers
- \MSDOS.SYS - Boot settings (Logo=0 recommended)
- \IO.SYS - this file contain DOS itself
- \COMMAND.COM - DOS itself shell
Absolutely needed to see Windows 32 bit graphic environment running
(Paths relative from C:\WINDOWS\ directory)
- WIN.INI - Initial settings
- SYSTEM.INI - Initial settings
- SYSTEM.CB - info about code table and keyboard layout
- SYSTEM.DAT - 1st part of registry
- USER.DAT - 2nd part of registry
- SYSTEM\VMM32.VXD - combined pack of drivers
All below files may be extracted from distributive and placed to subdirs:
- IFSHLP.SYS - Installable File Systems driver
- WIN.COM - starting file for Windows
- RUNDLL.EXE - starts 16-bit DLLs
- RUNDLL32.EXE - starts 32-bit DLLs
- SMARTDRV.EXE - loaded in MSDOS environment for disk caching
- HIMEM.SYS - loaded in MSDOS environment to provide XMS memory
Only two files in this subdir are really needed.
This subdir is used when changes in DLL list are occured during
software installations.
- SYSBCKUP\VER.DLL - controls versions of files, DLLs
- SYSBCKUP\LZEXPAND.DLL - needed to unpack some standart info
The most complicated subdirectory SYSTEM...
- SYSTEM\CP_1251.NLS - 1251 code table info
- SYSTEM\CP_866.NLS - 866 code table info
- SYSTEM\INDICDLL.DLL - keyboard indicator
- SYSTEM\KBDRU.KBD - RUSSIAN keyboard layout
- SYSTEM\XLAT866.BIN - OEM/ANSI recoding table
- SYSTEM\KEYBOARD.DRV - keyboard driver
- SYSTEM\KBDUS.KBD - USA keyboard layout
- SYSTEM\UNICODE.BIN - non-ASCII chars in LFN
- SYSTEM\UNICODE.NLS - Unicode table info
- SYSTEM\LOCALE.NLS - ?
- SYSTEM\CONAGENT.EXE - needed to run Console applications
- SYSTEM\WINSPOOL.DRV - needed to run Console Win32 applications
- SYSTEM\SHELL32.DLL - needed for shells to run
- SYSTEM\SHELL.DLL - needed for 16-bit shells to run
- SYSTEM\WINOA386.MOD - needed for console applications to run
- SYSTEM\LINKINFO.DLL - Shows icons on desktop. If not exist - one icon for all applications
- SYSTEM\PIFMGR.DLL - needed to edit properties of .pif desktop items
- SYSTEM\MMSOUND.DRV - necessary even if no sound
- SYSTEM\VGAFULL.3GR - part of standart VGA driver
- SYSTEM\VGA.DRV - part of standart VGA driver
- SYSTEM\MOUSE.DRV - default mouse driver
- SYSTEM\SYSTEM.DRV - driver of standart computer
- SYSTEM\COMM.DRV - driver of serial ports (?)
- SYSTEM\GDI.EXE - ?
- SYSTEM\GDI32.DLL - ?
- SYSTEM\KRNL386.EXE - ?
- SYSTEM\KERNEL32.DLL - ?
- SYSTEM\USER.EXE - ?
- SYSTEM\USER32.DLL - ?
- SYSTEM\INTERNAT.EXE - ?
- SYSTEM\SYSTRAY.EXE - ?
- SYSTEM\ADVAPI32.DLL - ?
- SYSTEM\MSGSRV32.EXE - ?
- SYSTEM\COMCTL32.DLL - ?
- SYSTEM\COMMDLG.DLL - ?
- SYSTEM\COMMCTRL.DLL - ?
- SYSTEM\DDEML.DLL - DDE mechanism
- SYSTEM\MSPWL32.DLL - Controls PWL files and needed at logon
- SYSTEM\MPREXE.EXE - ?
- SYSTEM\MPR.DLL - ?
- SYSTEM\MPRSERV.DLL - ?
- SYSTEM\IOSUBSYS\BIGMEM.DRV - driver of memory distribution
- SYSTEM\IOSUBSYS\CDFS.VXD - driver of file system
- SYSTEM\IOSUBSYS\CDTSD.VXD - driver of file system
- SYSTEM\IOSUBSYS\CDVSD.VXD - driver of file system
- SYSTEM\IOSUBSYS\DISKTSD.VXD - driver of file system
- SYSTEM\IOSUBSYS\DISKVSD.VXD - driver of file system
- SYSTEM\IOSUBSYS\VOLTRACK.VXD - Controls CD-ROM accessibility
- SYSTEM\IOSUBSYS\ESDI_506.PDR - Standart IDE/ESDI driver
- SYSTEM\IOSUBSYS\HSFLOP.PDR - needed for file operations
- SYSTEM\IOSUBSYS\RMM.PDR - Real Mode Mapper (using 16-bit DOS drivers before Win95 running)
- SYSTEM\IOSUBSYS\SMARTVSD.VXD - Cache driver
- SYSTEM\VMM32\IFSMGR.VXD - ?
- SYSTEM\VMM32\IOS.VXD - controls IO subsystems on starting process
Note, that there are some SCSI adapters' drivers files in IOSUBSYS.
If you need to minimize Win95 on SCSI disks - do NOT delete appropriate drivers,
and KEEP file ASPI2HLP.SYS in WINDOWS directory.
- SYSTEM\IOSUBSYS\AIC78XX.MPD
- SYSTEM\IOSUBSYS\AMSINT.MPD
- SYSTEM\IOSUBSYS\NCRC710.MPD
- SYSTEM\IOSUBSYS\NCRC810.MPD
- SYSTEM\IOSUBSYS\APIX.VXD
- SYSTEM\IOSUBSYS\ATAPCHNG.VXD
- SYSTEM\IOSUBSYS\NECATAPI.VXD
- SYSTEM\IOSUBSYS\SCSI1HLP.VXD
- SYSTEM\IOSUBSYS\SCSIPORT.PDR
- SYSTEM\IOSUBSYS\TORISAN3.VXD
Fonts in FONTS directory with Hidden file attribute set:
(I recommend you to keep all of them to minimize problems when
some programm will look for fonts. ;-)
- FONTS\DESKTOP.INI - cause special form of folder view
- FONTS\DOSAPP.FON - font for DOS applications to be shown
- FONTS\COURE.FON - Courier, most default font
- FONTS\SERIFE.FON - Serif
- FONTS\SMALLE.FON - Small Fonts 2-7
- FONTS\SSERIFE.FON - San Serif
- FONTS\VGAOEM.FON - terminal font (866 code table)
- FONTS\VGAFIX.FON - Fixed Sys
- FONTS\VGASYS.FON - System
- FONTS\SYMBOLE.FON - Greek and mathematic symbols
- FONTS\MARLETT.TTF - Windows interface drawings
Configuration management in minimized Win95
- REGEDIT.EXE - needed to edit registry
- SYSTEM\COMDLG32.DLL - needed for REGEDIT
Note, that Control Panel is empty in this 'minimized' Win95.
You MAY make changes manually, by REGEDIT. Best way to change settings
is:
- In normal win95 make export all registry to text file t1.reg
- change setting
- Make export second time to text file t2.reg
- Compare and make file of changes app.reg
- regedit app.reg ni minimized Win95
Note, that regedit.exe is also 16-bit DOS application, and you can
update registry even outside Windows, under plain DOS. But in
Command-Line style.
Shells and shell elements
You may choose one of shells by editing line 'Shell=explorer.exe' in
file system.ini. You may use Far as shell instead of. I RECOMMEND you
to keep taskman.exe even you use your own.
- COMMAND\START.EXE - allows you to start another tasks from command line prompt of shell
- COMMAND.COM - needed to run Norton-like shells. May be replaced
- EXPLORER.EXE - classic Windows Explorer. Why not? ;-)
- TASKMAN.EXE - task manager called by Ctrl-Esc. Not bad as shell
16-bit DOS files to have correct country setting, screen and keyboard
- COMMAND\KEYBRD3.SYS - Ctrl+Shift keyboard switching
- COMMAND\COUNTRY.SYS - Country upper/lower character tables
- COMMAND\DISPLAY.SYS - driver of display adapter
- COMMAND\EGA3.CPI - Font to load
- COMMAND\KEYB.COM - starts driver of keyboard
- COMMAND\KEYBOARD.SYS - driver of keyboard
- COMMAND\MODE.COM - needed to set codepage
Note, that the most rusification programs do NOT set country code. If you want
to use your own DOS rusificator - don't forget to use in autoexec.bat
cyrdos.com
- small (740b) equivalent of line
Country=007,866,C:\WINDOWS.000\COMMAND\country.sys in config.sys.
Files not needed to run Win95 itself, but you may need them when
building minimized package...
- CD-ROM driver (if IDE - use, for example, universal driver nec_ide.sys
- COMMAND\MSCDEX.EXE - CD-ROM redirector for DOS.
Very useful to restore your configuration and data files from CD, if Win95
doesn't start even in Safe mode... ;-)
- COMMAND\SCANDISK.EXE - to fix file system problems. Enough
for small HDD and simple configuration
- SETVER.EXE - needed if you run some software under wrong DOS version
- EMM386.EXE - needed ONLY if you want EMS memory support for some program
- IO.SYS - copy of \IO.SYS for SYS.COM
- COMMAND\SYS.COM - Needed to write Boot
- COMMAND\FDISK.EXE - Needed to write Master Boot Record
- VC.COM
- Volcov Commander,
the smallest filemanager under DOS. Of course, you may use any other...
Result
Summary size of built package is 7.4M before first run, and 8.5M
when running (adding .DA0 backup copies of registry created, ShellIconCache,
TtfCache files)
w95min02.zip - main archive file.
w95min.bat - File to run
attrib.exe - attribute setting needed
w95min02.txt - File to be used
in some programs' command lines as @w95min02.txt. List of
all files with full path. Note! "WINDOWS.000" is used in my
file instead of "WINDOWS" to prevent errononus unpacking this
file over real-installed standard Windows. ;-)
If your distributive is similar enough to 'my' - you may build
archive by commands (after correctnig paths by Search/Replace):
C:\> copy io.sys C:\WINDOWS\
C:\> pkzip -whs -P w95min02.zip @w95min02.txt
Unpacking and installation on clean disk C:
C:\> pkunzip -d w95min02.zip
C:\> cd \WINDOWS\COMMAND
C:\WINDOWS\COMMAND> fdisk /mbr
C:\WINDOWS\COMMAND> SYS ..\ C:
So, restoration procedure is more simple and quick, then Windows reinstall... ;-)
Something analogous
Have a nice DOS!
Write me on E-Mail