home *** CD-ROM | disk | FTP | other *** search
Text File | 1999-03-02 | 128.2 KB | 3,499 lines |
- Linux Remote-Boot mini-HOWTO: Configuring Remote-Boot
- Workstations with Linux, DOS, Windows 95/98 and Win¡
- dows NT
- Marc Vuilleumier Stⁿckelberg, David Clerc
- v3.19, February 1999
-
- This document describes how to set up a very robust and secure server-
- based configuration for a cluster of PCs, allowing each client to
- choose at boot-time which operating system to run. The key of this
- configuration is a bootprom based program, which let the user choose
- at boot time one of several boot images. This configuration is appli¡
- cable using InCom TCP/IP Bootprom (add-on for most network cards) or
- any PXE-compliant Boot ROM (ready-to-use in most recent PC with built-
- in network cards). The most up-to-date version of this document, with
- hypertext links to downloadable software and other related materials,
- can be found at the address http://cuiwww.unige.ch/info/pc/remote-
- boot/howto.html. Linuxdoc-SGML, DVI and PostScript versions are
- available in the same directory. If you are interested in getting
- info on further developpments, send an E-mail to
- David.Clerc@cui.unige.ch.
- ______________________________________________________________________
-
- Table of Contents
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1. Disclaimer and Copyrights
-
- 2. What has changed...
-
- 2.1 ...since version 2.x ?
- 2.2 ...since version 3.0 ?
-
- 3. Introduction
-
- 3.1 Boot ROM and Hard-disk
- 3.2 The Network
- 3.3 How it Works
- 3.4 Related non-commercial documentations
-
- 4. The Configuration How-To
-
- 4.1 Server-side configuration
- 4.1.1 Setting up DHCP
- 4.1.2 Setting up a Proxy DHCP
- 4.1.3 Setting up TFTP
- 4.2 Client-side configuration
- 4.3 Setting Up the Boot Process
- 4.3.1 Discovering BpBatch
- 4.4 Setting Up Linux
- 4.4.1 Configuring the Client
- 4.4.2 Testing the Configuration
- 4.4.3 Building the Disk Image
- 4.4.4 System Maintenance and Upgrades
- 4.5 Setting up DOS 6 and Windows 3.1
- 4.5.1 Building the Disk Image
- 4.5.2 Adapting the configuration for other machines
- 4.5.3 System Maintenance and Upgrades
- 4.6 Setting up Windows 95
- 4.6.1 Setting up a Stand-Alone Client
- 4.6.2 Building the Disk Image
- 4.6.3 Adapting the configuration for other Machines
- 4.6.4 System Maintenance and Upgrades
- 4.7 Setting up Windows NT
- 4.7.1 Building the Disk Image
- 4.7.2 System Maintenance and Upgrades
- 4.8 Troubleshooting (FAQ)
-
- 5. Remote-Boot Tools Reference Manual
-
- 5.1 BpBatch, MrBatch and MrZip
- 5.1.1 Command Line Arguments
- 5.1.2 Syntax rules
- 5.1.3 The Cache Filesystem
- 5.1.4 Special variables
- 5.1.5 Monitoring commands
- 5.1.6 Control commands
- 5.1.7 Keyboard-related commands
- 5.1.8 Text output commands
- 5.1.9 Graphics output commands
- 5.1.10 Security-related commands
- 5.1.11 Disk-related commands
- 5.1.12 Boot commands
- 5.1.13 National language support
- 5.1.14 Commands specific to MrZip
- 5.2 NoBreak.sys
-
- 6. Special TFTP Servers
-
- 6.1 Incom Enhanced TFTP Server
- 6.2 Linux Enhanced TFTP Server
- 6.3 The Security Gateway
- 6.4 The Broadcast TFTP Server
-
-
- ______________________________________________________________________
-
- 1. Disclaimer and Copyrights
-
- This document and the related software are provided as is to the Linux
- and Internet community, with no form of warranty. Please note that
- some operations related in this document may destroy the content of
- your hard-disk. We assume no liability for any use, correct or not, of
- this document and of the related software.
-
- You are free to do anything you want with the remote-boot tools as
- long as you do not make money by selling them or by distributing them
- with a commercial product. If you want to commercialize a product
- derived from these tools, please contact the authors first to make a
- commercial agreement. These remote-boot tools will remain available
- for free forever, but we may authorize derived commercial tools.
-
- These provisions shall be interpreted under and in accordance with the
- laws of Switzerland, canton of Geneva. All disputes, defenses,
- controversies or claims arrising in conncetion with this document and
- the related software, shall be subject to the exclusive juridiction of
- the courts of the canton of Geneva, Switzerland.
-
- If you like this program, you can send us a Postcard and/or make a
- gift to the International Committee of the Red Cross (ICRC) or to the
- UNICEF.
-
-
- 2. What has changed...
-
-
- 2.1. ...since version 2.x ?
-
- To say it frankly, almost everything. The underlying concepts are the
- same, but the software part has been completly redesigned to overcome
- the limitations of previous versions and to make it easier to use. An
- highlight of the new features :
-
- ╖ All functions (bpmenu, bpclean, bpunzip) are encompassed in a
- single program.
-
- ╖ The program can run not only from the boot rom, but also under DOS,
- Windows 95 and Linux.
-
- ╖ The program can now restore images of FAT16, FAT32 and EXT2FS
- partitions. If someone want to write NTFS support, let me know...
- For now, NT users still have to stick to FAT16.
-
- ╖ The program can not only restore disk images but also add and patch
- individual files in order to customize the client behaviour.
-
- ╖ Disk images are not any more bound to 87 MB. They are now file-
- system independant archives.
-
- ╖ We provide a mean for automatically downloading a disk image to an
- arbitrary big number of clients at the same time (broadcast).
-
- ╖ You can now write your own secure boot script, that will determine
- the behaviour of the machine before the real boot.
-
- ╖ You can now boot any Linux kernel, without applying any patch. Its
- is also possible to provide a command line and a ramdisk image.
-
- ╖ You can authenticate users at boot time using a Unix, NT or Radius
- server and deny them any access to the machine.
-
- ╖ Full national language support is included.
-
- ╖ And many, many other new features...
-
-
- Is there a program for converting old archives to the new format ?
- No, because the internal format is radically different. But you
- can easily do the conversion by yourself:
-
- 1. Boot an old image (unzip it to your disk)
-
- 2. Remove calls to the old unzipreg utility and replace them by
- the adequate patch commands (it is very easy, see the
- detailed instructions below)
-
- 3. Run the new mrzip program to create a new-style disk image
-
- 2.2. ...since version 3.0 ?
-
- Version 3.0 was the beta-release. A dozen of sites around the world
- have tested it during a month and given much of their time to help us
- finding bugs and to suggest enhancements. Thanks to all of them for
- their patience, and in particular to Maciek Uhlig, Dick Velders and
- Jeff Teeters.
-
- A few minor features have been added since 3.01, such as support for
- diskless Linux boot (by disabling the cache).
-
- Version 3.10 introduced compatibility with Intel's Wired for
- Management 1.1a NetPC standard. The tools now work with any PXE-
- compliant boot ROM (as are most on-board boot ROMs) available today.
- Thanks to InCom GmbH for giving us the PXE bootprom that permitted
- this developpment. We also succesfully tested the tools with the PXE
- Boot ROM that I found incidentally in my Dell computer with onboard
- network card (called LanDesk Service Agent).
-
- Version 3.11 to 3.12 added UNIX server-side tools (a PXE Proxy DHCP
- server for Solaris and Linux, and an enhanced TFTP server for Linux),
- as well as detailled informations on server-side setup and the PXE
- booting process.
-
- Version 3.13 added Advanced Power Management support (PowerOff
- command).
-
- Version 3.14 added minor enhancements and some corrections. We fixed a
- problem with the terminal under RedHat 5.1, and another problem in the
- syntax of the "if" command. We added some features suggested by the
- Laboratori de Cαlcul de la Facultat d'Informαtica de Barcelona (LCFIB)
- :
-
- ╖ A new APM variable let you know if your system support the Advanced
- Power Management (i.e it supports the poweroff command).
-
- ╖ A "beep" command.
-
- ╖ A new parameter to DrawWindow, to include a title at the window
- creation. You can now do DrawWindow 200 200 400 200 "Title".
-
- Version 3.15 added full VESA support. BpBatch now support several
- video modes, to accomodate old computers not being able to display
- 800x600 graphics. A new parameter has been added to InitGraph to
- specify the video mode, and a list of detected video mode can be
- retrieved from the new VESA-Modes variable.
- Version 3.16 fixes the following bugs:
-
- ╖ "Malloc failed" during the Fullunzip process of a multiple
- fragments image. Many thanks to Christian Meyer for his
- collaboration.
-
- ╖ A bug which prevented the linux version of MrBatch to properly
- fullunzip images. This bug was located in the low-level functions
- of MrBatch, so it may fix other problems encountered in the linux
- version of MrBatch. Many thanks to Jeff Teeters for his
- collaboration.
-
- ╖ An error in the codepage translation tables. This bug was found by
- the Laboratori de Cαlcul de la Facultat d'Informαtica de Barcelona
- (LCFIB). You can find the bug report in the BpBatch forum.
-
- Version 3.17 adds some minor features and fixes bugs:
-
- ╖ Fullunzip was turning Extended Memory off
-
- ╖ Booting on the RedHat boot disk now works
-
- ╖ When extracting images with a large number of directories, the
- resulting FAT file system was corrupted.
-
- ╖ We added retries to text TFTP transfers. BpBatch will now retry
- three times before saying "Could not transfer the file".
-
- ╖ Timestamps are now correctly updated in FAT. (thank to Francis
- Chan)
-
- Version 3.18 fixes a bug with the IncrUnzip function. Thanks to Gary
- Pike for its collaboration.
-
- Version 3.19 fixed a bug in the error handling of the delete command
- on ext2fs, as well as the inappropriate handling of names starting
- with A: under Linux. The following new features were also added:
-
- ╖ A new if valid disk:partition syntax can be used to check if a
- partition has been formatted
-
- ╖ FAT32 disk images are now fully functional (they now boot properly)
-
- ╖ Linux EXT2 partitions bigger than 2 GB are now supported
-
- ╖ Linux Swap partitions bigger than 128 MB are now supported (this
- feature needs a recent kernel, at least 2.1.x)
-
- ╖ FullUnzip is now also possible without a cache partition, by
- setting CacheNever to "ON". This might be usefull for a unique
- installation, but is not recommended in general is it results in a
- high network load.
-
- Thanks to Ruben Schattevoy for its help and contributions to this
- release.
-
-
- 3. Introduction
-
- The configuration described here was developped since Summer 1996 at
- the CUI, University of Geneva. The Computer Science Department uses
- several servers and a number of PCs, which fall into two classes:
-
- ╖ computers devoted to students
-
-
- ╖ computers devoted to research and teaching assistants
-
- We developped the current configuration with the following aims:
-
- ╖ Every computer should be able to run under Linux, DOS, Windows 3.1,
- Windows 95 or Windows NT. One should be able to choose the desired
- operating system for each session.
-
- ╖ All softwares, including operating systems, should be take from the
- server, in order to facilitate the installations and upgrades.
-
- ╖ Clients computers should be able to run without any write-access on
- the server (for security reasons), except for their home directory.
-
- ╖ Client-side configuration should be reduced to its very minimum.
- Clients should automatically get their IP configuration parameters
- from the server, and this information should be located in a single
- file, used for all operating systems.
-
- ╖ Since almost every computer now has a hard-disk, clients should be
- able to take profit of it for reducing network load and as
- temporary storage space for the user.
-
- ╖ Users must have a login to be able to use any of the computers.
-
- ╖ The login should be the same for all operating system and should
- let the user access its unique home directory, common to all
- operating systems.
-
- ╖ Student (and secretary :-) computers should be fully cleaned up at
- each start. That is, the PC should always look like if it were just
- installed.
-
- ╖ Every computer has to be protected from virus attacks.
-
- These constraints lead us to base our configuration on bootprom
- tools. We first developped new tools for the excellent TCP/IP
- Bootprom from InCom GmbH. Now that a standard for preboot
- execution environments as finally emerged, we ported the tools so
- that it now also works for any PXE-compliant bootprom. PXE boot
- roms, also called LanDesk Service Agent, are now distributed with
- almost all on-board network adapter. For more info on PXE and
- Intel Wired for Management standard in general, read from
- http://www.intel.com/managedpc.
-
-
- 3.1. Boot ROM and Hard-disk
-
- Bootproms exist for quite a long time, but until recently, they were
- solely used with diskless computers. Since 1996, this How-to has been
- claiming that bootproms are even more interesting for computers which
- have a local harddisk, since they allow to take profit of both sides:
-
- ╖ A boot rom make the configurations more robust, since it ensure
- that the computer will always boot the same way, no matter any
- virus or partition table crash. It can be used, as we did, to
- cleanup the harddisk even before the operating system is loaded.
-
- ╖ A local harddisk make the configuration more efficient, since it
- can reduce the network trafic through caching, and allows for
- efficient swap.
-
- Today, we have the pleasure to see that all computer manufacturers
- have come to the same point and provide boot roms as part of new
- computer standards.
-
- Note that you can still use the tools described below in an old
- fashioned way, that is as a simple kernel/ramdisk loader, even for
- diskless computers. However, we do not encourage this use.
-
-
- 3.2. The Network
-
- The University of Geneva owns a class B domain, subdivided into
- several subnets. The CUI uses four subnets, among them one is
- dedicated to students.
-
- Originally, our PCs were concerned about two network protocols: IPX
- and IP. On the IPX side, we used a single Novell Netware 3 server for
- sharing software and users files for DOS and Windows. On the IP side,
- we used a SUN server for sharing software and users partitions for
- Linux, with NFS.
-
- In our latest configuration, we do not any more use IPX. There is a
- single Unix server (which could be Linux as well as a SUN), sharing
- software and user files using NFS for Linux clients and using SMB
- (NetBIOS) over TCP/IP for Dos and Windows clients. In this way, we
- have a single home directory used by all operating systems.
-
-
- 3.3. How it Works
-
-
- 1. When a client PC is turned on, it first performs the traditional
- system checks before the TCP/IP Bootprom or PXE Boot ROM takes the
- control.
-
- 2. The bootprom issues a BOOTP/DHCP request in order to get its IP
- configuration parameters.
-
- 3. If the server knows the PC issuing the request, it will send back a
- BOOTP/DHCP reply with informations such as the client's IP address,
- the default gateway, and which bootdisk image to use.
-
- 4. In case of a PXE boot ROM, there might be some more exchanges
- between the client and the server to determine installation
- parameters.
-
- 5. The bootprom then downloads the boot image from the server using
- the TFTP protocol. The boot image happens to be a small program
- called bpbatch, our boot-time batch file interpreter.
-
- 6. The batch interpreter is started. At this time, it is almost alone
- in the computer memory. There is no operating system loaded, except
- the preboot execution environment (offered by the Boot ROM).
-
- 7. The batch interpreter look in the BOOTP/DHCP reply for command-line
- options, and in particular for the name of the batch to execute.
-
- 8. According to the instructions in the batch file, it will for
- instance:
-
- a. Load a national keyboard mapping
-
- b. Authenticate the user according to a remote server (Unix, Radius
- or Windows NT)
-
- c. Let the user choose between the available operating systems
-
- d. According to the operating system choosen, repartition the hard-
- disk and quick-format some partitions
-
- e. Check if an up-to-date compressed image of the selected OS is
- present at the end of the disk. If not, it download it using
- TFTP
-
- f. Uncompress the selected OS to the main partition
-
- g. If the selected OS is Linux, load a kernel and start it
-
- h. If the selected OS is DOS or Windows, simply let the computer
- boot on its fresh new hard-disk
-
- For DOS and Windows 3.1, we use the freely available Microsoft Lan¡
- Manager for DOS (search the network for the mirror nearest to you;
- the distribution consists of three files named disk1 to disk4) as
- SMB client. Microsoft LanManager supports dynamic configuration
- using DHCP. After logging in, the user is faced to DOS, and can
- start Windows 3.1 by typing the traditional win command. Note that
- at this point, DOS and Windows 3.1 appear to be installed locally.
-
- For Windows 95 and Windows NT, we also use Microsoft SMB client
- (called Client for the Microsoft Network), that supports dynamic
- configuration using DHCP. We reduce network load using Shared LAN
- Cache, a nice and powerful network-to-disk cache program.
-
- Students computers can be turned off the hard way at any time with¡
- out risks, since the hard disk is reinitialized at each start.
-
- For "safe" computers (ie. for assistants computers), once the computer
- has been booted once using the above described system, the boot script
- simply redirect the boot to the local hard-disk, without cleaning it
- again. This allow users to leave data on their local hard disk. But
- whenever the configuration gets corrupted, the user can simply choose
- from the boot menu in order to have a fresh installation.
-
-
- 3.4. Related non-commercial documentations
-
- This configuration has been successfully reproduced at several places
- around the world. A few people have written some hints and tricks that
- complement this How-To. If you did so and that your page is not
- already referenced in this documentation, please send an e-mail to
- Marc.VuilleumierStuckelberg@cui.unige.ch. And if you experience
- problems while reproducing this configuration, have a look at these
- pages !
-
- ╖ http://www.br.fgov.be/RESEARCH/INFORMATICS/info/bootp.html, by
- Alain Empain of the Belgium National Botanic Garden. Many useful
- sample scripts, and a nice PERL program to automatically generate
- graphic menus and corresponding HTML documentation from a higher
- level description.
-
- ╖ http://www.katedral.se/system/elevsyst, by Johan Carlstedt of The
- Cathedral School of Uppsala, Sweden. At this day, the
- configuration described at this place is still based on the
- previous version of the remote-boot tools. However, almost
- everything remains applicable, given a few changes.
-
- ╖ http://vitoria.upf.tche.br/~fred/, in portuguese, by Frederico
- Goldschmidt of the Passo Fundo University, Brasil.
-
- ╖ http://www.etse.urv.es/~larinyo, in spanish, by Lluis Arino, of
- the Escola Tecnica Superio d'Enginyeria, Spain.
-
- You can also send me your BpBatch script if you want me to include it
- in the sample scripts collection.
-
- 4. The Configuration How-To
-
- First, arrange to have the following two machines within arm's reach:
-
- ╖ the server, usually a Unix or Windows NT machine
-
- ╖ the client, a PC with a bootprom enabled, and nothing valuable on
- the hard disk.
-
- If you want to test the configuration but you do not yet have a
- bootprom, you can download the TCP/IP BootProm demo diskette from
- InCom GmbH at http://www.incom.de. This diskette will make your
- computer behave like if it had a TCP/IP Bootprom plugged in.
-
- If you already have a Boot ROM, you need to enable it. If you are
- using Incom TCP/IP Bootprom, you can do that using a special program
- from your network card manufacturer. If you have a PXE Bootprom, you
- can do it simply from BIOS setup, by changing the default boot device.
-
- For student computers, we configured the boot on network first, and
- disabled hard-disk and floppy-disk boot. For assistant computers, we
- also configured network-boot first, but we allow hard-disk and floppy-
- disk boot.
-
-
- 4.1. Server-side configuration
-
- On the server, you will need the following services:
-
- 1. A BOOTP/DHCP server
-
- 2. May be a Proxy DHCP server
-
- 3. A TFTP server
-
- Note for PXE Boot ROM users: We found after severals hours of
- tedious search that PXE Boot ROMs with version before 0.99 do not
- follow the IP protocol and discard all packets that have the Don't
- Fragment (DF) flag set. That means, you will have to disable Path
- MTU Discovery on the server, or the Boot ROM will not see any of
- its packets. On Solaris, use ndd /dev/ip ip_path_mtu_discovery to
- see if you have it enabled and ndd -set /dev/ip
- ip_path_mtu_discovery 0 to disable it. However, this fix only
- works for non-broadcast packets (ask SUN why...). That means, it
- will work for TFTP but not for DHCP :-(. Intel has recently fixed
- this bug, and if you bought your computer after June 1998, you
- surely have a corrected PXE implementation.
-
-
- 4.1.1. Setting up DHCP
-
- The role of the DHCP server is to give to the client an IP address and
- to make it load the file named bpbatch.P from the TFTP server. DHCP
- is a superprotocol over BOOTP. If you are using InCom TCP/IP Bootprom,
- you may live without DHCP (using an old BOOTP server).
-
- On Windows NT, you will probably use the native DHCP server. If you
- are using InCom TCP/IP Bootprom, you will have to use a special trick
- to specify the boot file name (get more info from InCom WWW site). If
- you are using a PXE Bootrom, you will need a Proxy DHCP server, but no
- other trick is needed as the boot file name will be provided by the
- Proxy DHCP server.
-
- On Linux, the best choice is the standard DHCP server from the
- Internet Software Consortium. If you are using a PXE Bootrom, in
- addition to the usual options, you will need to add the following
- ones:
-
- ╖ option dhcp-class-identifier "PXEClient"
-
- ╖ option vendor-encapsulated-options ff;
-
- On Solaris, you can either use the Internet Software Consortium DHCP
- server (available on the Web), or use Solaris DHCP server (available
- since Solaris 2.5). However, as Solaris DHCP server does not seems to
- be able to insert a client class identifier in its DHCP offer, you
- must install a Proxy DHCP server. Morever, this Proxy DHCP server must
- reside on another computer since Solaris DHCP server locks the DHCP
- port.
-
- We suggest giving infinite lease time for remote-boot clients. Don't
- forget that BOOTP/DHCP requests are bounded by subnets. If the client
- and the server do not reside on the same subnet, you should install a
- BOOTP/DHCP Relay agent on any computer between the two. For now, just
- assume that both machines are on the same subnet.
-
-
- 4.1.2. Setting up a Proxy DHCP
-
- The role of the Proxy DHCP server is to overcome limitions of some
- DHCP servers and to provide PXE specific extensions. A proxy DHCP
- server only makes sense for a PXE Boot rom.
-
- As BpBatch itself is quite powerfull, you wont need to use any PXE
- specific DHCP extension (menus, etc.). However, if your DHCP server
- is not able to show minimal PXE compliance, you will need a Proxy DHCP
- server or your PXE Boot ROM will not accept to go further.
-
- On Windows NT, you can try to use Intel WfM PDK (available from their
- web site), but it is not very easy to use. We rather suggest having a
- Linux machine on the subnet and using our small Proxy DHCP. The major
- advantage of our Proxy DHCP Server for BpBatch is that our server will
- let you specify an option 155 vendor tag that will be interpreted by
- BpBatch as a command line.
-
- On Linux and Solaris, you can run our Proxy DHCP program, that simply
- takes as argument the TFTP server IP address, boot file name and
- optional arguments, and does everything for you. If the DHCP port on
- the server is already requested by another daemon, the proxy DHCP
- server will run on port 4011. In this case, it is necessary that the
- other daemon on DHCP port answer a DHCP offer with client class
- PXEClient so that the PXE client knows that it must try on port 4011.
-
- If you want to understand better PXE extensions to DHCP, there is an
- extensive description available on Intel WWW site. However, be warned
- that the documents are quite confusing, as the protocol has been
- extended to a number of optional stages, in order to allow for a
- maximal flexibility. The key to understand it is that all what a PXE
- client needs is a complete enhanced DHCP answer. If it receives only a
- standard DHCP offer, it will look further until it gets
-
- 1. a client class (T60) set to PXEClient
-
- 2. vendor encapsulated options (T43) (possibly empty, ie. hex ff)
-
- 3. a non-empty boot filename
-
- The PXE specific negociation ends as soon as all these infos are
- received, but can lead to a very complex process (install server
- discovery, etc.) if some are missing.
-
-
- 4.1.3. Setting up TFTP
-
- The TFTP server is a very simple file server. In its basic version,
- TFTP use 512 bytes data blocks, which are quite inefficients. InCom
- TCP/IP Bootprom and PXE Boot ROMs allow to use larger blocks (1408
- bytes), which speeds up transfers a lot. However, this can only work
- with an enhanced TFTP server.
-
- On Windows NT, we suggest using InCom enhanced TFTP server, available
- on their web site.
-
- On Linux, you can use our enhanced TFTP server, available at
- http://cuiwww.unige.ch/info/pc/remote-boot/soft/etftpd.tar.gz.
-
- On Solaris, you should use InCom enhanced TFTP serer, available on the
- utility disk provided with the TCP/IP Bootprom.
-
- If you prefer using a standard TFTP daemon, remove the P in all boot
- image name extensions, in order to tell the Bootprom to use only the
- standard TFTP port (This trick was introduced by InCom GmbH for the
- TCP/IP Bootprom. We still use it as an easy way to select the default
- TFTP port with PXE bootproms).
-
-
- 4.2. Client-side configuration
-
- First, we will do set up the part common to all operating systems, ie.
- the batch-file interpreter. Then, for each operating system, we will
- go through the following steps:
-
- 1. Setup a stand-alone client
-
- 2. Save its configuration on the server
-
- 3. Test it as a remote-boot client
-
- 4. Adapt it so that it works for any similar client machine
-
- Once this is done, you will be able to setup any supplemental
- client just by plugging a Boot ROM in it (or buying a Wired for
- Management ready computer...) and adding one line in the DHCP
- configuration file.
-
- Our examples assume that you have a hard disk of 1.4 Gb or more. If
- you have less, reduce the sizes of the partitions, but remember the
- you need to leave a few hundreds megabytes unallocated (that is, the
- last partition must not take up to the last cylinder) to leave free
- room for the special cache partition. Moreover, as the cache always
- starts at the cylinder following the last allocated cylinder, if you
- do not use the same total size for all your tests, you will have to
- download several times the same files (the cache will be automatically
- cleared).
-
- Never despair. If you can't get it to work, first look in the
- Troubleshooting section if your problem is not already solved (get the
- latest version from the Web). Then, take a look in the BpBatch forum.
- Perhaps someone else had the same troubles as you have, and the answer
- can be found in the forum. Forum's URL :
- http://cuiwww.unige.ch/info/pc/remote-boot/forum/. If it still does
- not work, think about monitoring network traffic for network related
- problems (use tcpdump on Linux or snoop on Solaris). If you really
- cannot get it to work, you can send an E-mail to
- David.Clerc@cui.unige.ch or Marc.VuilleumierStuckelberg@cui.unige.ch.
- If your problem is strictly related with the remote-boot configuration
- and if we are not overflowed, we will try to solve your problem.
-
- 4.3. Setting Up the Boot Process
-
- Get the BpBatch software, either as .zip or as .tar.gz. The
- executables are available at
-
- ╖ http://cuiwww.unige.ch/info/pc/remote-boot/soft/bpb-exe.zip
-
- ╖ http://cuiwww.unige.ch/info/pc/remote-boot/soft/bpb-exe.tar.gz
-
- The source code (Assembler and C) is also available on request.
-
- In the server /tftpboot directory, put the following three special
- boot images, which together make our pre-boot batch file interpreter:
-
- ╖ bpbatch.P, the dynamic loader (respect the uppercase !)
-
- ╖ bpbatch.ovl, the relocated interpreter
-
- ╖ bpbatch.hlp, the on-line help file
-
- Then add an entry in the DHCP configuration file for your client,
- with the boot file set to "bpbatch.P". Define a vendor option tag
- 155 (decimal) with the value "-i" (on the standard DHCP server,
- this is done by the following command: option option-155 "-i";). It
- is interpreted by bpbatch as the command line, and -i stands for
- "interactive".
-
- Boot the client computer. You might shortly see
-
- ╖ The Boot ROM copyright
-
- ╖ The string DHCP while the client waits for a DHCP reply
-
- ╖ The string TFTP while the client waits for the first TFTP packet
-
- ╖ The string Loading BpBatch while the loader download the
- interpreter
-
- ╖ And finaly our banner, followed by a nice greather-than prompt
-
- Congratulations ! You have started the batch interpreter... If you
- are curious about what you can do with it, continue reading the
- next section. If you are on a hurry, skip it and go directly
- install the operating system of your choice. If you have any doubt
- about a command within the interpreter, type help.
-
- Note that you can run the same interpreter within DOS and Linux by
- running the MrBatch program. There are a only very few differences
- (the Linux version do not have graphics support and the DOS version
- can only send BOOTP and TFTP requests if the BootProm is not hidden by
- the operating system).
-
- It may be a good idea to read now the section about the Syntax Rules
- of BpBatch, and in particular the paragraphs on File References and on
- The Cache Filesystem. This will help you understand the examples.
-
- Once all operating systems will be set up, you will have to make a
- menu to let the user choose the one he wants. You should be able to
- discover by yourself how to make such a menu. All necessary commands
- are documented at the end of this document.
-
-
- 4.3.1. Discovering BpBatch
-
- Try to type LogVars. You should get about thirty variables listed.
- Roughly, the first are BpBatch settings, then come all parameters
- extracted from the BOOTP/DHCP reply, and the last variable is a list
- of disks sizes, in Megabytes.
-
- Type GetPartitions part, then LogVars again. There should be one more
- variable containing the list of defined partitions on your first hard-
- drive. Assuming that the first partition is either BIGDOS, FAT32 or
- LINUX-EXT2, try LogDir "{:1}" to get the content of the root
- directory, then LogDir "{:1}/usr" if there is an usr directory. You
- can even try LogTree "{:1}/etc" to get a directory tree.
-
- Put a GIF file (format GIF-87a, interlaced or not, but NOT GIF-89a) on
- your TFTP server. We will suppose that the file is named image.gif.
- You can copy it wherever you want with the following command: Copy
- "image.gif" "{:1}/temp/image.gif". Or you can use it directly from the
- server. Now type Logvars "V*" and look at the value of the VESA
- variable. If it is On, which is most probable, that means you have a
- VESA-compliant video adapter. You can list the available video modes
- using Echo "$VESA-Modes". To display your image try the following
- command: DrawGif "image.gif". The image should be on the upper left
- corner of the screen. You can draw it on another place by specifying X
- and Y coordinates after the image name. You can also draw text with
- DrawText 200 200 "Hello world" yellow. Or draw an empty window with
- DrawWindow 200 200 300 150. To insert a title when you create a new
- window, try DrawWindow 200 200 300 150 "My Window". When you are
- tired of graphic mode, simply type CloseGraph.
-
- Note on graphics : by default, all graphical routines work in the
- 800x600 VESA mode (with 256 colors), which is the first field of the
- VESA-Modes variable. If you want to use a different video mode, change
- the variable in order to have the requested video mode as the first
- field of the list.
-
- Now take a text editor, and create a file named test.bpb in the
- tftpboot directory with the following content:
-
-
- ______________________________________________________________________
- :again
- DrawWindow 150 200 400 160 "Identity check"
- TextAttr Black LightGray
- At 15,20 Print "Username : "
- Input username 8
- At 17,20 Print "Password : "
- Getpasswd userpass 8
- if "$username" != "smith" goto again
- if not "$userpass" match-passwd "BpR8oiIlRR9bo" goto again
- #
- clear
- DrawWindow 200 200 150 100 green blue "Congratulations"
- DrawText 220 250 "You got it !" yellow
- WaitForKey 3
- CloseGraph
- interact
- ______________________________________________________________________
-
-
-
-
- In your BOOTP/DHCP configuration, change the option-155 from "-i" to
- "test", and reboot the client computer. The small script should run
- automatically, and ask you for a username and password. If you do not
- type smith and justdoit, you wont be able to boot the computer. Later
- you will learn how to use a Unix, NT or Radius server to check valid
- user names.
-
-
- 4.4. Setting Up Linux
-
- In order to set up Linux, you will need to boot the floppy disk
- provided with the RedHat Linux distribution. BpBatch includes a
- command that can redirect the boot to the floppy: FloppyBoot.
-
- Set up RedHat Linux on your client, with network support, and any
- packages you may want. You may want to recompile the kernel to better
- fit your hardware, but it is not necessary.
-
-
- 4.4.1. Configuring the Client
-
- It is probably a good idea to include BOOTP support to the kernel, so
- that you do not have to customize the client IP address manually.
-
- In order to reduce network load, you might also want to setup the
- filecache for caching on the hard disk files that are loaded by NFS.
- Roughly, the principle of the filecache is that whenever a symbolic
- link from the cache subdirectory is followed, it is replaced by its
- target. If the target is itself a subdirectory, each entry of the
- subdirectory becomes a symbolic link to the original entry of the
- foreign filesystem. The filecache has been written by Unifix GmbH,
- and is part of Unifix Linux 2.0. It is freely distributable, and you
- can get the necessary files from
- http://cuiwww.unige.ch/info/pc/remote-boot/soft/filecache.tar.gz. In
- order to use the filecache, you have to
-
- ╖ apply a patch to the kernel (file patch-filecache), enable
- filecache support through make config or whatever you prefer, and
- recompile the kernel
-
- ╖ copy the filecache binary file to /sbin
-
- ╖ create a mount point called /mnt/nfs (using mkdir)
-
- ╖ copy filecache.conf to /etc. This file contains the following
- lines:
-
- Max 100 MB 50 % #
- Cache /mnt/nfs/usr /usr
- Cache /mnt/nfs/opt /opt
-
-
-
- ╖ copy the content of /usr and /opt to the server, export them read-
- only with anon=0 (for allowing root access) and mount them under
- /mnt/nfs (add a line for that in /etc/fstab)
-
- ╖ rename /usr as /usr.orig
-
- ╖ link /usr to /mnt/nfs/usr
-
- ╖ rename /opt as /opt.orig
-
- ╖ link /opt to /mnt/nfs/opt
-
- ╖ ensure that /usr and /opt are not empty and contains the correct
- directories
-
- ╖ recursively remove /usr.orig and /opt.orig
-
- ╖ copy filecache.init to /etc/rc.d/init.d
-
- ╖ And finally link /etc/rc.d/rc3.d/S35filecache to
- /etc/rc.d/init.d/filecache.init
- If you successfully followed each of these steps, you should have
- the filecache working next time you boot, as long as you do not
- forget to use your patched kernel.
-
-
- 4.4.2. Testing the Configuration
-
- Copy your compressed kernel image (zImage, bzImage, vmlinuz or
- whatever you call it) to the server /tftpboot directory as linux.krn.
- If you had to unplug the bootprom from the PC, you can now plug it
- again. When BpBatch starts, type LinuxBoot "linux.krn" "root=/dev/hda1
- BOOT_IMAGE=linux" (assuming that the root ext2 filesystem is on the
- first partition). Alternatively, if you did setup your configuration
- on a computer without bootprom, just boot let it boot using the loader
- you installed (lilo, ...). But in the later case, if you want the
- filecache to work, you should have explicitely installed your kernel
- with filecache support at the right place.
-
- Wait until the system comes up. If you installed the filecache, you
- can check that /usr has exploded into a directory with some symlinks
- and some already-exploded directories. Now start the programs that the
- end-users will use most of the time, in order to load them once for
- all to the hard disk.
-
- You can still make adjustements to your configuration, like on any
- stand-alone linux station.
-
-
- 4.4.3. Building the Disk Image
-
- When you are happy with your configuration, login as root, go to the
- /tmp directory and run our mrzip program. MrZip is a command
- interpreter like BpBatch, but it can understand more commands than
- BpBatch does. In particular, it can understand the following commands:
-
-
- ______________________________________________________________________
- showlog
- filter -"tmp/*"
- filter -"var/log/*"
- fullzip "/" "/tmp/linux.imz"
- ______________________________________________________________________
-
-
-
-
- This will create a disk image in /tmp/linux.imz. Move it to the server
- /tftpboot directory. Then copy the following batch file to /tftp¡
- boot/linux.bpb:
-
-
- ______________________________________________________________________
- hidelog
- setpartitions "linux-ext2:992 linux-swap:32"
- fullunzip "linux.imz" 1
- clean 2
- linuxboot "linux.krn" "root=/dev/hda1 BOOT_IMAGE=linux"
- ______________________________________________________________________
-
-
-
-
- The BOOT_IMAGE argument is to stay compatible with lilo for RedHat 5.1
- and later rc.sysinit.
-
-
- Your remote-boot linux configuration is ready ! You can now either set
- the BOOTP-option-155 to "linux", or type include "linux.bpb" from
- within BpBatch to test it.
-
-
- 4.4.4. System Maintenance and Upgrades
-
- If you want later to upgrade software, install bug fixes and security
- fixes, proceed as follow:
-
- ╖ Remote-boot a client computer to get a fresh linux install
-
- ╖ Make your changes
-
- ╖ Redo the disk image
-
- ╖ Copy the new image in place of the old one on the server
-
- That means, you can upgrade software on your server-based
- configuration as if it were a purely local install.
-
-
- 4.5. Setting up DOS 6 and Windows 3.1
-
- On the client computer, boot on your favorite dos floppy disk (either
- remove the bootprom or type FloppyBoot within BpBatch). Format the
- dos partition of your hard-drive with the /S option, in order to put
- the operating system on it. The size of the partition is not
- important, as disk archives created with MrZip Create a DOS
- subdirectory, copy DOS in it. Install your favorite network client
- (for instance Microsoft LanManager), Windows 3.1, and so on. If you
- use Microsoft LanManager, do not use DHCP for the IP configuration as
- it is a very poor implementation that will almost surely fail with
- reasonable network load. To do that, add the following lines in your
- protocol.ref file, in the section that loads tcptsr (of course,
- replaces the xxx by your true IP parameters):
-
- IPADDRESS0 = xxx xxx xxx xxx
- SUBNETMASK0 = 255 255 xxx xxx
- DEFAULTGATEWAY0 = xxx xxx xxx xxx
- DISABLEDHCP = 1
-
-
-
- Do not be afraid to use EMM386 to optimize the memory usage, and even
- to include the area where you put your network adapter ROM, since it
- is not used anymore at this time. But carefully exclude the network
- adapter RAM, or you will not be able to connect to your server. Use
- the NOEMS parameter.
-
- If you want to ensure that the client machine cannot be used without a
- valid login name, download our nobreak pseudo-device driver (available
- at http://cuiwww.unige.ch/info/pc/remote-boot/soft/nobreak.zip) and
- run it at the beginning of your config.sys. Then add something like
- this to your autoexec.bat:
-
-
-
-
-
-
-
-
-
-
-
- ______________________________________________________________________
- rem -- we use the dummy file c:\logged as a flag
- del c:\logged >nul
- :loginneeded
- cls
- echo Please type in your login name and password
- echo.
- net logon *
- rem -- the login script should have created c:\logged
- if not exist c:\logged goto loginneeded
- del c:\logged
- rem -- now enable break again
- echo Yes >NOBRK
- ______________________________________________________________________
-
-
-
-
- Ensure that your client boot well by rebooting the client and
- evaluating the following commands within BpBatch interactive mode:
-
- HideBootprom
- HdBoot
-
-
-
-
- 4.5.1. Building the Disk Image
-
- On the server, make a share called admin for instance, on which you
- will put some stuff for the system administrator. If the server is a
- Unix machine, it is a good opportunity to put in admin a softlink to
- the /tftpboot subdirectory, so that you can put images in it directly
- from the client. Within admin, create a /utils subdirectory and put
- the following files in it:
-
- ╖ mrbatch.exe, the DOS version of BpBatch
-
- ╖ mrzip.exe, the DOS version of the program for building disk images
-
- ╖ bpbatch.hlp, the on-line help file
-
- You might also like to put in the same directory a simple MrZip
- script named zipdos.mrz file that contains the commands needed for
- building a DOS image, like this one:
-
-
- ______________________________________________________________________
- showlog
- filter -"lanman.dos/lmuser.ini"
- filter -"temp/*"
- filter -"*.swp"
- fullzip "c:/" "L:/tftpboot/dos.imz"
- ______________________________________________________________________
-
-
-
-
- Now go back to your client, mount the admin volume on drive L:, go to
- your utils directory and type the following command:
-
- mrzip -b zipdos
-
-
-
-
- One minute later, you will have a new file in the server /tftpboot
- subdirectory called dos.imz, which is a compressed image of your hard
- disk. Copy the following batch file to /tftpboot/dos.bpb:
-
-
- ______________________________________________________________________
- hidelog
- setpartitions "bigdos:1024"
- setbootpart 1
- fullunzip "dos.imz" 1
- hidebootprom
- hdboot :1
- ______________________________________________________________________
-
-
-
-
- Your remote-boot DOS configuration is ready ! You can now either set
- the BOOTP-option-155 to "dos", or type include "dos.bpb" from within
- BpBatch to test it.
-
-
- 4.5.2. Adapting the configuration for other machines
-
- If you want to customize some settings according to the machine,
- typically the IP settings since Micro$oft DHCP is buggy, you can setup
- BpBatch to change some files before booting. Firsti go to the
- lanman.dos directory and do
-
- copy *.ini *.ref
-
-
- Then edit the .ref files and replace all fixed parameters with BOOTP
- variable names as in the following examples:
-
- computername = ${BOOTP-Host-Name}
- ipaddress0 = ${MS-IPAddress}
- subnetmask0 = ${MS-IPSubnet}
- defaultgateway = ${MS-IPRouter}
-
-
- Then rebuild the disk image as previously. Note that for IP parame¡
- ters, we do not use the BOOTP variables directly because LanManager
- needs then as space-separated numbers instead of dot-separated num¡
- bers. Change dos.bpb to the following:
-
-
- ______________________________________________________________________
- hidelog
- setpartitions "bigdos:1024"
- setbootpart 1
- fullunzip "dos.imz" 1
- set MS-IPAddress="$BOOTP-Your-IP"/.= /
- set MS-IPSubnet="$BOOTP-Subnet-Mask"/.= /
- set MS-IPRouter="$BOOTP-Routers"/.= /
- patch "{:1}lanman.dos/protocol.ref" "{:1}lanman.dos/protocol.ini"
- patch "{:1}lanman.dos/tcpputils.ref" "{:1}lanman.dos/tcputils.ini"
- patch "{:1}lanman.dos/lanman.ref" "{:1}lanman.dos/lanman.ini"
- hidebootprom
- hdboot :1
- ______________________________________________________________________
-
-
-
-
- If you prefer, you can also put the .ref files in the server /tftpboot
- directory instead of in the disk image.
-
- We like to be able to easily change the computers configuration
- without rebuilding the image. To do that, copy your autoexec.bat and
- config.sys as autoexec.ref and config.ref to the server /tftpboot and
- add the following two lines to the batch file above:
-
- patch "autoexec.ref" "{:1}autoexec.bat"
- patch "config.ref" "{:1}config.sys"
-
-
- You can then freely change the files and even customize them with
- machine-dependant values obtained from BOOTP.
-
- After making any change to the client machine configuration, do not
- forget to rebuild the disk image using mrzip if you want to preserve
- your changes.
-
-
- 4.5.3. System Maintenance and Upgrades
-
- If you want later to add new software or change anything else, proceed
- as follow:
-
- ╖ Remote-boot a client computer to get a fresh install
-
- ╖ Make your changes
-
- ╖ Redo the disk image
-
- ╖ Copy the new image in place of the old one on the server
-
- That means, you can upgrade software on your server-based
- configuration as if it were a purely local install.
-
-
- 4.6. Setting up Windows 95
-
- In previous versions of this document, we used the Microsoft server-
- based installation of Windows 95, but it was really too much pain and
- not much worth:
-
- ╖ It is very, very bogus
-
- ╖ Many software package do not support it and their install will
- fail. Among them, Microsoft Internet Explorer, OnNet 32, Novell's
- Protected-mode client (which is MUCH more secure than Microsoft
- Client for Netware).
-
- ╖ It cannot be used with the Microsoft Network client over TCP/IP,
- since Microsoft provides no real-mode driver for TCP/IP compatibe
- with Windows 95. That means, it cannot be used with Samba
-
- ╖ It makes software upgrades almost impossible since every client
- turned on will lock many DLLs on the server, and thus produce
- sharing violations if you try to upgrade them.
-
- Consequently, we throwed away of this document all the informations
- and bug-workaround collected during months (you can still find them
- as a HTML document at http://cuiwww.unige.ch/info/pc/remote-
- boot/win95old/win95old.html) and turned to our new disk-based
- remote-boot concept. Basically, the configuration for Windows 95
- is now almost as easy the configuration for DOS.
-
-
-
- 4.6.1. Setting up a Stand-Alone Client
-
- Setup a regular Windows 95 client, either starting from scratch as
- explained in the configuration of a DOS client, starting from the DOS
- client and installing over the network (that is what we did). You can
- also start with a preconfigured Windows machine, but you will probably
- have less knowledge of what stuff is on the hard disk.
-
- Proceed as described above for a DOS client. It is usually NOT
- necessary to use EMM386 with Windows 95. If you are using Windows 95
- OSR2 (alias MSWIN 4.1, alias Windows 95 service pack 1, alias Windows
- 95 with Internet Explorer), you should add the following line in the
- [Options] section of MSDOS.SYS (yes, it is a text file):
-
-
- ______________________________________________________________________
- AUTOSCAN=0
- ______________________________________________________________________
-
-
-
-
- This will let Windows know that you do not want ScanDisk to be runned
- automatically at boot time.
-
- If you want to reduce network and server load (which will improve your
- system performances) while keeping all softwares on the server, you
- should consider installing the excellent Shared LAN Cache, from
- Measurement Techniques, Inc (see http://www.lancache.com). This
- software runs on each client computer, and caches to the local hard
- disk every data obtained from the network. Even MS-Office starts much
- faster the second time you run it... You need one license per client
- computer, but it is not very expensive, and the firm make special
- prices for universities and colleges. The best thing to do is to go to
- their Web site and download the free evaluation copy.
-
-
- 4.6.2. Building the Disk Image
-
- Your MrZip script will be named zipwin95.mrz and contain:
-
-
- ______________________________________________________________________
- showlog
- filter -"temp/*"
- filter -"*.swp"
- fullzip "c:/" "L:/tftpboot/win95.imz"
- ______________________________________________________________________
-
-
-
-
- To build the image, mount the admin volume on drive L:, go to your
- utils directory and type the following command:
-
- mrzip -b zipwin95
-
-
-
- A few minutes later, you will have a new file if the server /tftpboot
- subdirectory called win95.imz, which is a compressed image of your
- hard disk. If your compressed image was bigger than 87 MB, it has
- probably been splitted in two or more fragments. These fragments will
- automatically loaded one after the other when needed. Note that an
- image bigger than 87 MB will usually take More than one minute to
- uncompress and may irritate your users. Our Windows 95 image is only
- 70 MB big, because most software (except Office and Explorer)
- completely reside on the server. Only 45 seconds are needed to
- uncompress the image and restore the full disk.
-
- Copy the following batch file to /tftpboot/win95.bpb:
-
-
- ______________________________________________________________________
- hidelog
- setpartitions "bigdos:1024"
- setbootpart 1
- fullunzip "win95.imz" 1
- hidebootprom
- hdboot :1
- ______________________________________________________________________
-
-
-
-
- Your remote-boot Windows 95 configuration is ready ! You can now
- either set the BOOTP-option-155 to "win95", or type include
- "win95.bpb" from within BpBatch to test it.
-
-
- 4.6.3. Adapting the configuration for other Machines
-
- The big difference between Windows 3.1 and Windows 95 is that the
- later includes code for Plug-and-play , ie. automatic detection of
- your hardware. This not a bad thing in itself, but the trouble is that
- it is often too sensible, and that it sometimes fails.
-
- If you try to start another client with exactly the same boot image,
- you will probably get several messages during startup telling that
- Windows has detected new hardware: a new sound card, a new hard-disk,
- a new network card, and even a new mouse... There can be two reasons
- for that:
-
- ╖ the devices may not use the same ressources (for instance the mouse
- is not connected on the same port, or the sound card is not
- connected in the same slot - yes, that is detected)
-
- ╖ the devices may tell to Windows 95 their personal serial number
- (for instance, every Windows 95 differenciate every network card on
- the basis of its world-wide unique ethernet address)
-
- The fact that Windows 95 discover that the hardware has changed may
- not be a problem if the plug-and-play works as-is, but it become a
- problem when the plug-and-play does not work. For instance, Windows
- 95 plug-and-play for our Logitech PS2/aux mouse does not work, and
- result in no mouse at all. To solve such kind of problems, arrange
- to have all computers as similar as possible, or make different
- images for different hardware. Later, you will discover that you
- can simply use the same image and just have several copies of the
- registery, that you can copy after having restoring the disk image
- but before booting.
-
- The thing you cannot avoid to differ between computers is the network
- card. PCI cards usually do not mind, but ISA Plug and Play do. Bad
- luck for us, the plug-and-play code for our SMC EtherEZ card hangs the
- computer. The only solution is to let Windows 95 believe that it
- already know the network card, and that it is not necessary to trigger
- plug-and-play. The trick for doing that is to automatically insert an
- entry for the network card in Windows 95 registery, before starting
- it. Note that this trick is not any more needed with most PCI cards.
-
-
- Move the autoexec.bat to the server as described above for DOS. Edit
- it (on the server) and add the following lines:
-
- rem --- Patch Windows registery in order to avoid plug-and-play detection
- regedit /L:c:\windows\system.dat /R:c:\windows\user.dat c:\temp\patch.reg
-
-
- regedit is a standard Windows 95 program that let you browse the reg¡
- istery if you start it from within Windows 95, or do simple operations
- on the registery if you call it from DOS. Run regedit under Windows
- 95, search for your network card, usually under
-
- HKEY_LOCAL_MACHINE\Enum\ISAPNP
-
-
- and export the branch using the File menu. This will create a text
- file, that you should same as patch.ref in the server /tftpboot dire¡
- tory. Edit this file and find out where the card ethernet address is
- stored (do that on two different machines and compare the files if you
- can't find it by yourself). Replace it by a pettern in the form
- ${MACID}. Then add lines to the win95.bpb script like this:
-
- set macid = "$BOOTP-Client-ID"
- patch "patch.ref" "{:1}temp/patch.reg"
-
-
- (do any necessary string manipulation for setting MACID if it is not
- exactly the client Ethernet address). That's all, your clients should
- not any more try to autodect the network card.
-
- Once again, this whole trick is not necessary when using PCI network
- adapters. Incidentally, we can use the same mechanism for
- automatically configuring the hostname, which Windows 95 does not seem
- to take into account when configuring through DHCP. We just add the
- following line to our patch.ref file:
-
-
- ______________________________________________________________________
- [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]
- "ComputerName"="${BOOTP-Host-Name}"
-
- [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP]
- "HostName"="${BOOTP-Host-Name}"
-
- [HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\ComputerName\ComputerName]
- "ComputerName"="${BOOTP-Host-Name}"
- ______________________________________________________________________
-
-
-
-
- Using this small registery trick, your configuration should normally
- be portable for all machines with similar configurations. If you
- cannot avoid that Windows detect some hardware as new on one machine,
- try to rebuild the disk image from this machine. This will include the
- registery configuration specific to this machine into the image, and
- hopefully supress the problem.
-
-
- 4.6.4. System Maintenance and Upgrades
-
- If you want later to upgrade software, install bug fixes and security
- fixes, proceed as follow:
-
- ╖ Remote-boot a client computer to get a fresh install
-
- ╖ Make your changes
-
- ╖ Redo the disk image
-
- ╖ Copy the new image in place of the old one on the server
-
- That means, you can upgrade software on your server-based
- configuration as if it were a purely local install.
-
-
- 4.7. Setting up Windows NT
-
- We do not use Windows NT for remote-boot client computers but we have
- tested our system to ensure that it work as well. And it works.
-
- As our utilities currently have no support for NTFS (we neither have
- the documentation nor the time to do that, but I would be happy to
- help anyone who is interested in doing it), you will have to install
- NT on FAT16 (simply do not convert your partitions to NTFS during the
- setup).
-
- Copy your win95.bpb boot script to winnt.bpb. Change the
- setpartitions line in winnt.bpb to the following:
-
- setpartitions "BIGDOS:512 BIGDOS:512"
-
-
- Then boot Windows 95 using this script, and install your NT client on
- drive C. Do not worry about the second partition for now. Do not
- install too much stuff, or you will get a really large and slow-to-
- uncompress image. Remove Windows 95 from the disk disk C, you do not
- need it in a Windows NT image (the boot menu is handled by the boot¡
- prom, not by NT boot loader).
-
- Reboot your computer in without overwriting the hard disk, ie. do not
- execute the winnt script but just
-
- hidebootprom
- hdboot
-
-
- Your NT station should start-up correctly. Make any necessary cus¡
- tomization.
-
-
- 4.7.1. Building the Disk Image
-
- The trouble with Windows NT is that direct disk access is prohibed by
- the kernel. That means, MrZip will not even be able to read the boot
- sectors. The best way to do an image is then to boot Windows 95 and to
- run MrZip from a DOS window. To do that, change the winnt.bpb script
- so that the Windows 95 image is not restored on the first but on the
- second partition:
-
-
- ______________________________________________________________________
- hidelog
- setpartitions "BIGDOS:512 BIGDOS:512"
- setbootpart 2
- fullunzip "win95.imz" 2
- hidebootprom
- hdboot :2
- ______________________________________________________________________
-
-
-
- (if you have any supplementary patch, change the "{:1}" to "{:2}").
- Boot with this script; you should have Windows 95 running, but a new
- drive D: should be available, with Windows NT inside.
-
- Make your disk image as usual (but on D:, of course), and save it as
- winnt.imz on the server /tftpboot directory. Edit one last time the
- winnt.bpb script like this:
-
-
- ______________________________________________________________________
- hidelog
- setpartitions "BIGDOS:512 BIGDOS:512"
- setbootpart 1
- fullunzip "winnt.imz" 1
- clean 2
- #fullunzip "win95.imz" 2
- hidebootprom
- hdboot :1
- ______________________________________________________________________
-
-
-
-
- Your Windows NT remote-boot configuration is ready. Of course, if you
- do not like to have two partitions, you can setup a single partition
- instead. But when you have to rebuild the image, you will have to
- setup the second partition again for booting Windows 95.
-
-
- 4.7.2. System Maintenance and Upgrades
-
- If you want later to upgrade software, install bug fixes and security
- fixes, proceed as follow:
-
- ╖ Remote-boot a client computer to get a fresh install
-
- ╖ Make your changes
-
- ╖ Edit winnt.bpb: comment the clean and winnt fullunzip, uncomment
- win95 fullunzip
-
- ╖ Redo the disk image
-
- ╖ Copy the new image in place of the old one on the server
-
- That's all, folks !
-
-
- 4.8. Troubleshooting (FAQ)
-
- This section lists most frequently encountered problems.
-
- The image download never ends
- You are probably using a standard TFTP server, and it cannot
- handle more than 65535 packets of 512 bytes (or even 32767
- packets for the Solaris server). That is, your image must be
- fragmented in pieces of no more than 30 MB (or 15 MB for
- Solaris). See under CopyArchive for instructions on fragmenting
- an existing image. But you should seriously thing about using
- InCom's extended TFTP server, as it is much more efficient (it
- uses packets of 1408 bytes instead of 512 bytes).
-
- The archive decompression fails immediately
- There are three possibilities. Either the image is really
- corrupted on the server (try use MrZip to see if it is the
- case), or the file transfer has failed because of TFTP timeout,
- or because of incompatible protocol.
-
- TFTP timeout occurs when the network is too heavily loaded (for
- instance if you try to download a huge image with more than four
- clients at a time). In this case, BpBatch does not retry
- indefinitely because it would not help. Shut down a few
- computers and retry with no more than four computers (or maybe
- even three). If you often need to download images for a lot of
- computers, you can try our special Broadcast TFTP server (see
- the section dedicated to it).
-
- Incompatible protocol is caused by using a standard TFTP server
- (typically the one built-in in your UNIX server) while asking
- BpBatch to work with enhanced TFTP. If you use a standard TFTP
- server, you should remove the .P extension (see the explanation
- in the next question).
-
-
- The computer hangs instead of downloading/unzipping (1)
- If you are using Incom's TFTP server, try to add -s 1408 59 to
- the command line. If you are not using an enhanced TFTP server,
- remove the .P extension from BpBatch filename on the server and
- in bootptab.
-
- Detailed explanation : this problem occurs if you did not setup
- an extended TFTP server but you used bpbatch.P as the
- bootfilename DHCP/BOOTP tag. BpBatch will indeed try to connect
- to an extended TFTP server when the bootfilename ends with a .P
- extension. To solve this problem, you can either remove the .P
- extension at the end of the bootfilename (it will tell BpBatch
- to use standard TFTP) or install an extended TFTP server. The
- only supported extended TFTP server today is the one provided by
- Incom. You can find compiled binaries on their web site, or on
- our distribution directory. For Incom's TFTP server to properly
- work with the extended TFTP feature, you must add -s 1408 59 to
- the command line.
-
- The computer hangs instead of downloading/unzipping (2)
- May be your computer has a bad VESA support. Try giving the -v
- command-line argument or setting the VESA variable to "OFF".
-
- VESA scrolling is broken
- We use a VESA 1.1 function for scrolling. If your video adapter
- does not support VESA 1.1, forget it. If the scrolling works for
- one page, but then produces a strange strippled pattern, do not
- worry. This is a known bug, I will fix it as soon as I have time
- for it (VESA scrolling is not really essential...)
-
- There is a corrupted file in the cache
- When a file in the cache is corrupted by an external program, it
- is automatically removed from the cache. When a file in the
- cache is not fully written (because the computer is turned off
- during the file transfer), it is also automatically removed. But
- if the server transmits a corrupted file or if the transfer
- aborts from the server side, it is possible that this file stays
- in the cache. You can clean-up the cache simply by holding both
- shift down while BpBatch access it for the first time.
- Alternatively, you can evaluate clean -1 in interactive mode.
-
- The EXIT command does not work in a batch file
- This is not a bug. Exit is not a command. There is no exit or
- quit command because it does not make any sense to exit from a
- boot script without booting. And MrBatch is really the same
- program as BpBatch. What you can do instead is calling HdBoot.
- This makes sense, and the DOS version will cleanly exit instead
- of rebooting. Note that you can exit from the DOS version at
- any time by pressing Ctrl-Break. This will restore all hooked
- interrupts before leaving.
-
- The Print command does not print
- If you try to print something and immediately enter interactive
- mode, you may not see your text. This is because your text was
- written on the runtime screen and the Interact command has
- switched the display to the Log screen. Just put a GetKey after
- the print commands and you will see the text output.
-
- MrZip says Malloc failed
- MrZip needs a lot of conventional memory to run. If you
- encounter this problem, first ensure that you have unloaded the
- bootprom either using HideBootprom or using InCom's bputil. If
- you run MrZip from bare MS-DOS (not within Windows 95 DOS box),
- you should use EMM386 to load the network drivers high in order
- to get as much conventional memory as possible. From a Windows
- 95 DOS box, there is usually no problem (as long as you have not
- left your old 16-bit stuff in your autoexec.bat when you
- installed Windows 95).
-
- MrZip aborts while reading directories
- This bug has already been fixed once. Get the latest release of
- MrZip. If the problem persists, try to build your image with
- Trace set to "ON" (and usually PauseLog set to "OFF"); this will
- let you discover which file causes the problem. Send a detailled
- bug report.
-
- MrZip cannot access some file
- MrZip is probably trying to read a locked, open or special file,
- such as Windows swap file. Such files should usually not be
- included in the image and should be filtered out (using the
- filter command). It is also possible that the operating system
- is playing you a trick. If MrZip does not tell you what file
- causes the problem, try to build your image with Trace set to
- "ON" (and usually PauseLog set to "OFF"). You can also try to
- use direct disk access (that is, do not refer the source
- partition as "C:" or "/" but as "{:1}" or whatever partition it
- is). Using direct disk access is usually slower because we have
- less buffers than the operating system, but it may be sometimes
- more reliable.
-
- Disk images are always reloaded from the server
- Disk images are stored in the special cache area and should not
- be reloaded if they have not changed on the server. However, as
- the cache area always starts after the last used partition,
- changing the total size of partitions will move the location of
- the cache and thus destroy its content. Another possible reason
- for a file disappearing from the cache is that the previous file
- has grown more than one-and-an-half times its initial size. The
- file would then have been overwritten and need to be downloaded
- once again. This should almost never occurs. A third possible
- reason is a too small cache area. If the free space left outside
- the partitions is less than one-and-an-half times the sum of all
- compressed image sizes, only the most recently used images will
- be present in the cache and the other will have to be reloaded
- on demand.
-
- Red Hat Linux 5.1 does not boot properly
- This distribution assumes Linux was booted using lilo and checks
- for the BOOT_IMAGE command line argument (in
- /etc/rc.d/rc.sysinit). Simply add it in the linuxboot call, or
- change your rc.sysinit.
-
- The broadcast TFTP ramdisk hangs (Got in bound state)
- Linux dhcp client is a program that dynamically changes the IP
- address of the client according to DHCP offers. If the address
- is offered forever (infinite lease time), the DHCP client just
- set the address and returns (this is what we expect). However,
- if the lease time is limited, the DHCP client must remain loaded
- and ask for new addresses every few minutes. And if the DHCP
- client does not return, MrBatch will never be loaded... The
- solution is to give an infinite lease time (sometimes encoded as
- -1).
-
- File access hangs under BpBatch, but not under MrBatch
- This problem occured on an AMI BIOS dated 94/07/25. We
- investigated a little bit, and found no solution. It seems that
- this problem is due to a bug in this BIOS (some register or
- memory location must be destroyed).
-
- Unzip of a fragmented archive fails (Malloc failed)
- This problem was introduced with PXE compatibility, but has now
- been fixed. Please get the latest version.
-
- MrBatch and MrZip complain about the terminal under RedHat 5.x
- This problem has been fixed in the 9th of August version of
- MrBatch/MrZip. There was a problem with a new version of
- ncurses which has been released with RedHat 5.1.
-
- MrZip has been linked to the version 3.0 of libncurses. You can
- use other versions of libncurses only if they are newer than
- version 3.0. To use a newer libncurses, all you have to do is to
- create a soft link from libncurses.so.3.0 to your
- libncurses.so.xx file. With RedHat 5.1, you can use the
- following command : cd /usr/lib ; ln -s libncurses.4.2
- libncurses.3.0 You can also download a version recent version of
- mrzip/mrbatch. Starting from the 10/25/98, mrbatch is now
- compiled under RedHat 5.1.
-
- MrBatch and MrZip do not start under Linux (file not found)
- This problem is the reverse of the previous one. Now that the
- distribution is libc6 ready, it cannot be used any more with
- libc5. If you encounter this problem, simply upgrade your Linux
- box (Well, if we hear too much complaints, we might try to keep
- two distributions...).
-
- I can not access other mode than the default 800x600 VESA mode
- You should first display the contents of the VESA-Modes
- variable, to see if your hardware support the mode you would
- like to use. Then, try one of the two ways to select a special
- VESA mode :
-
- ╖ InitGraph "mode": Try InitGraph "1024x768", and then run the
- graphical primitive you are interested in (e.g DrawGif).
-
- ╖ VESA-Modes: The first field of the VESA-Modes variable is the
- name of the default mode. If you change the VESA-Modes variable,
- all graphical primitive will use the mode you specified.
-
- BpBatch prints a
- We corrected a bug in the memory allocation functions of
- BpBatch. You should make sure that you have a version of BpBatch
- which has been released after september the 22nd 1998.
-
- Fullunzip using the Linux version of MrBatch always fails
- We corrected this problem in the 09/22/1998 release.
-
- Scandisk says my disk is corrupted
- The 10/25/98 release did correct a problem with large images.
- Try to download a recent version of BpBatch.
-
- My RedHat boot floppydisk does not work with FloppyBoot
- This bug has been corrected in the 10/25/98 release.
-
- My FAT32 disk image does not boot properly
- This bug has been corrected in the 02/09/99 release.
-
-
- 5. Remote-Boot Tools Reference Manual
-
- This section provides detailled informations on the use of the tools
- we developped at the CUI, University of Geneva for this remote-boot
- configuration.
-
-
- 5.1. BpBatch, MrBatch and MrZip
-
- These three names stand for three variants of the same program, with
- the following characteristics:
-
- ╖ BpBatch is a special program that can be started from the BootProm
- before the operating system is loaded. It is made of two parts:
- bpbatch.P, the dynamic loader, and bpbatch.ovl, the program itself.
- BpBatch has full disk I/O capabilities through our own
- implementation of FAT16, FAT32 and Ext2fs, as well as remote
- network I/O capabilities through the BootProm TFTP API. BpBatch
- was compiled under DOS using Borland C 5.0 and Turbo Assembler 3.2.
-
- ╖ MrBatch is the DOS/Linux version of BpBatch. All commands
- recognized by BpBatch are recognized by MrBatch and vice versa.
- This is very usefull if you want to test your batch scripts from a
- DOS/Linux session. Under DOS, MrBatch emulates remote I/O by OS-
- based file access if the bootprom is not available. Under Linux,
- the bootprom cannot be seen anymore but MrBatch can emulate it
- using Linux IP support, or use OS-based file access. MrBatch was
- compiled under Linux using GCC 2.7.2.1 and under DOS using Borland
- C 5.0 and Turbo Assembler 3.2.
-
- ╖ MrZip is an interpreter that recognizes a superset of MrBatch
- language, and that serves to build disk images. In MrZip, the
- limited remote file I/O is replaced by a full-featured OS-based
- file access. MrZip does not include VESA support. MrZip was
- compiled under Linux using GCC 2.7.2.1 and under DOS using Borland
- C 5.0 and Turbo Assembler 3.2.
-
-
- 5.1.1. Command Line Arguments
-
- All programs accept the same syntax of arguments. MrBatch and MrZip
- take them from the command line, while BpBatch look for them in the
- BOOTP option 155 (decimal). Here is the syntax of the arguments:
-
- [-x] [-l] [-b] [-v] [-w] [-i] [script-basename]
-
-
- where:
-
- ╖ -x disable the use of extended memory
-
- ╖ -l disable the use of ISO-latin-8859-1 as default character set
-
- ╖ -b cancel the bootprom detection (which cause a floppy seek under
- DOS)
-
- ╖ -v cancel the VESA detection (which cause a switch to full screen
- under Windows 95)
-
- ╖ -w enable direct disk write access (disabled by default under DOS
- and Linux)
-
- ╖ -i enable interactive mode even if a script name is provided
-
- The script-basename is optional. If provided, MrBatch and BpBatch
- load the file with the .bpb extension, and MrZip loads the file
- with the .mrz extension. If not provided, MrBatch and MrZip run in
- interactive mode while BpBatch loads the file with the same
- basename as the BOOTP Boot file and a .bpb extension.
-
-
- 5.1.2. Syntax rules
-
- The following rules apply when BpBatch parses an input line.
-
- ╖ Commands are parsed line by line. Lines are separated by CR and/or
- LF.
-
- ╖ The maximal line length is currently 255 characters.
-
- ╖ Keywords and variable names are case-insensitive.
-
- ╖ " is interpreted as the special string delimiter
-
- ╖ When ${variable} or $variable is encountred, it is substituted by
- the value of the variable, or by an empty string if the variable is
- undefined. The substitution also occurs within a string. Moreover,
- the resulting substituted value must be explicitely enclosed
- between double quotes if used as a string value (ie. one should
- merely speak of macro expansion than of a variables).
-
- ╖
-
- ╖ \a is substituted by the audible-bell character (ASCII 7)
-
- ╖ \b is substituted by the backspace character (ASCII 8)
-
- ╖ \n is substituted by the newline character (ASCII 10)
-
- ╖ \r is substituted by the return character (ASCII 13)
-
- ╖ \t is substituted by the tabulation character (ASCII 9)
-
- ╖ \v is substituted by the vertical-tab character (ASCII ...)
-
- ╖ \nnn where n is a 3-digit octal number between 000 and 377 is
- substituted by the character with ascii code specified
-
- ╖ \X where X is any other character not listed above is substituted
- by X itself. In particular,
-
- ╖ \" is substituted by a regular double-quote (not a string-
- delimiter)
-
- ╖ \$ is substituted by a regular dollar sign (not variable
- substitution)
-
- ╖ \\ is substituted by a regular backslash (not a special character)
-
- ╖ The character "end of string" (ASCII code 0) CANNOT be used
- anywhere as it is used internally as end-of-string delimiter
-
- ╖ The character "floating diaeresis" (ASCII code dec 249, hex F9,
- octal 371) CANNOT be used in any string as it is used internally as
- string delimiter in the input parsing routine.
- ╖ The character "block space" (ASCII code dec 255, hex FF, octal 377)
- CANNOT be used in any variable value as it is used internally as
- variable delimiter.
-
- Empty lines are ignored. Lines starting with a sharp (#) are treated
- as comments and are not interpreted. Lines starting with a column (:)
- are treated as labels and are not interpreted.
-
-
- String expressions
- Strings are delimited by opening and closing double-quotes:
-
- "Hello world"
-
-
- To include double-quotes within a string, quote them using a back¡
- slash:
-
- "I said: \"Hello world\""
-
-
- Strings can be postfixed with a few operators.
-
- ╖ The character substitution operator:
-
- "Hello world"/o=u/ == "Hellu wurld"
- "198.76.54.32"/.= / == "198 76 54 32"
-
-
-
- ╖ The word selection operator (zero-based):
-
- "Hello world"{0} == "Hello"
- "198 76 54 32"{1-3} == "76 54 32"
-
-
-
- ╖ The substring selection operator (zero-based):
-
- "Hello world"[4] == "o"
- "Hello world"[4-7] == "o wo"
-
-
-
- Operators can be chained by postfixing one after the other. For
- informations about the string length and word count operators, see
- under "Numerical expressions".
-
-
- Numerical expressions
- Numerical expressions work on 32-bits integer numbers (from
- -2,147,483,646 to 2,147,483,647). Hexadecimal octal and binary
- numbers are not understood. Whenever a numerical expression is
- expected, the following are recognized:
-
- ╖ A positive or negative integer number
-
- ╖ An expression in the form (expr1 op expr2) where op can be
- either +, -, * (multiply), / (divide) or % (modulo) and expr is
- a numerical expression. Note that EACH operation MUST be
- enclosed between parenthesis :
-
- ((3 * 5)+2) == 17
-
-
-
- ╖ The string-length operator (@), followed by a string :
-
- @"Hello world" == 11
-
-
-
- ╖ The word-count operator (#) followed by a string :
-
- #"Hello world" == 2
-
-
-
-
- Durations
- A few commands expect durations as arguments. Durations are
- measured in seconds, with a precision of up to a tenth of
- second:
-
- Delay 3 waits for 3 seconds
- Delay 0.3 waits for 3/10 seconds
-
-
-
-
- Colors
- Whenever a color is expected, you can either use the numeric
- value of the color or its symbolic name (case-insensitive). The
- following colors are recognized
-
- Black 0
- Blue 1
- Green 2
- Cyan 3
- Red 4
- Magenta 5
- Brown 6
- LightGray 7
- DarkGray 8
- LightBlue 9
- LightGreen 10
- LightCyan 11
- LightRed 12
- LightMagenta 13
- Yellow 14
- White 15
-
-
-
-
- File References
- File names are strings. They must therefore always be enclosed
- between double-quotes. File names are case-sensitive on case-
- sensitive filesystems, case-insensitive on case-insensitive
- filesystems. Slash and backslash can be freely used one in
- place of the other. Do not forget to double backslash since a
- single backslash is an escape character.
-
- There are two kinds of file references:
-
- ╖ Direct disk files
-
- ╖ Foreign files
-
- Direct disk files are referenced using the following notation:
-
-
- "{disk:partition}/absolute/filename"
-
-
- The disk number can be omitted and defaults to zero. For instance,
- "{:1}/usr/bin" points to /usr/bin assuming there is such a direc¡
- tory on the first partition. Direct file I/O is solely based on our
- own file access routines (we do not use the operating system).
-
- There are two special partitions. Partition zero corresponds to the
- hard disk master boot record (MBR) and has a pseudo file-system
- which let you access the boot code. Partition minus-one (-1)
- corresponds to the cache filesystem (see below).
-
- Under BpBatch/MrBatch, foreign files correspond to remote files on
- the TFTP server when the BootProm is available:
-
- "help.bpb" is the file help.bpb in the /tftpboot directory
- "gifs/MyImage.gif" is a file in /tftpboot/gifs
-
-
- Other TFTP servers can be referenced :
-
- "198.76.54.32:help.bpb"
-
-
- If the other server is behind a gateway :
-
- "198.70.0.1/198.76.54.31:help.bpb"
-
-
- One can also specify a specific port for the TFTP connection :
-
- "198.76.54.32@89:getpasswd/smith"
-
-
- There can be only one open remote file at a time. If the BootProm
- is not available, remote files are emulated using the operating
- system file I/O, but the same restriction apply.
-
- Under MrZip, foreign files correspond to files as seen by the
- operating system. There is no limitation, and foreign files can be
- used wherever direct disk files can be. Foreign files are usually
- faster than direct disk files, because the operating system has
- more buffers. Foreign files can refer to network files if supported
- by the operating system.
-
- "C:\\autoexec.bat"
- "C:/config.sys"
- "/mnt/net/usr"
-
-
-
-
- 5.1.3. The Cache Filesystem
-
- In order to reduce network load and to fasten the boot process, disk
- archives, linux kernels and possibly other files are cached on the
- hard disk. This disk cache is located at the end of the hard disk,
- between the last cylinder allocated in the partition table and the
- last physical cylinder of the disk (out of any allocated partition).
- There MUST be room between the last partition and the end of the disk
- if you want the cache filesystem to work. The cache filesystem MUST
- work if you want to restore a disk image.
-
- The disk cache is organised in a volatile, CRC-validated filesystem :
- Each directory entry and each 32 KB data block is validated by a
- 32-bits CRC. Whenever a directory entry or a data block unexpectedly
- changes, the file is automatically removed from the cache and
- downloaded again upon the next request.
-
- You can freely access the cache filesystem from within BpBatch,
- MrBatch and MrZip using direct disk access on the special partition
- "{:-1}". To see the content of the cache, just type :
-
- logdir "{:-1}"
-
-
- If the cache ever gets corrupted and is not automatically cleaned
- (which should never occurs), you can either type :
-
- clean -1
-
-
- (in interactive mode) or hold both shifts down when BpBatch access the
- cache for the first time.
-
-
- 5.1.4. Special variables
-
- Some variable are initially set and/or have special meanings. Some of
- them exist within all programs, other are only available under MrZip
- and other are only available when a BOOTP/DHCP reply has been
- received.
-
-
- General variables
-
- ╖ $Program is set to "BpBatch" within BpBatch, "MrBatch" within
- MrBatch and "MrZip" within MrZip
-
- ╖ $Basename is set to the basename of the script on which the
- batch interpreter was started
-
- ╖ $HelpFile is the name of the file loaded when Help is invoked.
- Default: "${Basename}.hlp"
-
- ╖ $BOOTP-... are variables set from the BOOTP/DHCP reply (see the
- paragraph on BOOTP/DHCP variables for more details)
-
- ╖ $DHCP-... are variables set from the DHCP reply (see the
- paragraph on BOOTP/DHCP variables for more details)
-
- ╖ $Disks is set to the space-separated list of sizes for each
- disk. That means, #"$Disks" represent the number of disks and
- "$Disks"{0} is the size of the first disk
-
- ╖ $Keypressed is set to the next ready-to-read key available in
- the keyboard buffer (if available)
-
- ╖ $LBA controls the use of LBA to access disks > 2Gb. Default:
- "ON"
-
- ╖ $FDA controls the use of fast disk access (write accross
- cylinders). Default: "ON"
-
- ╖ $VESA controls the use of VESA graphics. Default: "ON" if
- available
-
- ╖ $VESA-Modes gives the list of all available VESA modes. The
- first entry of the list is the default mode, which is used when
- no parameter is given to InitGraph. Note: if VESA="OFF", this
- variable is blank
- ╖ $APM is set to "ON" if your computer supports Avanced Power
- Management. If $APM is "ON", you can use the command PowerOff to
- turn your computer off. Default: depends on your hardware
-
- ╖ $Trace controls the display of each command before execution. It
- also controls the display of file names when creating new
- archives. Default: "OFF"
-
- ╖ $AutoShowLog controls the automatic switch to the text log
- whenever the ESC key is pressed. Default: "ON"
-
- ╖ $PauseLog controls the pause between each page of log when the
- log is visible. Default: "ON"
-
- ╖ $CacheDisk is set to the disk used for caching remote files.
- Default: empty == 0, the first hard disk
-
- ╖ $CacheAlways controls the automatic caching of remote files
- copied, patched or drawn as GIF. Default: "OFF"
-
- ╖ $CacheNever prevents any file from being cached. Turn this
- variable on for diskless Linux boot. Default: "OFF"
-
- ╖ $CacheReserve controls the preventive allocation of 25 percent
- more space than necessary in the cache partition, to let the
- files grow. Turn this variable off if you are short of disk
- space. Default: "ON"
-
- ╖ $ExtMemory controls the use of Extended Memory (or XMS). Once
- deactivated, extended memory cannot be reactivated. Default:
- "ON" if available
-
- ╖ $IsoLatin controls the interpretation of upper ASCII codes in
- included and patched files. The IsoLatin settings are processed
- at the time the file is loaded, not at the time the file is
- processed. Default: "ON"
-
- ╖ $ProgressX and $ProgressY controls the position of the progress
- window displayed in VESA graphics during archive download and
- decompression. Default: 200 200
-
- ╖ $EXT2-Backup controls the update of superblock backups in Linux
- ext2 filesystem. Superblock backups take a few seconds to do and
- are never used by current kernels (only by e2fsck).
-
- ╖ $Security-Gateway controls the gateway-server used for user
- authentication. Our special authentication gateway must be
- running on the target computer. Default: "${BOOTP-Server-
- IP}@89" (ie. the TFTP server, on port 89)
-
- ╖ $Security-Check contains the answer of the security server for
- the last check performed, either PASSED or FAILED. Default:
- "FAILED"
-
- ╖ $Security-Passwd, $HelpTopic, $OnExit, $OnKey-... are used
- internally.
-
- See also BOOTP variables and MrZip-specific variables.
-
-
- MrZip-specific variables
- The following variables are only used within MrZip.
-
- ╖ $TempPath controls the directory where temporary files will be
- stored. Default: <empty> == current directory
-
- ╖ $DumpFormat controls the way archives are dumped to the log when
- requested. It is a string containing
-
- ╖ "h"/"H" to display the archive header
-
- ╖ "b"/"B" to summarize/dump boot sectors
-
- ╖ "s"/"S" to display a short/long allocation summary
-
- ╖ "d"/"D" to display a short/long directory listing
-
- ╖ "f"/"F" to summarize/dump files
-
- Default: "hbD"
-
- ╖ $FragmentSize controls the size of archive pieces. If you do
- not use InCom's extended TFTP server, you should set this to "30
- MB". Default: "87 MB"
-
- ╖ $SourceArchive, $DestArchive, $Filter... are used internally.
-
-
- BOOTP variables
- The following BOOTP-... and DHCP-... variables are recognized,
- as long as a BOOTP/DHCP reply has been received (TCP/IP Bootprom
- must be reported as detected):
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $BOOTP-Client-ID
- $BOOTP-Your-IP
- $BOOTP-Server-IP
- $BOOTP-Gateway-IP
- $BOOTP-Bootfile
- $BOOTP-Server-Name
- $BOOTP-Subnet-Mask
- $BOOTP-Time-Offset
- $BOOTP-Routers
- $BOOTP-Time-Servers
- $BOOTP-Name-Servers
- $BOOTP-Domain-name-Servers
- $BOOTP-BOOTP-Log-Servers
- $BOOTP-Cookie-Servers
- $BOOTP-Lpr-Servers
- $BOOTP-Impress-Servers
- $BOOTP-Resource-Location-Servers
- $BOOTP-Host-Name
- $BOOTP-Boot-Size
- $BOOTP-Merit-Dump
- $BOOTP-Domain-Name
- $BOOTP-Swap-Servers
- $BOOTP-Root-Path
- $BOOTP-Extensions-Path
- $BOOTP-IP-Forwarding
- $BOOTP-Interface-MTU
- $BOOTP-All-Subnets-Are-Local
- $BOOTP-Broadcast-Address
- $BOOTP-NIS-Domain
- $BOOTP-NIS-Servers
- $BOOTP-NTP-Servers
- $BOOTP-Font-Servers
- $BOOTP-X-Display-Manager
- $DHCP-IP-Address-Lease-Time
- $DHCP-Message-Type
- $DHCP-Server-Identifier
- $DHCP-Message
- $DHCP-Renewal-Time
- $DHCP-Rebinding-Time
- $BOOTP-NIS+-Domain
- $BOOTP-NIS+-Servers
- $BOOTP-Server-Name
- $BOOTP-Bootfile
- $BOOTP-Mobile-IP-Agent
- $BOOTP-SMTP-Servers
- $BOOTP-POP3-Servers
- $BOOTP-NNTP-Servers
- $BOOTP-WWW-Servers
- $BOOTP-Finger-Servers
- $BOOTP-IRC-Servers
- $BOOTP-StreetTalk-Servers
- $BOOTP-STDA-Servers
-
-
-
- Other BOOTP/DHCP parameters can be used under the name
-
- $BOOTP-Option-n
-
-
- where n is the decimal representation of the BOOTP option number.
-
- Do not mix-up BOOTP-Gateway-IP, which is the gateway to use for
- TFTP and should be 0.0.0.0 if the TFTP server is in the same
- subnet, and BOOTP-Routers, which contains the default IP
- gateway(s). The TCP/IP Bootprom sometimes seems to set the value of
- BOOTP-Gateway-IP from the value in BOOTP-Routers, causing each TFTP
- ack packet to be sent to the router first. To avoid such behaviour,
- if your TFTP server is in the same subnet as the client, force
- BOOTP-Gateway-IP to 0.0.0.0 (thanks to Maciek Uhlig for having
- pointed out this problem).
-
-
- 5.1.5. Monitoring commands
-
- This section lists commands for monitoring the system state. Optional
- arguments are listed between parenthesis (I would have prefered square
- brackets, but LaTeX do not like them at this place...)
-
- Interact
- Show the log and turn to interactive mode until QUIT or EXIT is
- entered. Type HideLog before quitting if you want to avoid
- disturbing log messages during batch execution.
-
-
- Help (topic)
- Load the on-line help file (bpbatch.hlp) and display the
- description of the given topic. If no topic is provided, or if
- the topic is unknown, display the help index.
-
-
- Log
- Display the string on the log. No return/linefeed is implicitely
- added.
-
-
- Echo
- Display the string on the log and go to the next line.
- Equivalent to
-
- Log "text\r\n".
-
-
-
-
- LogVars (
- Log (ie. display on the log) all variables matching the given
- pattern. The pattern can contain wildcards (? and *).
-
- Example: LogVars "BOOTP-*" list all BootP variables
-
-
-
- LogDir
- Log (ie. display on the log) all files from the given path that
- match the pattern. The pattern can contain wildcards (? and *).
-
- Example: LogDir "/usr/g*p" list files names like g...p
-
-
-
- LogTree
- Log the directory tree starting with the given path as root.
-
-
- LogFile
- Log the content of the file. The file must be no more than 64 KB
- big.
-
-
- ShowLog
- Make the log visible if it was hidden. Automatically performed
- when ESC is pressed with "$AutoShowLog" == "ON" and when
- entering interactive mode.
-
-
- HideLog
- Prevent log messages to appear on the screen. Default state when
- BpBatch, MrBatch and MrZip are started on a script file.
-
-
- CaptureLog
- Record all log output to a 64 KB buffer until EndCapture is
- issued. Wrap around buffer if the log output is more than 64 KB
- big. This command can be used to create a text file with an
- arbitrary content. The EndCapture MUST occurs within the same
- batch file.
-
-
- EndCapture (
- End up the capture of the log. If a filename is given, store the
- captured text to a file. Otherwise, discard it.
-
-
- Beep
- Make a sound. This command is equivalent to Echo "\007".
-
-
- 5.1.6. Control commands
-
- This section lists commands that control the batch execution.
- Optional arguments are listed between parenthesis.
-
- Include
- Load the given file and start up the parser on it. Go back to
- the current point when the include file processing is done. The
- interpretation of characters above ASCII 127 within the include
- file depends on the value of $IsoLatin at the time the file is
- included.
-
-
- OnExit command
- Setup an exit-handler that will automatically be evaluated at
- the end of current batch file.
-
-
- Goto label
- Move the execution cursor to the given label (ie. the line
- starting with :label)
-
-
- Eval
- Perform all substitutions on the "command" and run the parser on
- it.
-
-
- If ...
-
- If (not) <expr1> (==|!=|<|>|>=|<=|=>|=<|<>) <expr2> <command>
- If (not) (ci) "str1" (==|!=|<|>|>=|<=|=>|=<|<>) "str2" <command>
- If (not) (ci) "str1" Match-Expr "pattern" <command>
- If (not) (ci) "str1" Match-Passwd "unix-passwd" <command>
- If (not) (ci) "str1" in "wordlist" <command>
- If (not) (ci) "str1" in-file "filename" <command>
- If (not) exist "filename" <command>
- If (not) valid <disk>:<partition> <command>
-
-
- These commands execute command; if the test succeeds. The 1st form
- compares two numerical expressions. The 2nd form compares two
- strings, optionally case-insensitive. The 3rd form tests if "str1"
- matches the given pattern (wildcards allowed). The 4th form tests
- if the clear password "str1" matches the Unix-crypted password.
- The 5th form tests if "str1" is included in the word list. The 6th
- form tests if "str1" is included in the word file. The 7th form
- tests if the given file exists. The 8th form tests if the given
- partition is valid (i.e. formatted). This form is only supported by
- BpBatch versions after February 1999.
-
-
- Set ...
-
- Set variable = "string-value"
- Set variable = <expr>
-
-
-
- Setup a value for the given variable. If the given value is a
- numerical expresison, it will be implicitely converted to a string.
- A variable can be used anywhere by refering it as $variable or
- ${variable}. If the resulting reference is to be interpreted as a
- string, it should be enclosed between double quotes: "$variable" or
- "${variable}".
-
-
- Delay duration
- Waits until the specified duration (expressed in seconds)
- expired. See also the paragraph on the format of durations.
-
-
- GetTime variable, GetDate variable
- Get the CMOS time and store it into variablein the form
- HH:MM:SS. Get the CMOS date and store it into variablein the
- form YY/MM/DD. This can be used to customize the behavior of
- your boot scripts depending on the time of day or on the date.
-
-
- SetTime
- Set the computer CMOS time or date to the given value. If you
- have a security gateway (our special TFTP server) running, you
- can automatically adjust the CMOS time and date of the client
- computers at each boot by evaluating the following command:
-
- include "$Security-Gateway:gettime"
-
-
- If you want to understand what this command does, just type:
-
- logfile "$Security-Gateway:gettime"
-
-
-
-
- Poweroff
- Turn off the computer. This command only works if the computer
- is Advanced Power Management (APM) compatible.
-
-
- 5.1.7. Keyboard-related commands
-
- This section lists commands that let you monitor the keyboard input.
- Optional arguments are listed between parenthesis. See also under
- National Language Support.
-
- GetKey (variable)
- Indefinitely wait until a key is pressed and store it in the
- variable.
-
-
- WaitForKey duration (command)
- Wait until a key is pressed for no more than duration seconds.
- If no key has been pressed after the given time, evaluate the
- command. Otherwise, leave the key in the keyboard buffer. See
- also the paragraph on the format of durations.
-
-
- Input (variable (max-length))
- Read a return-terminated string from the keyboard and store the
- result string in variable (without the terminating return). If
- max-length is given, do not allow the user to enter more than
- this number of characters.
-
- See also GetPasswd under Security-related commands.
-
-
- OnKey
- Setup a key handler that will automatically evaluate the given
- command when the key "c" is pressed (except is explicitely
- waited by a GetChar or an Input command). If the string
- "default" is used instead of a single character, the command is
- executed if any other key is pressed.
-
-
- 5.1.8. Text output commands
-
- This section lists commands used to perform regular text output. All
- these commands can be used in graphic mode also, with the same
- behaviour (except that text mode provides 80x25 characters while
- graphic mode provides 100x37, because graphic mode characters are of
- size 8x16). Optional arguments are listed between parenthesis. See
- also under National Language Support.
-
- Print
- Print the specified string/expression at current cursor position
- and using current text attributes, then move the cursor. Add
- "\r\n" to the end of the string to go to the next line.
-
-
- TextAttr fg-color bg-color
- Setup the text attributes. One can also put a single numeric
- value representing both colors and defined as 16*bg-color+fg-
- color.
-
- If you need more fantasy, you can use LoadFont. See under
- National Language Support.
-
-
- At line,col (command)
- Move the cursor position to the specified position and evaluate
- the command if provided.
-
- Example: At 10,20 Print "Gnats and rats !"
-
-
-
- Clear (color (pattern-char (top,left,bottom,right)))
- Fill the given text area with the given pattern-char (either a
- string or the decimal ascii code). The area defaults to the full
- screen, the pattern char defaults to the full block (ASCII dec
- 219) and the color defaults to black (clear screen). Move the
- cursor to the upper left corner of the cleared area.
-
- BpMenu backward compatibility commands
-
- .ATT (<attribute>)
- .CLS (<attribute>)
- .DEF <key> (<timeout_val>)
- .KEY <key> <filename>
- .POS ((<x>) <y>)
- .PWD <key> <cpasswd>
- .WLN (<text>)
- .WRT <text>
-
-
-
- See InCom's manual for more infos. We wrote some time ago a program
- program for editing menu files using this syntax, but it is
- preferable to make your menus using the new explicit syntax. Note
- that the .PWD command is not implemented because we do not now the
- password crypting algorithm used by InCom GmbH.
-
-
- 5.1.9. Graphics output commands
-
- This section lists commands used to perform graphic-mode output. For
- the functions listed in this section, coordinates are given in pixels.
- You can also use all text output commands (see above) in graphic mode.
- Optional arguments are listed between parenthesis.
-
- Note that the graphic mode is automatically turned on whenever a
- graphic command is used, unless the variable VESA is set to "OFF".
-
- InitGraph (
- Turn on VESA graphics. The origin is on the upper-left corner
- of the screen (0 0). VESA graphics may hang some computers
- under Windows 95. Run MrBatch with the -v option to avoid such
- problems.
-
- You can request a specific video mode if you use the parameter
- "mode" This parameter is optional: if you do not specify any
- value, the video mode will be taken from the first field of the
- VESA-Modes variable.
-
- Valid modes are :
-
- ╖ 640x480 => 640 by 480 pixels, 256 colors
-
- ╖ 800x600 => 800 by 600 pixels, 256 colors (default mode)
-
- ╖ 1024x768 => 1024 by 768 pixels, 256 colors
-
- ╖ 1280x1024 => 1280 by 1024 pixels, 256 colors
-
- The VESA-Modes variable lists the video modes supported by your
- hardware.
-
- Example: InitGraph "640x480"
-
-
- CloseGraph
- Close VESA graphic mode and go back to text mode.
-
-
- DrawBar x-pos y-pos width height color
- VESA graphics. Draw a filled bar of the given size and colors.
-
- DrawWindow x-pos y-pos width height (bg-color (bar-color)) (
- VESA graphics. Draw a window of the given size and colors. The
- background color defaults to LightGray and the title-bar color
- defaults to Blue. If you include a title string and a color,
- this text will be displayed in the title bar.
-
-
- Drawtext x-pos y-pos
- VESA graphics. Draw the text string at the given position with a
- transparent background. The color defaults to text foreground
- color.
-
-
- DrawGif
- VESA graphics. Load the given GIF-87a file and draw it on the
- screen. The file can be interlaced, but must be in GIF-87a (not
- GIF-89a). The image size should fit in the selected video mode.
- You cannot load a 1024x768 GIF file when you selected a 640x480
- mode. The GIF position defaults to the top left corner of the
- screen (0 0).
-
- The color-strategy defines the allocation of colors in the
- palette when more than 256 colors are needed (for instance when
- two 256 colors GIF files are displayed simultaneously):
-
- ╖ Best-Colors use best possible colors for the most recent GIF
-
- ╖ Spare-Colors try to avoid allocating colors, change existing
- colors
-
- ╖ Share-Colors try to avoid allocating colors, use existing colors
-
- ╖ Reuse-Colors allocate no new color, only use existing colors
-
- The default strategy is Best-Colors.
-
-
- 5.1.10. Security-related commands
-
- This section lists commands that help you authenticate a user.
- Optional arguments are listed between parenthesis.
-
- Some of these functions cooperate with a Security gateway, that you
- should first install. See the section on Special TFTP servers for more
- infos.
-
- GetPasswd (variable (max-length))
- Same as Input, but echo stars instead of the typed characters.
-
-
- Crypt
- Apply the Unix crypt function to the given 8-chars text and
- store the resulting crypted string into variable. The "salt" is
- usually a two-character string that will be found as the first
- two characters of the crypted string.
-
- Note that Unix crypt is a one-way function. It is not possible
- to decode the crypted string. One can only try to crypt another
- string with the same salt and compre the resulting crypted
- string.
-
-
- DESCrypt
- Crypt the given text using the given 8-chars key and store the
- result as an hexadecimal string in variable.
-
- DESDecrypt
- Decrypt the given hexadecimal string using the given 8-chars key
- and store the result in variable.
-
-
- MD5
- Compute the MD5 checksum of the given text and store it as an
- hexadecimal string in variable. Can be used as an alternative to
- the Unix crypt function to check for passwords bigger than 8
- characters.
-
-
- CheckUser
- Connect to the $Security-Gateway and check if the given user
- exist in the given radius domain and uses the specified
- password. If the domain is "Unix", use the Unix user/password
- definition on the security gateway. For any other domain, use
- the security gateway domain definition file to determine the
- real Radius or NT domain to check.
-
- Set the value of $Security-Check to "PASSED" or "FAILED". The
- password do not transit in clear on the network.
-
-
- 5.1.11. Disk-related commands
-
- This section lists commands for preparing the hard-disk. Optional
- arguments are listed between parenthesis.
-
- GetPartitions variable (disk)
- Read the partition table(s) for the given disk and store it as a
- string into the given variable. The result string is a space-
- separated list of Type:Size, where
-
- ╖ Type is FAT16, EXT, BIGDOS, NTFS, FAT32, FAT32-LBA, BIGDOS-LBA,
- EXT-LBA, LINUX-SWAP, LINUX-EXT2 or the decimal filesystem id for
- unknown types.
-
- ╖ Size is the size of the partition in megabytes.
-
- See SetPartitions for more informations about partitions.
-
-
- SetPartitions
- Setup the partition table(s) to the content of the string. The
- format used is the same that for GetPartitions. This command
- also reset all boot flags (hint: use SetBootPart).
-
- The main partition table in the master boot record (MBR) has
- only four entries. Moreover, DOS and Windows accept only ONE FAT
- partition (called the Primary partition, C:) in the main
- partition table. Any supplemental FAT partition should be nested
- in an extended partition (and is thus called a Logical
- partition). If we give numbers 1-4 to the partitions described
- in the MBR partition table and numbers 5-8 to the partitions
- described in the first extended partition, the definition of two
- FAT partitions would work by defining partition 1 as FAT,
- partition 2 as EXT and partition 5 as FAT. Partitions 3,4,6,7
- and 8 should be marked as UNUSED. The same scheme can be used
- recursively to define more than two FAT partitions: nesting
- another extended partition in partition 6 and adding a logical
- FAT partition in partition 9.
-
- In the most strict interpretation of DOS specifications, that
- means that entries 3 and 4 of the partition tables are never
- used. In practice, some versions of DOS and some other OS are
- able to use more than two partitions per partition table, but
- there is no clear rule. On this side, BpBatch is rather
- flexible in its interpretation of partition tables, it can often
- understands things that OSes cannot.
-
- One universal rule is that there should never be more than one
- extended partition per partition table, otherwise the partition
- numbering scheme breaks down.
-
- If you want to try funny configurations, make your own
- experiments, but don't complain if the OS does not recognize
- your partitions. The only way it is guarantee to work is to use
- the primary partition to store the OS boot partition, and to
- nest all other partitions, one at a time, in extended
- partitions.
-
- Example of extended partitions :
-
- SetPartitions "BIGDOS:100 EXT:400 EMPTY EMPTY BIGDOS:400"
-
-
-
-
- GetBootPart variable (disk)
- Get the partition number with the boot flag turned on (DOS says:
- the activated primary partition) and store it to the variable.
- The first partition is numbered 1. If no partitions has the
- boot flag turned on, answers zero.
-
-
- SetBootPart partition (disk)
- Set the boot flag to the given partition. The boot flag let the
- master boot record (MBR) choose which partition to boot on. The
- first partition is numbered 1.
-
-
- Blank partition (disk)
- Fill the given partitions with zeroes. Can take quite a lot of
- time for big partitions. Do not format the partition for any
- operating system. See also Clean.
-
-
- Clean partitions (disk) (
- Fast-format the given partition(s) according to the type
- declared in the partition table. If a label is given and the
- filesystem supports it, setup the partition label. For a
- paranoiac full format, call Blank on the partition first.
-
- Clean is supported for (FAT16) BIGDOS, FAT32, EXT, LINUX-EXT2
- and LINUX-SWAP partitions. To clean the master boot record
- (MBR), use Clean 0.
-
- Clean should be used on data partitions and on MBR/EXT
- partitions. It is totally useless to clean a partition before
- unzipping a filesystem on it using FullUnzip.
-
-
- FullUnzip
- Decompress a full disk archive to the given partition,
- overwriting any existing file (clean-up on the fly).
-
- FullUnzip is supported for (FAT16) BIGDOS, FAT32 and LINUX-EXT2.
-
- This commands turn on VESA graphics to display a progress
- banner, unless VESA has been turned OFF.
-
- IncrUnzip
- Decompress an incremental disk archive to the given path. Files
- in the archive replace those with the same name on the target
- path, but other files are not deleted.
-
- IncrUnzip is supported for (FAT16) BIGDOS, FAT32 and LINUX-EXT2.
- This command is far less efficient than FullUnzip since the
- existing filesystem structure must be preserved. However, it
- avoids multiplying the number of different disk images by
- storing the differences only.
-
-
- FileUnzip
- Uncompress a file previously compressed with MrZip FileZip
- command. The file is validated by a 32-bits CRC.
-
-
- Copy
- Copy the source file to the destinaton file, byte-to-byte. Can
- be used after a FullUnzip for instance to update configuration
- files from the server without rebuilding the image. Better to
- use FileUnzip for big and easy-to-compress files.
-
-
- Append
- Copy the first, then the second file to the destination file,
- byte-to-byte. Can be used on arbitrary large files. The
- destination file cannot be one of the two source files.
-
-
- Patch
- Read the source file and perform variable substitution before
- writing it to the destination file. The interpretation of
- characters above ASCII 127 depends on the value of $IsoLatin.
-
- By default, variables are recognized when prefixed by "${" and
- postfixed by "}". This can be changed to any other non-empty
- string. remember that if you want to use a dollar sign within
- the prefix or suffix, you must escape it or it will get macro-
- evaluated. For instance, if you want to explicitely use the
- default prefix and postfix, use:
-
- Patch "source-file" "dest-file" "\${" "}"
-
-
-
-
- MkDir
- Recursively create directories from the root to the given full
- path. If the path already exists, this command has no effect.
-
-
- Delete
- Remove the given file. The file must exist.
-
-
- DelTree
- Recursively remove all files and directories under the given
- path, and remove the directory itself.
-
-
- 5.1.12. Boot commands
-
- This section lists commands for continuing the boot process. Optional
- arguments are listed between parenthesis.
-
- HideBootProm
- Restore the memory and the interrupt vectors allocated by the
- bootprom. All attempts to make TFTP transfers will fail after
- calling this command. It is usually a good idea to call this
- command before HdBoot, or you might run short of memory under
- DOS/Windows. This command is implicitely called by FloppyBoot.
-
- Note that although this function restore all vectors
- "officially" rerouted by the BootProm, it does not seems to
- restore everything. But it works well enough for DOS and
- Windows.
-
-
- LoadRamDisk
- Load a floppy disk image into the extended memory and redirect
- the BIOS Disk Services to make floppy disk calls use this image
- instead. This command implicitely calls HideBootProm. Call
- FloppyBoot to boot on the ramdisk you just loaded.
-
- This kind of ramdisk may not be as robust as what you get when
- you use the TFTPBoot command. The only advantage is that it only
- steals a few hundred bytes of conventional memory instead of the
- >64 KB reserved by the TCP/IP BootPROM. Warning, nothing secures
- the extended memory in which the ramdisk resides. There is no
- way to uninstall such a ramdisk.
-
-
- LoadZRamDisk
- Do the same as LoadRamDisk, but for an image that has been
- compressed using MrZip FileZip command. Compressed ramdisks are
- protected against data corruption (and uncomplete download) by a
- byte count and a 32-bits CRC.
-
-
- TFTPBoot
- Chain to another boot file (for instance a floppy image made
- with InCom's BpShell program). See the file referencing
- conventions for accessing a file on another TFTP server.
-
-
- FloppyBoot
- Hide the Boot ROM, load the floppy disk boot sector and boot on
- it.
-
-
- HdBoot (disk)(:partition)
- Load the given boot sector and boot from it. The disk default to
- zero, the first hard disk, and the partition defaults to zero,
- ie. the master boot record. You can boot from any partition, but
- be warned that Windows 95 may not let you boot a partition that
- has not been set as the boot partition (hint: use SetBootPart).
-
- This command does not implicitely call HideBootProm, so you
- might want to call it before.
-
-
- LinuxBoot
- Load the given kernel and ramdisk into the high memory, setup
- the command line and boot the kernel. It is a good idea to put
- at least a minimal command line with the location of the root
- filesystem (like "root=dev/hda1"/). If you are using a linux
- system that heavily relies on lilo (like RedHat Linux 5.1), it
- may be necessary to add to the command line something like
- BOOT_IMAGE=linux. Note that the kernel can be loaded by TFTP
- (automatically cached on the hard disk) or directly from the
- target root partition.
- This command works for small and big kernels (zImage and
- bzImage).
-
-
- 5.1.13. National language support
-
- This section lists commands related not national language support.
- Optional arguments are listed between parenthesis.
-
- RemapKeys
- National keyboard support. Remap given keys to other characters.
- For instance, to swap the Y and Z keys, use
-
- Remapkeys "yzYZ" "zyZY"
-
-
- It is a good idea to use the quoted octal notation when using char¡
- acters not included in the minimal ASCII character set, in order to
- avoid a dependency to the iso-latin modal settings.
-
- For international keyboards, there are two keys that produce a
- backslash in non-remapped (US) mode. Each of them can be
- independantly remapped, thanks to the fact that BpBatch sees one of
- them as a key answering ASCII code 252 (octal) or ASCII code 335
- (octal) when shifted.
-
- If you send me a sample script that does keyboard mapping for your
- national keyboard, I will make it available under
- http://cuiwww.unige.ch/info/pc/remote-boot/soft/sample-scripts To
- help you make your own keyboard mapping, I suggest pressing all
- special keys without remapping the keyboard and writing down the
- character they produce. These will be the original-keys. The
- remapped-keys simply are the key you would have liked to see, in
- the same order. If some keys (either original or remapped) produce
- characters above ASCII dec 127, use the quoted octal notation. You
- can easily get the octal code for any given character by looking in
- the ASCII table of HelpPC for instance (HelpPC is a shareware
- hypertext on-line help program by David Jurgens).
-
-
- RemapAltkeys
- National keyboard support. Remap the given keys when ALT is
- depressed For instance, to map Alt-2 to the ampersand sign, use
-
- RemapAltKeys "2" "@"
-
-
- Note that dead keys are not supported.
-
-
- LoadCodePage
- Load and activate the given binary Codepage file. Codepages are
- used for the translation of Unicode characters (present on VFAT
- valumes for instance) into 8-bits characters. If you do not
- have the right Codepage loaded, you will get FAT warnings while
- accessing the filesystem when special characters are encountred.
-
- All binary codepage files are available at
- http://cuiwww.unige.ch/info/pc/remote-boot/soft/codepage.zip
-
- The default codepage is 850, a reordered superset of ISO-
- Latin-1. If you load a more exotic codepage, you should usually
- turn the variable $IsoLatin to "off" or you might get
- meaningless implicit conversions. Moreover, if you want to
- display exotic characters, you should also load the proper
- screen font (use "LoadFont").
- LoadFont
- Load and activate a VGA/VESA font, both in text and graphic
- mode. The font file must be a binary file of 16
- bztes/characters (8x16 bitmap). This command can be used for
- National Language Support as well as for Fantasy support.
-
- An archive with several fantasy fonts is available at
- http://cuiwww.unige.ch/info/pc/remote-boot/soft/fonts.zip. This
- archive also contains a program to extract fonts for your
- codepage from the DOS .CPI file.
-
-
- 5.1.14. Commands specific to MrZip
-
-
- Source...
-
- Source (i)archive "filename"
- Source path "path"
-
-
-
- Set the source for the archive manipulation to the given
- (incremental) archive file or disk path.
-
-
- Dest...
-
- Dest (i)archive "filename"
- Dest (i)dump
- Dest path "path"
-
-
-
- Set the destination for the archive manipulation to the given
- (incremental) archive file, dump or disk path. To control the
- quantity of data displayed during dump, use the $DumpFormat special
- variable.
-
-
- FileZip
- Compress a file for further decompression with FileUnzip or for
- using as ZRamDisk. The file is validated by a 32-bits CRC.
-
-
- Filter...
-
- Filter -"pattern"
- Filter +"pattern"
-
-
-
- Avoid/allow files and directories matching the given pattern
- (wildcards allowed) to be included in the archive. The pattern is
- matched agains the full pathname. By default, all files are
- included in the image. You only need to explicitely allow files
- that where cancelled by a filter. Each negative filter has its own
- positive filter (allowed) sublist.
-
- For DOS/Windows images, you will typically use
-
- Filter -"*.swp"
- Filter -"temp/*"
-
-
-
- and for Unix images, you will typically use
-
- Filter -"var/log/*"
- Filter -"tmp/*"
-
-
-
-
- CopyArchive
- Start the archive manipulation operation, according to source,
- destination and filter settings. Except in a few circumstances,
- you will probably use the shortcut below instead of explicitely
- calling CopyArchive. One circumstance in which you will use
- CopyArchive explicitely is when you want to change the
- fragmentation of an image, as follow:
-
- set FragmentSize="30 MB"
- Source archive "original.imz"
- Dest archive "refragmented.imz"
- CopyArchive
-
-
-
-
- FullZip
- Shortcut for
-
- Source path "path"
- Dest archive "full-archive"
- CopyArchive
-
-
- You should usually first setup filters.
-
-
- IncrZip
- Shortcut for
-
- Source path "path"
- Dest iarchive "incr-archive"
- CopyArchive
-
-
-
-
- FullDump
- Shortcut for
-
- Source archive "full-archive"
- Dest dump
- CopyArchive
-
-
-
-
- IncrDump
- Shortcut for
-
- Source iarchive "incr-archive"
- Dest dump
- CopyArchive
-
-
-
-
-
- XCopy
- Shortcut for
-
- Source path "srcpath"
- Dest path "dstpath"
- CopyArchive
-
-
-
-
- 5.2. NoBreak.sys
-
- Nobreak.sys is a very small (about 350 bytes only) driver that you
- include at the beginning of your config.sys. Its goal is to secure the
- boot process, until the user is logged in. DOS provides a setting for
- this (namely BREAK=OFF), but it is not drastic enough, and has almost
- no effect in the autoexec.bat. Our driver works by modifying the
- scan-code of the key pressed when a break is requested, directly at
- the BIOS level. This way, no program at all can receive a break until
- break is enabled again.
-
- The driver must be loaded from the config.sys (or using the devlod
- program from Undocumented DOS). Afterwards, break can be enabled by
- sending Yes to the NOBRK pseudo-device, and disabled again by sending
- No (in fact, only the first character, Y or N is significant).
-
- As this driver relies on the BIOS, it does only work for DOS and
- Windows 3.1. Windows 95 has its own low-level keyboard handling
- routines.
-
- Assembler source code is available.
-
-
- 6. Special TFTP Servers
-
- As the only network support available in the TCP/IP BootPROM is TFTP,
- there is a special interest in enhancing TFTP servers for providing
- new capabilities.
-
-
- 6.1. Incom Enhanced TFTP Server
-
- InCom GmbH distributes with the TCP/IP BootPROM an enhanced TFTP
- server that can send packets of up to 1408 bytes instead of the
- standard 512 bytes. This is a great enhancement that you should use.
- This server is available on the TCP/IP Bootprom Utility disk for
- Solaris, Windows and as Netware NLM.
-
-
- 6.2. Linux Enhanced TFTP Server
-
- We built a modified version of Linux TFTP server that acts as InCom
- enhanced TFTP server. Basically, we simply changed the packet size
- from 512 to 1408 bytes and the port from 69 to 59. It is available
- from http://cuiwww.unige.ch/info/pc/remote-boot/soft/etdtpd.tar.gz.
-
-
- 6.3. The Security Gateway
-
- We wrote a special TFTP server that serves as security gateway for
- authenticating users. This server runs under Linux or Solaris, and can
- authenticate users according to a Unix password database (NIS and
- shadow passwords are supported), a Windows NT (or Samba) server or a
- Radius server. It is available from
- http://cuiwww.unige.ch/info/pc/remote-boot/soft/stdtpd.tar.gz, with
- source and precompiled binaries. The precompiled binaries do not
- include NT password encryption as we cannot distribute libdes but
- compilation is straightforward.
-
- In order to use the security gateway, you just have to setup a trivial
- security domains configuration file that describes to which
- authentication server each logical security domains maps (the Unix
- domain implicitely maps to the server Unix password database). This is
- a sample configuration file:
-
-
- ______________________________________________________________________
- #
- # STFTPD configuration file
- #
- # This file specify the server of the "security domains". Two types of
- # authentication servers are supported : radius or winnt (winnt includes
- # NT Server and Samba)
- #
- # Format of radius servers
- # radius <domain> <serveraddress> <secret>
- #
- # secret is the secret word as specified in your /etc/raddb/clients file
- #
- # Format of SMB servers
- # winnt <domain> <serveraddress> <netbiosname>
- #
- # netbiosname is the NETBIOS name of your server
- #
- # Examples
- radius sec-dom-rad radiusserver testing123
- winnt sec-dom-nt1 192.168.1.1 NTSERVER1
- winnt sec-dom-smb samba SAMBA1
- ______________________________________________________________________
-
-
-
-
- Note that if you are using Samba, you must set security = user.
-
- You can also provide to the security server a file containing a list
- of users which are not allowed to log on (for which the check will
- fail anyways).
-
-
- 6.4. The Broadcast TFTP Server
-
- We wrote a special TFTP server that implements a home-made Broadcast
- variant of TFTP. Using this server, we were able to download images to
- 25 clients on a heavily loaded 10 Mb ethernet network at 6 Mb/s (it is
- more efficient than the regular TFTP because it does not need to
- acknowledge each packets). This server runs under Linux or Solaris.
- It is available from http://cuiwww.unige.ch/info/pc/remote-
- boot/soft/btdtpd.tar.gz, with source and precompiled binaries.
-
- As the TCP/IP bootprom does not support this protocol, our solution
- consist in booting a tiny ramdisk-based linux system using the tools
- described in this document, and running the Linux version of MrBatch
- which has built-in support for Broadcast TFTP. A simple batch file can
- the download all files to the cache in a few minutes, simultaneously
- on all client computers. You do not need to install Linux yourself to
- use this package, except if you have exotic hardware and cannot
- directly use the kernel provided in the package.
-
- The process works as follow. First, you startup the broadcast server
- manually, giving the number of expected client computers as argument
- (remember, this procedure is not to be used every day but only when
- you changed an image and want to ensure it is immediately uploaded to
- all your client computers). Then, you turn on all client computers,
- which will run the following BpBatch script:
-
-
- ______________________________________________________________________
- #
- # This batch is run by bpbatch to launch a mini-linux using an initial
- # ramdisk, which will then run mrbatch under linux.
- #
- # The broadcast TFTP protocol only works with the Linux implementation of
- # mrbatch, because of the lack of broadcast support in the bootprom itself.
- #
- # 1. Setup a tiny partition, to let a lot of space for the cache
- setpartitions "BIGDOS:50"
- # 2. Clean the MBR
- clean 0
- # 3. Run a Linux Kernel with initrd (Initial Ramdisk) supprt, and use
- # bcastrd.gz as the initial ramdisk (will be mounted root and then
- # executed via /linuxrc). See initrd.txt for more details about
- # initial ramdisks. You don't have to specify a root device (second
- # parameter is null) to the kernel, it will use the initial ramdisk.
- linuxboot "linux.krn" "" "bcastrd.gz"
- # 4. The initial ramdisk will run dhcpcd to setup networking using DHCP.
- # It will then run mrbatch -w bcastlx
- ______________________________________________________________________
-
-
-
-
- The initial ramdisk contains:
-
- ╖ dhcpcd, a DHCP client used to setup networking
-
- ╖ mrbatch
-
- ╖ linuxrc, a little wrapper automatically started by initrd and that
- starts dhcpcd then mrbatch.
-
- ╖ usr/lib/terminfo/l/linux, used by MrBatch
-
- ╖ dev/*, devices needed to run Linux and mrbatch
-
- All programs are statically linked and stripped, to avoid libc.so
- which is really huge. The resulting ramdisk is Gzipped and takes
- less than 300 KB. The kernel itself takes 450 KB (with many network
- cards and initrd support). When Linux is up and running, MrBatch
- is called with the following script (that you should edit for your
- needs):
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ______________________________________________________________________
- # This file is executed when mrbatch is launched by the initial ramdisk
- # bcastrd.gz
- # It's main purpose is to "broacast copy" files to the cache
- #
- # 1. Be verbose
- showlog
- # 2. Don't want a "press a key"
- set pauselog="OFF"
- # 3. Set partitions at their final values.
- # Important: Since you will copy files into the cache to be used in future
- # boot, you need to specify the same partitions as in the future boots.
- setpartitions "BIGDOS:1024"
- # 4. Clean the CACHE partition
- clean -1
- # 5. And the copy files into the cache, using the Broadcast TFTP protocol
- # (port 99)
- #
- # You can use the script "as is", but you surely need to modify the following
- # line ! In our example, we download the file mblinux.imz, which is the image
- # file for our installation of Linux.
- copy "$BOOTP-Server-IP@99:mblinux.imz" "{:-1}mblinux.imz"
- ______________________________________________________________________
-
-
-
-
- When the transfer is done, you can simply turn off all client comput¡
- ers and change their initial boot script to your favorite menu.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-