METHOD AND APPARATUS FOR EMBEDDING OPERATING SYSTEM IN ROM
BACKGROUND OF THE INVENTION
Portions of the disclosure of this patent document contain material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office file or records, but otherwise reserves all copyright rights.
A. FIELD OF INVENTION
This invention relates to the field of computer operating systems and, more specifically, to a method and apparatus for embedding an operating system in read-only memory (ROM).
With the advancement of the computer technology and the substantial reduction in the price of microprocessors and computers, it is now economically feasible to integrate computer systems into many machines and devices to provide improved performance and added functionality. For example, computers have been integrated into gaming machines replicating what had formerly been strictly mechanical or hard-wired electrical devices. These gaming machines have the capability of providing a user with a variety of sophisticated computer based games, such as Poker, Black Jack, etc. The games are typically programmable computer applications that, like other computer applications, run "on top" of an operating system that controls the basic operation of the computer system.
While the programmability of computer based gaming systems allows for easy modification of the games presented, that same programmability also has the disadvantage of making such systems vulnerable to undesired alterations. If a user can gain access to the storage media on which the operating system and/or game program code of such systems are stored, it may be possible for the user to make alterations to the code, changing the systems' operation. For obvious reasons, in certain industries maintaining the integrity of the computer system and the way it operates is not only desirable, but is also a mandatory legal requirement. For example, where computer systems are utilized in the gaming industry, state and federal regulations have mandated specific standards regarding the security and operational features of the computer systems used.
A persisting problem with a publicly available computer system is that it is susceptible to attack by information technology intruders (hackers). It is desirable to prevent damage from any attack by ensuring that the software and the hardware installed on the system remain intact. Specifically, a method for maintaining the integrity of software installed on a computer system, including the operating system and other executable programs, is highly desirable.
B. BACKGROUND ART
One way to maintain software integrity is to design a system in which the operating system and application software is stored in non-volatile read-only memory (ROM). A ROM is generally a data storage device that is programmed at the time of its manufacture and cannot be reprogrammed by a computer user. One common type of ROM is a solid state ROM integrated circuit chip. Another common type is a CD-ROM (Compact Disk Read-Only Memory). Utilizing read-
only memory for software storage can prevent an intruder from altering or modifying the software because the intruder will not be able to write onto the medium on which the software is stored.
Up till now, however, it has not been possible to store and properly run certain advanced operating systems from ROM devices. This is because these operating systems are designed not only to read but also to write data to certain files during loading ("booting") and operation.
The normal process for loading an operating system is as follows. A boot routine is automatically executed when the computer is turned on or reset. The boot routine provides basic input/ output capabilities allowing the rest of the operating system to be loaded. After the boot routine is loaded, it searches for the storage location of the operating system, loads it into the computer's memory, and then passes control of the computer system over to the operating system.
If the operating system is an advanced operating system such as Windows 95, during startup certain files normally stored on a hard drive (e.g., registry files, swap files, .INI files, etc.) are accessed to initialize certain values and to configure the computer system based on the state of the computer system recorded in those files. This state information is carried over from the last time the operating system was loaded. When a computer system using this kind of operating system is shut down, the operating system modifies the initialization files to update the computer system's state information that is recorded in those files. For the operating system to function properly, such initialization files must reside on a read /write storage medium so that they can be read and modified during startup or shutdown. Because of this requirement, if such an advanced
operating system is stored on read-only media, it will not boot and operate properly, because the system is unable to write to and update the initialization files.
Most prior art methods for booting operating systems fall into two categories. Some prior art systems embed a basic, limited function operating system, such as MSDOS, or a portion of the operating system in ROM chips, while storing a more advanced operating system or the bulk of the operating system on a read/write storage device, typically a hard drive. More commonly, the entire operating system is stored on read/write storage media. With both of these prior art methods, the part of the operating system stored on the read/write storage media is vulnerable to undesired modification. The prior art systems cannot provide an advanced operating system that is designed to require reading and writing of initialization and state data in an environment that is immune to undesired modifications. A method is therefore needed for providing an operating system to a computer system in manner that protects the integrity of the operating system code yet allows the operating system to load and execute properly.
SUMMARY OF THE INVENTION
A method and apparatus for embedding an operating system in readonly memory (ROM) is described. In embodiments of the invention, a computer system can be booted from a read-only non-volatile memory device such as a CD-ROM. As a result, tampering with the files stored on the system and the possibility of any alteration in system functionality is substantially reduced.
In one or more embodiments of the invention, an advanced operating system is installed onto a hard disk temporarily connected to a computer for which the system is desired to be embedded. After the system is installed, a boot floppy disk is made using the utilities of the operating system. The boot floppy includes a basic operating system. The system files on the boot floppy are modified to include instructions to the computer system to ignore certain error messages during loading of the advanced operating system. In addition, instructions are included on the floppy disk (e.g. in start-up or configuration files such as AUTOEXEC.BAT and CONFIG.SYS) to create a RAM disk and to assign a boot up hard drive letter (e.g. "C:") to the RAM disk, using the utilities of the basic operating system on the floppy disk, and to copy the image of the advanced operating system as stored on the hard drive (which has been burnt onto the CD-ROM) from the CD-ROM to the RAM disk. Thereafter, images of the modified floppy and the hard disk are burnt onto a CD-ROM, and the CD- ROM is made bootable. The hard disk is then disconnected from the computer.
In one or more embodiments of the invention, when the computer is restarted, the basic operating system from the floppy image burnt onto the CD- ROM boots first. According to the instructions contained in the floppy image, a RAM disk is created using the utilities of the basic operating system, and the
image of the advanced operating system burnt onto the CD-ROM is copied to the RAM disk. The advanced operating system is then loaded from the RAM disk into the computer's memory. In one or more embodiments, the CD-ROM also contains one or more application programs that are loaded and executed once the advanced operating system has been booted.
BRIEF DESCRIPTION OF THE DRAWINGS
Figure 1 illustrates a general purpose computer, according to one or more embodiments of the invention.
Figure 2 is a block diagram of a general purpose computer in connection with various memory storage components, according to one or more embodiments of the invention.
Figure 3 is a flow diagram illustrating the method of embedding an operating system onto ROM, according to one or more embodiments of the invention.
Figure 4 is a flow diagram illustrating the method of booting a computer system from ROM, according to one or more embodiments of the invention.
Figure 5 is a flow diagram illustrating the method of embedding Windows 95 operating system onto CD-ROM media, according to one or more embodiments of the invention.
DETAILED DESCRIPTION OF THE INVENTION
The invention provides a method and apparatus for embedding an operating system in read-only memory (ROM). In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art that the present invention may be practiced without these specific details. For example, this invention in one or more embodiments is described with respect to certain features and requirements of Microsoft Windows Operating Systems and CD ROM storage media. However, this is by way of example only. It will be understood that this invention is applicable to other operating systems and/or other ROM storage media in a similar manner. Further, in some instances, well-known features of the invention have not been described in detail so not to unnecessarily obscure the present invention.
Description of General Purpose Computer System
Figure 1 illustrates an example of a general purpose computer system for which an operating system may be embedded using one or more embodiments of the invention. A general purpose computer such as computer 100 may also be used to implement one or more embodiments of the invention. A keyboard 110 and mouse 111 are coupled to a system bus 118. The keyboard and mouse are for introducing user input to the computer system and communicating that user input to processor 113. Other suitable input devices may be used in addition to, or in place of, mouse 111 and keyboard 110. In one or more embodiments, the input devices used include a touch sensitive video screen and a plurality of user input keys. I/O (input/output) unit 119 coupled to system bus 118 represents such I/O elements as a printer, A/V (audio/ video) I/O, etc.
Computer 100 includes a video memory 114, main memory 115 and mass storage 112, all coupled to system bus 118 along with keyboard 110, mouse 111 and processor 113. The mass storage 112 may include both fixed and removable media, such as magnetic, optical or magnetic optical storage systems or any other available mass storage technology. In one or more embodiments, mass storage 112 is limited to ROM mass storage media, such as, for example CD- ROM. Bus 118 may contain, for example, thirty- two address lines for addressing video memory 114 or main memory 115. The system bus 118 also includes, for example, a 64-bit data bus for transferring data between and among the components, such as processor 113, main memory 115, video memory 114 and mass storage 112. Alternatively, multiplex data/address lines may be used instead of separate data and address lines.
In one embodiment of the invention, the processor 113 is a microprocessor manufactured by Intel, such as the 80X86, or Pentium processor. However, any other suitable microprocessor or microcomputer may be utilized. Main memory 115 is comprised of dynamic random access memory (DRAM). Video memory 114 is a dual-ported video random access memory. One port of the video memory 114 is coupled to video amplifier 116. The video amplifier 116 is used to drive the cathode ray tube (CRT) raster monitor 117. Video amplifier 116 is well known in the art and may be implemented by any suitable apparatus. This circuitry converts pixel data stored in video memory 114 to a raster signal suitable for use by monitor 117. Monitor 117 is a type of monitor suitable for displaying graphic images.
Computer 100 may also include a communication interface 120 coupled to bus 118. Communication interface 120 provides a two-way data communication
coupling via a network link 121 to a local network 122. For example, if communication interface 120 is an integrated services digital network (ISDN) card or a modem, communication interface 120 provides a data communication connection to the corresponding type of telephone line, which comprises part of network link 121. If communication interface 120 is a local area network (LAN) card, communication interface 120 provides a data communication connection via network link 121 to a compatible LAN. Wireless links are also possible. In any such implementation, communication interface 120 sends and receives electrical, electromagnetic or optical signals, which carry digital data streams representing various types of information.
Network link 121 typically provides data communication through one or more networks to other data devices. For example, network link 121 may provide a connection through local network 122 to local server computer 123 or to data equipment operated by an Internet Service Provider (ISP) 124. ISP 124 in turn provides data communication services through the world wide packet data communication network now commonly referred to as the "Internet" 125. In one or more embodiments, network link 121 provides a connection among a plurality of computer devices that utilize one or more embodiments of the invention.
Local network 122 and Internet 125 both use electrical, electromagnetic or optical signals, which carry digital data streams. The signals through the various networks and the signals on network link 121 and through communication interface 120, which carry the digital data to and from computer 100, are exemplary forms of carrier waves transporting the information. Computer 100 can send messages and receive data, including program code, through the network(s), network link 121, and communication interface 120. In the Internet
example, remote server computer 126 might transmit a requested code for an application program through Internet 125, ISP 124, local network 122 and communication interface 120.
The received code may be executed by processor 113 as it is received, and/or stored in mass storage 112, or other non-volatile storage for later execution. In this manner, computer 100 may obtain application code in the form of a carrier wave. Application code may be embodied in any form of computer program product. A computer program product comprises a medium configured to store or transport computer readable code, or in which computer readable code may be embedded. Some examples of computer program products are CD-ROM disks, ROM cards, floppy disks, magnetic tapes, computer hard drives, servers on a network, and carrier waves.
The computer systems described above are for purposes of example only.
Embodiments of the invention may be implemented for and /or using any type of computer system or programming or processing environment.
Embedding Operating System in ROM
Sometimes it is desirable to provide special purpose computer systems for use by customers for particular purposes, such as computer-based gaming machines, for example. It is important that the operation of such a computer system is consistent and is protected against any purposeful or unintentional modification or corruption by a user. However, computer systems are susceptible to attack by various sources, including direct user intervention, viruses, and Trojan horses. Viruses are deliberately designed malignant software that damage or corrupt the file system or the security system of a
computer. A Trojan horse type application, on the other hand, resides within a computer system and in one way or the other covertly takes over the management and the processing of data transmitted within the system. A publicly accessible computer system is specially susceptible to the above attacks, as various users may have the opportunity to either intentionally or unintentionally install or transmit a virus or a Trojan horse onto the system, or otherwise manipulate the system's software.
To address the above concerns, the present invention allows a computer system to be safely booted and operated according in a manner that ensures that any software installed on the system remains intact and safe from modification. In embodiments of the invention, system integrity is preserved by storing the operating system and other software on unalterable read-only media, such as, for example, a read-only CD ROM.
Figure 2 is a block diagram of various storage components that are utilized to embed an operating system onto ROM 230, according to one or more embodiments of the invention. Processor 200 of a computer system (e.g. computer system 100 of Figure 1) is connected to storage media components, such as floppy disk 210, hard drive 220, CD ROM 230, and RAM disk 240 via bus 218. Each storage media contains digital data. For example, in the state of the system shown in Figure 2, floppy disk 210 includes boot sector 212 that stores data comprising the loading routines for a basic operating system, such as MSDOS, for initial booting of the system, as well as other data (as will be described below). The data stored in certain media may change over time according to the state and /or operation of the computer system, while the data stored in other media may remain intact.
In one or more embodiments of the invention, system files on floppy disk 210 are modified to allow certain boot up instructions to be included in the system files. In one or more embodiments, the system files on floppy disk 210 are so modified by replacing them with system files normally used only on hard disks. In Figure 2, Floppy disk 210, also contains the basic operating system 215, including drivers 217 for configuring various devices attached to computer 100, such as hard drive 220, CD ROM 230, RAM disk 240, etc. In the embodiment of Figure 2, hard drive 220 has been loaded with advanced operating system 222 and one or more other application programs 225 that utilize operating system 222. CD ROM 230 and RAM disk 240 have been loaded with necessary software and system files for loading operating system 222, as further described below.
Figure 3 is a flow diagram showing the steps for embedding operating system 222 in ROM 230, according to one or more embodiments of the invention.
According to one or more embodiments of the invention, to embed operating system 222 in ROM 230, at step 310 operating system 222 is installed on hard drive 220 while hard drive 220 is temporarily connected to computer 100. The installed operating system is then loaded into the computer system at step 315. In one or more embodiments of the invention, in which Windows 95 is the operating system being embedded, virtual memory is turned off after the system is loaded. The virtual memory option, when selected, emulates a portion of the hard disk space as RAM memory. Turning off this option disables any memory write operation to that portion of the hard disk associated with the virtual memory option. After virtual memory has been turned off, the system is once again rebooted.
At step 320, extraneous files installed as a part of the operating system that are not needed for the particular use for which the operating system is being installed are removed from operating system 222 to reduce its size and the amount of storage space it requires. For example, if the computer system for which the operating system is installed will not be connected to the Internet, then Internet related files may be removed. In embodiments of the invention, where installation of additional software (e.g., gaming software such as Poker, Black Jack, etc.) is desired, the additional software and the necessary device drivers are loaded onto hard drive 220 at step 325.
In one or more embodiments, the operating system files and /or application program files are stored on hard drive 220 in compressed form to reduce storage requirements. In one or more embodiments, the added software is installed in the same partition of hard drive 220 into which operating system 222 has been installed (typically the "C" drive). In one or more embodiments, some or all of the additional software is installed into a different partition.
At step 330, bootable floppy disk 210 is prepared utilizing the utilities of the installed operating system. A bootable floppy disk is a formatted storage medium that includes a basic operating system and that can be used to boot the computer system with the basic operating system when it is turned on or restarted. Due to the small storage capacity of floppy disk 210, only a basic operating system, such as MSDOS, is installed on bootable floppy disk 210.
As described above, floppy disk 210 includes boot sector 212 that includes routines for loading a basic operation system. Floppy disk 210 also includes basic operating system 215, device drivers 217 and other files needed for initially booting and setting up computer system 100. In one or more embodiments in
which the basic operating system that is copied onto floppy disk 210 is MSDOS, certain executable files are added to floppy disk 210 to provide additional functionality over the basic operations available via the basic operating system. In one or more embodiments of the invention, such files include HIMEM.SYS, MSCDEX.EXE, RAMDRIVE.SYS, SETVER.EXE, and PKUNZIP.EXE.
As mentioned above, in one or more embodiments of the invention, certain system files stored on floppy disk 210 are modified to allow additional instructions to the computer system to be included. In one or more embodiments in which MSDOS is the basic operating system installed on floppy disk 210, this is accomplished by replacing the MSDOS.SYS file of the floppy (MSDOS.SYS is one of the system files that is installed on a floppy drive when it is formatted for MSDOS) with the version of MSDOS.SYS normally installed on hard drives. This is done because the hard drive version of MSDOS.SYS allows a user to add certain computer system instructions to the MSDOS.SYS file that are read by the computer system when MSDOS is loaded, while the floppy version of MSDOS.SYS does not allow such instructions to be added. For example, in one or more embodiments, instructions are added to the MSDOS.SYS file telling computer system 100 to disregard certain error messages during loading of the advanced operating system. Specifically, in one or more embodiments, instructions are included in the MSDOS.SYS file instructing the computer system to disregard error messages indicating missing or corrupted Windows 95 registry files. In addition to modifying the MSDOS.SYS file, in one or more embodiments, system configuration files such as CONFIG.SYS and AUTOEXEC.BAT are also created and/or modified to include commands for loading device drivers (e.g., drivers 217) necessary for locating and operating a CD ROM device, for creating and assigning a drive letter to a RAM disk, for
copying data from a CD-ROM to the RAM disk, and for executing one or more programs that have been copied to the RAM disk.
After floppy disk 210 is prepared as a bootable floppy and after all the necessary files and drivers are included thereon, at step 340, in one or more embodiments, a compressed image 223 of operating system 222 is created and stored separately from operating system 222 on hard drive 220.
At step 350, images of floppy disk 210 and operating system 222 are copied onto ROM 230 creating floppy image 235 and operating system image 237. Depending on the embodiment, operating system image 237 may be of operating system 222 in compressed or uncompressed form. In one or more embodiments of the invention, one or more application programs 225 are also copied onto ROM 230. In one or more embodiments, operating system 222 and application programs 225 are stored on hard drive 220 and an image of hard drive 220 is copied onto ROM 230.
Referring to Figure 2, in one or more embodiments of the invention, ROM 230 is a CD-ROM that is made bootable, for example, according to industry standards, such as the El Torito Standard for bootable CD-ROM's. It includes boot sector 232, floppy image 235, and operating system image 237. In one or more embodiments, floppy image 232 is configured as the boot partition of CD- ROM 230, and is assigned a floppy drive letter, for example, drive "A", while operating system image 237 is configured as a separate partition and given a drive designation other than "C". At step 360, hard drive 220 and floppy disk 210 are disconnected from computer 100, leaving ROM 230 as the only bootable device connected to computer 100. Accordingly, at startup, computer 100 utilizes information stored on ROM 230 to boot.
Thus, a method for embedding operating system 222 onto ROM 230 has been described. Even though the invention as described utilizes images of storage media such as floppy disks and hard drives, it should be understood that such storage media are described by way of example only, and that the invention is equally applicable to other types of storage media that can provide similar bootable functions.
Mode of Operation
In embodiments of the invention, ROM 230 is the storage medium on which the operating system and application software code for booting and running computer 100 are stored. Some operating systems (e.g., Microsoft Windows 95) are designed to boot from a storage medium onto which write operations are allowed. As such, in one or more embodiments of the invention, all or a portion of the operating system is first copied from ROM 230 onto RAM disk 240 and is then loaded and executed from RAM disk 240. A RAM disk simulates a hard drive and therefore any necessary rite operations can take place on the RAM disk the same way they take place on a hard drive. Unlike a hard drive that can be used for permanent storage of data, however, a RAM disk is volatile and holds the data only so long as the system remains powered.
Embodiments of the invention are designed to take advantage of the volatile nature of RAM disk 240. Any write operations during execution of operating system 242 and any other installed program take place on RAM disk 240. Due to the volatile nature of RAM disk 240, once the system is rebooted or reset any modifications made to the software stored on RAM disk 240, whether made by a legitimate system operation, or by an illegitimate source, such as an unauthorized system intruder, are deleted. The code stored on ROM 230, however, remains unchanged from its original configuration because ROM 230 is a read-only storage medium. Hence, at start up, the system is booted from an intact copy of the operating system originally stored in ROM 230, and any application programs are loaded from original copy of the application program as originally stored in ROM 230. Thus, after every reboot the system returns to the same configuration as specified as the information stored in ROM 230.
Figure 4 is a flow diagram illustrating a method of booting computer 100 from ROM 230, according to one or more embodiments of the invention. When computer 100 is restarted, at step 410, a basic operating system is loaded into the computer system's memory from floppy image 235 stored on ROM 230. In one or more embodiments, the basic operating system is MS-DOS. At step 420, a virtual hard disk is created using the utilities of the basic operating system according to the instructions in floppy image 235. In one or more embodiments, the virtual hard disk is created in the form of RAM disk 240.
Once the virtual hard disk is created, at step 430, operating system image
237 is copied onto the virtual hard disk. In one or more embodiments of the invention, operating system image 237 is stored in ROM 230 in compressed format. In such case, it is decompressed either before, during or after it is copied onto virtual hard disk 240 to form operating system 242. Likewise, depending on the instructions in floppy image 235, one or more other applications (e.g., application 239) stored on ROM 230 are copied onto virtual hard disk 240 and, if appropriate, are decompressed. In embodiments of the invention, in which the entire image of hard drive 220 is stored on ROM 230, the entire image is copied onto RAM disk 240, and, if appropriate, is decompressed. In one or more embodiments, virtual hard disk 240 is assigned a drive letter that allows an advanced operating system to be loaded into the computer system from virtual hard disk 240, using the utilities of the basic operating system. In one or more embodiments, the virtual hard disk 240 is designated as the "C" drive.
At step 440, operating system 242 is loaded from virtual disk 240. At step
450, control of computer system 100 is transferred from the basic operating system installed from floppy image 235 to (the more advanced) operating system 242 installed from RAM disk 240. At step 460, other applications, such as
applications 245 stored on RAM disk 240, are executed on top of operating system 242.
During execution, RAM disk 240 acts as a virtual hard drive for operating system 242 and other running applications 245. Disk write operations are performed on RAM disk 240, not ROM 230. As a result, the software on ROM 230 remains intact in its original form.
Detailed Example Method for Embedding Windows 95 Operating System onto a CD-ROM
In one or more embodiments, Windows 95 is the operating system that is embedded onto CD-ROM storage media.
Figure 5 is a flow diagram illustrating a method of embedding a Windows 95 operating system onto CD-ROM media, according to one or more embodiments of the invention. In the embodiment of Figure 5, the computer system for which Windows 95 is being embedded is a new system for which no operating system has yet been installed.
First, the Windows 95 operating system is installed on a hard drive temporarily connected to the computer system for which the Windows 95 operating system is being embedded. The hard drive is partitioned such that it contains a boot partition, designated the "C" drive, and a second partition, designated the "F" drive.
At step 510, a bootable MSDOS system disk is inserted onto the computer's floppy drive. At step 512, the computer system is booted from the bootable disk, loading a basic operating system, such as MSDOS. At step 514, the "C" hard drive is formatted as a bootable system disk using utilities of the basic operating system (e.g. the "FORMAT/ s" command under MSDOS.)
At step 516, the floppy disk is removed and the computer system is rebooted from the hard drive. At step 518, Windows 95 is installed on the "C" drive in the normal manner, for example using a Windows 95 installation CD- ROM. At step 520, the computer system is rebooted. At step 522, during start
up, any checkboxes for any dialog boxes or windows displaying a message indicating "Display next time Windows boots" or a similar message are unchecked or otherwise deactivated. At step 524, the virtual memory option accessible from the System Properties control panel window under the "Performance" tab, is turned off by checking the "Disable virtual memory (not recommended)" check box and clicking the "OK" button.
At step 526 the computer system is restarted. After the system has rebooted, at step 528, extraneous operating system files not needed for the specific application for which the operating system is being embedded (such as, for example, any internet communication files for an application that does not require internet communications) are deleted from the "C" drive. At step 530, any required drivers needed for the application for which the operating system is being embedded and that were not installed during installation of Windows 95 are installed on the "C" drive. At step 532, any required application software is installed. In the embodiment of Figure 5, the application software is installed in the partition that has been designated the "F" drive. At step 534, it is verified that the application software is operating properly off of the "F" drive.
At step 536, a new boot floppy is formatted by placing a blank floppy disk into the floppy disk drive using the command "FORMAT A:/s." At step 538, the following Windows 95 system files are added to the boot floppy at the root level
(the paths shown in parenthesis indicate where these files may be found on the
"C" drive in one or more embodiments):
(C:\WINDOWS\)HIMEM.SYS
(C:\WINDOWS\COMMAND\)MSCDEX.EXE
(C:\WINDOWS\)RAMDRIVE.SYS
(C:\WINDOWS\)IFSHLP.SYS (C:\WINDOWS\)SETVER.EXE
(C:\WINDOWS\)MSCDEX.EXE
Further, in the embodiment of Figure 5, file compression software, such as PKUNZIP.EXE, version 5 or a similar compression/ decompression program is also copied onto the boot floppy. At step 540, the CONFIG.SYS file on the boot floppy is modified to include the following lines:
DEVICE=HIMEM.SYS
DEVICEHIGH= [name of appropriate CD-ROM driver]
/D:MSCD001 DEVICEHIGH=RAMDRIVE.SYS 32767512/E
Instructions for loading any additional drivers that may be needed are added after the above lines, and are followed by the following commands: DEVICEHIGH=IFSHLP.SYS
DEVICEHIGH=SETVER.EXE
At step 542, the AUTOEXEC.BAT file on the floppy is modified to include the following lines:
©ECHO OFF
CLS
MSCDEX.EXE/D:MSCD001 /L:F»NULL
C: A:PKUNZIP -d -Jhrs F:RAMDISK1 »NULL
In one or more embodiments of the invention, additional batch commands may be inserted after the above described commands, with any system output from such commands being redirected to NULL.
At step 544, the MSDOS.SYS file is copied from the "C" drive to the boot floppy, for example using the following commands:
ATTRIB -R -H -S MSDOS.SYS COPY MSDOS.SYS A: ATTRIB +R +H +S MSDOS.SYS
At step 546, the MSDOS.SYS file that has been copied to the "A" drive is modified, using an appropriate editing program, to include the following lines under the "[Options"] heading:
BootWarn=0 DisableLog=l
In addition, if a "Network=l" entry exists, it is changed to "Network=0."
At step 548, amount of disk space used by Windows 95 is reduced by using a cleaning /uninstaller program such as CLEAN UP. In one or more embodiments, batch files are created that contain batch commands for deleting files that have been identified as not being needed. In one or more embodiments, a floppy disk containing three such batch files (called CLEAN1.BAT, CLEAN2.BAT and CLEAN3.BAT) is inserted in the floppy drive and the following commands are entered:
A:\CLEAN1 A:\CLEAN2 A:\CLEAN3
Next, files are created that will be burned onto the CD-ROM on which the
Windows 95 operating system is being embedded. These files are initially stored on the hard drive, and include images of the boot floppy, Windows 95 operating system as installed on the "C" drive, the application programs installed on the "F" drive, and certain directory and header files needed to make the CD-ROM bootable.
At step 550 an image of the bootable floppy is created and stored on the hard drive. In one or more embodiments, the image is created using a utility such as Norton DISKEDIT as follows:
From the Norton DISKEDIT menu the "Physical disk" option is selected from menu item "Object," the sub-menu "Drive" is selected, and thereafter the "A" drive is selected. Next, from the "Tools" menu, the entry "Write object to" is selected, and the drive path where the floppy image is to be copied to is specified and the name for the floppy image, for example "FLOPPYl.BIN." The "OK" button is selected, and, if queried, the "overwrite" option is the selected.
At step 552 a compressed image of the Windows 95 operating system as installed on the C drive is created using the a compressing utility such as, for example, PKZIP version 2.50. In one or more embodiments of the invention the following command is used for compressing the operating system into a compressed ZIP file:
PKZIP -p -r -Jhrs -whs D:RAMDISK1 C:*
At step 554, a bootable CD directory is created. In embodiments of the invention, to create a bootable CD a file of zeros with the size of exactly 2048 bytes is created. Then the file is altered to appear as follows (except for "XX" which remains "00". The XX is used to indicate a position, as will be explained below.):
Offset 0, hex 0
00000000: 01 0000004761 6D 65 - 63 7261 66 742049 6E ...Gamecraft In 00000010: 636F 72 706F 72 61 74 - 65 64 00 006B FC 55 AA corporated..k.U. 00000020: 88 02 00 00 00 00 01 00 - XX 00 00 00 00 00 00 00
The "88 02" byte indicates that it is a 1.44 MByte floppy. The directory is then written to a file. In one or more embodiments, the file is named "CAT4144.BIN."
At step 556 a CD-ROM image is created of the CD-ROM as a whole. This image will be used to create the actual CD-ROM, using a CD-RW (read-write) CD-ROM drive. To create the CD-ROM image, in one or more embodiments of the invention, the computer system is booted with Windows 95 and the software program Easy-CD pro is started. The "New CD" option is selected from the menu and CAT4144F.BIN, FLOPPYl.BIN, and RAMDISK1.ZIP are selected for being added to the CD being created, for example by dragging the icons for these files from their storage locations to the Easy-CD pro icon.
Next, under the "Volume Information" tab the volume name for the CD being created is changed to WINDOWS 95. Under the "General" tab "Write real ISO image only to . . ." is selected. The location to which the CD image is to be temporarily stored is entered, and the name of the image, for example "WINDOWS.ISO."
At step 558, the CD-ROM image stored in WINDOWS.ISO is altered to make the resulting CD-ROM is bootable. To accomplish this, the system is booted to DOS, and the Norton DISKEDIT program is run to edit the WINDOWS.ISO file (for example by entering the command "DE WINDOWS.ISO at the DOS command prompt). After the DISKEDIT editing window opens, the cursor is positioned at offset 34,816. The file is altered to appear as follows (except for the "YY" entry, which remains "00." The "YY" is used to indicate a position, as explained below): Offset 34.816, hex 8800
00000000: 004344303031 0145 - 4C 20544F 5249544F .CD001.EL TORITO
00000010: 2053504543494649 - 434154494F 4E 0000 SPECIFICATION..
00000020: 0000000000000000 - 0000000000000000
00000030: 0000000000000000 - 0000000000000000 00000040: 00000000000000 YY - 0000000000000000
The catalog position and first file position in the WINDOWS.ISO file are updated as follows. The XX and YY as shown above are used as references to the relative position of the data to be inserted into the file. YY will always be inserted at 8847h, and XX will be inserted at the sector YY + offset 28h. The byte location of sector YY is YY*800h. Under the "Tools, Find. . ." menu of DISKEDIT, a search for CAT4144F.BIN is performed. When found the cursor is placed on the C of CA4144F.BIN. The up arrow is pressed twice, and the right arrow once (Note the four hex values at this location, which is the YY value).
Next, the location of FLOPPY1.BIN within WINDOWS.ISO is located. The cursor is placed on the F of FLOPPYl.BIN. The up arrow is pressed twice and the right arrow once (Note the four hex values at this location, which is the XX value. The cursor is positioned at offset 34,887(8847h). The YY values are entered at this location. The YY value is multiplied with 800h (YY*800h) to get the YY offset in bytes. The cursor is positioned at the YY byte offset plus 28h. The XX values are entered and the modified WINDOWS.ISO file is saved to disk.
At step 580, the WINDOWS.ISO CD-ROM image is written to a blank writable CD-ROM. In an embodiment in which Easy CD pro is used as the CD authoring software, the CD-ROM is written as follows. Windows 95 is booted, and Easy-CD pro is run. The "New CD from ISO" menu option is selected. Under the "General" tab "test before write" option is deselected, and the "close session" option is checked. A blank writable CD is inserted into the burner drive, and the "write" button is pressed. The CD image from WINDOWS.ISO is written to the CD, and a CD-ROM in which the Windows 95 operating system has been embedded according to the present invention is created.
Thus, one or more embodiments of the invention have been described. The storage media, such as floppy disks, hard drives, RAM disks, and CD ROM's, described above are provided by way of example only, it being understood that the present invention has broad application to other types of storage media and /or devices. Likewise, the operating software used in conjunction with the invention can be of any type and is not limited to the example operating systems or other software described above. The invention is defined by the full scope of the following claims.