Here is the brief descriptions of memory chips and their types.
<itemize>
<item> <bf>PROM</bf>:
Pronounced prom, an acronym for programmable read-only memory. A PROM is a memory chip on which data can be written only once. Once a program has been written onto a PROM, it remains there forever. Unlike RAM, PROMs retain their contents when the computer is turned off. The difference between a PROM and a ROM (read-only memory) is that a PROM is manufactured as blank memory, whereas a ROM is programmed during the manufacturing process. To write data onto a PROM chip, you need a special device called a PROM programmer or PROM burner. The process of programming a PROM is sometimes called burning the PROM. An EPROM (erasable programmable read-only memory) is a special type of PROM that can be erased by exposing it to ultraviolet light. Once it is erased, it can be reprogrammed. An EEPROM is similar to a PROM, but requires only electricity to be erased.
<item> <bf>EPROM</bf>:
Acronym for erasable programmable read-only memory, and pronounced e-prom, EPROM
is a special type of memory that retains its contents until it is exposed to
ultraviolet light. The ultraviolet light clears its contents, making it possible to
reprogram the memory. To write to and erase an EPROM, you need a special device called
a PROM programmer or PROM burner. An EPROM differs from a PROM in that a PROM can be
written to only once and cannot be erased. EPROMs are used widely in personal computers
because they enable the manufacturer to change the contents of the PROM before the
computer is actually shipped. This means that bugs can be removed and new versions
installed shortly before delivery.
A note on EPROM technology: The bits of an EPROM are programmed
by injecting electrons with an elevated
voltage into the floating gate of a field-effect transistor
where a 0 bit is desired. The electrons trapped
there cause that transistor to conduct, reading as 0. To erase
the EPROM, the trapped electrons are given enough
energy to escape the floating gate by bombarding the chip with ultraviolet radiation
through the quartz window.
To prevent slow erasure over a period of years from sunlight and
fluorescent lights, this quartz window is covered with an opaque label in normal use.
<item> <bf>EEPROM</bf>:
Acronym for electrically erasable programmable read-only memory. Pronounced double-e-prom or e-e-prom, an EEPROM is a special type of PROM that can be erased by exposing it to an electrical charge. Like other types of PROM, EEPROM retains its contents even when the power is turned off. Also like other types of ROM, EEPROM is not as fast as RAM. EEPROM is similar to flash memory (sometimes called flash EEPROM). The principal difference is that EEPROM requires data to be written or erased one byte at a time whereas flash memory allows data to be written or erased in blocks. This makes flash memory faster.
<item> <bf>FRAM</bf>:
Short for Ferroelectric Random Access Memory, a type of non-volatile memory developed by Ramtron International Corporation. FRAM combines the access speed of DRAM and SRAM with the non-volatility of ROM. Because of its high speed, it is replacing EEPROM in many devices. The term FRAM itself is a trademark of Ramtron.
<item> <bf>NVRAM</bf>:
Abbreviation of Non-Volatile Random Access Memory, a type of memory that retains its contents when power is turned off. One type of NVRAM is SRAM that is made non-volatile by connecting it to a constant power source such as a battery. Another type of NVRAM uses EEPROM chips to save its contents when power is turned off. In this case, NVRAM is composed of a combination of SRAM and EEPROM chips.
<item> <bf>Bubble Memory</bf>:
A type of non-volatile memory composed of a thin layer of material that can be easily magnetized in only one direction. When a magnetic field is applied to circular area of this substance that is not magnetized in the same direction, the area is reduced to a smaller circle, or bubble. It was once widely believed that bubble memory would become one of the leading memory technologies, but these promises have not been fulfilled. Other non-volatile memory types, such as EEPROM, are both faster and less expensive than bubble memory.
<item> <bf>Flash Memory</bf>:
A special type of EEPROM that can be erased and reprogrammed in blocks instead of one byte at a time. Many modern PCs have their BIOS stored on a flash memory chip so that it can easily be updated if necessary. Such a BIOS is sometimes called a flash BIOS. Flash memory is also popular in modems because it enables the modem manufacturer to support new protocols as they become standardized.
For a list of <bf>EPROM burner manufacturers</bf> visit the Yahoo site and
go to economy->company->Hardware->Peripherals->Device programmers.
<itemize>
<item> Yahoo URL for EPROMs is at <url url="http://dir.yahoo.com/Business_and_Economy/Companies/Computers/Hardware/Peripherals/Device_Programmers/">
</itemize>
<itemize>
<item> <url url="http://www.artbv.nl/ " name="Advanced Research Technology B.V"> - development, production and sales of electronic programmer equipment; development of hardware and software.
<item> <url url="http://www.advin.com " name="Advin Systems Inc."> - PC-based device programmers that support the latest in package types and device technologies.
<item> <url url="http://www.arlabs.com " name="Andromeda Research Labs"> - manufactures a portable eprom and device programming system.
<item> <url url="http://www.bcmicro.com/" name="B and C Microsystems, Inc"> - offers test and duplication/programming equipment for PCMCIA (PC) Cards, ISA/PCI Cards, SIMMs, Memory Devices (including FLASH), PLDs.
<item> <url url="http://www.bytek.com " name="Bytek"> - designs, develops, manufactures and markets micro-processor-based, modular electronic systems used to program and test semiconductor devices. Product line includes the ChipBurner.
<item> <url url="http://www.logicaldevices.com/ " name="Concentrated Programming Ltd"> - offers a full range of device programming solutions.
<item> <url url="http://www.dataman.com/ " name="Dataman Programmmers Ltd."> - manufacture of hand-help EPROM programmer/emulator. Also sell PC-based programmers, and Gang-Pro programmers.
<item> <url url="http://www.generaldevice.com/ " name="General Device Instruments"> - IC Device programmers. Universal and Gang programmers for Pld, Flash, microcontrollers, Proms, EEproms, Memory, Epld, Mach and many other ic devices.
<item> <url url="http://hilosystems.com.tw " name="HI-LO System Research Co., Ltd."> - manufacturer of universal and gang device programmers.
<item> <url url="http://www.icetech.com/ " name="ICE Technology"> - EPROM and universal device programmers which support memories, microcontrollers, and programmable logic devices.
<item> <url url="http://www.imtest.com " name="International Microsystems Inc"> - High speed reliable gang programmer. (PROM, FLASH, Microcontroller, PCMCIA memory card).
<item> <url url="http://www.jedmicro.com.au " name="JED Microprocessors Pty. Ltd."> - plugs into a PC printer port D25 connector, and programs any 28-pin or 32-pin EPROM and FLASH device.
<item> <url url="http://www.logicaldevices.com " name="Logical Devices, Inc"> - device programming for PLDs, FPGAs, PROMs, microcontrollers. Producers of CUPL compiler for programmable logic and the ALLPRO and Chipmaster device programmer.
<item> <url url="http://www.mcl.dk " name="MCL Systems"> - new method not only for programming but also for developing your new hardware with Integrated Controller Unit. And you don't need to be an expert.
<item> <url url="http://www.mqp.com " name="MQP Electronics"> - manufacturer of universal device programmers, gang programmers, production software, and package converters. High thoughput and reliability.
<item> <url url="http://www.npps.com/ " name="NP Programming Services"> - provides programming for memory and logic parts.
<item> <url url="http://www.progauto.com " name="Program Automation, Inc."> - independent service company specializing in high volume PROM programming, including flash I/Cs.
<item> <url url="http://www.stagusa.com " name="Stag Programmers Inc"> - manufacturer of prom and logic programmers, production handling equipment and UV erasers.
<item> <url url="http://www.sunriseelectronics.com " name="Sunrise Electronics"> - universal device programmers, gang and in-circuit programmers with life time support.
<item> <url url="http://www.sg.com.tw " name="System General Co."> - Device Programmer, EPROM Writer and IC Tester
<item> <url url="http://www.tribalmicro.com " name="Tribal Microsystems"> - universal and gang device programmers, 8051 and EPROM emulators, test and burn-in sockets and production sockets.
<chapt>Introduction to Network Booting and Etherboot
-->
<sect>Introduction to Network Booting and Etherboot
<p>
This chapter is written by Ken Yap
<htmlurl url="mailto:ken.yap@acm.org"
name="ken.yap@acm.org">
and explains how to bootstrap your computer from a program stored in non-volatile memory without accessing your hard disk. It is an ideal technique for maintaining and configuring a farm of linux boxes.
<!--
*******************************************
************ End of Section ***************
*******************************************
<chapt> What is Network booting?
-->
<sect1> What is Network booting?
<p>
Network booting is an old idea. The central idea is that the computer has some bootstrap code
in non-volatile memory, e.g. a ROM chip,
that will allow it to contact a server and obtain system files over a network link.
<!--
*******************************************
************ End of Section ***************
*******************************************
<chapt> How does it work
-->
<sect1> How does it work
<p>
In order to boot over the network, the computer must get
Consider a diskless computer (DC) that has a network boot ROM. It may be one of several identical DCs. How can we distinguish this computer from others? There is one piece of information that is unique to that computer (actually its network adapter) and that is its Ethernet address. Every Ethernet adapter in the world has an unique 48 bit Ethernet address because every Ethernet hardware manufacturer has been assigned blocks of addresses. By convention these addresses are written as hex digits with colons separating each group of two digits, for example - <bf>00:60:08:C7:A3:D8</bf> .
The protocols used for obtaining an IP address, given an Ethernet address, are called <bf>Boot Protocol (BOOTP)</bf> and <bf>Dynamic Host Configuration Protocol (DHCP)</bf>. DHCP is an evolution of BOOTP. In our discussion, unless otherwise stated, anything that applies to BOOTP also applies to DHCP. (Actually it's a small lie that BOOTP and DHCP only translate Ethernet addresses. In their foresight, the designers made provision for BOOTP and DHCP to work with any kind of hardware address. But Ethernet is what most people will be using.)
An example of a BOOTP exchange goes like this:
<bf>DC:</bf> Hello, my hardware address is <bf>00:60:08:C7:A3:D8</bf>, please give me my IP address.
<bf>BOOTP server:</bf> (Looks up address in database.) Your name is aldebaran, your IP address is 192.168.1.100, your server is 192.168.1.1, the file you are supposed to boot from is /tftpboot/vmlinux.nb (and a few other pieces of information).
You may wonder how the DC found the address of the BOOTP server in the first place. The answer is that it didn't. The BOOTP request was broadcast on the local network and any BOOTP server that can answer the request will.
After obtaining an IP address, the DC must download an operating system image and execute it. Another Internet protocol is used here, called <bf>Trivial File Transfer Protocol (TFTP)</bf>. TFTP is like a cut-down version of FTP---there is no authentication, and it runs over User Datagram Protocol (UDP) instead of Transmission Control Protocol (TCP). UDP was chosen instead of TCP for simplicity. The implementation of UDP on the DC can be small so the code is easy to fit on a ROM. Because UDP is a block oriented, as opposed to a stream oriented, protocol, the transfer goes block by block, like this:
<tscreen><verb>
DC: Give me block 1 of /tftpboot/vmlinux.nb.
TFTP server: Here it is.
DC: Give me block 2.
</verb></tscreen>
and so on, until the whole file is transferred. Handshaking is a simply acknowledge each block scheme, and packet loss is handled by retransmit on timeout. When all blocks have been received, the network boot ROM hands control to the operating system image at the entry point.
Finally, in order to run an operating system, a root filesystem must be provided. The protocol used by Linux and other Unixes is normally <bf>Network File System (NFS)</bf>, although other choices are possible. In this case the code does not have to reside in the ROM but can be part of the operating system we just downloaded. However the operating system must be capable of running with a root filesystem that is a NFS, instead of a real disk. Linux has the required configuration variables to build a version that can do so.
<!--
*******************************************
************ End of Section ***************
*******************************************
<chapt>Netbooting in Practice
-->
<sect1> Netbooting in Practice
<p>
Net Loader is a small program that runs as a BIOS extension, usually on
an EPROM on the NIC. It handles the BOOTP query and TFTP loading
and then transfers control to the loaded image.
It uses TCP/IP protocols but the loaded image doesn't have to be Linux. The loaded image can be anything, even DOS.
They can also be loaded from a floppy for testing and for temporary setups.
Besides commercial boot ROMs, there are <bf>TWO</bf> sources for free packages for network booting.
Free implementations of TCP/IP net loaders are -
<enum>
<item> <bf>ETHERBOOT</bf> <url url="http://www.slug.org.au/etherboot/"> and
Etherboot uses built-in drivers while Netboot uses Packet drivers.
First you have to ascertain that your network card is supported by Etherboot or Netboot. Eventually you have to find a person who is willing to put the code on an EPROM (Erasable Programmable Read Only Memory) for you but in the beginning
you can do <bf>network booting from a floppy</bf>.
To create a boot floppy, a special boot block is provided in the distribution. This small 512 byte program loads the disk blocks following it on the floppy into memory and starts execution. Thus to make a boot floppy, one has only to concatenate the boot block with the Etherboot binary containing the driver for one's network card like this:
<code>
# cat floppyload.bin 3c509.lzrom > /dev/fd0
</code>
Get the nfsboot package (the package is available from your favourite
linux mirror site in the /pub/Linux/system/Linux-boot directory). It
contains a booteprom image for the network cards (like wd8013) which can be directly
burned in. See also the
LTSP site at <url url="http://www.ltsp.org">
Before you put in the network boot floppy, you have to set up three services on Linux -
<enum>
<item> BOOTP (or DHCP)
<item> TFTP and
<item> NFS.
</enum>
You don't have to set up all three at once, you can do them step by step, making sure each step works before going on to the next.
<sect2> Bootp
<p>
Install Bootp. See bootp*.rpm on Redhat linux cdrom.
See also LTSP site for RPM packages at <url url="http://www.ltsp.org">.
See also unix manual pages 'man 5 bootptab', 'man 8 bootpd', 'man 8 bootpef', 'man 8 bootptest'.
You then have to ensure that this server is waiting for bootp requests.
The daemon can be run either directly by issuing command
<code>
bootpd -s
</code>
Or by using inetd
edit the file /etc/inetd.conf and put a line like this:
global.prof is a general template for host entries, where
<itemize>
<item> sm field contains the subnet mask
<item> ds field contains the address of the Domain Name Server
<item> gw field contains the default gateway address
<item> ht field contains the lan media hardware type
<item> bf field contains the name of the boot file
</itemize>
After this, every machine must have a line:
<itemize>
<item> the first field contains the host name,
<item> hd field contains the directory of the bootfile,
<item> the global template can be included with the tc field,
<item> ha field contains the hardvare address of the ethernet card,
<item> ip field contains the assigned ip address.
</itemize>
Now boot the DC with the floppy and it should detect your Ethernet card and broadcast a BOOTP request. If
all goes well, the server should respond to the DC with the information required. Since /tftpboot/vmlinux.nb
doesn't exist yet, it will fail when it tries to load the file. Now you need to compile a special kernel,
one that has the option for mounting the root filesystem from NFS turned on. You also need to enable the
option to get the IP address of the kernel from the original BOOTP reply. You also need to compile the
Linux driver for your network adapter into the kernel instead of loading it as a module. It is possible
to download an initial ramdisk so that module loading works but this is something you can do later.
You cannot install the zImage resulting from the kernel compilation directly. It has to be turned into a tagged image. A tagged image is a normal kernel image with a special header that tells the network bootloader where the bytes go in memory and at what address to start the program. You use a program called mknbi-linux to create this tagged image. This utility can be found in the Etherboot distribution. After you have generated the image, put it in the /tftpboot directory under the name specified in /etc/bootptab. Make sure to make this file world readable because the tftp server does not have special privileges.
<sect2> Tftp
<p>
For TFTP, see tftp*.rpm on Redhat Linux cdrom.
TFTP (Trivial File Transfer Protocol) is a file transfer protocol,
such as ftp, but it's much simpler to help coding it in EPROMs. TFTP
can be used in two ways:
<itemize>
<item> <bf>Simple tftp:</bf> means that the client can acces to your whole file
system. It's simpler but it's a big security hole (anyone can get
your password file via tftp).
<item> <bf>Secure tftp:</bf> the tftp server uses a chroot.2 system call to change
it's own root directory. Anything outside the new root directory
will be completely inaccessible. Because of the chroot dir becomes
the new root dir, the hd filed in the bootptab must reflect the new
situation. For example:
when using insecure tftp, the hd field
contains the full path to the boot directory:
/export/root/machine1. When using secure tftp whith /export as
root dir, then /export becomes / and the hd field must be
The rw access is needed for various system services. The no_root_squash attribute prevents the NFS system from mapping root's ID to another one. If this is not specified, then various daemons and loggers will be unhappy.
Start or restart the NFS services (rpc.portmap and rpc.mountd) and retry the
diskless boot. If you are successful, the kernel should be able to mount a root
filesystem and boot all the way to a login prompt. Most likely, you will find
several things misconfigured. Most Linux distributions are oriented towards disked
operation and require a little modification to suit diskless booting. The most common
failing is reliance on files under /usr during the boot process, which is
normally imported from a server late in the boot process. Two possible solutions are -
<enum>
<item> Provide the few required files under a small /usr directory on
the root filesystem, which will then be overlaid when /usr is imported, and
<p>
<item> Modify the paths to look for the files in the root filesystem. The
files to edit are under /tftpboot/192.168.1.100 (remember, this is
the root directory of the DC).
</enum>
You may wish to mount other directories from the server, such as /usr (which can be exported read-only).
<sect2> Burn EPROM
<p>
When you are satisfied that you can boot over the network without any problems, you
may wish to put the code on an EPROM.
<!--
*******************************************
************ End of Section ***************
*******************************************
<chapt> Uses of Network booting
-->
<sect1> Uses of Network booting
<p>
X-terminals are one natural use of network booting. The lack of a disk in the terminal makes it quieter and contributes to a pleasant working environment. The machine should ideally have 16MB of memory or more and the best video card you can find for it. This is an ideal use for a high-end 486 or low-end Pentium that has been obsoleted by hardware advances. Other people have used network booting for clusters of machines where the usage is light on the DC and does not warrant a disk, e.g. a cluster of classroom machines.
<!--
*******************************************
************ End of Section ***************
*******************************************
<chapt> For more information
-->
<sect1> For more information
<p>
Your first stop should be the Etherboot home page:
<item> How to make an <url url="http://www.menet.umn.edu/~kaszeta/unix/xterminal/index.html" name="X Window Terminal"> out of your old or outdated PC.
<item> List of <url url="http://www.slug.org.au/NIC/index.html" name="jumper settings"> for various network cards. This page also contains many other good links.
<item> <url url="http://sites.inka.de/lina/freefire-l/tools.html" name="Freefire"> is the home page of the Freefire project, which lists many resources for network security issues.
</itemize>
<!--
*******************************************
************ End of Section ***************
*******************************************
-->
<sect> Related URLs
<p>
<itemize>
<item> See 'Diskless-root-NFS-HOWTO' at <url url="http://metalab.unc.edu/LDP/HOWTO/Diskless-root-NFS-HOWTO.html">