Looking at my Debian system, bootsect.b is in /usr/lib/lilo/. There may be a lilo configuration parameter which sets the default directory to be checked for the .b files.
You may want to put some .bmp files into /boot as well.
If your device has a CompactFlash card you can actually update it on another x86 machine; otherwise you need to log in, make sure you can write to the storage device, and run lilo.
When installing to a CF via another machine, you just need to make up a special lilo.conf; it will be similar to what is on your embedded system except for the following:
1. the 'boot=' parameter of course must be different, because that is where you install lilo
2. the kernel and initrd lines must also be different; for example, instead of:
Code:
image=/boot/mylinux
initrd=/boot/myinitrd.img
you will have:
Code:
image=/mymountpoint/boot/mylinux
initrd=/mymountpoint/boot/myinitrd.img
The actual partition with the 'boot' directory *must* be mounted somewhere so lilo can work with it. (In contrast, with 'grub', it must *not* be mounted.)
Now for a trap; unless you use a patched version of lilo, you must be careful when specifying the "init=" argument (if you need to specify it). For an initrd (deprecated) it is simply "init=whatever", but for an initramfs (current, and people seem to refer to it consistently as initrd now) you need "rdinit=whatever". If you use the wrong "init=" argument you may see the image load, get uncompressed, and then the kernel hangs with "could not find init!"