4. How to use PALO at early boot stage?

4.1. The theory

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'll learn about it, your box will have finished booting ;o)

First, you must learn how to interact with PALO during the startup sequence. You have to enter BOOT_ADMIN, as explained in Section 1.1, “Entering the BOOT_ADMIN interface”. For some old models (up to 712 or so), you must add the ipl (or isl) string to your boot command in the BOOT_ADMIN console:

BOOT_ADMIN> boot pri ipl

On most PA-RISC boxes, the system will ask you if you want to interact with IPL anyway. You just have to answer "y" and hit Enter. You will then end up to PALO configuration display, with the list of all parameters and their corresponding numbers.

You just have to enter the number corresponding to the parameter you want to change. Hit Enter, modify it and validate the changes by hitting Enter again. The system will redisplay the new list. This modification is not permanent[5]! If you want to add a supplementary parameter, select any one and write yours on the editing line, beginning with a space:

<#>    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
						

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.

For more informations about PALO, please take look at the PALO README. You can find a copy of this file after having installed the palo package in /usr/share/doc/palo/README.html. This HOWTO section is mostly inspired from the above file, written by Paul Bame.

4.2. A complete example

This example has been suggested by Michael Damaschke. We will use notions explained in Section 1, “BOOT_ADMIN and Section 4.1, “The theory”, and refer to concept such as console, seen in Section 2, “Consoles”. So, let's go for the story of the happy PA/Linux user booting a kernel, also called "I don't know how to configure my workstation to use the kernel I want during boot sequence!".

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 Esc key to stop the auto-booting process. This is a very difficult step: you must hold the Esc key down ;o)

Note

Depending on your model, you might need to press this key during a quite long time.

Tip

In some cases when using graphic console, the monitor can be too slow to trigger on, and won't allow you to see the warning message. A good workaround is to keep a close eye on the keyboard's lights: when they all blink at once, this is the right time to press and hold the Esc key. If you still have troubles, please refer to Section 2, “Consoles”.

There are a few different ways to get access to BOOT_ADMIN (see Section 1.1, “Entering the BOOT_ADMIN interface”). If you have an old box, you will see an information message displayed, where the workstation's firmware tells you that it will start searching for all bootable devices, or that you can break this by holding down the Esc key. This is the same procedure as just mentioned, you must press the Esc key.

As usual, on some machines you might then get a menu where you should press the a key followed by Enter. You are now facing the deadly 'BOOT_ADMIN>' prompt :^). First, we will turn off auto boot process by entering the following lines:

BOOT_ADMIN> auto boot off

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

Now, you must tell the system from which boot device you would like to boot. If it's a hard drive, it must have a 'f0' partition at the beginning (see Chapter 4, Available boot solutions).

In this example, the old kernel is vmlinux and the new one is vmlinux-2.4.17-pa3. The chosen SCSI boot device is designed by: SCSI.X.0, where X is the SCSI-ID of the disk you want to boot from[6]. e.g.:

BOOT_ADMIN> boot SCSI.5.0

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

Interact with IPL (Y or N)?>

Say Y and hit Enter. Now, you can manually configure the PALO boot parameters. A new menu is displayed, where you can configure on line '0' (selected by default) the boot partition number, and the path of your boot kernel.

Here is the complete session log of a A500 serial console output, taken from PALO version 1.5. You can find in Section 1, “A500 Session dump using PALO 0.97” a session log with an older version of palo, such as the one that can be found on Debian 3.0 install disks.

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

<#>    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

<#>    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

<#>    edit the numbered field
'b'    boot with this command line
'r'    restore command line
'l'    list dir
? b
					

PALO was first setup to boot the kernel file vmlinux located on the second partition of the SCSI device ID 5 LUN 0. (We know this since we have asked BOOT_ADMIN to boot on this device). But we wanted another kernel this time. We have pressed the Enter key (to validate the default choice '0') and modified the text to match our needs, here vmlinux-2.6-cvs. We have also added an initrd=2/initrd.img-cvs argument to the command line. We have validated our changes by hitting the Enter key. Finally we have decided that we didn'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 'b' instead of any number and hit Enter to boot our new kernel.

Caution

Please don't change any other parameter unless you really know what you are doing!

That's it! PALO has no more secrets for you :-)

Note

As you might have noticed, the BOOT_ADMIN interface can take several aspects, so don't be disappointed if yours does not exactly match our examples.



[5] To save your changes, you will have to run /sbin/palo when your system will be up and running, and it will write on the disk all the parameters contained in the configuration file, (/etc/palo.conf), which you will have properly modified if needed.

[6] For those who wonder what the final 0 means, it's the device LUN. Since most SCSI devices have only one LUN (especially disks), you can safely use 0 as in this example.