# palo.conf -- default arguments for palo
# 
# See /usr/share/doc/palo/README.html and run 'palo --help' for
# more information

# The following arguments are set up for booting from /dev/sda3, specifically
# mounting partition 3 as root, and using /boot/vmlinux as both the
# recovery kernel, and the default dynamically-booted kernel.
# --recoverykernel=/boot/vmlinux
# --init-partitioned=/dev/sda
# --commandline=3/boot/vmlinux HOME=/ TERM=linux root=/dev/sda3

#
#Usage: palo [options]
#    (if an option is repeated, the last instance of it takes precedence)
#    -?,	--help	Print this information
#    -c,	--commandline=default kernel command line
#		Maximum 1023 characters.
#    -k, --recoverykernel=path to recovery kernel (perhaps /boot/vmlinux)
#    -b, --bootloader=path to boot loader
		Defaults to /usr/share/palo/iplboot -- you usually don't
		need to use -b or --bootloader
#    -r, --ramdisk=path to initial ramdisk image
#    -I, --init-partitioned=partitioned device or file
#    		Initialize a pre-partitioned device, usually a hard disk.
#		The partition table is not modified.  Requires only -c and -b
#		though -k is customary and prudent.
#    -U, --update-partitioned=partitioned device or file
#    		Update a pre-partitioned device, usually a hard disk.
#		The partition table is not modified.  Usually used to
#		modify the default kernel command line (-c).
#    -s, --init-tape=file
#    		Initialize an unpartitioned file which can be copied to
#		tape, disk, or used as a bootp image.  Requires -c, -b, -k.
#    -C, --init-cdrom=iso-image-file
#    		Convert an ISO image already containing a kernel, boot loader,
#		and optionally a ramdisk, into a PA-RISC bootable image.
#		Requires -c, -b, -k, and optionally -r.  The files named on
#		the palo command line must have EXACTLY the same contents as
#		those already in the ISO image.
#    -f, --configfile=path to config file
#		Each line in the named configuration file is added
#		as a separate argument to the beginning of the palo
#		command line arguments (thus command-line options
#		override config file options).
#
#		Short or long options can be used with long options
#		peferred for readability in the configuration file.
#		WARNING: No quotations or other shell syntax is understood,
#		so use
#			--commandline=a b c
#		not
#			--commandline='a b c'.
#		The short-option config file form of the above is:
#			-c
#			a b c
#
#		Blank lines and lines beginning with # are ignored.
#		Whitespace at the beginning and ends of lines is discarded.
#
#		When -f is not specified, palo tries /etc/palo.conf.  Use
#		--configfile=/dev/null to avoid configuration files or
#		warnings when /etc/palo.conf is missing.
#
#'palo' with no arguments whatsoever is equivalent to 'palo -f /etc/palo.conf'.
#
#When more than one of -I, -U, -s and -C are used, only the
#last one is effective.
#The output file you requested does not exist.  If you are trying
#to create a file appropriate for booting from sequential media
#such as a tape or bootp, please add the -s option.
