This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux Fast Boot on OMAP2 platform

Hello,

I'm optimizing Linux kernel (version 2.6.37) to boot from NAND flash memory as fast as it can without hacking u-boot or kernel code.

I've done the obvious optimization steps first:

  • Using a small, UBIFS-formatted root file system instead of JFFS2 - UBIFS takes less time to index files than JFFS2,
  • Using uncompressed kernel/filesystem images,
  • Disabling unused device drivers in the kernel configuration.
The current system boots and is ready to run its embedded application in about 45 to 60 seconds, which is an improvement in itself from previous versions. Previous ones took several minutes. I think it is still possible to improve boot performances a bit more.
Here is a snippet from the system log at boot time:

(....)
[ 6.986572] VFS: Mounted root (ubifs filesystem) on device 0:13.
[ 6.993041] Freeing init memory: 180K
[ 6.997863] Failed to execute /init. Attempting defaults...
[ 8.680389] udev: starting version 151
[ 8.698730] udevd (495): /proc/495/oom_adj is deprecated, please use /proc/495/oom_score_adj instead.
[ 19.752685] davinci_mdio davinci_mdio: resetting idled controller
[ 19.760162] net eth0: attached PHY driver [SMSC LAN8710/LAN8720] (mii_bus:phy_addr=ffffffff:00, id=7c0f1)
[ 22.761260] PHY: ffffffff:00 - Link is Up - 100/Full
[ 26.000244] XCBA_FPGA:Board name is:eXperimenter, is_prototype_board:0
(...)

The log shows that udev actually takes about ten seconds to mount the /dev device tree. But, since the target hardware configuration doesn't change, I think it would be possible to replace udev module with a statically-defined device tree and further reduce kernel boot time. Some kernel versions take a device description file (*.dts, *.dtb file formats) as an argument. I'm not a Linux expert so I'm asking the following questions to myself (and other Linux users as well :-) ):

  1. Does Kernel 2.6.37 accept device tree description files?
  2. Can I create a device tree description file from the /dev, /proc or /sys directories on the target system?
  3. Is there a TI-Linux 'howto' document about this?
  4. Will it blend? (er, never mind this one...)
Thanks,
Yves