





			       Choose-OS 
			      
			      
			 
			      
	   Version 0.8, Copyright (c) Tuomo Valkonen 1996-1997.
			      


CHOOSE-OS IS FREE SOFTWARE AND IS DISTRIBUTED ON AS IS BASIS. IT MEANS THAT
THE SOFTWARE AND DOCUMENTATION COMES ABSOLUTELY WITH NO WARRANTY. THE AUTHOR 
SHALL NOT BE RESPONSIBLE FOR ANY DAMAGE DONE BY THE PROGRAM TO YOUR HARDWARE, 
SOFTWARE, SANITY, HEALTH OR ANYTHING. NOT EITHER SHALL THE AUTHOR BE 
RESPONSIBLE FOR ANYTHING UNPLEASANT CAUSED BY MISTAKES IN THE DOCUMENTATION. 
YOU MAY COPY  CHOOSE-OS TO ANYONE (AND YOU'RE ENCOURAGED TO DO SO), BUT YOU 
MUST NOT CHARGE THEM FOR THAT. YOU MAY USE THE SOURCES, BUT IF YOU DO SO, 
THE ORIGINAL AUTHOR MUST BE MENTIONED AND THE SOFTWARE AND SOURCES MUST BE 
AVAILABLE FOR FREE! THE RESULTING SOFTWARE MUST ALSO COME ABSOLUTELY WITH NO 
WARRANTY.  BATTERIES NOT INCLUDED. SOME ASSEMBLY MAY BE REQUIRED. KEEP AWAY 
FROM SMALL CHILDREN.


WHAT IS CHOOSE-OS ?

 Choose-OS is a fully configurable boot loader for Linux/PC.
 It is a program which, when you boot your computer, allows you to 
 select the operating system to boot.
 Yes, it does the same stuff that LILO or OS/2 boot manager do.
 Choose-OS has, though, some nice features not found in many or none 
 other programs of this kind.

 Look 'n Coolness:
	* You can choose the colors used for each image separately.
	* You can position the menu and timer or even each image
	  separately on screen.
	* Hotkey can be specified for each image.
	* And finally, you can have a background image 
	  (plain ascii text or screendump format) !
	    
 Other stuff:
	* Emergency bootsector - If there's been a failure loading 
	  Choose-OS mapfile or 2nd stage loader, an emergency bootsector 
	  will be tried to load, if one specified.
	* An easy-to-use configuration program for X, Visual Chos. 
	* Initrd,bzImage,MBR rewrite, hda/hdb and fd0/fd1 swapping, etc.


HOW TO INSTALL IT ?

 So, to make it work you have to install it on your system.

 Here's too good ;) step-by-step instructions :
	0) Login as 'root'

	1) 'tar xzf chos-<version>.tar.gz' somewhere on your path
	   will create a directory chos-<version>. Change to that
	   directory.

	2) Type './Install' to automagically copy the appropriate files
	   to appropriate locations.

	3) Create yourself an /etc/chos.conf file.
	   You may use files in the samples/ subdirectory as templates.
	   See CONFIGURATION FILE.
	   See ./docs for QuickStart.

	4) Make sure you have a working boot disk available (or
	   install chos on a floppy and if it works, then on the harddisk.)
	
	5) Run 'chos'
	
	6) The last chance to make a boot recovery disk !

	7) Type "reboot" or just simply press CTRL-ALT-DEL, 
	   whatever you like.

	8) Pray it works ;)

	9) Enjoy =).


CONFIGURATION FILE

 '#' always tells that the rest of the line is comment.
	   
 Each non-comment/non-blank line begings with a keyword followed by 
 options. Choose-OS currently recognizes the following keywords:
	
 GENERAL:
	
	delay=<xx>
 		Sets the delay to wait before bootin' the first 
		image to <xx> seconds. Setting <xx> to "off" will
		cause delay to be off.
		Default: 30 secs.

	fastboot=<no|pressed|not_pressed>
		default=no. This option can be used to tell chos
		when to load the first image at the bootup without
		even displaying the menu and stuff at all.
		
		Setting this option to 'pressed' will fastboot when
		any of the modifier keys (shift,ctrl,alt) is held
		down.
			
		Setting it to 'not_pressed' ('not pressed' is ok too)
		will automatically make chos load the first image, 
		unless you hold down one of the modifier keys 
		( la LILO), in which case it will display the menu.
	
	install=<device>
		Tells Choose-OS to install it's boot sector on 
		<device>. 
		Default: None. This is required!
		
	emergency=<name>
		Ask chos to use <name> as "emergency" bootsector.
		"Emergency" bootsector is a bootsector that will be
		tried to load if chos, for any reason, couldn't load
		it's second stage loader or mapfile.

 LOOK:

	banner=<banner>
		This is what Choose-OS shows on top of the menu.
		The default is "Choose-OS v<x>.<y> BootUp Menu."
		'n I'm sure U wanna change it to a more interesting
		one, like "Whatcha wanna play today with ?",
		"Good morning, whatcha wanna have for breakfast?" or
		something... Oh, BTW, the maximum length of the 
		banner is 64-1 characters...
	infoline=<on_off>
		Do ya wanna see copyright 'n key help at the
		bottom of the screen at bootup ? If not, set this
		to "off". Else set it to "on"

	color=<color>
		Let's you specify color used for normal text.
		
	selection=<color>
		Highlight color of selected image. It can only
		be one of the 8 first colors.

	background=<type>:<file>
		Tells the background "image" to use.
		Type may be 'ascii' for a normal ascii text file
		or 'dump' for a screen dump.
		See BACKGROUND IMAGES below for more information.

	menupos=<col>,<row>
		Tells the position where to place menu.
		Column must be in range 0<=col<80-30 (image name length
		is 30) and row must be in range 0<=row<25-nr_images.
		This also moves timer position, if it is not set.
		
	timerpos=<col>,<row>
		Tells timer counter position.
		Column must be in range 0<=col<77 and row in range
		0<=row<25. Setting this will cause the string
		"Time left: " not to be printed.


 IMAGE CONFIGURATION:

	<image_type> "<name>"{
		options_and_stuff
	}

	Where: 	<image_type> can be  one of these:
		"linux"		for normal linux kernel.
		"big_linux"	for bzImages
		"bootfile"
		"bootsect"	these two are exactly the same thing, but
					may have different options in the 
					future. They are used to boot a bootsector
					of an other operating system.
				
		<name> is the name shown in the menu.
	       
	Common "options_and_stuff":
	       		
		color=<color>
	 		Use <color> for the image.
	       		
	       	image=<file>
	       		The file/device name of the bootable.
	       	
	       	hotkey=<key>[,hidden]
	       		<key> can be used to quickly start
	       		the image. <key> can be 0-9,A-Z
	       		(lower case will be converted to 
	       		upper). If you put ',hidden' after
	       		the key, it will not be displayed
	       		before the image name.
	       		
	       	position=<x>,<y>
	       		The position of the choice on screen.
	       				
	       	loader=<loader>
	       		Use OS-specific loader <loader> instead
	       		of default.
	       			
	Linux-specific (linux and big_linux):
	       		
		cmdline=<command_line>
		    	This is the default command line for
		       	Linux.
		       		
		initrd=<file>[,address]
		      	Asks Choose-OS to load <file> as initial ramdisk. 
		      	If no address is given, or address is 'top', the
		       	ramdisk will be loaded on top of memory. 
		       	Address may also be a memory address >2M 
		       	(preferably>4M) ( 6M and 8M) for bzImages).
		       	You must have a 2.x kernel for this feature.
		       		
	Bootsector-specific:
	       	
	    	THESE ARE ALL UNTESTED OR OTHERWISE DANGEROUS FEATURES !
	    	YOU'RE USING THESE AT YOUR OWN RISK ! 
	    	PLEASE BACKUP ALL MATTER-OF-LIFE-AND-DEATH DATA ON 
	    	YOUR HARDDISKS BEFORE TRYING THESE !
	    	YOU MUST JOE MAKEFILE TO COMPILE THESE FEATURES IN !
		       		
	       	dos4boot=yes|no
	       		tell dos4+ to boot off hdb
		       			
	       	rewrite=<device>
	       		<Device> is either a block special device or "yes", 
	       		in which case /dev/hda will be used.
	       		<Device> must be a whole harddisk device,
	       		not a partition.
		       	
	       		This needs a little work, but is intended for 
	       		partition table active flag/type modification.
		       	Can be used to hide DOS from Windog 95/NT.
		       					       	
		     	DO NOT USE IF YOU DON'T KNOW WHAT YOU'RE DOING !!!
		     	
		The OS must use bios for disk access for
		these two to work:
		   	
		swapfd=yes|no
			Swap floppies fd0/fd1
		       		
		swaphd=yes|no
		       	Swap harddisks hda/hdb
		  

 FILES:
	*
	* These will be overridden by the ones given on the
	* command line, if any are...
	*
		
	bindir=<directory>
		Search for loaders and stuff in <directory>
		Default is /boot
		
	bgfile=<file>
		Save background in <file>.
		Default is /boot/chos.background.
		
	mapfile=<file>
		Use <file> as map file.
		Default is /boot/chos.map

	

COLOR NAMES

 Colors are specified in the following format:
		
	<foreground>[,<background>]
		
 Foreground can be any of the following and background (optional)
 one of the eight first:
	
	black		blue		green		cyan
	red		magenta		brown		lightgray
		
	darkgray	lightblue	lightgreen	lightcyan
	lightred	lightmagenta	yellow		white
		

SAMPLE CONFIGS:
		   
 The samples/ directory should contain at least the following sample
 configurations:

	chos.conf.example	Traditional (version<=0.41) 
				lookalike configuration file
	   			(dull).
	
   	chos.conf.dump		Check this out...
	 chos.bin
	 chos.ans
	
	chos08.conf		Even better one.
	 chos08.bin
	 chos08.ans
	
   	chos.conf.ascii		Sample config that uses...
   	 chos.asc		 text file as background
 	 chos.be		 another text background...
	 	

BACKGROUND IMAGES:

	Choose-OS allows you to have your own ascii art (or any text)
	as background.
	The file may be in screen dump or plain text file format.
	The file does not have to be 80x25 but if it's bigger it will
	be truncated.

	Screendump files are in the format as they're in
	video memory - character first, then the attribute.
	I used a DOS proggy, SHMANSi to make the sample file (it's new!)
	There is also an ansi version (chos.ans) in the samples directory, so 
	you can previev it by typing 'cat samples/chos.ans', but first set 
	codepage 437 (echo -e '\033(K'). Type "echo -e '\033(B'" to return 
	to latin1. Hmmm... it looks a lot better in 50-line mode...
	
	(it's not that good, but I ain't no artist and it is only meant to 
	 show you what can be done with chos ;).
	There is also at least a program named 'Linux ANSI Draw' 
	for Linux but those DOS programs are still more featured...
	
	TIP: If someone can draw a nice looking ansi penguin logo, please
	     send it to me!.
	
	
COMMAND LINE:

 Choose-OS accepts the following command line options:
	
	-h
		Show version,copyright 'n usage.
			
	-v
		verbose

	-c <config_file>
		Uses <config_file> as configuration file.
		Default is /etc/chos.conf.
		
	-t	
		Test. Specifying this option will not cause map
		file or boot sector to be written on disk.
			
	-view
		View the resulting menu. Will not install anything
		and can even be run as non-root.
		You can also use 'showscreen background [map]' to
		later view the menu.
		
	-y	
		Answer yes to all questions.
		
	*
	* The following will override the ones specified in the 
	* configuration file.
	*
		
	-b <bindir>
		Search for loader and stuff in <bindir>
		Default is /boot.
			
	-m <map_file>
		Uses <map_file> as boot image map file.
		Default is /boot/chos.map.

	-i <background_file>
		Use <background_file> as a file to store background
		"image" in.


LINUX COMMAND LINE:

 This section describes the syntax of Linux command line.

 The command line is simply a string of parameters to transfer to Linux.
 Valid parameters are for example:
	ro		Mount root device read-only.
	rw		Mount root device read-write.
	root=<device>	Tells Linux to use <device> as root device.
			This can be a hexadecimal number or a path 
			name. Overrides the one hard-coded to kernel.
		
	There are lotsa others too depending on what drivers you have 
	but it's not the purpose of this document to describe 'em.
	
 Choose-OS interpretes "vga=<mode>" parameter itself. 
 The valid values for <mode> are:
	NORMAL		normal 80x25
	ASK		Tell Linux to ask for the mode
	EXTENDED	EGA 80x43 / VGA 80x50
	0x<????> 	where <????> is a hexadecimal number for the 
			mode.

 The default command line given in the configuration file can be
 overridden by pressing space,not enter, at the bootup menu and typing 
 another one.

KEYS:

 The following keys can be used in the bootup menu:
	
	Up/Left arrows:		select previous image
	Down/Right arrows:	select next image
	Enter/Space:		start selected image.
				In case of Linux, pressing
				space will also prompt for command line.
				
 Default hotkeys will also be assigned to each image. They will be 
 shown before the image name. By pressing such key, you can start 
 the image quickly. You can change the hotkey in the config file 
 with the 'hotkey=<key>' option.


RECOMPILING:
	
 If you need to recompile Choose-OS (e.g. want a not-compiled-in-by-
 default feature in use), change to the ./sources directory,
 'joe Makefile' to configure it for your, 'make depend', and finally
 'make'. The resulting binaries (chos,chos.loader,chos.bsect) will
 be placed in sources/.. (this directory).
	

CREDITS:
	
 The program was written by 
	Tuomo Valkonen <tuv1@freenet.hut.fi>:
		
 Bootsector rewriting feature and Visual Chos by
	Andreas Blome <flower@Informatik.uni-bremen.de>

 Showscreen by
 	Bernhard Ehlers <behlers@t-online.de>
 	
THANKS:

 I wanna thank all the people who have helped me to find bugs and
 who have come up with great improvement ideas. You're all helping me
 to make Choose-OS the ultimate boot loader =) 
 	
CONTACTING THE AUTHOR:

 If you wanna tell me how great/what a piece of shit Choose-OS is
 you can send me some mail to the address below.
 When ya notice a __big bad bug__ or have a good suggestion on 
 improving Choose-OS you will of course send me some mail.
 if ya have made an improvement, good looking background ansi 
 graphics, etc. why don't ya mail it to me to be included in the
 next release so that everyone can benefit of it.

 The address is:
	
	tuv1@freenet.hut.fi

 One more thing:
	Before asking if Choose-OS is gonna support joku-homma-jota-
	se-ei-viel-tue, please first check 
	 sunsite.unc.edu/pub/Linux/system/boot (and /pub/Linux/Incoming)
	to see that you have the latest version - it might already support.
	   
OTHER STUFF I'VE RECENTLY WRITTEN FOR LINUX (what else?):

	* Xtris
	  - Yet another tetris for X.
	    Better (or at least nicer looking) than the others for Linux/X IMHO.
	    (sunsite.unc.edu/pub/Linux/games/arcade/tetris/Xtris-<version>.tar.gz)
	
	* Xinsane
	  - It is another game I made for X11 and SVGAlib.
	    It is a clone of the game of 'insane game' for ti85 with
	    TCP/IP support.
	    (sunsite.unc.edu/pub/Linux/games/arcade/Xinsane-<version>.tar.gz)

	* Xsquarez
	  - If ya like tetris/Xtris, you're gonna love this one!
	    It is a clone of 'squarez' for ti85. 
	    (sunsite.unc.edu/pub/Linux/games/arcade/tetris/Xsquarez-<version>.tar.gz)

Nice rebooting....


