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.
(....)
[ 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 :-) ):
- Does Kernel 2.6.37 accept device tree description files?
- Can I create a device tree description file from the /dev, /proc or /sys directories on the target system?
- Is there a TI-Linux 'howto' document about this?
- Will it blend? (er, never mind this one...)