<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
<!ENTITY BA "<command>BOOT_ADMIN</command>">
<!ENTITY PA "PA-RISC">
<!ENTITY PL "PA/Linux">
<!ENTITY L "Linux">
<!ENTITY PO "<command>PALO</command>">
<!ENTITY V "<emphasis>via</emphasis>">
<!ENTITY D "Debian">
<!ENTITY trade "&#x2122;">
<!ENTITY W "<trademark>Windows</trademark>">
<!ENTITY prompt "<prompt>[user@machine ~/dir]&gt;</prompt>">
<!-- Please use these abbreviations -->
]>
<!-- Tabstops = 2, indents = 2, attempt wordwraping around 100 -->
<!-- http://www.oasis-open.org/docbook/documentation/reference/html/docbook.html -->
<book>
	<bookinfo>

		<title>&PA;/Linux Boot HOWTO</title>

		<authorgroup>
		  <author>
			<firstname>Thomas</firstname>
			<surname>Marteau</surname>
			<affiliation>
			  <orgname>TuxFamily</orgname>
			  <address>
				<email>marteaut@tuxfamily.org</email>
			  </address>
			</affiliation>
		  </author>
		  <author>
			<firstname>Deb</firstname>
			<surname>Richardson</surname>
			<affiliation>
			  <orgname>The Puffin Group</orgname>
			  <address>
				<email>deb@thepuffingroup.com</email>
			  </address>
			</affiliation>
		  </author>
		  <author>
			<firstname>Thibaut</firstname>
			<surname>Var&egrave;ne</surname>
			<affiliation>
			  <orgname>PA/Team</orgname>
			  <address>
				<email>T-Bone@parisc-linux.org</email>
			  </address>
			</affiliation>
		  </author>
		</authorgroup>

		<copyright>
			<year>1999</year>
			<holder>The Puffin Group and Deb Richardson.</holder>
		</copyright>
		<copyright>
			<year>2001</year>
			<year>2002</year>
			<year>2003</year>
			<holder>Thomas Marteau.</holder>
		</copyright>
		<copyright>
			<year>2002</year>
			<year>2003</year>
			<year>2006</year>
			<holder>Thibaut Var&egrave;ne.</holder>
		</copyright>

		<legalnotice>
			<para>
				Permission is granted to copy, distribute and/or modify this
				document under the terms of the GNU Free Documentation
				License, Version 1.2 as published by the
				Free Software Foundation; with no Invariant Sections, with
				no Front-Cover Texts, and with no Back-Cover Texts.
				A copy of the license can be found at
				<ulink url="http://www.gnu.org/copyleft/fdl.html">http://www.gnu.org/copyleft/fdl.html</ulink>.
			</para>
		</legalnotice>

		<legalnotice>
			<!-- A Standard Disclaimer -->
		  <para>No liability for the contents of this document can be accepted.
				Use the concepts, examples and information at your own risk.
				There may be errors and inaccuracies, that could be damaging
				to your system. Proceed with caution, and although it is highly
				unlikely that accidents will happen because of following advice
				or procedures described in this document, the author(s) do not
				take any responsibility for any damage claimed to be caused by
				doing so.
		  </para>

		  <para>All copyrights are held by their by their respective owners,
				unless specifically noted otherwise. Use of a term in this
				document should not be regarded as affecting the validity of
				any trademark or service mark. Naming of particular products or
				brands should not be seen as endorsements.
		  </para>
		</legalnotice>

		<keywordset>
		  <keyword>PA-RISC</keyword>
		  <keyword>Linux</keyword>
		  <keyword>boot</keyword>
		</keywordset>

		<abstract>
		  <para>This document outlines the procedures to get the &PA;/&L;
				kernel to boot on your &PA; system. It also explains the usage of &PO;,
				the kernel loader for &PL;. You will find much information on how to
				compile a kernel from the source available at
				<ulink url="http://cvs.parisc-linux.org/">http://cvs.parisc-linux.org/</ulink>.
				Please note that this HOWTO version is newer than Deb Richardson&apos;s and
				includes more accurate information because of the progress of the port.
				Nevertheless, it&apos;s worth mentioning that this document kept parts of Deb&apos;s
				original work and unveiled some remarkable information.</para>

		  <para>If you are looking for information related to HP
				hardware but not directly to &PA;, please read
				<ulink url="http://www.tldp.org/HOWTO/HP-HOWTO/">Bruno
				Cornec&apos;s HP-HOWTO</ulink>.</para>

			<para>Note: by the time this HOWTO was started, &D; was the only &L;
				distribution available for the &PA; platform, hence the &quot;&D;
				color&quot; of this document. Some times, &D; specific commands
				will have to be replaced by their equivalent, if any.</para>
		</abstract>

		<pubdate>2006-06-06</pubdate>
		<edition>version 1.5 for DocBook V4.2</edition>

		<revhistory>
		  <revision>
				<revnumber>1.5</revnumber>
				<date>2006-06-06</date>
				<authorinitials>tv</authorinitials>
				<revremark>
			  	XML cleanup, improved and reorganized contents. Updated to palo 1.5+ and kernel 2.6.
				</revremark>
		  </revision>
		  <revision>
				<revnumber>1.1</revnumber>
				<date>2003-11-01</date>
				<authorinitials>tm</authorinitials>
				<revremark>
			  	Added Jeremy Drake&apos;s &W; server boot howto.
				</revremark>
		  </revision>
		  <revision>
				<revnumber>1.0</revnumber>
				<date>2002-10-04</date>
				<authorinitials>tm &amp; tv</authorinitials>
				<revremark>
			 	 Content done by Thibaut. Ready for Woody release. Added Glossary and bibliography. XML conversion.
				</revremark>
			</revision>
		  <revision>
				<revnumber>0.9</revnumber>
				<date>2002-01-15</date>
				<authorinitials>tm</authorinitials>
				<revremark>
					This version brings you some useful advices for compiling your own kernel on hppa systems.
				</revremark>
		  </revision>
		  <revision>
				<revnumber>0.8</revnumber>
				<date>2001-10-17</date>
				<authorinitials>tm</authorinitials>
				<revremark>
					This version takes care of the change of name of the official FTP and CVS sites and modify the license.
				</revremark>
		  </revision>
		  <revision>
				<revnumber>0.7</revnumber>
				<date>2001-10-13</date>
				<authorinitials>tm</authorinitials>
				<revremark>
				This version adds some updates due to the progress of &PL;.
				</revremark>
		  </revision>
		  <revision>
				<revnumber>0.6 draft</revnumber>
				<date>2001-09-26</date>
				<authorinitials>tm</authorinitials>
				<revremark>
					This version contains some minor changes and complete the &quot;obtaining bootp/tftpd&quot; section.
				</revremark>
		  </revision>
			<revision>
				<revnumber>0.5 draft</revnumber>
				<date>2001-07-03</date>
				<authorinitials>tm</authorinitials>
				<revremark>
					This version is a large update from Deb&apos;s work.
				</revremark>
		  </revision>
		  <revision>
				<revnumber>0.3 draft</revnumber>
				<date>1999-11-24</date>
				<authorinitials>dlr</authorinitials>
				<revremark>
					The initial and published version of this HOWTO.
				</revremark>
		  </revision>
		</revhistory>

	</bookinfo>




	<preface id="introduction">
		<title>Introduction</title>

		  <para>You just received this &PA; box you bought online, or maybe you
				got it from your company scrapyard. Anyway, here comes the question of the
				operating system you are going to use. The &PL; project consists in porting
				&L; to the &PA; architecture, and we hope that if you decide to use it on
				your box, this HOWTO will help you in the process of setting it up.</para>

		  <para>In addition to porting the &L; kernel, the development team is working
				on porting the &D; project to &PA;. In fact, by the time we wrote this
				document, over 97% of the package pool is available for the stable
				&D; release (3.1, aka <emphasis>Sarge</emphasis>) on hppa (see
				<ulink url="http://buildd.debian.org/stats/hppa.txt">the buildd stats</ulink>
				for detailed data). Some &D; developers and users reported that the
				port was one of the easiest to install, as it feels like installing an
				i386 system.</para>

		  <para>For more information about the &PA;/&L; porting project,
				please see <ulink url="http://www.parisc-linux.org/">http://www.parisc-linux.org/</ulink>, or a mirror site like
				<ulink url="http://www.fr.parisc-linux.org/">http://www.fr.parisc-linux.org/</ulink>.
				This site deals with kernel development and improvement. For user-space
				troubles, please refer to
				<ulink url="http://www.debian.org/ports/hppa/">&D; hppa port pages</ulink>.</para>

		  <para>In a few words, this HOWTO is aimed at anyone looking for some
				help and information about using &L; on a &PA; system. No particular prior
				knowledge is necessary but bases about how &D; packages work, and general
				background about &L; can be helpful.</para>
				
			<para>It is also worth mentioning that some sections of the present document
				aren&apos;t Linux-centric, and may be of use to people dealing with other OSes,
				such as BSDs or even HP-UX.</para>

		  <para>After listing supported hardware, this HOWTO explains some commands
				of the Boot Console Handler (<acronym>BCH</acronym>) available at boot time. Then, the
				features of the &PL; kernel loader are introduced in another chapter,
				and finally many ways to get your system up and running are detailed.
				At the end, the text goes deep in the kernel compilation and configuration,
				as well as a few appendices giving some extra hints.</para>

	</preface>




	<chapter id="hardware">
		<title>Supported Hardware</title>


		<para>With the release of &PA; architecture in &D;&nbsp;3.0
			(aka <emphasis>Woody</emphasis>), a major improvement was
			made in term of quantity and quality of hardware support.
			Since 0.9.3 released<footnote><para>Before the first release of Debian on hppa,
			there has been unofficial releases of Woody snapshots, entitled "&PL; releases",
			and numbered <emphasis>0.x</emphasis>. Immediately after the release of Woody,
			the &PL; port switched to the normal Debian numbering scheme. In other words,
			&D; 3.0 is consecutive to &PL; 0.9.3.</para></footnote>, the kernel has been
			greatly improved, so that much unsupported hardware by the time 0.9.3 went out
			is now handled. That&apos;s why even if your model is not listed here, you might
			give it a try and report your result to the mailing list:
			<email>parisc-linux@lists.parisc-linux.org</email>.
		</para>
		
		<note><para>Mind that as of this document&apos;s publication date, the 2.4 series of the
			Linux kernel are deemed obsolete, and no development happens in that branch.
			Any new comer to the PA-RISC/Linux port should look at the 2.6 kernel series,
			which supports much more hardware than the 2.4 does. Accordingly, one will not try
			to use the now aging <emphasis>Woody</emphasis> release and will instead focus
			on its successor: <emphasis>Sarge</emphasis>, or even better, the upcoming 
			<emphasis>Etch</emphasis>.</para></note>

		<para>The following &PA; machines should work just fine, provided that you follow the
			instructions of the present document.
			Please note that this list can change at any time.
			The best way to get an up to date version is to look at
			<ulink url="http://www.pateam.org/list.html">http://www.pateam.org/list.html</ulink>.
			This is the place to find relevant information about a specific model,
			including special boot procedures.
			More hardware information can be found on <ulink url="http://www.openpa.net/">OpenPA</ulink>.
		</para>

		<para>
			SMP machines should work with SMP kernels (and UP ones, of course) unless stated otherwise.
		</para>

		<itemizedlist>
		  <listitem>
				<para>All 712 models.</para>
		  </listitem>
		  <listitem>
				<para>All 715 models including Strider series.</para>
		  </listitem>
		  <listitem>
				<para>All 705, 710, 720, 730, 750 models should work.</para>
		  </listitem>
		  <listitem>
				<para>Some 725, 735 (no HVD SCSI), 755 models are now working.
					But since there was not a lot of feedback about these machines, we can not be
					more explicit.</para>
		  </listitem>
		  <listitem>
				<para>The VME-like systems are supported. This includes 742 and 743.</para>
		  </listitem>
		  <listitem>
				<para>A180 and similar.</para>
		  </listitem>
		  <listitem>
				<para>A500, and similar (rp2400 series).</para>
		  </listitem>
		  <listitem>
				<para>BXXX models like B132, B160 and B180. These boxes can be used in the
					framebuffer mode through the Standard Text Interface.</para>
		  </listitem>
		  <listitem>
				<para>BXXXX models like B1000, B2000 and B2600. These boxes can be used with
					<literal>STI_CONSOLE</literal>, but framebuffer only works with VIS-EG cards.
					FX adapters are not supported.</para>
		  </listitem>
		  <listitem>
				<para>CXXX models like C100, C110, C160, C180, C200, C240, C360.</para>
		  </listitem>
		  <listitem>
				<para>CXXXX models. Indeed, BXXXX and CXXXX are the same kind of machines,
					based on Astro/Elroy (aka SBA/LBA) chipsets with varying CPU speeds,
					number of memory/PCI slots. C3000, C3600, C3750 are reported to be working.</para>
		  </listitem>
		  <listitem>
				<para>D class works unless you have a Remote Management Card installed. Even then,
					it still kind of works, it&apos;s just that ttyS0 gets assigned to the second
					serial port and you have to switch cables around.</para>
		  </listitem>
		  <listitem>
				<para>J class is quite well supported. It has the same split as C class,
					<emphasis>i.e.</emphasis> JXXX and J2240 are U2/Uturn based and JXXXX are
					Astro/Elroy. It is the SMP version of CXXXX models.</para>
		  </listitem>
		  <listitem>
				<para>K class is supported if you are using recent ISO images (<emphasis>e.g.</emphasis>
					Sarge ones).</para>
		  </listitem>
		  <listitem>
				<para>L class and similar (rp5400 series).</para>
		  </listitem>
		  <listitem>
				<para>N class: N4000 (some rp7400 series are reported to work).</para>
		  </listitem>
		  <listitem>
				<para>R class is basically the same as D class.</para>
		  </listitem>
		</itemizedlist>

		<para>
			These are not really working yet but work is being carried on.
		</para>
		
		<itemizedlist>
			<listitem>
				<para>The current 8-way (and bigger) machines using SX1000 chipset and pa8800
					(or pa8900) processors do not work yet.  Similarly, smaller 2-socket and
					4-socket platforms using ZX1 chipset and pa8800 (or pa8900) such as rp3400 series do
					not work correctly yet either.</para>
			</listitem>
		</itemizedlist>

		<para>
			No plan to get the following hardware completely supported in the near future:
		</para>

		<itemizedlist>
		  <listitem>
				<para>E class: E35 and E55 are known to work diskless. The SCSI support is not expected
				to work anytime soon.</para>
		  </listitem>
		  <listitem>
				<para>F,G,H,I classes: Currently not supported.</para>
		  </listitem>
		  <listitem>
				<para>SuperDome: It boots &quot;single-cell&quot;, multi-IOMMU doesn&apos;t work.</para>
		  </listitem>
		  <listitem>
				<para>T 5XX and V class: Nobody is working on it at the moment.</para>
		  </listitem>
			<listitem>
				<para>rp8400: these are cell based and probably don&apos;t work yet.</para>
			</listitem>
		</itemizedlist>

		<para>
			The following hardware might never work:
		</para>

		<itemizedlist>
		  <listitem>
				<para>T600.</para>
		  </listitem>
		  <listitem>
				<para>Vis-FX graphic adapters.</para>
		  </listitem>
		</itemizedlist>


	</chapter>




	<chapter id="preparation">
		<title>Preparing to boot</title>
		
		<highlights><para>Like any other system, machines based on &PA; processors have to
			go through several steps in order to get &L; up and running. The next
			section introduces you to the early boot management of your &PA; computer.
			(By the way, to be a bit less awkward, we might from time to time call it a
			<emphasis>&apos;PA&apos;</emphasis> box). This chapter will give you some
			key concepts like &BA;.</para></highlights>

		<sect1 id="bootadmin">
		  <title>&BA;</title>

		  <highlights><para>First of all, you must learn what is and how to use &BA; on your
				&PA; box, before thinking about doing anything with it.</para></highlights>

		  <para>&BA; is a <emphasis>firmware</emphasis> application,
				used to manage a &PA; machine at an early boot stage,
				<emphasis>i.e.</emphasis> when the box has not yet started its
				<emphasis>Operating System</emphasis>. It is also known as the
				<xref linkend="glossbch" />. Those familiar with the x86 world
				will probably see it as a kind of <emphasis>BIOS</emphasis>,
				whilst PPC fans might think of it as an equivalent for
				<emphasis>Open Firmware</emphasis>.</para>
				
				
		  <para>We named it &BA;
				throughout this document since it is the name it is the most common prompt it
				will display on
				most &PA; machines. You will see through this HOWTO that there
				are many references to it, therefore it&apos;s worth
				saying that minimalistic &BA; skills are mandatory!</para>


		  <sect2 id="enterbootadmin">
				<title>Entering the &BA; interface</title>

				<para>Entering the &BA; management tool isn&apos;t that awful:</para>

				<orderedlist numeration="arabic">
				  <listitem>
						<para>Turn your &PA; box on.</para>
				  </listitem>
				  <listitem>
						<para>During the boot process, the following message will appear
							on the current <emphasis>console</emphasis> (see <xref linkend="consoles" />):
							<programlisting><computeroutput>
Searching for Potential Boot Devices.
To terminate search, press and hold the ESCAPE key.
							</computeroutput></programlisting>
							When this message is displayed, press and hold the <keycap>Esc</keycap> key
							until an option menu appears. This can take a while, be patient. On recent
							machines, pressing any key interrupts the boot process as well.</para>
				  </listitem>
				  <listitem>
						<para>By default, you should enter the &BA; console.
							Though on some 715s and 725s, an option menu looking like this may be shown:
							<programlisting><computeroutput>
b)    Boot from specified device
s)    Search for bootable devices
a)    Enter Boot Administration mode
x)    Exit and continue boot sequence
?)    Help

Select from menu:
							</computeroutput></programlisting>
							Type &apos;<keycap>a</keycap>&apos; and hit <keycap>Enter</keycap> to enter
							Boot Administration mode. This will bring up a
							&apos;<computeroutput>BOOT_ADMIN&gt;</computeroutput>&apos; prompt.</para>
				  </listitem>
				</orderedlist>

				<para>Once you have the &apos;<computeroutput>BOOT_ADMIN&gt;</computeroutput>&apos;
					prompt, you can pat yourself on the back: you are in &BA; mode!</para>
					
				<para>As it has been said before, the prompt can differ between machines. On recent ones,
					for instance, it looks like that:
					<programlisting><computeroutput>
Main Menu: Enter command or menu &gt;
					</computeroutput></programlisting>
				</para>

		  </sect2>


		  <sect2 id="bootadminhelp">
				<title>&BA; commands</title>

				<para>&BA; is an early boot subsystem (a Boot Console Handler, as said before)
					where you can execute a limited set of commands. You should find here everything
					you need to know about them.</para>

				<para>All HP-PA systems have a <acronym>BCH</acronym>. The display can be different but the idea remains the same.
					That&apos;s why the following list is not complete but consistent enough.
					Another important thing is that for each command, you have a shorter way
					to invoke it. You can see the shortcut shown as uppercase letters in
					the command name. Full names will be used in this section.</para>

				<caution>
				  <para>Be cautious when dealing with the <acronym>BCH</acronym>, you can harm your system.</para>
				</caution>

				<note>
				  <para>Some commands may appear in several different menus, and all commands listed
						here may not necessarily be available on your particular system, this is normal.</para>
				</note>


				<sect3>
				  <title>The <literal>main</literal> commands</title>

				  <para>These commands are the basic ones.</para>

				  <itemizedlist>
					<listitem>
					  <para><command>boot</command> may be followed by an argument
							which indicates the path you want to boot. The path should be
							the definition of a device like for example
							<computeroutput>FWSCSI.6.0</computeroutput> or
							<computeroutput>PRI</computeroutput> if you have set this
							variable correctly. Usually defaults to <computeroutput>PRI</computeroutput>.</para>
					</listitem>
					<listitem>
					  <para><command>path</command> displays or sets the current paths.
							Invoked with only one argument it will display the current path of the
							entity passed as argument: <command>path alt</command> will display the
							current alternative boot path. <command>path pri fwscsi.6.0</command> will
							setup the primary boot path as the device attached to Fast and Wide SCSI
							controller with ID 6 and LUN 0. You can also set and display the paths
							of console (graphics/serial) and keyboard (ps2/hil/usb).</para>
					</listitem>
					<listitem>
					  <para><command>search</command> is a very useful command.
							It automagically checks all possible boot devices and displays
							these bootable paths. In several firmware versions, it links them
							to a shortcut (like <computeroutput>P0</computeroutput>). It can even search
							the LAN, if the box is able to boot it. Some firmware revisions allow you
							to restrain the search path like: <command>search lan</command> or
							<command>search disk</command>.</para>
					</listitem>
					<listitem>
					  <para><command>display</command> redisplays the current menu.</para>
					</listitem>
					<listitem>
					  <para><command>help</command> gives you an overview of the
							available commands and their action. <command>help <parameter>name</parameter>
							</command> will give you details on command <parameter>name</parameter>.
							By default, you can list all <literal>main</literal> commands by
							typing <command>help main</command>.</para>
					</listitem>
					<listitem>
					  <para><command>main</command> will bring you back to the
							<literal>main</literal> menu, whatever menu you might be currently
							browsing.</para>
					</listitem>
					<listitem>
					  <para>On almost every systems, there is a
							<command>reset</command> instruction. It restarts the machine with
							the latest parameters you have set.</para>
					</listitem>
				  </itemizedlist>

				</sect3>


				<sect3>
				  <title>The <literal>configuration</literal> commands</title>

				  <para>These commands are available in the
						<computeroutput>configuration</computeroutput> menu. So, in order to use
						them, you must enter this menu by typing <command>configuration</command>
						at the &apos;<computeroutput>BOOT_ADMIN&gt;</computeroutput>&apos; prompt.</para>

				  <itemizedlist>
					<listitem>
					  <para><command>auto</command> will tell you if the box will automatically
							start booting when switched on, or will do a search for boot devices, depending
		      		on the first argument passed to the command (<parameter>boot</parameter>,
		      		<parameter>search</parameter>, <parameter>start</parameter>). You can modify this
		      		parameter with the keywords <parameter>ON</parameter> and <parameter>OFF</parameter>.</para>
					</listitem>
					<listitem>
					  <para><command>default</command> sets back the factory defaults.</para>
					</listitem>
					<listitem>
					  <para><command>monitor</command> (only in <link linkend="graphicsconsole">graphic
							console</link>) sets your display configuration by typing <command>monitor
			      	<replaceable>&lt;path&gt;</replaceable> <replaceable>&lt;type&gt;</replaceable></command>
			      	which indicates your console path and type. You can list the available modes by typing
			      	<command>monitor list</command>.</para>
					</listitem>
					<listitem>
					  <para><command>fastboot</command> displays or sets the boot tests execution.</para>
					</listitem>
				  </itemizedlist>

				</sect3>


				<sect3 id="bootadminfo">
				  <title>The <literal>information</literal> commands</title>

				  <para>They give you access to global information about your system.
						Going into this menu is done by asking for <command>information</command>.</para>

			  <itemizedlist>
			    <listitem>
			      <para><command>all</command> should display everything.</para>
			    </listitem>
			    <listitem>
			      <para><command>bootinfo</command> lists all the boot parameters of the system.</para>
			    </listitem>
			    <listitem>
			      <para><command>fwrversion</command> gives your firmware revision.
							You can check if your firmware is up-to-date at
							<ulink url="ftp://us-ffs.external.hp.com/firmware_patches/hp/cpu/catalog">this
							webpage</ulink>.</para>
			    </listitem>
			    <listitem>
			      <para><command>lanaddress</command> shows the MAC (Ethernet) address of the system.
							On some boxes (especially 712s), two different addresses may appear. The one you are
							looking for is the first.</para>
			    </listitem>
			    </itemizedlist>

				</sect3>


				<sect3>
				  <title>The <literal>service</literal> commands</title>

				  <warning><para>It is a &PA; guru menu.</para></warning>

				  <para>You will find nothing really interesting for an end-user here.
						We recommend you not to play with it unless you <emphasis>really</emphasis>
						know what you are doing.</para>

				  <itemizedlist>
						<listitem>
						  <para><command>pim [&lt;proc&gt;] [HPMC|LPMC|TOC]</command> displays the content
								of a <xref linkend="glosspim"/> and Error Log. It is very useful after a
								<xref linkend="glosstoc"/> to collect debugging information.</para>
						</listitem>
						<listitem>
		      	  <para><command>clearpim</command> clears <xref linkend="glosspim"/> data.</para>
			    	</listitem>
			    	<listitem>
		      	  <para><command>scroll</command> enables or disables the scrolling mode in &BA;
			      		on recent boxes.</para>
			    	</listitem>
		      </itemizedlist>

				</sect3>

		  </sect2>

		</sect1>


		<sect1 id="consoles">
		  <title>Consoles</title>

			<highlights><para>
				Throughout your PA-RISC experience, you will be often told about
				<emphasis>consoles</emphasis>. This section aims at de-obfuscating what
				this word means and how to use said <emphasis>consoles</emphasis>.
			</para></highlights>
			
		  <para>
				In order to boot your &PA; system with the &PL; kernel,
				you must first set up a <emphasis>console</emphasis>.
				A <emphasis>console</emphasis> is basically the device where the kernel
				(and the firmware) will display its output, and where
				input can by sent to control the system at an early boot stage.
				You can use either <emphasis>graphic console</emphasis>, which requires
				having a monitor and a keyboard attached to the system,
				or <emphasis>serial console</emphasis>, which allows serial line
				communication between the system and another Linux machine,
				or any VT system.
		  </para>

		  <note><para>Please note that the firmware console and kernel console
				are not necessarily the same. For instance, it is possible to
				interact with &BA; using keyboard &amp; monitor, and once &PL; is up,
				to have kernel output sent to serial port only. By default,
				<xref linkend="glosspalo" /> will try to use firmware console as the
				kernel one.
		  </para></note>

		  <tip><para>
				Workstations usually boot in graphic mode, whereas servers
				boot in serial mode. Some boxes will also automatically switch
				to serial if no keyboard is connected, or if you hold down
				<literal>TOC</literal> switch while powering the system on.
			</para></tip>

		  <para>
				If you don&apos;t know what the actual console of your box is,
				it&apos;s quite simple: find the place where first output is sent when
				the box is turned on (serial line or monitor output, if any), that is
				the console.
		  </para>

		  <para>
				If you are trying to setup a &PA; workstation and have a monitor handy,
				the easiest method is to use <emphasis>graphic console</emphasis>.
				If you get into troubles, or are trying to configure a server, choose
				<emphasis>serial console</emphasis>.
		  </para>


		  <sect2 id="graphicsconsole">
				<title>Using graphic console</title>

				<caution><para>
					To use the graphic console, you must first ensure that
					the Linux kernel supports your system&apos;s graphic card.
				</para></caution>

				<para>
					There are two ways to deal with the graphic console.
					If you think about bug-reporting any trouble, you must know how to
					differentiate both. First, the <emphasis>STI</emphasis> console is
					the classical video text console, like <emphasis>VGA</emphasis> on a
					common PC for example. This name is due to the fact that each &PA;
					box with graphical capabilities features the <xref linkend="glosssti" />
					which defines some standardized ways to access the video memory.
					The other graphic console is the well known
					<emphasis>framebuffer</emphasis> console (which on
					HP-PA uses STI in a special manner, hence the name
					<emphasis>STIfb</emphasis>). In this case, when booting,
					you will see a characteristic little penguin appearing on
					the top-left corner. This is the easiest way to differentiate
					the two graphic modes.
				</para>

				<para>
					Obviously, if you can use graphic console, it is the easiest way to proceed.
					Nevertheless, you must be sure that your hardware is supported.
				</para>
				
				<important><para>
					All HP-provided graphics cards can deal with <xref linkend="glosssticon" />,
					but not all of them are <xref linkend="glossstifb" /> supported in Linux.
					This is especially true for Vis-FX cards that can only be used through STIcon.
				</para></important>

		  </sect2>


		  <sect2 id="serialconsole">
				<title>Using serial console</title>

				<para>
					The serial console is a good way to obtain all console messages,
					including the <link linkend="glossbch"><acronym>BCH</acronym></link> ones.
					It is very useful for bug reports, as its output can be easily dumped.
					Moreover, most of the &PA; servers can only be managed with serial console.
				</para>

				<note><para>
					The only cases where serial console <emphasis>HAS TO</emphasis> be used is
					either if you don&apos;t have a monitor handy, or if the machine doesn&apos;t
					support graphics. It is also possible that the kernel can <emphasis>NOT</emphasis>
					handle some specific graphics hardware present in the machine, but that is
					pretty rare (<link linkend="glosssticon">STIcon</link> should work everywhere).
				</para></note>

				<para>
					Here is the procedure to setup serial console support.
				</para>


				<sect3 id="cable">
				  <title>Serial Cable</title>

				  <para>
						To connect a &PA; machine to a PC&apos;s RS232 port, you need a
						9-pin-to-9-pin female plugs null-modem cable.
						You should be able to obtain such a cable at your local computer
						hardware reseller.
						Obviously, you can also choose to connect the other end of the
						cable to a terminal (in this case it will probably need
						a 25-pin male plug). Anyway, the most practical method is
						to connect it to another box running <command>minicom</command>
						or <command>cu</command>, which makes all output easily available for
						further usage (dump report, session log, and so on).
		  	  </para>

				</sect3>


				<sect3 id="minicom">
				  <title>Configuring <command>minicom</command> on &L;</title>

				  <para>
						In order to communicate with a &PA; machine on a serial line,
						you have to set it up in serial console mode (see
						<link linkend="changingtoserial">below</link>),
						and configure a serial communication program. We recommend
						<command>minicom</command>, which can be found in most
						&L; distributions. If you don&apos;t have <command>minicom</command>
						on your system, you can find the latest package on any major
						&L; software website.
		  	  </para>

				  <para>
						Most of the <command>minicom</command> configuration is machine dependent.
						However, you must ensure that:
		  	  </para>

				  <orderedlist numeration="loweralpha">
						<listitem>
						  <para>The baud rate is set to 9600</para>
						</listitem>
						<listitem>
						  <para>Protocol is set to 8-N-1 (8bit data, No parity check, 1 stop bit)</para>
						</listitem>
				  </orderedlist>

				  <para>
						Don&apos;t worry too much as these are the default values on &PL;.
						If you are running <command>minicom</command> on a PC, you will
						probably need to change the baud rate.
		  	  </para>

				</sect3>

		  </sect2>


		  <sect2 id="switchingconsoles">
				<title>Switching consoles</title>

				<para>
					It might prove useful that you learn how to manage the console mode on a &PA; box.
					The following section will explain the various operations regarding console modes.
				</para>


				<sect3 id="checkingcurrentmode">
				  <title>Checking current console mode</title>

				  <para>
						Type: <command>path console</command> to see the current console mode.
				  </para>

				  <para>
						If it&apos;s <emphasis>graphic console</emphasis> mode, it will return
						something like: &apos;<computeroutput>Console path     = graphic_1</computeroutput>&apos;.
				  </para>

				  <para>
						If it&apos;s <emphasis>serial console</emphasis>, it will return:
						&apos;<computeroutput>Console path    = rs232_a.9600.8.none</computeroutput>&apos;
						or something similar.
		  	  </para>

				  <note><para>
						On some models, there can be slight differences in the naming, but the idea stays
						the same. If you want to see more descriptions here, please send us a message describing
						the box you use and what you get.
					</para></note>

				</sect3>


				<sect3 id="changingtoserial">
				  <title>Changing to serial console mode</title>

				  <para>
						To change to serial console mode, type the following command at the
						&apos;<computeroutput>BOOT_ADMIN&gt;</computeroutput>&apos; command prompt:
		  	  </para>

				  <para>
						<command>path console rs232_a.9600.8.none</command>
				  </para>

				  <para>or, like on B132L+</para>

				  <para>
						<command>path console serial_1</command>
				  </para>

				  <para>
						Anyway, on most boxes if you try to setup an invalid path for the console,
						you will be warned and prompted again for a valid path.
						To verify that the console path has been correctly set, type
						<command>path console</command>.  This should return something like
						&apos;<computeroutput>Console path    = rs232_a.9600.8.none</computeroutput>&apos;,
						indicating that the system is now set up to boot using serial console,
						on RS232 port &apos;A&apos;.
						If your machine has only one, this is OK, if not, take care to use the right one.
						<command>reset</command> will reboot your system with the new parameters.
		  	  </para>


				  <sect4 id="serial712">
						<title>How can I change the boot console to serial on a 712?</title>

						<para>
							Unfortunately, it is <emphasis>*normally*</emphasis> not possible.
							Although 712s are configured for in-house HP development to use serial,
							this cannot be set in &BA;. You will have to use graphic console on 712s.
							And why the hell would we use this beautiful 712 with serial console when
							we can have X on it?!
						</para>

						<para>
							Anyway, if you feel like trying bleeding edge solutions, there is a tip at the
							<ulink url="http://lists.parisc-linux.org/pipermail/parisc-linux/1999-December/008117.html">&PL; mailing list archive</ulink>.
							This explains how to change the console from an <emphasis>HP/UX
							<link linkend="glossisl">ISL</link></emphasis> prompt. Since you actually
							<emphasis>need</emphasis> HP/UX to be able to do the serial trick,
							you can find a small HP/UX <emphasis>lifimage</emphasis> here:
							<ulink url="http://www.pateam.org/archive/uxbootlf">http://www.pateam.org/archive/uxbootlf</ulink>.
							(See further <xref linkend="bootnetwork" /> to learn how to
							<emphasis>netboot</emphasis> a lifimage).
							In fact, serial console on 712 is especially useful if you want to boot the box
							without having a keyboard attached to it, which is otherwise not possible.
						</para>
						
						<warning><para>
							The following takedown is highly unofficial, unsupported and in a general
							way a <emphasis>bad idea</emphasis>, as you can make your 712 unbootable,
							needing intervention from a HP-techie, if something goes wrong. Beware!
						</para></warning>

						<para>
							Here is the procedure:
						</para>

						<orderedlist numeration="arabic">
						  <listitem>
								<para>
									Turn the box on and when in &BA;, boot into <application>HP/UX ISL</application>.
									For example:
								</para>

								<programlisting><computeroutput>
BOOT_ADMIN&gt; boot lan isl
								</computeroutput></programlisting>
						  </listitem>
						  <listitem>
								<para>
									Once you get the &apos;<computeroutput>ISL&gt;</computeroutput>&apos; prompt,
									type the following:
								</para>

								<itemizedlist>
								  <listitem>
										<para>Switching to serial: <command>conspath 2/0/4.0x283</command></para>
								  </listitem>
								  <listitem>
										<para>Switching to graphic: <command>conspath 1/0/0.0</command></para>
								  </listitem>
								</itemizedlist>
						  </listitem>
						  <listitem>
								<para>
									Still at the &apos;<computeroutput>ISL&gt;</computeroutput>&apos; prompt,
									type <command>disp</command>, and check that console path is either
									&apos;<computeroutput>(hex) 2/0/4.283.0.0.0.0.0</computeroutput>&apos;
									for serial, or &apos;<computeroutput>(hex) 1/0/0.0.0.0.0.0.0</computeroutput>&apos;
									for graphic.
								</para>
						  </listitem>
						  <listitem>
								<para>Power cycle the system to bring it up on the new console.</para>
						  </listitem>
						</orderedlist>

				  </sect4>

				</sect3>


				<sect3 id="changingtographic">
				  <title>Changing to graphic console mode</title>

				  <para>
				  	This is the reverse of the previous operation.
						By checking your console path, you should see
						&apos;<computeroutput>Console path    = rs232_a.9600.8.none</computeroutput>&apos;.
						Now, you can switch to the graphic mode by issuing the following command at
						&apos;<computeroutput>BOOT_ADMIN&gt;</computeroutput>&apos; prompt:
					</para>

				  <para>
						<command>path console graphic_1</command>
				  </para>

				  <para>
						The actual <emphasis>switch</emphasis> will happen after a
						<command>reset</command>. If the monitor does not seem to
						work properly, try to press the <keycap>Tab</keycap> key
						(on the keyboard attached to the box of course)
						at the beginning of the boot sequence to change the resolution of the display.
						By pressing this key, the monitor resolution cycles from one to another.
					</para>

					<tip><para>Keep that in mind when changing monitors.</para></tip>

				</sect3>

		  </sect2>

		</sect1>


	</chapter>




	<chapter id="palo">
		<title>&PO;, the &PL; kernel loader</title>

		<sect1 id="whatispalo">
			<title>What is &PO;?</title>

			<highlights><para>
				&PO; is a set of two programs, a boot loader,
				which is loaded by the &PA; <emphasis>firmware</emphasis> into memory
				and then executed, and a boot media management tool, which
				prepares and updates bootable media such as hard disk drives.
			</para></highlights>
			
			<para>
				The &PO; boot loader executable is stored in a file called
				<filename>iplboot</filename>. &apos;<literal>IPL</literal>&apos; is HP
				jargon for <emphasis>Initial Program Loader</emphasis>
				(See <link linkend="glossipl">the glossary</link>).

				The boot media management tool is called &PO;, which
				stands for &PL; LOader, just as on x86 the boot media
				management tool is called <application>LILO</application>.
			</para>

			<para>
				Even though &PO; is much alike <application>LILO</application>
				(both have a userland application and a boot loader executable),
				it&apos;s worth mentioning that &PO; doesn&apos;t usually need to be called
				every time you build and install a new kernel, as
				<application>LILO</application> does<footnote><para>For the knowledge addict:
				&PO; can actually access and read ext2/ext3 filesystem, and therefore follow symlinks,
				whereas <application>LILO</application> bootloader will only know the physical
				disk address to	access the kernel. See
				<ulink url="http://home.att.net/~lilo-boot/lbuild.htm">this</ulink>
				for further details.</para></footnote>.
			</para>

			<note><para>
				&PO; is strongly related to &PL; development. Thus, several versions have
				been released. Some changes in the way <command>make palo</command> operates
				are explained by the author of &PO;, <emphasis>Paul Bame</emphasis>, in this
				<ulink url="http://lists.parisc-linux.org/hypermail/parisc-linux/9451.html">mail</ulink>.
			</para></note>

		</sect1>



		<sect1 id="whatdoespalo">
		  <title>What does &PO;?</title>

		  <para>
				The main idea is to boot a kernel, passing it all needed parameters.
				This is what the <emphasis>boot loader</emphasis> part of &PO; does
				(see <xref linkend="paloearlyboot" />).
				Once it has been called by the <emphasis>firmware</emphasis>,
				it will load the Linux Kernel in memory, passing to it the given
				arguments, and tell the processor to branch to its entry point.
				This will begin the execution of the kernel on the &PA; computer.
			</para>

		  <para>
				The &PO; management tool can transform the usual
				<filename>vmlinux</filename> into a &PA; bootable
				<emphasis>lifimage</emphasis>, including or not
				<literal>RAMDISK</literal> or <literal>NFSROOT</literal> support.
				However, it can also make a hard disk drive bootable, specifying
				the console output and the root device.
				We are going to see all these points precisely.
			</para>

		  <important><para>
				What must be kept in mind is that <filename>vmlinux</filename>
				is the kernel alone, which is not bootable as is.
				It needs &PO; to be turned into a bootable
				<filename>lifimage</filename> for CD or network boot,
				or to be loaded at boot time from a prepared hard
				disk drive. Have a look at <xref linkend="gloss" /> about these words.
				Quoting a well known &PL; hacker:
				<blockquote>
					<attribution>Richard Hirst</attribution>
					<para><emphasis>
					People often try to put a lifimage in /boot, or a vmlinux on the
					network boot server.
					</emphasis></para>
				</blockquote>

				Which is obviously wrong.
			</para></important>

		</sect1>

		<sect1 id="paloappusage">
		  <title>&PO; management tool usage</title>

		  <para>
				Here we will show what can be done with the &PO; boot media
				management tool. For in-depth information about <command>palo</command>
				usage, we strongly advise you to take a look at &PO;&apos;s
				<filename>README</filename> file, which can be found in
				<filename class="directory">palo/</filename> directory on
				<ulink url="http://cvs.parisc-linux.org/">http://cvs.parisc-linux.org/</ulink>.
			</para>

		  <para>
				For the next two steps, you will need a compiler toolchain,
				see <xref linkend="gcc" />.
			</para>

			<sect2 id="lifimagewithramdisk">
				<title>Making a <filename>lifimage</filename> with <literal>RAMDISK</literal></title>

				<para>
					First things first: when should you walk this way?
				</para>

				<para>
					At an earlier stage of the &PL; project, the <filename>lifimage</filename>
					was very useful. In fact, simply putting this file in a boot server
					tree allows you to boot your PA box using the <command>boot lan</command>
					instruction without any further involvement
					(see <xref linkend="bootnetwork" />).

					The main advantage of a <literal>RAMDISK</literal> is that it unpacks
					its own file system in RAM, and therefore is completely independent
					of the machine I/O capabilities (hard drives, etc). The main drawback
					is that you have to build your own <literal>RAMDISK</literal> if
					you have memory constraints or need some customized files. Now, let&apos;s see
					how to obtain a <filename>lifimage</filename> with <literal>RAMDISK</literal>.
				</para>

				<para>
					We assume you got the latest source of the &PL; kernel tree
					(to which we&apos;ll refer below as the
					&quot;<filename class="directory">linux/</filename> directory&quot;),
					and that you are somewhat familiar with kernel configuration. Check
					<xref linkend="kernelconf" /> for &PA; specific options.

					Mainly, you will need a (cross-)compiler, the
					<filename class="directory">linux/</filename> directory and the &PO;
					package installed. If you do not have it, run as
					<emphasis>root</emphasis> <command>apt-get install palo</command>.
					Everything can also be found at
					<ulink url="http://www.parisc-linux.org/">http://www.parisc-linux.org/</ulink>.

					Go through the kernel configuration step.
					Then, run <command>make palo</command> and if &PO; is installed,
					the following message should appear at the end of the compilation:

					<programlisting>
A generic palo config file (./palo.conf) has been created for you.
You should check it and re-run "make palo".
WARNING: the "lifimage" file is now placed in this directory by default!
					</programlisting>

					So, edit the <filename>palo.conf</filename> file:
					<programlisting>
# This a generic Palo configuration file.  For more information about how
# it works try 'palo -?'.
#
# Most people using 'make palo' want a bootable file, usable for
# network or tape booting for example.
--init-tape=lifimage
--recoverykernel=vmlinux

########## Pick your ROOT here! ##########
# You need at least one 'root='!
#
# If you want a root ramdisk, use the next 2 lines
#   (Edit the ramdisk image name!!!!)
--ramdisk=ram-disk-image-file
--commandline=0/vmlinux HOME=/ root=/dev/ram initrd=0/ramdisk

# If you want NFS root, use the following command line (Edit the HOSTNAME!!!)
#--commandline=0/vmlinux HOME=/ root=/dev/nfs nfsroot=HOSTNAME ip=bootp

# If you have root on a disk partition, use this (Edit the partition name!!!)
#--commandline=0/vmlinux HOME=/ root=/dev/sda1
					</programlisting>

					As you can see, the <literal>RAMDISK</literal> mode is the default. The string
					<replaceable>ram-disk-image-file</replaceable> should give to &PO; the path
					of your <literal>RAMDISK</literal> file.
					You shouldn&apos;t change anything else to this file.
					After editing <filename>palo.conf</filename>, you can run
					<command>make palo</command> again. The result, a <filename>lifimage</filename>
					file, is waiting for you in the <filename>linux/</filename> directory.
				</para>

			</sect2>

			<sect2 id="lifimagewithnfsroot">
				<title>Making a <filename>lifimage</filename> with <literal>NFSROOT</literal></title>

				<para>
					This method is widely used because the kernel and the file system
					are directly accessible on your boot server.
					It is also very easy to test a new kernel.
					You just have to generate the kernel and put it in the correct directory.
					When starting up, the PA box will boot the new kernel by typing <command>boot lan</command>
					in &BA;.
					Finally, it is the only way to go for systems which I/O devices are not supported
					(such as E class, by the writing of this document).
				</para>

				<para>
					Enabling <literal>NFSROOT</literal> support is easier than
					<literal>RAMDISK</literal>. You have to edit <filename>palo.conf</filename>
					to specify the boot server IP address instead of the string
					<replaceable>HOSTNAME</replaceable>.
					For instance, if your server has 10.10.10.2 as its IP address,
					then the <filename>palo.conf</filename> file should contain:

					<programlisting>
# This a generic Palo configuration file.  For more information about how
# it works try 'palo -?'.
#
# Most people using 'make palo' want a bootable file, usable for
# network or tape booting for example.
--init-tape=lifimage
--recoverykernel=vmlinux

########## Pick your ROOT here! ##########
# You need at least one 'root='!
#
# If you want a root ramdisk, use the next 2 lines
#   (Edit the ramdisk image name!!!!)
#--ramdisk=ram-disk-image-file
#--commandline=0/vmlinux HOME=/ root=/dev/ram initrd=0/ramdisk

# If you want NFS root, use the following command line (Edit the HOSTNAME!!!)
--commandline=0/vmlinux HOME=/ root=/dev/nfs nfsroot=10.10.10.2 ip=bootp

# If you have root on a disk partition, use this (Edit the partition name!!!)
#--commandline=0/vmlinux HOME=/ root=/dev/sda1
					</programlisting>

					If you have another IP, this field must be filled in with the correct data.
					You shouldn&apos;t change anything else to this file.
					After having properly configured <filename>palo.conf</filename>,
					you can go into the <filename class="directory">linux/</filename>
					directory and issue a <command>make palo</command>.
					The result, a <filename>lifimage</filename> file, is as usual waiting for
					you in the <filename class="directory">linux/</filename> directory.
				</para>

				<para>
					For advanced details on <literal>NFSROOT</literal> management, take a look
					at <xref linkend="biblio" /> for the appropriate HOWTOs.
				</para>

		  </sect2>

		  <sect2 id="bootablepartition">
				<title>Making a bootable partition</title>

				<highlights><para>
					In this part, &PO; can be seen as a <application>LILO</application> clone.
					<command>palo</command> is mainly a program that enables a PA box to boot
					a kernel present on its hard disk drive.
					This section is going to explain how to make it work.
				</para></highlights>
				
				<para>
					After installing the &PO; package, a copy of the default
					<filename>palo.conf</filename> can be found at
					<filename>/usr/share/doc/palo/palo.conf</filename>. We will explain here
					how to customize it to fit your needs.
				</para>

				<para>
					To setup a bootable hard disk, you have to partition it properly
					(that is, if you want to use it as your primary boot device).
					This implies that this step can only be achieved either if you have already
					booted a minimal system on your &PA; box (from CD or network,
					see <xref linkend="bootsolutions" />), or if you intend to prepare your hard
					disk using another computer than the target one (which can be useful to unpack
					and setup a downloaded file system for a slow box, for example).
					The point of this HOWTO is not to teach you how to use <command>fdisk</command>
					and friends, so here are the few things you HAVE TO know:
				</para>

				<itemizedlist>
				  <listitem>
						<para>
							A partition entirely contained within the first 2GB of your target device has
							to be of partition type &apos;<computeroutput>f0</computeroutput>&apos;,
							which is the reserved partition type for &PO; boot loader.
						</para>
				  </listitem>
				  <listitem>
						<para>
							There are two ways to use &PO;: the old scheme (available on all versions),
							in which that partition will only store configuration and recovery kernel;
							and the new scheme (available since &PO; 1.5), in which that partition will
							be formatted as ext2 or ext3 and mounted in <filename class="directory">/boot</filename>.
						</para>
				  </listitem>
				  <listitem>
						<para>
							In the first case, the partition does not need to be huge. This is were &PO;
							will save its configuration, recovery kernel(s) - about 5MB each - and optional
							recovery ramdisk, so 32MB seem far sufficient.
						</para>
				  </listitem>
				  <listitem>
						<para>
							Alternatively, in the second case, since you will use it as
							<filename class="directory">/boot</filename>, you should size it decently.
							100MB is a good cut.
						</para>
				  </listitem>
				</itemizedlist>

				<warning><para>
					Beware! The <filename>vmlinux</filename> file that will be actually booted
					has also to be located within the first 2GB of the hard disk.
					We strongly recommend to either (in the <emphasis>old</emphasis> scheme) create
					a separate <filename class="directory">/boot</filename> partition at the beginning
					of the disk (unless you plan to boot recovery kernels every time), or use the
					<emphasis>new</emphasis> scheme and mount the &PO; partition as
					<filename class="directory">/boot</filename>, because if ever your vmlinux binary
					gets physically stored past the first 2GB of the disk
					(like when filling up &apos;/&apos; with data), the box won&apos;t boot anymore.
				</para></warning>
				
				<para>
						In fact, this third usage of &PO; is the most common as the default
						<filename>/etc/palo.conf</filename> makes it easy to configure.
				</para>

				<sect3 id="palooldscheme">
					<title>The old scheme: hidden partition</title>
					
					<highlights><para>
						The hidden partition is deprecated. Don&apos;t use this for a new setup. Use the
						new scheme instead (see <xref linkend="palonewscheme" />).
						The hidden partition method is documented for the sake of posterity.
					</para></highlights>
					
					<para>
						Here is the output of <command>fdisk</command> which represents
						the hard drive of a box with 16MB &PO; space, 128MB swap space
						and about 1GB &apos;<literal>/</literal>&apos; partition:
					</para>

					<programlisting><computeroutput>
bash# fdisk -l /dev/sda

Disk /dev/sda: 133 heads, 62 sectors, 1017 cylinders
Units = cylinders of 8246 * 512 bytes

	 Device Boot    Start       End    Blocks   Id  System
/dev/sda1   *         1         4     16461   f0  Linux/&PA; boot
/dev/sda2             5        34    123690   82  Linux swap
/dev/sda3            35       277   1001889   83  Linux
					</computeroutput></programlisting>

					<para>
						Now let&apos;s deal with &PO; configuration.
						Here are the various parameters you can change:
					</para>

					<itemizedlist>
				  	<listitem>
							<para><parameter>recoverykernel</parameter> is (as the name suggests)
								the path to the kernel you want to boot within a failsafe session,
								it will be stored in the &apos;<literal>f0</literal>-type&apos; partition.
							</para>
				  	</listitem>
				  	<listitem>
							<para><parameter>bootloader</parameter> is the path
								to the <filename>iplboot</filename> boot loader utility which is
								created by &PO; when you issue a <command>make iplboot</command>.</para>
							<note><para>Usually you don&apos;t want to change or even specify this.</para></note>
				  	</listitem>
				  	<listitem>
							<para><parameter>init-partitioned</parameter> is used
								to indicate the pre-partionned device where palo will write its
								boot parameters. The effect is immediate. It means that &PO; is
								going to write on (and erase the content of) the &apos;<literal>f0</literal>&apos;
								partition of this device, which has to exist.
							</para>
				  	</listitem>
				  	<listitem>
							<para><parameter>commandline</parameter>:
								the first digit is the number of your ext2/ext3 partition where the
								kernel file is located, as reported by <command>fdisk</command>.
								Logically, the next string is the absolute path to the kernel
								<emphasis>from the root of THIS partition</emphasis>
								<footnote id="kpath"><para>Example: /boot is mounted from a separate partition,
								which number is, say, 4 according to <command>fdisk</command>.
								From a &L; point of view, the absolute path of the file is
								<filename>/boot/vmlinux</filename>, but from a <emphasis>partition</emphasis>
								point of view, it is <filename>/vmlinux</filename>. Therefore,
								the commandline will start with &quot;<literal>4/vmlinux</literal>&quot;.
								We hope that&apos;s clear enough!</para></footnote>.
								The following space separated parameters (do NOT use any quotation
								mark!) will be passed to the kernel as its arguments. <emphasis>e.g.</emphasis>:
								<literal>HOME=</literal> and <literal>TERM=</literal> are
								environmental parameters passed to <command>init</command>
								when booting. They are not compulsory but they can be useful.
								<literal>root=</literal> tells the kernel which partition it
								must mount as the root file system while booting. It can be
								tricky when you have more than one disk, and is a mandatory
								argument. Maximum length for the commandline is 127 characters.
							</para>

							<para>
								You can also add <literal>console=</literal>,
								to force the designation of the output console.
								You should remember that <literal>console=ttyS0</literal> is for
								a serial console and <literal>console=tty0</literal> is for a
								STI (graphic) console. Support for the <acronym>MUX</acronym>
								console (if enabled in the kernel, see <xref linkend="kernelconf" />)
								has been added, using <literal>console=ttyB0</literal>.
								Recent versions of &PO; auto detect the right console path
								(except for <acronym>MUX</acronym>), and can figure out whether
								a 32bit or 64bit kernel should be used. If not, please mail
								to the mailing list. Last but not least, if you are using
								&D; 2.6 kernels, you will also need to add
								<literal>initrd=X/path/to/initrd</literal>, following the same
								rules as for the kernel path<footnoteref linkend="kpath" />, see above.
							</para>
				  	</listitem>
					</itemizedlist>

					<para>
						According the above <command>fdisk</command> example, we want to use
						<filename class="devicefile">/dev/sda3</filename> as our root partition. Thus,
						the configuration file should look like that:

						<programlisting>
# The following arguments are set up for booting from /dev/sda, 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 root=/dev/sda3
						</programlisting>

					</para>
				</sect3>
				
				<sect3 id="palonewscheme">
					<title>The new scheme: mounted partition</title>
				
					<highlights><para>
						Following is a practical example using the new way of doing things, by using a
						formatted &PO; partition. That scheme should be the preferred one for new installations.
					</para></highlights>
					
					<para>
						Looking at the previous example (<xref linkend="palooldscheme" />), very little things
						need to be changed. Essentially, if you had the need for a separate <filename
						class="directory">/boot</filename> partition, it will be gone in the scheme detailed
						below. The configuration for &PO; will be a little bit different as well, but that&apos;s
						about it.
					</para>
					
					<para>
						Here is the output of <command>fdisk</command> which represents
						the hard drive of a box with 100MB &PO; space (which will be mounted as <filename
						class="directory">/boot</filename>), 128MB swap space
						and about 1GB &apos;<literal>/</literal>&apos; partition (bear in mind that the
						<literal>f0</literal> partition must still be wholy contained within the first 2GB
						of the disk):
					</para>

					<programlisting><computeroutput>
bash# fdisk -l /dev/sda

Disk /dev/sda: 133 heads, 62 sectors, 1017 cylinders
Units = cylinders of 8246 * 512 bytes

	 Device Boot    Start       End    Blocks   Id  System
/dev/sda1   *         1        26    100461   f0  Linux/&PA; boot
/dev/sda2            27        36    123690   82  Linux swap
/dev/sda3            37       277    917889   83  Linux
					</computeroutput></programlisting>

					<para>
						Now let&apos;s deal with &PO; configuration. Contrary to the previous example, there
						are far less options to put in the configuration file, and the setup is a single step
						operation: the <emphasis>initialization</emphasis> step, which needs only to be done
						once.
					</para>
					
					<para>
						To initialize for the first time the &PO; partition as something the Linux system
						can understand (<literal>ext2</literal> or <literal>ext3</literal> filesystem), you need
						to run the following command (as <literal>root</literal>):
					</para>
					
					<programlisting>
&prompt; <command>palo</command> <userinput>--format-as=<replaceable>N</replaceable> --init-partitioned=<replaceable>target_disk</replaceable></userinput>
					</programlisting>

					<para>
						Where <replaceable>N</replaceable> is either <literal>2</literal> for <literal>ext2</literal>
						or <literal>3</literal> for <literal>ext3</literal>, and <replaceable>target_disk</replaceable>
						is the device which contains the &PO; partition, <filename class="devicefile">/dev/sda</filename>
						in the current example. Continuing with this example, assuming we want an <literal>ext3</literal>
						partition we would use:
					</para>
					
					<programlisting>
&prompt; <command>palo</command> <userinput>--format-as=3 --init-partitioned=/dev/sda</userinput>
					</programlisting>
					
					<warning><para>
						Do <emphasis>NOT</emphasis> use <command>mkfs</command> or <command>mke2fs</command>
						to generate the filesystem on this partition. &PO; marks blocks as used where the boot loader
						portion of &PO; is stored on disk. These tools don&apos;t know about &PO; boot loader!
					</para></warning>
					
					<note><para>
						This needs to be run only once for it will erase any existing data on the 
						<literal>f0</literal> partition.
					</para></note>
					
					<para>
						Finally, we need to tell &PO; about the partition, how we want it to be used, and
						how we don&apos;t want it to be erased everytime &PO; is being run. Thus, keeping in sync
						with our current example,
						the configuration file should look like that:

						<programlisting>
# The following arguments are set up for booting from /dev/sda, specifically
# mounting partition 3 as root and booting the vmlinux file in /dev/sda1, palo
# partition formatted as ext3.
--update-partitioned=/dev/sda --format-as=3
--commandline=1/vmlinux root=/dev/sda3
						</programlisting>

					</para>
					
					<para>
						As one can see, since we will be storing our kernels directly on the <literal>f0</literal>
						partition, we tell &PO; to load them from it (hence the <literal>1</literal> in the
						<literal>commandline</literal> argument.
					</para>
					
					<note><para>
						In the previous section (<xref linkend="palooldscheme" />) we dealt with the
						<parameter>init-partitioned</parameter> parameter. Here, we use
						<parameter>update-partitioned</parameter> instead, which, contrary to the former,
						tells &PO; to not erase the content of the partition when run<footnote><para>The
						<parameter>format-as</parameter> switch is a bit misleading. When used with
						<parameter>init-partitioned</parameter> it is meant to tell which filesystem to format
						the new partition, but with <parameter>update-partitioned</parameter>, it is meant to
						tell &PO; which filesystem is used on the already formatted partition.</para></footnote>.
					</para></note>

				</sect3>
				
			</sect2>

		</sect1>


		<sect1 id="paloearlyboot">
		  <title>How to use &PO; at early boot stage?</title>

			  <sect2 id="palotheory">
					<title>The theory</title>

					<para>
						You have setup everything, rebooted your box, and suddenly you
						want to change something to the kernel boot arguments,
						or even boot another kernel. Damn it! How could you,
						now that the box is booting? Well, stay calm and relax,
						have a deep breath, we have the solution!
						Unfortunately, by the time you&apos;ll learn about it, your box
						will have finished booting ;o)
					</para>

					<para>
						First, you must learn how to interact with &PO; during the startup sequence.
						You have to enter &BA;, as explained in <xref linkend="enterbootadmin" />.
						For some old models (up to 712 or so), you must add the
						<parameter>ipl</parameter> (or <parameter>isl</parameter>) string to
						your boot command in the &BA; console:
						<programlisting><computeroutput>BOOT_ADMIN&gt; </computeroutput>boot pri ipl</programlisting>
						On most &PA; boxes, the system will ask you if you want to interact
						with <emphasis>IPL</emphasis> anyway. You just have to answer
						&quot;<keycap>y</keycap>&quot; and hit <keycap>Enter</keycap>.
						You will then end up to &PO; configuration display, with the list
						of all parameters and their corresponding numbers.
					</para>

					<para>
						You just have to enter the number corresponding to the
						parameter you want to change.
						Hit <keycap>Enter</keycap>, modify it and validate the
						changes by hitting <keycap>Enter</keycap> again.
						The system will redisplay the new list.
						This modification is not permanent<footnote><para>
						To save your changes, you will have to run <command>/sbin/palo</command>
						when your system will be up and running,
						and it will write on the disk all the parameters contained in
						the configuration file, (<filename>/etc/palo.conf</filename>), which
						you will have properly modified if needed.</para></footnote>!
						If you want to add a supplementary parameter, select any one
						and write yours on the editing line, beginning with a space:
						<programlisting>
&lt;#&gt;    edit the numbered field
'b'    boot with this command line
'r'    restore command line
'l'    list dir
? 0
3/boot/vmlinux initrd=3/initrd.img
						</programlisting>

						After validation, the list will count one more parameter.
						If you want to delete one, select it and erase the complete entry.
						You will see that the list counts one less parameter.
					</para>

					<para>
						For more informations about &PO;, please take look at the
						<ulink url="http://cvs.parisc-linux.org/*checkout*/palo/README.html?rev=HEAD">&PO; README</ulink>.
						You can find a copy of this file after having installed the <command>palo</command>
						package in <filename>/usr/share/doc/palo/README.html</filename>.
						This HOWTO section is mostly inspired from the above file, written by Paul Bame.
					</para>

		  	</sect2>

			  <sect2 id="paloexample">
					<title>A complete example</title>

					<highlights><para>
						This example has been suggested by Michael Damaschke. We will use notions
						explained in <xref linkend="bootadmin" /> and <xref linkend="palotheory" />,
						and refer to concept such as <emphasis>console</emphasis>, seen in
						<xref linkend="consoles" />.
						So, let&apos;s go for the story of the happy &PL; user booting a kernel,
						also called &quot;<emphasis>I don&apos;t know how to configure my workstation
						to use the kernel I want during boot sequence!</emphasis>&quot;.
					</para></highlights>

					<para>
						After switching your workstation on, a message on the
						console will tell you that the workstation is about to start
						automatically the boot sequence, except if you hold the
						<keycap>Esc</keycap> key to stop the auto-booting process.
						This is a very difficult step: you must hold the
						<keycap>Esc</keycap> key down ;o)
					</para>

					<note><para>
						Depending on your model, you might need to press this key
						during a quite long time.
					</para></note>

					<tip><para>
						In some cases when using graphic console, the monitor can be
						too slow to trigger on, and won&apos;t allow you to see the
						warning message. A good workaround is to keep a close eye on
						the keyboard&apos;s lights: when they all blink at once, this is
						the right time to press and hold the <keycap>Esc</keycap> key.
						If you still have troubles, please refer to <xref linkend="consoles" />.
					</para></tip>

					<para>
						There are a few different ways to get access to
						&BA; (see <xref linkend="enterbootadmin" />).
						If you have an old box, you will see an information message displayed,
						where the workstation&apos;s firmware tells you that it will
						start searching for all bootable devices,
						or that you can break this by holding down the <keycap>Esc</keycap> key.
						This is the same procedure as just mentioned, you must
						press the <keycap>Esc</keycap> key.
					</para>

					<para>
						As usual, on some machines you might then get a menu where you should press the
						<keycap>a</keycap> key followed by <keycap>Enter</keycap>.
						You are now facing the deadly &apos;<computeroutput>BOOT_ADMIN&gt;</computeroutput>&apos;
						prompt :^). First, we will turn off <literal>auto boot</literal>
						process by entering the following lines:
					</para>

					<programlisting><computeroutput>BOOT_ADMIN&gt; </computeroutput>auto boot off</programlisting>

					<para>
						then hit <keycap>Enter</keycap> to validate. This will prevent the
						box from further attempts at auto-booting. In other words, you won&apos;t
						have to stop the boot process with <keycap>Esc</keycap>, it will stop
						on its own on subsequent reboots and wait for your instructions.
					</para>

					<para>
						Now, you must tell the system from which boot device you
						would like to boot. If it&apos;s a hard drive, it must have a
						&apos;<literal>f0</literal>&apos; partition at the beginning
						(see <xref linkend="bootsolutions" />).
					</para>

					<para>
						In this example, the old kernel is <filename>vmlinux</filename> and
						the new one is <filename>vmlinux-2.4.17-pa3</filename>.
						The chosen SCSI boot device is designed by:
						<computeroutput>
						SCSI.<replaceable>X</replaceable>.0,
						</computeroutput>
						where <replaceable>X</replaceable> is the SCSI-ID of the disk you
						want to boot from<footnote><para>For those who wonder what the final
						0 means, it&apos;s the device LUN. Since most SCSI devices have only
						one LUN (especially disks), you can safely use 0 as in this
						example.</para></footnote>.	<emphasis>e.g.:</emphasis>
					</para>

					<programlisting><computeroutput>BOOT_ADMIN&gt; </computeroutput>boot SCSI.5.0</programlisting>

					<para>
						At the end of the previous command line, you must add the
						<parameter>IPL</parameter> token if you have a HP 9000/7xx
						system to specify that you want to interact with
						<application>IPL</application>. If you have a more
						recent hardware, the system will ask if you want to
						interact with <application>IPL</application> anyway:
					</para>

						<programlisting><computeroutput>Interact with IPL (Y or N)?&gt;</computeroutput></programlisting>

					<para>
						Say <keycap>Y</keycap> and hit <keycap>Enter</keycap>.
						Now, you can manually configure the &PO; boot parameters.
						A new menu is displayed, where you can configure on line
						&apos;<computeroutput>0</computeroutput>&apos; (selected by default)
						the boot partition number, and the path of your boot kernel.
					</para>

					<para>
						Here is the complete session log of a A500 serial console output,
						taken from &PO; version 1.5. You can find in <xref linkend="oldpaloa500" />
						a session log with an older version of palo, such as the one that
						can be found on &D; 3.0 install disks.
					</para>

					<programlisting>
Main Menu: Enter command or menu > bo scsi.5.0
Interact with IPL (Y, N, or Cancel)?> y

Booting...
Boot IO Dependent Code (IODC) revision 1


HARD Booted.
palo ipl 1.5 root@c3k Fri May 14 16:17:38 MDT 2004
Skipping extended partition 6 - beyond reach of IPL

Partition Start(MB) End(MB) Id Type
1               1      31   f0 Palo
2              32     153   83 ext2
3             154    1107   82 swap
5            1108    5875   83 ext2

PALO(F0) partition contains:
    0/vmlinux64 5279419 bytes @ 0x44000

Information: No console specified on kernel command line. This is normal.
PALO will choose the console currently used by firmware (serial).
Current command line:
2/vmlinux root=/dev/sdb5 HOME=/ console=ttyS0 TERM=vt102
 0: 2/vmlinux
 1: root=/dev/sdb5
 2: HOME=/
 3: console=ttyS0
 4: TERM=vt102

&lt;#&gt;    edit the numbered field
'b'    boot with this command line
'r'    restore command line
'l'    list dir
? 0
2/vmlinux-2.6-cvs initrd=2/initrd.img-cvs
Current command line:
2/vmlinux-2.6-cvs initrd=2/initrd.img-cvs root=/dev/sdb5 HOME=/ console=ttyS0 TERM=vt102
 0: 2/vmlinux-2.6-cvs
 1: initrd=2/initrd.img-cvs
 2: root=/dev/sdb5
 3: HOME=/
 4: console=ttyS0
 5: TERM=vt102

&lt;#&gt;    edit the numbered field
'b'    boot with this command line
'r'    restore command line
'l'    list dir
? 1

Current command line:
2/vmlinux-2.6-cvs  root=/dev/sdb5 HOME=/ console=ttyS0 TERM=vt102
 0: 2/vmlinux-2.6-cvs
 1: root=/dev/sdb5
 2: HOME=/
 3: console=ttyS0
 4: TERM=vt102

&lt;#&gt;    edit the numbered field
'b'    boot with this command line
'r'    restore command line
'l'    list dir
? b
					</programlisting>

					<para>
						&PO; was first setup to boot the kernel file <filename>vmlinux</filename>
						located on the second partition of the SCSI device ID 5 LUN 0.
						(We know this since we have asked &BA; to boot on this device).
						But we wanted another kernel this time.
						We have pressed the <keycap>Enter</keycap> key (to validate the default
						choice &apos;<computeroutput>0</computeroutput>&apos;)
						and modified the text to match our needs, here
						<filename>vmlinux-2.6-cvs</filename>. We have also
						added an <computeroutput>initrd=2/initrd.img-cvs</computeroutput> argument
						to the command line. We have validated our changes
						by hitting the <keycap>Enter</keycap> key.
						Finally we have decided that we didn&apos;t want this
						additional argument, so we have selected it and erased it.
						At the end it asked again which field we wanted to edit, we
						just typed &apos;<computeroutput>b</computeroutput>&apos; instead
						of any number and hit <keycap>Enter</keycap> to boot our new kernel.
					</para>

					<caution><para>
						Please don&apos;t change any other parameter unless you
						really know what you are doing!
					</para></caution>

					<para>
						That&apos;s it! &PO; has no more secrets for you :-)
					</para>

					<note><para>
						As you might have noticed, the &BA; interface can take several
						aspects, so don&apos;t be disappointed if yours does not
						exactly match our examples.
					</para></note>

			  </sect2>

		</sect1>

	</chapter>




	<chapter id="bootsolutions">
		<title>Available boot solutions</title>

		<sect1 id="bootcd">
			<title>Booting from CD</title>

			<highlights><para>
				Booting from CD is one of the easiest way to start and
				install your &PA; machine; assuming you have a CD drive
				handy and a bootable CD. You can download official &D;
				ISOs as well as <emphasis>Net Install</emphasis> ISO
				(see <xref linkend="glossnetinst" />) from the
				<ulink url="http://www.debian.org/devel/debian-installer/">&D; Installer pages</ulink>,
				or from the <ulink url="ftp://www.parisc-linux.org/cd-images/">&PA;/Linux official website</ulink>.
			</para></highlights>

		  <orderedlist numeration="lowerroman">
				<listitem>
				  <para>Start the box and enter the &BA; mode. (<xref linkend="enterbootadmin"/>)</para>
				</listitem>
				<listitem>
				  <para>
						Place your bootable CD on the CD tray and close it.
						Sounds obvious, but we know guys who missed that step :)
					</para>
				</listitem>
				<listitem>
				  <para>
						There are two options from there: either you know the
						full <literal>PATH</literal> to your CD device,
						then you can jump to next step, or you don&apos;t.
						In this last case, issue a <command>search ipl</command>
						to list all available bootable devices.
						You can also specify
						<command>search <replaceable>[PATH]</replaceable></command>,
						which is fastest.
						For instance if you want to search the SCSI bus:
					</para>

				  <programlisting>search SCSI</programlisting>

				  <para>
						On recent boxes, <command>search disk</command> is quite helpful.
						Take a look at <command>help search</command> for details specific to your box.
					</para>
				</listitem>
				<listitem>
				  <para>
						Once you know the full <literal>PATH</literal> to your CD drive,
						you can issue a <command>boot <replaceable>&lt;PATH&gt;</replaceable></command>.
						That&apos;s all. If everything goes fine, it will start booting the CD present
						in the CD reader.	Real life example:
					</para>

				  <programlisting>boot ide</programlisting>
				</listitem>
		  </orderedlist>

		</sect1>


		<sect1 id="boothd">
		  <title>Booting from hard drive</title>

			<highlights><para>
				Booting from hard drive is not really more difficult that
				booting from CD. The only thing really important is that
				your hard drive has to be correctly prepared. Take a look
				at <xref linkend="bootablepartition"/> to learn how to
				prepare it.
			</para></highlights>

		  <orderedlist numeration="lowerroman">
				<listitem>
				  <para>
						Start the box and enter the &BA; mode.
						(<xref linkend="enterbootadmin"/>)
					</para>
				</listitem>
				<listitem>
				  <para>
						There are two options from there: either you know the
						full <literal>PATH</literal> to your hard disk device,
						then you can jump to next step, or you don&apos;t.
						In this last case, issue a <command>search ipl</command>
						to list all available bootable devices.
						You can also specify
						<command>search <replaceable>[PATH]</replaceable></command>.
						For instance if you want to search the Single Ended SCSI bus:
					</para>

				  <programlisting>search SESCSI</programlisting>

					<para>
						Take a look at <command>help search</command>
						for details specific to your box.
					</para>
				</listitem>
				<listitem>
				  <para>
						Once you know the full <literal>PATH</literal> to your hard drive,
						you can issue a <command>boot <replaceable>&lt;PATH&gt;</replaceable></command>.
						That&apos;s all. If everything goes fine, it will start booting the kernel
						as setup by &PO; (see <xref linkend="bootablepartition"/>).
						Real life example:
					</para>

				  <programlisting>boot scsi.6</programlisting>
				</listitem>
		  </orderedlist>

		</sect1>


		<sect1 id="bootnetwork">
		  <title>Booting from network</title>

			<highlights><para>
				Booting from the network is only required in certain cases. Booting from the network is very
				usefull when you have unsupported I/O devices, diskless systems, or systems with broken hardware.
				Network booting is detailed below.
			</para></highlights>
				
		  <sect2 id="preparingnetboot">
				<title>Preparing to boot from network</title>
				
				<highlights><para>
					Booting from the network involves two machines: the <emphasis>boot server</emphasis>
					and the <emphasis>boot client</emphasis>, the latter being the &PA; system you are
					trying to start up, and the former, the machine that will serve over the network
					the files which the client needs.
					The rest of this section will extensively deal with setting up the <emphasis>boot
					server</emphasis> since this is probably the trickiest part.
				</para></highlights>

				<important><para>
					You will need a <emphasis>lifimage</emphasis> to perform a network boot.
					See <xref linkend="whatdoespalo"/> to learn how to create one.
					You can also use the one from
					<ulink url="http://ftp.debian.org/debian/dists/sarge/main/installer-hppa/current/images/netboot/2.6/boot.img">
					&D; Installer</ulink>.
				</para></important>
				
				<note><para>
					Needless to say, all server-side setup is meant to be performed by the
					<emphasis>super-user</emphasis>, also known as <literal>root</literal>.
				</para></note>

		  </sect2>

		  <sect2 id="rbootorbootp">
				<title>rboot or bootp?</title>

				<highlights><para>
					All &apos;recent&apos; machines can boot using
					<literal>BOOTP</literal>, starting from 715/100,
					715/120, and 712s. Older ones, mostly early 715s,
					710s and 725s need <literal>RBOOT</literal>.
				</para></highlights>

				<note><para>
					To use <literal>BOOTP</literal> you have to enable
					the
					<menuchoice>
						<guimenu>IP: Kernel level autoconfiguration</guimenu>
						<guimenuitem>IP: BOOTP support</guimenuitem>
					</menuchoice>
					within the &apos;<literal>Networking options</literal>&apos;
					section of the kernel configuration, if you want to use a
					<emphasis>home-made</emphasis> kernel. See <xref linkend="vmlinux" />
					for details.
				</para></note>
				
				<para>
					Please note that though <xref linkend="usingrbootd" /> deals with
					<literal>RBOOT</literal> only, two different implementations of the
					<literal>BOOTP</literal> protocol are detailed in <xref linkend="usingdhcp" />
					and <xref linkend="usingbootp" />. We detail these two <emphasis>because
					we can</emphasis>, but if you need to use the <literal>BOOTP</literal>
					protocol, you will have to choose one.
				</para>
				
				<tip><para>
					If you don&apos;t know which <literal>BOOTP</literal> implementation to use,
					go for the <command>dhcp</command> one, it is much easier to deal with.
				</para></tip>

		  </sect2>

		  <sect2 id="usingrbootd">
				<title>Using rboot</title>

				<sect3>
				  <title>Obtaining rbootd</title>

				  <para>
						If you have an old machine that requires <command>rboot</command>
						to boot over network, use the following procedure to set up and
						configure a boot server, and boot using the &PA;/Linux kernel.
					</para>

				  <para>
						Old machines, including the Scorpio 715s, use the
						<literal>RBOOT</literal> protocol. You need <command>rbootd</command>
						to handle their boot requests. Look for it in your favorite distribution
						archive (assuming you will be servicing boot requests from a Linux box).
						Here are two ways of getting the <command>rboot</command> daemon:
					</para>

				  <itemizedlist>
						<listitem>
						  <para>
								If you are using a &D;-powered server (which you really should be doing ;o),
								you&apos;re almost done. Run from a command shell:
							</para>

						  <programlisting>
&prompt; <command>apt-get</command> <userinput>install rbootd</userinput>
							</programlisting>
						</listitem>
						<listitem>
						  <para>
								If you can&apos;t find any <command>rbootd</command> package for your system
								(which is very possible since it is a very old netboot protocol), you can find
								its source in the &D; archive:
								<ulink url="http://packages.debian.org/stable/net/rbootd.html">rbootd</ulink>.
								You will have to build it from source.
							</para>
						</listitem>
				  </itemizedlist>

				</sect3>

				<sect3 id="rbootd">
				  <title>Configuring rbootd</title>

				  <para>
						As we already said, to boot a <literal>RBOOT</literal>-aware system, you need
						a separate machine with <command>rbootd</command>
						installed (this is the &apos;boot server&apos;) on which you will store the
						&PA;/Linux kernel <emphasis>lifimage</emphasis> that you want to use to boot
						your &PA; system with.
					</para>

				  <para>
						Once the <command>rbootd</command> server software is installed,
						read the following to configure it to work with your &PA; system:
					</para>

				  <para>
						In <filename>/etc/rbootd.conf</filename> you will have to add a line like:
					</para>

					<programlisting>ethernet_addr            bootfile</programlisting>

					<orderedlist numeration="arabic">
						<listitem>
						  <para>
								Replace <replaceable>bootfile</replaceable> with the name of your
								&PA;/Linux kernel image, usually &apos;<filename>lifimage</filename>&apos;.
							</para>
						</listitem>
						<listitem id="getmac">
						  <para>
								Now get the Ethernet address of your &PA; system by typing
								<command>lanaddress</command> at the
								&apos;<computeroutput>BOOT_ADMIN&gt;</computeroutput>&apos; prompt
								(see <xref linkend="bootadminfo" />).
							</para>
						  <para>
								It will return a number like
								<computeroutput>080009-7004b6</computeroutput>. Take note of this number.
							</para>
						</listitem>
						<listitem>
						  <para>
								In <filename>/etc/rbootd.conf</filename> on your boot server, the
								Ethernet address has to be colon-delimited.  That means you will have to modify
								the number you just obtained so that every set of two characters (after removing the
								&apos;-&apos;) is separated by a colon.  For example:
								<computeroutput>080009-7004b6</computeroutput> becomes
							  <computeroutput>08:00:09:70:04:b6</computeroutput>.
								Add the colon delimited Ethernet address to
								<filename>/etc/rbootd.conf</filename> on your boot server. The
								resulting file will look something like this:
							</para>

						  <programlisting>
# ethernet addr        boot file           comments

08:00:09:87:e4:8f      lifimage_715        # PA/Linux kernel for 715/33
08:00:09:70:04:b6      lifimage_720        # PA/Linux kernel for 720
							</programlisting>

						  <para>
								This <filename>rbootd.conf</filename> example contains the Ethernet
								addresses and boot file names for two different machines.
							</para>

						  <para>
								Once you have changed the configuration file, restart
								<command>rbootd</command>.
							</para>
						</listitem>
				  </orderedlist>

				  <para>
						By default, <command>rbootd</command> assumes that bootfiles are located
						in <filename class="directory">/var/lib/rbootd/</filename>. Therefore,
						you will have to put your bootable kernel image in that directory, or,
						if you really hate that directory for some reason, you can rebuild
						<command>rbootd</command> to use a different directory.
					</para>

				  <para>
						The easiest thing, of course, is just to drop your kernel images in
						the default directory!
					</para>

				</sect3>

		  </sect2>

		  <sect2 id="usingdhcp">
				<title>Using dhcp/tftp</title>

				<para>
					We will see here how to setup a <literal>DHCP</literal> server
					to handle <literal>BOOTP</literal> requests (since &PA; box use
					<literal>BOOTP</literal>, unless they need <literal>RBOOT</literal>,
					as mentioned above).
				</para>
				
				<note><para>
					&W; users might want to look at <xref linkend="win2kdhcp" />.
				</para></note>

				<sect3>
				  <title>Obtaining dhcp/tftp</title>

				  <para>
						&D; users will just have to install the packages using the
						following commands, executed as <literal>root</literal>:
					</para>

				  <programlisting>
&prompt; <command>apt-get</command> <userinput>install dhcp tftpd</userinput>
					</programlisting>

				  <para>
						If you need rpm packages (for the ISC dhcp server), the best
						way is to go to <ulink url="http://rpmfind.net/">http://rpmfind.net/</ulink>.
					</para>

				  <note><para>
						The dhcp package can do much more than a simple bootp daemon.
						Nevertheless, it is also known to be much easier to configure.
						If you really want to try regular <command>bootp</command>, skip
						this and go to <xref linkend="usingbootp" />.
					</para></note>

				</sect3>

				<sect3>
				  <title>Configuring dhcp/tftp</title>

				  <para>
						Here are the instructions to set up <command>dhcp</command> on your
						boot server. To keep this explanation simple, we will assume that
						you want to assign a fixed IP to your box, without DNS update. Your
						subnet will be <literal>192.168.1.0/24</literal>, with optional:
						gateway at <literal>192.168.1.1</literal>, domain name
						<literal>foo.com</literal> and DNS at <literal>192.168.1.4</literal>.
						Feel free to replace these values with those which would suit your
						needs in the next sections.
					</para>

				  <note><para>
						This section is dedicated to &D; users.
						For others distributions, it should be similar though
						there may be some differences like default directories.
					</para></note>

				  <orderedlist numeration="arabic">
						<listitem>
						  <para>
								Edit <filename>/etc/inetd.conf</filename> on your boot
								server to add the following line, if it doesn&apos;t already exist:
								<programlisting>
tftp           dgram   udp     wait    nobody  /usr/sbin/tcpd \
														/usr/sbin/in.tftpd /tftpboot
								</programlisting>
								Here, <filename class="directory">/tftpboot/</filename>
								is being used as tftpd server&apos;s root (this is where you will put the
								<emphasis>lifimage</emphasis> file). You can choose another
								directory if you want. According to <command>man tftpd</command>,
								this is the usual default directory.
							</para>

						  <para>
								When this is done, reload <command>inetd</command> with:
								<command>/etc/init.d/inetd reload</command>. Non-&D; users can also
								issue a <command>killall -HUP inetd</command>.
							</para>
						</listitem>
						<listitem>
						  <para>
								According to <command>man 5 dhcpd.conf</command>, edit the
								<filename>/etc/dhcpd.conf</filename> file to contain something like:
								<programlisting>
allow bootp;
default-lease-time 600;
max-lease-time 7200;
# This will tell the box its hostname while booting:
use-host-decl-names on;

subnet <replaceable>192.168.1.0</replaceable> netmask 255.255.255.0 {
		option routers <replaceable>192.168.1.1</replaceable>;
		option domain-name &quot;<replaceable>foo.com</replaceable>&quot;;
		option domain-name-server <replaceable>192.168.1.4</replaceable>;
}

host <replaceable>[hostname]</replaceable> {
		hardware ethernet <replaceable>[mac address]</replaceable>;
		fixed-address <replaceable>[ip address]</replaceable>;
		filename &quot;<replaceable>[boot filename]</replaceable>&quot;;
		option root-path &quot;<replaceable>[root path]</replaceable>&quot;;
}
								</programlisting>
								You have to fill in the <replaceable>[hostname]</replaceable>,
								<replaceable>[mac address]</replaceable>,
								<replaceable>[ip address]</replaceable>,
								<replaceable>[boot filename]</replaceable> and
								<replaceable>[root path]</replaceable> fields with the
								appropriate information, where:
							</para>

						  <itemizedlist>
								<listitem>
								  <para>
								  	<replaceable>[hostname]</replaceable>
										is the name of the &PA; system.
									</para>
								</listitem>
								<listitem>
								  <para>
								  	<replaceable>[mac address]</replaceable>
										is the colon-delimited ethernet address of the &PA; system, which
										can be obtained by typing <command>lanaddress</command> at the
										&apos;<computeroutput>BOOT_ADMIN&gt;</computeroutput>&apos; prompt
										(see <xref linkend="bootadminfo" />).
									</para>
								</listitem>
								<listitem>
								  <para>
								  	<replaceable>[ip address]</replaceable>
										is the IP address you wish to assign to the &PA; system.
									</para>
								</listitem>
								<listitem>
								  <para>
								  	<replaceable>[boot filename]</replaceable>
										is the name of the bootable kernel image you want to boot your system with.
									</para>
								</listitem>
								<listitem>
								  <para>
								  	<replaceable>[root path]</replaceable>
										is the path to the NFS root filesystem exported by the server.
									</para>
								</listitem>
								<listitem>
									<para>
										Additionally, if the tftp server you want to use is not the same as the one
										running the dhcp server, you can add <computeroutput>next-server
										<replaceable>[ip address]</replaceable>;</computeroutput>, replacing
										<replaceable>[ip address]</replaceable> with the actual IP of the tftp
										server, to the dhcp configuration.
									</para>
								</listitem>
						  </itemizedlist>

						  <para>
								You&apos;ll end up with something like this for each box
								you want to <emphasis>netboot</emphasis>:
							  <programlisting>
host tatooine {
		hardware ethernet 00:40:05:18:0c:dd;
		fixed-address 192.168.1.22;
		filename &quot;lifimage-tatooine&quot;;
		option root-path &quot;/exports/tatooineroot&quot;;
}
								</programlisting>
				      </para>
						</listitem>
				  </orderedlist>
				</sect3>

		  </sect2>

		  <sect2 id="usingbootp">
				<title>Using bootp/tftp</title>

				<sect3>
				  <title>Obtaining bootp/tftp</title>

				  <para>
						For &D; users, you just have to install the packages by typing
						these commands as user <literal>root</literal>:
						<programlisting>
&prompt; <command>apt-get</command> <userinput>install bootp tftpd</userinput>
						</programlisting>
						If you need rpm packages, the best way is to go to
						<ulink url="http://rpmfind.net/">http://rpmfind.net/</ulink>.
					</para>

				  <warning><para>
						You&apos;ll have been warned! This daemon is far more obfuscated
						in its configuration.
					</para></warning>

				</sect3>

				<sect3>
				  <title>Configuring bootp/tftp</title>

				  <para>
						Follow these instructions to use the <command>bootp</command>
						daemon on your boot server:
					</para>

				  <note><para>
						This section is dedicated to &D; users.
						For others distributions, it should be similar though
						there may be some differences like default directories.
					</para></note>

				  <orderedlist numeration="arabic">
						<listitem>
						  <para>
								Edit <filename>/etc/inetd.conf</filename> on your boot server
								to add the following lines, if they don&apos;t already exist:
							  <programlisting>
tftp            dgram   udp     wait    nobody  /usr/sbin/tcpd       \
											/usr/sbin/in.tftpd /tftpboot
bootps          dgram   udp     wait    root    /usr/sbin/bootpd     \
														bootpd -i -t 120
								</programlisting>
								Here, <filename class="directory">/tftpboot/</filename> is being
								used as tftpd server&apos;s root (this is where you will put the
								<emphasis>lifimage</emphasis> file). You can choose another directory
								if you want. According to <command>man tftpd</command>, this
								is the usual default directory.
							</para>

						  <para>
								When this is done, reload <command>inetd</command> with:
								<command>/etc/init.d/inetd reload</command>. Non-&D; users can also issue
								a <command>killall -HUP inetd</command>.
							</para>
						</listitem>
						<listitem>
						  <para>
								According to <command>man 5 bootptab</command>, edit the
								<filename>/etc/bootptab</filename> file to contain:
								<programlisting>
<replaceable>[hostname]</replaceable>:hd=/tftpboot:\
			:rp=<replaceable>[root path]</replaceable>:\
			:ht=ethernet:\
			:ha=<replaceable>[mac address]</replaceable>:\
			:ip=<replaceable>[ip address]</replaceable>:\
			:bf=<replaceable>[boot filename]</replaceable>:\
			:sm=255.255.255.0:\
			:to=7200:
								</programlisting>
								You have to fill in the <replaceable>[hostname]</replaceable>,
								<replaceable>[mac address]</replaceable>,
								<replaceable>[ip address]</replaceable> and
								<replaceable>[root path]</replaceable>
								fields with the appropriate information, where:
							</para>

						  <itemizedlist>
								<listitem>
								  <para>
								  	<replaceable>[hostname]</replaceable> is the name
										of the &PA; system.
									</para>
								</listitem>
								<listitem>
								  <para>
								  	<replaceable>[mac address]</replaceable> is the
										NOT-delimited ethernet address of the &PA; system, which can be obtained
										by typing <command>lanaddress</command> at the
										&apos;<computeroutput>BOOT_ADMIN&gt;</computeroutput>&apos; prompt
										(see <xref linkend="bootadminfo" />).
									</para>
								</listitem>
								<listitem>
								  <para>
								  	<replaceable>[ip address]</replaceable> is the
										IP address you wish to assign to the &PA; system.
									</para>
								</listitem>
								<listitem>
								  <para>
								  	<replaceable>[boot filename]</replaceable> is the
										name of the bootable kernel image you want to boot your system with.
									</para>
								</listitem>
								<listitem>
								  <para>
								  	<replaceable>[root path]</replaceable> is the
										path to the NFS root filesystem exported by the server.
									</para>
								</listitem>
						  </itemizedlist>

						  <para>You&apos;ll end up with something like this:</para>

						  <programlisting>
vodka:hd=/tftpboot:\
	 :rp=/usr/src/parisc/:\
	 :ht=ethernet:\
	 :ha=080069088717:\
	 :ip=140.244.9.208:\
	 :bf=lifimage:\
	 :sm=255.255.255.0:\
	 :to=7200:
							</programlisting>
						</listitem>
				  </orderedlist>

				</sect3>

		  </sect2>

		  <sect2 id="realnetboot">
				<title>Effectively booting from network</title>

				<highlights><para>
					To conclude with the developers&apos; way to boot the
					kernel, this section will tell you how to actually boot your
					system from a network server. But it tends to be less and less used.
					Most users will prefer to stick to <xref linkend="boothd" /> once
					their system is properly setup.
				</para></highlights>

				<para>
					Here we are. We assume that you&apos;ve done everything outlined
					above, your network boot server is on the same physical subnet as
					your &PA; machine, you&apos;ve got a bootable &PL; kernel lifimage
					on your boot server, and you&apos;re willing to give it a try.
					If everything is ready (including you!), the following procedure
					will introduce you to the joy of network booting your PA box into &L;.
				</para>

				<orderedlist numeration="arabic">
				  <listitem>
						<para>Fire up your &PA; system.</para>
				  </listitem>
				  <listitem>
						<para>
							Watch your &PA; box starting up. When the following message
							appears during the &PA; machine&apos;s boot process, press
							and hold the <keycap>Esc</keycap> key:

					  	<programlisting>
Searching for Potential Boot Devices.
To terminate search, press and hold the ESCAPE key.
							</programlisting>
						</para>
				  </listitem>
				  <listitem>
						<para>
							If needed, select &apos;<computeroutput>a)  Enter Boot Administration
							mode</computeroutput>&apos; from the menu.  This brings up the
							&apos;<computeroutput>BOOT_ADMIN&gt;</computeroutput>&apos; prompt.
						</para>
				  </listitem>
				  <listitem>
						<para>
							Type the following at the prompt: <command>boot lan</command>.
						</para>
				  </listitem>
				  <listitem>
						<para>
							Watch your &PA; system magically becoming a &PL; system.
							Ta dah!
						</para>
				  </listitem>
				</orderedlist>

				<note><para>
					Of course your are supposed to run only one boot server
					at a time on your network, in order to avoid conflicts...
				</para></note>

		  </sect2>

		</sect1>

	</chapter>




	<chapter id="vmlinux">
		<title>Building and installing a custom kernel</title>

		<highlights><para>
			To build a Linux kernel, you need a compiler and the kernel source.
			The first element is not a trivial thing to find because it
			depends on how you want to build your kernel.
			The second is easier since it can be found at
			<ulink url="http://cvs.parisc-linux.org/"> the official CVS site</ulink>.
			First, we will discuss about <command>GCC</command> compiler.
			Then, the preparation of the build will be explained.
			The last paragraph will deal with the installation of this new kernel.
		</para></highlights>
<!-- XXX Find a valid kernel build howto? -->

		<note><para>
			We will deal only with a kernel built without modules,
			to simplify the explanations.
		</para></note>

		<sect1 id="gcc">
		  <title>GCC compiler</title>

		  <highlights><para>
				You can build the kernel directly on your own &PA; box (<emphasis>self-hosted</emphasis>
				or <emphasis>native</emphasis> build).
				But on old systems, you may prefer to use another - faster - non &PA; computer
				to compile your kernel (<emphasis>cross-compilation</emphasis>). We will see the
				two possibilities.
			</para></highlights>

			<note><para>
				By the time version 1.0 of this howto was released, only gcc-3.0.X was able
				to build working kernels. There was a bug in more recent versions that made
				the box crash when network activity occurs. It should be fixed by now, so
				using the latest version of gcc should be fine. If ever the above mentioned
				bug occurs, you&apos;ll know what&apos;s wrong. Anyway, if you want to build
				any kernel after 2.6.12-rc3, you will need at least <command>gcc-3.3</command>.
			</para></note>

		  <sect2 id="nativebuild">
				<title>Native build</title>

				<para>
					Since &D; was the first distribution to support &PA; architecture,
					if you want to use the <emphasis>Super Cow</emphasis> powers,
					you need to have some basic knowledge about the &D; packaging system.
					We will explain here how to quickly get a gcc compiler ready on your &PA; box.
					If you are not using &D;, well, we&apos;re afraid we can&apos;t do much
					for you: you will have to transpose what is said below to your distribution.
					We will assume you know how to use 
				</para>

				<para>
					If you are using your own &PA; box, you only need the good old
					<command>GCC</command> compiler. You can install the required tools to build a
					kernel by issuing:
				</para>

				<programlisting>
&prompt; <command>apt-get</command> <userinput>install build-essential libncurses5-dev</userinput>
				</programlisting>

				<para>
					Essentially, this will install everything you need to build a kernel
					(and even a bit more). This boils down to <command>binutils</command>,
					<command>gcc</command>, <command>libc-dev</command>, <command>make</command>,
					<command>fileutils</command> and <command>libncurses5-dev</command>.
				</para>

				<para>When this is done, you can proceed to the kernel settings.</para>

		  </sect2>

		  <sect2 id="crosscompile">
				<title>Cross compiled build</title>

				<para>
					In this kernel build method, everything depends on the architecture
					of your building machine. If you want to compile your own toolchain, there
					is a slightly out-of-date HOWTO (<xref linkend="bibxc" />). Otherwise, we
					assume you can either find a cross-compiler package for your build host, or
					make one by yourself.
				</para>

				<important><para>
					As there is not yet a 64bit userspace on HP-PA, you have to cross-compile
					64bit kernel even if you are building on a 64bit &PA; box. You can get
					unofficial debs for hppa64 compilers and binutils by running for instance:
					<programlisting>
&prompt; <command>apt-get</command> <userinput>install gcc-3.3-hppa64 binutils-hppa64</userinput>
					</programlisting>
					See the <ulink url="http://www.parisc-linux.org/">&PA; Linux Website</ulink>
					for details.
				</para></important>

		  </sect2>

		</sect1>


		<sect1 id="kernelconf">
		  <title>Kernel configuration</title>

		  <para>
				If you want to take advantage of the latest kernel improvements, we
				suggest you retrieve it from the official
				<ulink url="http://cvs.parisc-linux.org/">&PA;/Linux CVS</ulink>.
				Please mind that the <emphasis>vanilla</emphasis> kernel that can
				be found at	<ulink url="http://www.kernel.org/">http://www.kernel.org/</ulink>
				is generally out of sync with the above mentioned CVS kernel, and that
				snapshots of this kernel are available too, check the
				<ulink url="http://cvs.parisc-linux.org/download/">download area</ulink>.
				In the following, we will focus on a fresh CVS tree.
			</para>

		  <para>
				The best way to obtain appreciable performances is to get a well
				configured kernel. For the &PA; platform, <command>make oldconfig</command>
				is a kind of default setup. If you want to make your own kernel,
				the first step is to know what hardware you have. The best way to
				grab useful info is to look at your box and find a maximum of data
				(model name, partnumber, chipsets, and so on). If you have already
				booted your box, you can take a look at <command>dmesg</command>
				output. Then, go to the <ulink url="http://hwdb.parisc-linux.org/">official
				hardware database</ulink> or to the
				<ulink url="http://partsurfer.hp.com/">HP partsurfer website</ulink>.
			</para>
			
			<para>
					Once you know what is inside your box and what you want to do with it,
					just run <command>make menuconfig</command> or another config command.
			</para>

			<sect2 id="kernelconf24">
				<title>Configuring 2.4 kernels</title>
				
		  	<highlights><para>
					Here is a brief list of architecture dependent menus for 2.4 kernels.
					You should take a look at them, to see if the values set match
					your hardware. Mind that 2.4 kernels are now considered <emphasis>deprecated</emphasis>
					anyway: you will not get community support for them.
				</para></highlights>

		  	<note><para>
					Remember that <command>make oldconfig</command> is a
					good base to start with, since it works for almost any machine.
				</para></note>

		  	<itemizedlist>
					<listitem>
				  	<para><emphasis>Processor type</emphasis> - indicates your CPU model</para>
					</listitem>
					<listitem>
				  	<para><emphasis>General options</emphasis> - tells you what is going to be enabled in your kernel (U2/Uturn, USC/GSC/HSC, Lasi, Wax, Dino, LBA/Elroy, SuperIO)</para>
					</listitem>
					<listitem>
				  	<para><emphasis>Parallel port support</emphasis> - enables/disables the Lasi/ASP parport</para>
					</listitem>
					<listitem>
				  	<para><emphasis>SCSI support</emphasis> - check there for your SCSI chipset (Lasi, Zalon, NCR/SYM53C8XX or other)</para>
					</listitem>
					<listitem>
				  	<para><emphasis>Network device support</emphasis> - is used to set your network card (Lasi, Tulip...)</para>
					</listitem>
					<listitem>
				  	<para><emphasis>Character devices</emphasis> - defines your I/O capabilities (Lasi, Dino, MUX see <xref linkend="MUX24" />)</para>
					</listitem>
					<listitem>
				  	<para><emphasis>HIL Support</emphasis> - useful if you have a HIL controller. See below <xref linkend="HIL24" />.</para>
					</listitem>
					<listitem>
				  	<para><emphasis>Console drivers</emphasis> - is directly related to your console mode (STI console or STI framebuffer)</para>
					</listitem>
					<listitem>
				  	<para><emphasis>Sound</emphasis> - enables/disables the Harmony driver</para>
					</listitem>
		  	</itemizedlist>

		  	<para>
					As you can see, menus specifically concerned by &PA; hardware are not
					that numerous, but there are lots of dependencies between them. Now,
					you must configure the kernel accordingly to what you plan to use
					this box for. Here is a list of some menus you should be going
					through to configure additional functionalities you might want:
				</para>

		  	<itemizedlist>
					<listitem>
				  	<para>
				  		<emphasis>General setup</emphasis> - is responsible for binary
				  		formats handled by the kernel. You need ELF, and can try SOM
				  		(support for HP/UX binaries. It *might* work with some static
				  		executables).
				  	</para>
					</listitem>
					<listitem>
				  	<para>
				  		<emphasis>Block devices</emphasis> - sets the ramdisk and loopback
				  		support. You probably won&apos;t use them.
				  	</para>
					</listitem>
					<listitem>
				  	<para>
				  		<emphasis>ATA/IDE/MFM/RLL support</emphasis> - You will need to
				  		check this to enable IDE. See <xref linkend="IDE24" />.
				  	</para>
					</listitem>
					<listitem>
				  	<para>
				  		<emphasis>File Systems/Network File Systems</emphasis> - is where
				  		to set EXT3 or NFS support.
				  	</para>
					</listitem>
					<listitem>
				  	<para>
				  		<emphasis>USB support</emphasis> - If you have enabled
				  		<emphasis>SuperIO</emphasis> and want USB, look here:
				  		<xref linkend="USB24" />.
				  	</para>
					</listitem>
		  	</itemizedlist>

		  	<note><para>
					By the time this HOWTO was written, there was no floppy drive
					support; and what&apos;s more, it is not expected to ever be supported.
				</para></note>

		  	<para>
					When you&apos;re done with it, save your kernel configuration.
					Everything is written in the <filename>.config</filename> file.
					You should back it up because <command>make distclean</command>
					will remove it. At this stage, you can do
					<command>make dep vmlinux</command> and if everything goes fine,
					you will have a new kernel in a couple of minutes.
				</para>

		  	<para>
					Here follows brief information about specific hardware configurations.
				</para>

		  	<sect3 id="HIL24">
					<title><acronym>HIL</acronym> Support in 2.4</title>

					<para>
						Since <literal>kernel-2.4.18-pa45</literal>, there is a full
						<acronym>HIL</acronym> support, for mice, tablets and keyboards.
						It is based on the <emphasis>Linux Input Driver</emphasis> model.
						See the <ulink url="http://www.parisc-linux.org/faq/">&PA;/Linux FAQ</ulink>
						and the <ulink url="http://lists.parisc-linux.org/pipermail/parisc-linux/2002-June/016757.html">mail</ulink>
						posted on the mailing list by <emphasis>Helge Deller</emphasis>.
						Here is how to configure it:
					</para>

					<orderedlist numeration="arabic">
				  	<listitem>
							<para>Make sure you have a 2.4.18-pa45 or higher kernel source.</para>
				  	</listitem>
				  	<listitem>
							<para>
								Look at your kernel configuration for the following options:
								<programlisting>
CONFIG_INPUT=y
CONFIG_INPUT_KEYBDEV=y
CONFIG_INPUT_MOUSEDEV=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
CONFIG_INPUT_EVDEV=y

CONFIG_INPUT_SERIO=y

CONFIG_HIL=y
CONFIG_HP_SDC=y
CONFIG_HIL_MLC=y
CONFIG_HP_SDC_MLC=y
CONFIG_HIL_KBD=y
CONFIG_HIL_PTR=y
								</programlisting>

								<note><para>
									There is no more <literal>CONFIG_HIL_KBD_BASIC</literal>.
								</para></note>
							</para>
				  	</listitem>
				  	<listitem>
							<para>
								On your target system, check that the following devices are available:

								<programlisting>
/dev/input/mice
/dev/input/mouseX
/dev/input/eventX
								</programlisting>

								If they are not yet present, create them as <literal>root</literal> by running:

								<programlisting>
&prompt; <command>cd /dev; MAKEDEV input</command>
								</programlisting>
				    	</para>
				  	</listitem>
				  	<listitem>
							<para>
								Configure <command>gpm</command> with the following
								options in <filename>/etc/gpm.conf</filename>:

								<programlisting>
device=/dev/input/mice
type=imps2
								</programlisting>
				    	</para>
				  	</listitem>
				  	<listitem>
							<para>
								Here is a sample <filename>/etc/X11/XF86Config-4</filename>:

								<programlisting>
Section &quot;InputDevice&quot;
		Identifier      &quot;HIL Keyboard&quot;
		Driver          &quot;keyboard&quot;
		Option          &quot;CoreKeyboard&quot;
EndSection
Section &quot;InputDevice&quot;
		Identifier      &quot;HIL Mouse&quot;
		Driver          &quot;mouse&quot;
		Option          &quot;CorePointer&quot;
		Option          &quot;Device&quot;                &quot;/dev/input/mice&quot;
		Option          &quot;Protocol&quot;              &quot;ImPS/2&quot;
		Option          &quot;ZAxisMapping&quot;          &quot;4 5&quot;
EndSection
Section &quot;ServerLayout&quot;
		Identifier      &quot;Default Layout&quot;
		Screen          &quot;Default Screen&quot;
		InputDevice     &quot;HIL Keyboard&quot;
		InputDevice     &quot;HIL Mouse&quot;
EndSection
								</programlisting>

								You can also download a sample <filename>XF86Config-4</filename> here:
								<ulink url="ftp://ftp.parisc-linux.org/XFree86/XF86Config-4">ftp://ftp.parisc-linux.org/XFree86/XF86Config-4</ulink>,
								adjust color depth and resolution, and put it in your
								<filename class="directory">/etc/X11/</filename>.
							</para>
				  	</listitem>
					</orderedlist>
		  	</sect3>

		  	<sect3 id="USB24">
					<title><acronym>USB</acronym> Support in 2.4</title>

					<para>
						<acronym>USB</acronym> support on HP-PA is still experimental, therefore it is
						only configured as modules in default kernel configuration.
						We have tried to install a B2000 with builtin <acronym>USB</acronym> support,
						both 32 and 64bit, and it worked fine, despite some keyboard problems.
						Don&apos;t worry, nothing critical: the range of keys located between
						the main part of the keyboard (the letters, backspace, enter...)
						and the numeric pad are broken. They do not behave at all as expected.
					</para>

					<tip><para>
						You can use the numeric pad as arrow keys: when <keycap>NumLock</keycap>
						is not activated, it behaves as a navigation pad. <emphasis>e.g.</emphasis>
						<keycap>8</keycap> is <keycap>Up Arrow</keycap>, <keycap>4</keycap> is
						<keycap>Left Arrow</keycap> and so on.
					</para></tip>

					<orderedlist numeration="arabic">
				  	<listitem>
							<para>Make sure you have a 2.4.18 or higher kernel source.</para>
				  	</listitem>
				  	<listitem>
							<para>
								Look at your kernel configuration for the following options:

								<programlisting>
CONFIG_SUPERIO=y
CONFIG_HOTPLUG=y

CONFIG_INPUT=y
CONFIG_INPUT_KEYBDEV=y
CONFIG_INPUT_MOUSEDEV=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
CONFIG_INPUT_EVDEV=y

CONFIG_USB=y
CONFIG_USB_DEVICEFS=y
CONFIG_USB_OHCI=y
CONFIG_HID=y
								</programlisting>
							</para>
				  	</listitem>
				  	<listitem>
							<para>
								On your target system, check that the following devices
								are available:

								<programlisting>
/dev/input/mice
/dev/input/mouseX
/dev/input/eventX
								</programlisting>

								If they are not yet present, create them as <literal>root</literal> by running:

								<programlisting>
&prompt; <command>cd /dev; MAKEDEV input</command>
								</programlisting>
							</para>
						</listitem>
						<listitem>
							<para>
								Configure <command>gpm</command> with the following options
								in <filename>/etc/gpm.conf</filename>:

								<programlisting>
device=/dev/input/mice
type=imps2
								</programlisting>
							</para>
				  	</listitem>
				  	<listitem>
							<para>
								The XF86-Config-4 is similar to the
								<literal>HIL</literal> one, as it is also using the <emphasis>Linux
								Input Driver</emphasis>.
							</para>
				  	</listitem>
					</orderedlist>

		  	</sect3>

		  	<sect3 id="MUX24">
					<title><acronym>MUX</acronym> Console Support in 2.4</title>

					<para>
						<literal>MUX Console</literal> has been improved by
						<emphasis>Richard Hirst</emphasis> in 2.4.18-pa37 kernel,
						though it is still a very <emphasis>experimental</emphasis> feature.
						It is expected to provide adequate <literal>MUX Console</literal>
						support to <literal>E-</literal> and <literal>K-Class</literal> machines.
						Feedback would be really appreciated.
					</para>

					<para>Now follow these steps to get it to work:</para>

					<orderedlist numeration="arabic">
				  	<listitem>
							<para>
								Make sure you have a 2.4.18-pa37 or higher kernel source.
							</para>
				  	</listitem>
				  	<listitem>
							<para>
								Look at your kernel configuration for the following options:

								<programlisting>
CONFIG_SERIAL_CONSOLE=y

CONFIG_SERIAL_GSC=y

CONFIG_SERIAL_NONSTANDARD=y
CONFIG_SERIAL_MUX=y
								</programlisting>
							</para>
						</listitem>
						<listitem>
							<para>
								On your target system, check that the following devices are available:

								<programlisting>
/dev/ttyB0
								</programlisting>

								If they are not yet present, create them as <literal>root</literal> by running:

								<programlisting>
&prompt; <command>cd /dev; MAKEDEV ttyB0</command>
								</programlisting>

								<note><para>
									It needs a recent <literal>MAKEDEV</literal> package to be
									created this way.
								</para></note>
							</para>
				  	</listitem>
				  	<listitem>
							<para>
								Now you can boot your system, taking care that &PO; uses
								<computeroutput>console=ttyB0</computeroutput>.
							</para>
				  	</listitem>
					</orderedlist>

		  	</sect3>

		  	<sect3 id="IDE24">
					<title><acronym>IDE</acronym> Devices Support in 2.4</title>

					<para>
						There is nothing really special about <acronym>IDE</acronym>
						support. You have to check that the <emphasis>IDE Chipset</emphasis>
						in use in your box is supported by the kernel. A common chipset
						found on &PA; hardware is <literal>NS87415</literal>.
						You can find it on B2000, J5000 and C3000 for instance. You will
						need <acronym>IDE</acronym> support to use some CD-ROM devices.
					</para>

					<para>
						Here is an example to get <acronym>IDE</acronym> to work with this chipset:
					</para>

					<orderedlist numeration="arabic">
				  	<listitem>
							<para>Make sure you have a recent kernel source.</para>
				  	</listitem>
				  	<listitem>
							<para>
								Look at your kernel configuration for the following options:

								<programlisting>
CONFIG_IOMMU_CCIO=y
CONFIG_PCI=y
CONFIG_PCI_LBA=y
CONFIG_IOSAPIC=y
CONFIG_IOMMU_SBA=y
CONFIG_SUPERIO=y

CONFIG_IDE=y

CONFIG_BLK_DEV_IDE=y

CONFIG_BLK_DEV_IDEPCI=y
CONFIG_BLK_DEV_IDEDMA=y
CONFIG_BLK_DEV_ADMA=y
CONFIG_BLK_DEV_IDEDMA=y
CONFIG_BLK_DEV_NS87415=y
								</programlisting>
							</para>
				  	</listitem>
				  	<listitem>
							<para>
								On your target system, check that the following devices
								are available:

								<programlisting>
/dev/hd*
								</programlisting>

								If they are not yet present, create them as <literal>root</literal> by running:

								<programlisting>
&prompt; <command>cd /dev; MAKEDEV hda hdb hdc hdd hde</command>
								</programlisting>
							</para>
				  	</listitem>
					</orderedlist>

					<note><para>
						Of course we didn&apos;t mention much of the architecture
						independent options. Moreover, the above settings may vary depending
						on your hardware. This is just an example.
					</para></note>
					</sect3>

		  </sect2>
			
			<sect2 id="kernelconf26">
				<title>Configuring 2.6 kernels</title>
				
		  	<highlights><para>
					Here is a brief list of architecture dependent menus for 2.6 kernels.
					You should take a look at them, to see if the values set match
					your hardware:
				</para></highlights>
				
		  	<itemizedlist>
					<listitem>
				  	<para><emphasis>Processor type and features</emphasis> - indicates your CPU model
						and some specific features such as SMP or Discontigmem support</para>
					</listitem>
					<listitem>
				  	<para><emphasis>Bus options</emphasis> - tells you what bus support is going to be
						enabled in your kernel (U2/Uturn, USC/GSC/HSC, Lasi, Wax, Dino, LBA/Elroy, SuperIO)</para>
					</listitem>
					<listitem>
				  	<para><emphasis>PA-RISC specific drivers</emphasis> - enables/disables some &PA; specific
						drivers, such as LED support, GSP and Stable Storage support.</para>
					</listitem>
		  	</itemizedlist>

		  	<para>
					As you can see, menus specifically concerned by &PA; hardware are not
					that numerous, and everything else is much generic by now. Still,
					you must configure the kernel accordingly to what you plan to use
					this box for and what features you want supported. Many other drivers are found in
					their respective submenus, such as SCSI, with the Zalon, Lasi SCSI and SYM2 drivers being
					there, or the Framebuffer devices (STI) in the Graphics Support menu, or the sound drivers
					(Harmony and AD1889) in the Sound menu. Help is often provided, feel free to look at it.
				</para>
				
				<note><para>
					Most of what was said for 2.4 is somewhat still applicable to 2.6.
				</para></note>
				
				<!-- XXX improve? -->
			</sect2>
			
		</sect1>


		<sect1 id="kernelinstall">
		  <title>Kernel installation</title>

		  <para>
				If you have made a native build on the box you wish to install, you can setup
				the new kernel as follows:
				within the kernel source tree <filename>linux/</filename>, as <literal>root</literal> execute:

			  <programlisting>
&prompt; <command>cp vmlinux /boot/vmlinux-<replaceable>[kernelversion]</replaceable></command>
&prompt; <command>cp System.map /boot/System.map-<replaceable>[kernelversion]</replaceable></command>
&prompt; <command>cp .config /boot/config-<replaceable>[kernelversion]</replaceable></command>
				</programlisting>

				Though it is not mandatory, we suggest you to replace
				<replaceable>[kernelversion]</replaceable> by the version of the
				kernel you built, <emphasis>e.g.</emphasis>:
				<filename>vmlinux-2.4.18-pa44</filename>. This will help you
				dealing with multiple kernel versions on the same machine.
				The same applies to <filename>.config</filename>.
				It is not needed to have a working kernel, though it might
				be very helpful when configuring a new one.
				Now, do <command>cd /boot</command>, make sure that
				<filename>vmlinux</filename> is a symbolic link to another
				file, as in the following example:

			  <programlisting>
&prompt; <command>ls -l vmlinux</command>
<computeroutput>lrwxrwxrwx  1 root   root   35 Jun 23 01:38 vmlinux -&gt; vmlinux-2.4.18-64-SMP</computeroutput>
				</programlisting>

				Make sure to remember the name of the kernel actually running
				on your box if ever the new one won&apos;t work properly.
				You are now able to ask &PO; to boot on it if needed
				(see <xref linkend="palo" /> for more information).
				Now do the following:

			  <programlisting>
&prompt; <command>rm -f vmlinux</command>
&prompt; <command>ln -s vmlinux-<replaceable>[kernelversion]</replaceable> vmlinux</command>
&prompt; <command>sync</command>
				</programlisting>

				If you want to boot from network you can forget all this,
				as you will need to set &PO; as explained in the
				<xref linkend="paloappusage" />, and run <command>make palo</command>
				to create the bootable <emphasis>lifimage</emphasis>.
			</para>

		  <para>
				If you have made a cross-compiled build or built a kernel on a
				PA box which is not the one you wish to install,
				you have to find a way to put <filename>vmlinux</filename>,
				<filename>System.map</filename> and eventually <filename>.config</filename>
				in <filename class="directory">/boot/</filename> as mentioned before.
				You can use the network (like <command>ftp</command>)
				or a CD to do so, or even direct copy to the hard disk drive.
			</para>

		</sect1>

	</chapter>




	<appendix id="win2kdhcp">
		<title>&W; 2003 boot server howto</title>

		<abstract>
			<para>
				This appendix has been greatly contributed by <emphasis>Jeremy Drake</emphasis>.
				It describes the process of setting up a &W; 2003 Server to serve boot requests
				for a &PL; box.
			</para>
		</abstract>

		<sect1 id="win2ksetupdhcp">
			<title>Setup the DHCP service</title>

			<para>
				As for the UNIX/Linux based approach (discussed in <xref linkend="bootnetwork" />),
				you need to collect some information and data before setting everything up.
				First of all, you need the MAC address of your &PA; box.
				Please check <link linkend="getmac"><command>rboot</command> preparation</link> for details.
				You are going to need a <glossterm linkend="glosslifimage">lifimage</glossterm> file.
				Please read <xref linkend="preparingnetboot" />.
			</para>

			<para>
				Then, you have to enable DHCP service on your &W; box.
				You can do that by going into the <emphasis>Control Panel</emphasis>,
				open <emphasis>Add/Remove Programs</emphasis>, select <emphasis>Windows
				Components</emphasis> and finally <emphasis>Networking Services</emphasis>.
				There, enable <emphasis>Dynamic Host Configuration Protocol (DHCP)</emphasis>.
			</para>

			<para>
				You need to configure the DHCP service now. Launch the DHCP admin tool by
				going into the <emphasis>Control Panel</emphasis>, open <emphasis>Admin
				Tools</emphasis> and select <emphasis>DHCP</emphasis>.

				<itemizedlist>
					<listitem>
						<para>Expand the server tree.</para>
					</listitem>
				  <listitem>
				  	<para>
				  		Right click on
 							<menuchoice>
								<guimenu>Reservations</guimenu>
								<guimenuitem>New	Reservation...</guimenuitem>
							</menuchoice>
						</para>
				  </listitem>
					<listitem>
						<para>
							In <emphasis>Reservation name</emphasis>, put the workstation&apos;s host
							name. Enter an unused IP address. Enter the &PA; box&apos; MAC address (no
							delimiters, just the hex number). Select <emphasis>Both</emphasis> for whether it
							should be bootp or dhcp. Click <emphasis>Ok</emphasis> to close this window.
				    </para>
					</listitem>
					<listitem>
						<para>
							Look for your newly created reservation at the bottom of the
							list under <emphasis>Reservations</emphasis> and click it.
				    </para>
					</listitem>
					<listitem>
						<para>Right click on <emphasis>Configure Options...</emphasis></para>
					</listitem>
					<listitem>
						<para>
							It should have inherited your server&apos;s default
							options, so we won&apos;t cover setting router, dns, wins and lease length.
				    </para>
					</listitem>
					<listitem>
						<para>
							Scroll down the list of options to 066: <emphasis>Boot
							Server Host Name</emphasis>. Check the box next to option 066.
							Enter your tftp server&apos;s ip address, because IPL can&apos;t resolve hostnames.
				    </para>
				  </listitem>
					<listitem>
						<para>
							Check option 067: <emphasis>Bootfile Name</emphasis> and
							enter the name of the lifimage. Generally, <emphasis>lifimage</emphasis>
							is a good choice here.
				    </para>
					</listitem>
					<listitem>
						<para>Click <emphasis>Ok</emphasis> and your dhcp server is	ready!</para>
					</listitem>
			  </itemizedlist>
			</para>

		</sect1>


		<sect1 id="win2ksetuptftp">
			<title>Get &amp; setup the TFTP server</title>

			<para>
				To get the network boot process operational, you need the TFTP service that
				provides the basic file system at boot time. Get Tftpd from
				<ulink url="http://tftpd32.jounin.net/">http://tftpd32.jounin.net/</ulink>.
				You must download the latest version in zip format. Unzip it and store it in
				your favorite place. Then, you must setup the monster.

				<itemizedlist>
					<listitem>
						<para>Run tftpd32.</para>
					</listitem>
					<listitem>
						<para>Click the <emphasis>Browse</emphasis> button.</para>
					</listitem>
					<listitem>
						<para>
							Browse to where you put your lifimage, highlight
							it and click <emphasis>Ok</emphasis>.
						</para>
					</listitem>
					<listitem>
						<para>
							Make sure the IP address below the directory is
							the one you gave to your &PA; box.
						</para>
					</listitem>
					<listitem>
						<para>
							Let tftpd32 open. The tftp server only runs
							when the <acronym>GUI</acronym> is displayed.
						</para>
					</listitem>
				</itemizedlist>

				If you want to run it as a NT service, you have to download a
				<trademark>Microsoft</trademark> program. Please refer to the
				<ulink url="http://perso.wanadoo.fr/philippe.jounin/tftpd32.html#FAQ">\
				Tftpd32 FAQ</ulink>.
			</para>

		</sect1>


		<sect1 id="tryw2k">
			<title>Attempt to netboot</title>

			<para>
				Now, you are fully set up to try to boot your &PA; box via network.
				You can follow the instructions in <xref linkend="realnetboot" />.
			</para>

			<para>
				If you have any trouble, start by looking at those points and then ask the
				<ulink url="http://www.parisc-linux.org/mailing-lists/">&PL; mailing list</ulink>.

				<itemizedlist>
					<listitem>
						<para>
							Settings on the DHCP server (verify the &PA; MAC address is correct).
						</para>
					</listitem>
					<listitem>
						<para>
							Your dhcp server is on the same physical network segment as the &PA; box.
				   	</para>
					</listitem>
					<listitem>
						<para>The state of the network connection of the 2 boxes.</para>
					</listitem>
					<listitem>
						<para>Try to tcpdump while you are booting the &PA; box over the lan.</para>
					</listitem>
				</itemizedlist>
			</para>

		</sect1>

	</appendix>




	<appendix id="oldpalo">
		<title>Older &PO; dumps</title>

		<sect1 id="oldpaloa500">
			<title>A500 Session dump using &PO; 0.97</title>
				<programlisting>
Main Menu: Enter command or menu &gt; bo scsi.5.0 ipl
Interact with IPL (Y, N, or Cancel)?&gt; y


Booting...
Boot IO Dependent Code (IODC) revision 1


HARD Booted.
palo ipl 0.97 root@c3k Tue Nov 27 14:51:48 MST 2001
Information: Boot device can't seek past 2Gb (ignore next error).
byteio_read: seekread() returned -1 expected 2048

Partition Start(MB) End(MB) Id Type
1               1      15   f0 Palo
2              16     503   82 swap
3             504    2887   83 ext2

PALO(F0) partition contains:
	0/vmlinux64 39