Recent kernels support all the functions LILO needs to map files also on MS-DOS (or UMSDOS) file systems. Since DOS partitions tend to occupy exactly the places where BIOS restrictions (see section 1.3.1) are invisible, they're an ideal location for /boot if the native Linux file systems can't be used because of BIOS problems.
In order to accomplish this, the DOS partition is mounted read-write, a directory (e.g. /dos/linux) is created, all files from /boot are moved to that directory, /boot is replaced by a symbolic link to it, the kernels are also moved to the new directory, their new location is recorded in /etc/lilo.conf, and finally /sbin/lilo is run.
From then on, new kernels must always be copied into that directory on the DOS partition before running /sbin/lilo, e.g. when recompiling a kernel, the standard procedure changes from
# make zlilo
to
# make zImage # mv /dos/linux/vmlinuz /dos/linux/vmlinuz.old # mv arch/i386/boot/zImage /dos/linux/vmlinuz # /sbin/lilo
WARNING: De-fragmenting such a DOS partition is likely to
make Linux or even the whole system unbootable. Therefore, the DOS
partition should either not be de-fragmented, or a Linux boot disk
should be prepared (and tested) to bring up Linux and to run
/sbin/lilo after the de-fragmentation.