Memory footprint being so critical, careful consideration should be given to the kernel's memory use.
Starting points might be:
- Enable support only for your specific setup, e.g., reduce the number of supported floppy formats to exactly the one you need.
- Strip out autoprobing where you can pass values on the commandline.
- Reduce allocated resources an embedded system doesn't need 64 consoles or eight IDE devices.
- Reduce options for filesystems (maximum filesize of 2GB, namelengths of 1024 characters, directory depth. etc.).