My machine has two Linux installations on it, "linux" and "firewall". (The latter is my prototype Linux firewall.) My 2nd drive is partitioned like so: /dev/hdb1 /boot for firewall /dev/hdb2 /boot for linux /dev/hdb3 / for firewall /dev/hdb4 / for linux And my lilo.conf entries for the two look like: image=/boot/vmlinuz-2.2.14-6.1.1 label=linux read-only root=/dev/hdb4 image=/boot/vmlinuz-2.2.14-5.0 label=firewall read-only root=/dev/hdb3 The problem is, lilo apparently looks for firewall's kernel in the current directory tree; it complains that it can't find /boot/vmlinuz-2.2.14-5.0, but somehow it's able to find /boot/vmlinuz-2.2.14-6.1.1 (even though I haven't upgraded the firewall's kernel yet). lilo won't run until this is resolved; I had to hack out the description for firewall.
Lilo is acting exactly as expected. It does not attempt to read the fstab on the / partition in order to determine what partition /boot is, it merely determines what device /boot is on by checking the existing files. It's actually easier to set a system like yours up to have a single /boot partition that is shared between both / filesystems with all needed kernels in the one /boot partition. If you don't set it up that way, then you need to mount the additional /boot filesystem as something like /boot2 and change the firewall stanza to point to /boot2/vmlinuz.... and then in the lilo.conf file in the firewall's root filesystem you would need to mount the non-firewall /boot as /boot2 also, and make the non-firewall stanza point to /boot2/vmlinuz... in order to be able to run lilo from either of the selected root filesystems. If you use a common /boot filesystem, then you can at least use identical lilo.conf files between the two booting copies of the OS.