Great news, do you have the config file you used for your kernel?
On Bela it is in /boot/config-3.8.13xenomai-bone41 we could compare the two and see if we can remove something from this without necessarily jumping to a newer release straight away (while there are good reasons to upgrade, 3.8.13 is the latest version for which there are some ready-made ARM-bone-xenomai kernels, AFAIK)

Sure, I'll dig it out and email it to you.

However, I suspect it would be more productive to go through the interactive menuconfig for Bela's kernel and disable everything we think is unnecessary, then recompile. The kernel for the A9 board is newer (3.26 iirc) and there are significant hardware differences.

Are you sure it's the kernel that makes the difference? I would imagine at least some of the boot time is loading services that we really don't need. This is definitely a useful area to revisit at some point.

The Bela program could probably be loaded earlier in the boot sequence, after the storage is set up but before most of the services are running. Of course, if the Bela program is computationally expensive, the rest of the boot will be even slower!

once removed the comments from the two config files (bela vs som) there are ONLY 2568 lines that differ.

🙁

Part of the speedup was from the use of a newer kernel which used systemd to manage the startup after the kernel had finished booting, allowing disabling of lots of user-space services etc. But stripping back the kernel made a significant difference itself.

Take a look at dmesg immediately after booting and it gives you a log of the kernel's boot with timestamps:

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 3.8.13xenomai-bone41 (root@parallels-Parallels-Virtual-Platform) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #2 Wed Mar 26 11:41:31 GMT 2014
[    0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=50c5387d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] Machine: Generic AM33XX (Flattened Device Tree), model: TI AM335x BeagleBone
[    0.000000] Memory policy: ECC disabled, Data cache writeback
[    0.000000] On node 0 totalpages: 130816
[    0.000000] free_area_init_node: node 0, pgdat c0822220, node_mem_map c08f4000
[    0.000000]   Normal zone: 1024 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 129792 pages, LIFO batch:31
[    0.000000] AM335X ES1.0 (neon )
[    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[    0.000000] pcpu-alloc: [0] 0 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 129792
[    0.000000] Kernel command line: console=ttyO0,115200n8 capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN capemgr.enable_partno=BB-BONE-BAREAUDI,BB-SPIDEV0 root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait fixrtc ip=
[    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
[    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] __ex_table already sorted, skipping sort
[    0.000000] allocated 1048576 bytes of page_cgroup
[    0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups
[    0.000000] Memory: 511MB = 511MB total
[    0.000000] Memory: 506016k/506016k available, 18272k reserved, 0K highmem
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
[    0.000000]     vmalloc : 0xe0800000 - 0xff000000   ( 488 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xe0000000   ( 512 MB)
[    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
[    0.000000]     modules : 0xbf800000 - 0xbfe00000   (   6 MB)
[    0.000000]       .text : 0xc0008000 - 0xc0762a70   (7531 kB)
[    0.000000]       .init : 0xc0763000 - 0xc0798e94   ( 216 kB)
[    0.000000]       .data : 0xc079a000 - 0xc0825700   ( 558 kB)
[    0.000000]        .bss : 0xc0825700 - 0xc08f36d8   ( 824 kB)
[    0.000000] NR_IRQS:0 nr_irqs:0 0
[    0.000000] IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts
[    0.000000] Total of 128 interrupts on 1 active controller
[    0.000000] OMAP clockevent source: GPTIMER1 at 24000000 Hz
[    0.000000] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956ms
[    0.000000] I-pipe, 24.000 MHz clocksource
[    0.000000] OMAP clocksource: GPTIMER2 at 24000000 Hz
[    0.000000] Interrupt pipeline (release #3)
[    0.000000] Console: colour dummy device 80x30
[    0.000632] Calibrating delay loop... 993.47 BogoMIPS (lpj=969728)
[    0.029192] pid_max: default: 32768 minimum: 301
[    0.029294] Security Framework initialized
[    0.029336] Mount-cache hash table entries: 512
[    0.034025] Initializing cgroup subsys cpuacct
[    0.034050] Initializing cgroup subsys memory
[    0.034095] Initializing cgroup subsys blkio
[    0.034168] CPU: Testing write buffer coherency: ok
[    0.034480] Setting up static identity map for 0x804726f0 - 0x8047273c
[    0.035500] devtmpfs: initialized
[    0.090796] pinctrl core: initialized pinctrl subsystem
[    0.090889] rstctl core: initialized rstctl subsystem
[    0.091171] regulator-dummy: no parameters
[    0.091414] NET: Registered protocol family 16
[    0.092045] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.097504] pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568
[    0.097935] platform 49000000.edma: alias fck already exists
[    0.097951] platform 49000000.edma: alias fck already exists
[    0.097965] platform 49000000.edma: alias fck already exists
[    0.098479] gpiochip_add: registered GPIOs 0 to 31 on device: gpio
[    0.098560] OMAP GPIO hardware version 0.1
[    0.099078] gpiochip_add: registered GPIOs 32 to 63 on device: gpio
[    0.099676] gpiochip_add: registered GPIOs 64 to 95 on device: gpio
[    0.100265] gpiochip_add: registered GPIOs 96 to 127 on device: gpio
[    0.100504] of_get_named_gpio_flags exited with status 52
[    0.100521] gpio-rctrl rstctl.3: loaded OK
[    0.103464] hw-breakpoint: debug architecture 0x4 unsupported.
[    0.104637] cpsw.0: No hwaddr in dt. Using 90:59:af:7e:ca:a7 from efuse
[    0.104653] cpsw.1: No hwaddr in dt. Using 90:59:af:7e:ca:a9 from efuse
[    0.112644] bio: create slab <bio-0> at 0
[    0.118395] edma-dma-engine edma-dma-engine.0: TI EDMA DMA engine driver
[    0.118536] of_get_named_gpio_flags: can't parse gpios property
[    0.118662] vmmcsd_fixed: 3300 mV 
[    0.120101] SCSI subsystem initialized
[    0.120339] usbcore: registered new interface driver usbfs
[    0.120402] usbcore: registered new interface driver hub
[    0.120581] usbcore: registered new device driver usb
[    0.121755] omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz
[    0.122334] of_get_named_gpio_flags: can't parse gpios property
[    0.123189] DCDC1: at 1500 mV 
[    0.123979] vdd_mpu: 925 <--> 1325 mV at 1325 mV 
[    0.124719] vdd_core: 925 <--> 1150 mV at 1125 mV 
[    0.125493] LDO1: at 1800 mV 
[    0.126242] LDO2: at 3300 mV 
[    0.127635] LDO3: 1800 mV 
[    0.128399] LDO4: at 3300 mV 
[    0.129066] tps65217 0-0024: TPS65217 ID 0xe version 1.2
[    0.129477] omap_i2c 44e0b000.i2c: unable to select pin group
[    0.129867] omap_i2c 4802a000.i2c: bus 1 rev0.11 at 100 kHz
[    0.129883] omap_i2c 4802a000.i2c: unable to select pin group
[    0.130208] omap_i2c 4819c000.i2c: bus 2 rev0.11 at 100 kHz
[    0.131401] omap_i2c 4819c000.i2c: unable to select pin group
[    0.131528] media: Linux media interface: v0.10
[    0.131584] Linux video capture interface: v2.00
[    0.131659] pps_core: LinuxPPS API ver. 1 registered
[    0.131667] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.132048] Advanced Linux Sound Architecture Driver Initialized.
[    0.132552] NetLabel: Initializing
[    0.132563] NetLabel:  domain hash size = 128
[    0.132570] NetLabel:  protocols = UNLABELED CIPSOv4
[    0.132632] NetLabel:  unlabeled traffic allowed by default
[    0.132930] Switching to clocksource ipipe_tsc
[    0.159486] NET: Registered protocol family 2
[    0.160054] TCP established hash table entries: 4096 (order: 3, 32768 bytes)
[    0.160135] TCP bind hash table entries: 4096 (order: 4, 81920 bytes)
[    0.160217] TCP: Hash tables configured (established 4096 bind 4096)
[    0.160279] TCP: reno registered
[    0.160345] UDP hash table entries: 256 (order: 1, 12288 bytes)
[    0.160370] UDP-Lite hash table entries: 256 (order: 1, 12288 bytes)
[    0.160588] NET: Registered protocol family 1
[    0.160904] RPC: Registered named UNIX socket transport module.
[    0.160914] RPC: Registered udp transport module.
[    0.160921] RPC: Registered tcp transport module.
[    0.160927] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.161120] Trying to unpack rootfs image as initramfs...
[    0.329749] Freeing initrd memory: 2440K
[    0.330291] CPU PMU: probing PMU on CPU 0
[    0.330309] hw perfevents: enabled with ARMv7 Cortex-A8 PMU driver, 5 counters available
[    0.330744] omap2_mbox_probe: platform not supported
[    0.496540] I-pipe: head domain Xenomai registered.
[    0.496565] Xenomai: hal/arm started.
[    0.497625] Xenomai: scheduling class idle registered.
[    0.497643] Xenomai: scheduling class rt registered.
[    0.501510] Xenomai: real-time nucleus v2.6.3 (Lies and Truths) loaded.
[    0.501519] Xenomai: debug mode enabled.
[    0.501899] Xenomai: starting native API services.
[    0.501911] Xenomai: starting POSIX services.
[    0.502039] Xenomai: starting RTDM services.
[    0.502859] VFS: Disk quotas dquot_6.5.2
[    0.502914] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    0.503485] NFS: Registering the id_resolver key type
[    0.503551] Key type id_resolver registered
[    0.503560] Key type id_legacy registered
[    0.503784] fuse init (API version 7.20)
[    0.504203] Btrfs loaded
[    0.504293] msgmni has been set to 993
[    0.505378] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249)
[    0.505392] io scheduler noop registered
[    0.505400] io scheduler deadline registered
[    0.505418] io scheduler cfq registered (default)
[    0.506462] tps65217-bl tps65217-bl: no platform data provided
[    0.506485] tps65217-bl: probe of tps65217-bl failed with error -22
[    0.506939] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    0.508135] omap_uart 44e09000.serial: did not get pins for uart0 error: -19
[    0.508300] 44e09000.serial: ttyO0 at MMIO 0x44e09000 (irq = 72) is a OMAP UART0
[    1.275574] console [ttyO0] enabled
[    1.279597] omap_uart 48022000.serial: did not get pins for uart1 error: -19
[    1.287115] 48022000.serial: ttyO1 at MMIO 0x48022000 (irq = 73) is a OMAP UART1
[    1.295527] [drm] Initialized drm 1.1.0 20060810
[    1.306085] brd: module loaded
[    1.312258] loop: module loaded
[    1.315642] at24 0-0050: 32768 byte 24c256 EEPROM, writable, 1 bytes/write
[    1.322869] at24 2-0054: 32768 byte 24c256 EEPROM, writable, 1 bytes/write
[    1.330098] at24 2-0055: 32768 byte 24c256 EEPROM, writable, 1 bytes/write
[    1.337315] at24 2-0056: 32768 byte 24c256 EEPROM, writable, 1 bytes/write
[    1.344543] at24 2-0057: 32768 byte 24c256 EEPROM, writable, 1 bytes/write
[    1.358277] bone-capemgr bone_capemgr.9: Baseboard: 'A335BNLT,0A6A,0414BBBK1670'
[    1.366029] bone-capemgr bone_capemgr.9: compatible-baseboard=ti,beaglebone-black
[    1.373884] bone-capemgr bone_capemgr.9: Skipping disabled cape with part# BB-BONELT-HDMI
[    1.412271] bone-capemgr bone_capemgr.9: slot #0: No cape found
[    1.449379] bone-capemgr bone_capemgr.9: slot #1: No cape found
[    1.486488] bone-capemgr bone_capemgr.9: slot #2: No cape found
[    1.523598] bone-capemgr bone_capemgr.9: slot #3: No cape found
[    1.529797] bone-capemgr bone_capemgr.9: slot #4: specific override
[    1.536357] bone-capemgr bone_capemgr.9: bone: Using override eeprom data at slot 4
[    1.544360] bone-capemgr bone_capemgr.9: slot #4: 'Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G'
[    1.554404] bone-capemgr bone_capemgr.9: slot #5: specific override
[    1.560959] bone-capemgr bone_capemgr.9: bone: Using override eeprom data at slot 5
[    1.568952] bone-capemgr bone_capemgr.9: slot #5: 'Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI'
[    1.578924] bone-capemgr bone_capemgr.9: enabled_partno part_number 'BB-BONE-BAREAUDI', version 'N/A', prio '0'
[    1.589476] bone-capemgr bone_capemgr.9: slot #6: generic override
[    1.595943] bone-capemgr bone_capemgr.9: bone: Using override eeprom data at slot 6
[    1.603953] bone-capemgr bone_capemgr.9: slot #6: 'Override Board Name,00A0,Override Manuf,BB-BONE-BAREAUDI'
[    1.614281] bone-capemgr bone_capemgr.9: enabled_partno part_number 'BB-SPIDEV0', version 'N/A', prio '0'
[    1.624270] bone-capemgr bone_capemgr.9: slot #7: generic override
[    1.630736] bone-capemgr bone_capemgr.9: bone: Using override eeprom data at slot 7
[    1.638745] bone-capemgr bone_capemgr.9: slot #7: 'Override Board Name,00A0,Override Manuf,BB-SPIDEV0'
[    1.648593] bone-capemgr bone_capemgr.9: Skipping loading of disabled cape with part# BB-BONELT-HDMI
[    1.658311] bone-capemgr bone_capemgr.9: loader: before slot-4 BB-BONE-EMMC-2G:00A0 (prio 1)
[    1.667134] bone-capemgr bone_capemgr.9: loader: check slot-4 BB-BONE-EMMC-2G:00A0 (prio 1)
[    1.675938] bone-capemgr bone_capemgr.9: loader: before slot-6 BB-BONE-BAREAUDI:00A0 (prio 0)
[    1.684857] bone-capemgr bone_capemgr.9: loader: check slot-6 BB-BONE-BAREAUDI:00A0 (prio 0)
[    1.693700] bone-capemgr bone_capemgr.9: initialized OK.
[    1.700181] OneNAND driver initializing
[    1.704970] usbcore: registered new interface driver cdc_ether
[    1.711137] usbcore: registered new interface driver rndis_host
[    1.717421] usbcore: registered new interface driver cdc_ncm
[    1.723646] bone-capemgr bone_capemgr.9: loader: before slot-7 BB-SPIDEV0:00A0 (prio 0)
[    1.732018] bone-capemgr bone_capemgr.9: loader: check slot-7 BB-SPIDEV0:00A0 (prio 0)
[    1.740301] bone-capemgr bone_capemgr.9: loader: after slot-7 BB-SPIDEV0:00A0 (prio 0)
[    1.748582] bone-capemgr bone_capemgr.9: slot #7: Requesting part number/version based 'BB-SPIDEV0-00A0.dtbo
[    1.758858] bone-capemgr bone_capemgr.9: slot #7: Requesting firmware 'BB-SPIDEV0-00A0.dtbo' for board-name 'Override Board Name', version '00A0'
[    1.772499] bone-capemgr bone_capemgr.9: slot #7: dtbo 'BB-SPIDEV0-00A0.dtbo' loaded; converting to live tree
[    1.783013] bone-capemgr bone_capemgr.9: slot #7: #2 overlays
[    1.790058] bone-capemgr bone_capemgr.9: loader: check slot-4 BB-BONE-EMMC-2G:00A0 (prio 1)
[    1.798844] bone-capemgr bone_capemgr.9: loader: after slot-6 BB-BONE-BAREAUDI:00A0 (prio 0)
[    1.807675] bone-capemgr bone_capemgr.9: slot #6: Requesting part number/version based 'BB-BONE-BAREAUDI-00A0.dtbo
[    1.818512] bone-capemgr bone_capemgr.9: slot #6: Requesting firmware 'BB-BONE-BAREAUDI-00A0.dtbo' for board-name 'Override Board Name', version '00A0'
[    1.833052] usbcore: registered new interface driver cdc_acm
[    1.838991] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
[    1.847353] Initializing USB Mass Storage driver...
[    1.852519] usbcore: registered new interface driver usb-storage
[    1.858798] USB Mass Storage support registered.
[    1.863763] musb-hdrc: version 6.0, ?dma?, otg (peripheral+host)
[    1.870262] musb-hdrc musb-hdrc.0.auto: pdev->id = 0
[    1.875473] musb-hdrc musb-hdrc.0.auto: drivers/usb/musb/musb_dsps.c:468 dsps_musb_init: OK
[    1.884219] musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
[    1.884231] musb-hdrc: MHDRC RTL version 2.0 
[    1.884238] musb-hdrc: setup fifo_mode 4
[    1.884254] musb-hdrc: 28/31 max ep, 16384/16384 memory
[    1.884328] musb-hdrc musb-hdrc.0.auto: *** mode=3
[    1.889350] musb-hdrc musb-hdrc.0.auto: *** power=250
[    1.895025] musb-hdrc musb-hdrc.1.auto: pdev->id = 1
[    1.900236] musb-hdrc musb-hdrc.1.auto: drivers/usb/musb/musb_dsps.c:468 dsps_musb_init: OK
[    1.908981] musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
[    1.908991] musb-hdrc: MHDRC RTL version 2.0 
[    1.908997] musb-hdrc: setup fifo_mode 4
[    1.909009] musb-hdrc: 28/31 max ep, 16384/16384 memory
[    1.909070] musb-hdrc musb-hdrc.1.auto: *** mode=1
[    1.914086] musb-hdrc musb-hdrc.1.auto: *** power=250
[    1.919369] musb-hdrc musb-hdrc.1.auto: MUSB HDRC host driver
[    1.931399] edma-dma-engine edma-dma-engine.0: allocated channel for 0:19
[    1.938585] edma-dma-engine edma-dma-engine.0: allocated channel for 0:18
[    1.946228] musb-hdrc musb-hdrc.1.auto: new USB bus registered, assigned bus number 1
[    1.954460] musb-hdrc musb-hdrc.1.auto: supports USB remote wakeup
[    1.954530] usb usb1: default language 0x0409
[    1.954562] usb usb1: udev 1, busnum 1, minor = 0
[    1.954575] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    1.961673] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.969218] usb usb1: Product: MUSB HDRC host driver
[    1.974416] usb usb1: Manufacturer: Linux 3.8.13xenomai-bone41 musb-hcd
[    1.981333] usb usb1: SerialNumber: musb-hdrc.1.auto
[    1.991807] edma-dma-engine edma-dma-engine.0: allocated channel for 0:17
[    1.998987] edma-dma-engine edma-dma-engine.0: allocated channel for 0:16
[    2.007165] bone-capemgr bone_capemgr.9: slot #7: Applied #2 overlays.
[    2.014037] bone-capemgr bone_capemgr.9: loader: done slot-7 BB-SPIDEV0:00A0 (prio 0)
[    2.022300] bone-capemgr bone_capemgr.9: loader: check slot-4 BB-BONE-EMMC-2G:00A0 (prio 1)
[    2.031338] usb usb1: usb_probe_device
[    2.031353] usb usb1: configuration #1 chosen from 1 choice
[    2.031449] usb usb1: adding 1-0:1.0 (config #1, interface 0)
[    2.031557] hub 1-0:1.0: usb_probe_interface
[    2.031569] hub 1-0:1.0: usb_probe_interface - got id
[    2.031587] hub 1-0:1.0: USB hub found
[    2.035541] hub 1-0:1.0: 1 port detected
[    2.039655] hub 1-0:1.0: standalone hub
[    2.039665] hub 1-0:1.0: individual port power switching
[    2.039674] hub 1-0:1.0: no over-current protection
[    2.039683] hub 1-0:1.0: Single TT
[    2.039694] hub 1-0:1.0: TT requires at most 8 FS bit times (666 ns)
[    2.039703] hub 1-0:1.0: power on to power good time: 10ms
[    2.039726] hub 1-0:1.0: local power source is good
[    2.039783] hub 1-0:1.0: enabling power on all ports
[    2.040401] mousedev: PS/2 mouse device common for all mice
[    2.047588] omap_rtc 44e3e000.rtc: rtc core: registered 44e3e000.rtc as rtc0
[    2.055158] i2c /dev entries driver
[    2.059860] pps_ldisc: PPS line discipline registered
[    2.065236] Driver for 1-wire Dallas network protocol.
[    2.071658] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
[    2.079255] device-mapper: ioctl: 4.23.1-ioctl (2012-12-18) initialised: dm-devel@redhat.com
[    2.088316] of_get_named_gpio_flags: can't parse gpios property
[    2.088326] of_get_named_gpio_flags: can't parse gpios property
[    2.088333] of_get_named_gpio_flags: can't parse gpios property
[    2.088354] omap_hsmmc mmc.4: of_parse_phandle_with_args of 'reset' failed
[    2.095565] omap_hsmmc mmc.4: Failed to get rstctl; not using any
[    2.101960] omap_hsmmc mmc.4: unable to select pin group
[    2.107713] edma-dma-engine edma-dma-engine.0: allocated channel for 0:25
[    2.114853] edma-dma-engine edma-dma-engine.0: allocated channel for 0:24
[    2.122105] mmc.4 supply vmmc_aux not found, using dummy regulator
[    2.128650] omap_hsmmc mmc.4: pins are not configured from the driver
[    2.140871] hub 1-0:1.0: state 7 ports 1 chg 0000 evt 0000
[    2.140913] hub 1-0:1.0: hub_suspend
[    2.140938] usb usb1: bus auto-suspend, wakeup 1
[    2.162351] of_get_named_gpio_flags: can't parse gpios property
[    2.162361] of_get_named_gpio_flags: can't parse gpios property
[    2.162369] of_get_named_gpio_flags: can't parse gpios property
[    2.162398] gpio-rctrl rstctl.3: gpio_rctrl_request eMMC_RSTn
[    2.168466] omap_hsmmc mmc.5: Got rstctl (gpio:#0 name eMMC_RSTn) label:eMMC_RSTn-CONSUMER
[    2.177096] gpio-rctrl rstctl.3: gpio_rctrl_deassert eMMC_RSTn
[    2.183209] omap_hsmmc mmc.5: unable to select pin group
[    2.188879] edma-dma-engine edma-dma-engine.0: allocated channel for 0:3
[    2.195928] edma-dma-engine edma-dma-engine.0: allocated channel for 0:2
[    2.203050] mmc.5 supply vmmc_aux not found, using dummy regulator
[    2.209576] omap_hsmmc mmc.5: pins are not configured from the driver
[    2.242635] pinctrl-single 44e10800.pinmux: pin 44e10854 already requested by 44e10800.pinmux; cannot claim for gpio-leds.8
[    2.254292] pinctrl-single 44e10800.pinmux: pin-21 (gpio-leds.8) status -22
[    2.261577] pinctrl-single 44e10800.pinmux: could not request pin 21 on device pinctrl-single
[    2.270505] leds-gpio gpio-leds.8: pins are not configured from the driver
[    2.277708] of_get_named_gpio_flags exited with status 53
[    2.277719] of_get_named_gpio_flags exited with status 54
[    2.277730] of_get_named_gpio_flags exited with status 55
[    2.277739] of_get_named_gpio_flags exited with status 56
[    2.277751] of_get_named_gpio_flags exited with status 53
[    2.277903] of_get_named_gpio_flags exited with status 54
[    2.278014] of_get_named_gpio_flags exited with status 55
[    2.278105] of_get_named_gpio_flags exited with status 56
[    2.278387] ledtrig-cpu: registered to indicate activity on CPUs
[    2.284906] edma-dma-engine edma-dma-engine.0: allocated channel for 0:36
[    2.292044] omap-sham 53100000.sham: hw accel on OMAP rev 4.3
[    2.299309] omap-aes 53500000.aes: OMAP AES hw accel rev: 3.2
[    2.305389] edma-dma-engine edma-dma-engine.0: allocated channel for 0:5
[    2.312431] edma-dma-engine edma-dma-engine.0: allocated channel for 0:6
[    2.322027] usbcore: registered new interface driver usbhid
[    2.327878] usbhid: USB HID core driver
[    2.332656] ashmem: initialized
[    2.336206] logger: created 256K log 'log_main'
[    2.341165] logger: created 256K log 'log_events'
[    2.346287] logger: created 256K log 'log_radio'
[    2.351318] logger: created 256K log 'log_system'
[    2.358192] TCP: cubic registered
[    2.361745] NET: Registered protocol family 10
[    2.367112] NET: Registered protocol family 17
[    2.372034] Key type dns_resolver registered
[    2.376743] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
[    2.384778] ThumbEE CPU extension supported.
[    2.389264] Registering SWP/SWPB emulation handler
[    2.394948] registered taskstats version 1
[    2.417358] mmc0: host does not support reading read-only switch. assuming write-enable.
[    2.427715] mmc0: new high speed SDHC card at address 0007
[    2.433841] mmcblk0: mmc0:0007 SD8GB 7.42 GiB 
[    2.440426]  mmcblk0: p1 p2
[    2.447454] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6
[    2.453830] davinci_mdio 4a101000.mdio: detected phy mask fffffffe
[    2.466138] libphy: 4a101000.mdio: probed
[    2.470391] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver SMSC LAN8710/LAN8720
[    2.480075] Detected MACID = 90:59:af:7e:ca:a7
[    2.484654] cpsw 4a100000.ethernet: NAPI disabled
[    2.490821] omap_rtc 44e3e000.rtc: setting system clock to 2000-01-01 00:00:00 UTC (946684800)
[    2.503682] ALSA device list:
[    2.506844]   No soundcards found.
[    2.510911] Freeing init memory: 212K
[    2.564278] mmc1: BKOPS_EN bit is not set
[    2.573338] mmc1: new high speed MMC card at address 0001
[    2.582090] mmcblk1: mmc1:0001 MMC02G 1.78 GiB 
[    2.590158] mmcblk1boot0: mmc1:0001 MMC02G partition 1 1.00 MiB
[    2.601857] mmcblk1boot1: mmc1:0001 MMC02G partition 2 1.00 MiB
[    2.610090]  mmcblk1: p1 p2
[    2.617737] udevd[98]: starting version 175
[    2.622297]  mmcblk1boot1: unknown partition table
[    2.636776]  mmcblk1boot0: unknown partition table
[    2.795804] bone-capemgr bone_capemgr.9: failed to load firmware 'BB-BONE-BAREAUDI-00A0.dtbo'
[    2.804797] bone-capemgr bone_capemgr.9: loader: failed to load slot-6 BB-BONE-BAREAUDI:00A0 (prio 0)
[    2.814620] bone-capemgr bone_capemgr.9: loader: check slot-4 BB-BONE-EMMC-2G:00A0 (prio 1)
[    2.823367] bone-capemgr bone_capemgr.9: loader: after slot-4 BB-BONE-EMMC-2G:00A0 (prio 1)
[    2.832118] bone-capemgr bone_capemgr.9: slot #4: Requesting firmware 'cape-bone-2g-emmc1.dtbo' for board-name 'Bone-LT-eMMC-2G', version '00A0'
[    2.845671] bone-capemgr bone_capemgr.9: slot #4: dtbo 'cape-bone-2g-emmc1.dtbo' loaded; converting to live tree
[    2.856546] bone-capemgr bone_capemgr.9: slot #4: #2 overlays
[    2.862763] bone-capemgr bone_capemgr.9: slot #4: Applied #2 overlays.
[    2.869623] bone-capemgr bone_capemgr.9: loader: done slot-4 BB-BONE-EMMC-2G:00A0 (prio 1)
[    4.249234] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[    6.123370] udevd[344]: starting version 175
[    8.504431] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
[    9.814187] EXT4-fs (mmcblk0p2): re-mounted. Opts: errors=remount-ro
[   15.479201] net eth0: initializing cpsw version 1.12 (0)
[   15.486885] net eth0: phy found : id is : 0x7c0f1
[   15.491864] libphy: PHY 4a101000.mdio:01 not found
[   15.496887] net eth0: phy 4a101000.mdio:01 not found on slave 1
[   15.508946] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[   16.687725]  gadget: using random self ethernet address
[   16.693899] usb0: MAC c6:92:13:9e:d4:94
[   16.697938] usb0: HOST MAC 90:59:af:7e:ca:a9
[   16.709623]  gadget: Mass Storage Function, version: 2009/09/11
[   16.715896]  gadget: Number of LUNs=1
[   16.719752]  lun0: LUN: removable file: /dev/mmcblk0p1
[   16.725224]  gadget: Multifunction Composite Gadget
[   16.730373]  gadget: g_multi ready
[   16.733968] musb-hdrc musb-hdrc.0.auto: MUSB HDRC host driver
[   16.750375] musb-hdrc musb-hdrc.0.auto: new USB bus registered, assigned bus number 2
[   16.758629] musb-hdrc musb-hdrc.0.auto: supports USB remote wakeup
[   16.758701] usb usb2: default language 0x0409
[   16.758734] usb usb2: udev 1, busnum 2, minor = 128
[   16.758746] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002
[   16.765863] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[   16.773417] usb usb2: Product: MUSB HDRC host driver
[   16.778612] usb usb2: Manufacturer: Linux 3.8.13xenomai-bone41 musb-hcd
[   16.785530] usb usb2: SerialNumber: musb-hdrc.0.auto
[   16.846270] usb usb2: usb_probe_device
[   16.846293] usb usb2: configuration #1 chosen from 1 choice
[   16.846351] usb usb2: adding 2-0:1.0 (config #1, interface 0)
[   16.846469] hub 2-0:1.0: usb_probe_interface
[   16.846481] hub 2-0:1.0: usb_probe_interface - got id
[   16.846501] hub 2-0:1.0: USB hub found
[   16.850481] hub 2-0:1.0: 1 port detected
[   16.854596] hub 2-0:1.0: standalone hub
[   16.854607] hub 2-0:1.0: individual port power switching
[   16.854616] hub 2-0:1.0: no over-current protection
[   16.854626] hub 2-0:1.0: Single TT
[   16.854637] hub 2-0:1.0: TT requires at most 8 FS bit times (666 ns)
[   16.854646] hub 2-0:1.0: power on to power good time: 10ms
[   16.854670] hub 2-0:1.0: local power source is good
[   16.854729] hub 2-0:1.0: enabling power on all ports
[   16.955375] hub 2-0:1.0: state 7 ports 1 chg 0000 evt 0000
[   16.955426] hub 2-0:1.0: hub_suspend
[   16.955453] usb usb2: bus auto-suspend, wakeup 1
[   17.124259] CAUTION: musb: Babble Interrupt Occurred
[   17.423441]  gadget: high-speed config #1: Multifunction with RNDIS
[   17.632213] bone-capemgr bone_capemgr.9: part_number 'BB-BONE-PRU-BELA', version 'N/A'
[   17.642504] bone-capemgr bone_capemgr.9: slot #8: generic override
[   17.648981] bone-capemgr bone_capemgr.9: bone: Using override eeprom data at slot 8
[   17.656994] bone-capemgr bone_capemgr.9: slot #8: 'Override Board Name,00A0,Override Manuf,BB-BONE-PRU-BELA'
[   17.667345] bone-capemgr bone_capemgr.9: slot #8: Requesting part number/version based 'BB-BONE-PRU-BELA-00A0.dtbo
[   17.678167] bone-capemgr bone_capemgr.9: slot #8: Requesting firmware 'BB-BONE-PRU-BELA-00A0.dtbo' for board-name 'Override Board Name', version '00A0'
[   17.706019] bone-capemgr bone_capemgr.9: slot #8: dtbo 'BB-BONE-PRU-BELA-00A0.dtbo' loaded; converting to live tree
[   17.717246] bone-capemgr bone_capemgr.9: slot #8: #2 overlays
[   17.738724] omap_hwmod: pruss: failed to hardreset
[   17.744110] bone-capemgr bone_capemgr.9: slot #8: Applied #2 overlays.
[   17.762116] bone-capemgr bone_capemgr.9: part_number 'BB-BONE-BAREAUDI-02', version 'N/A'
[   17.770755] bone-capemgr bone_capemgr.9: slot #9: generic override
[   17.777231] bone-capemgr bone_capemgr.9: bone: Using override eeprom data at slot 9
[   17.785245] bone-capemgr bone_capemgr.9: slot #9: 'Override Board Name,00A0,Override Manuf,BB-BONE-BAREAUDI'
[   17.795592] bone-capemgr bone_capemgr.9: slot #9: Requesting part number/version based 'BB-BONE-BAREAUDI-00A0.dtbo
[   17.806449] bone-capemgr bone_capemgr.9: slot #9: Requesting firmware 'BB-BONE-BAREAUDI-00A0.dtbo' for board-name 'Override Board Name', version '00A0'
[   17.833845] bone-capemgr bone_capemgr.9: slot #9: dtbo 'BB-BONE-BAREAUDI-00A0.dtbo' loaded; converting to live tree
[   17.845101] bone-capemgr bone_capemgr.9: slot #9: #2 overlays
[   17.852149] bone-capemgr bone_capemgr.9: slot #9: Applied #2 overlays.

so the kernel takes almost 18s of the boot time, with a whopping 10s taken up with attempting and failing to mount EXT4-fs (mmcblk0p2) (isn't that the Belaboot partition of the SD card?).

There's a lot of room for optimisation there, and quite a few errors too. We could also move some of the time-consuming stuff which isn't required to run Bela (like the g-ether modules) to a module which gets loaded once the rest of the boot has finished.

It seems like the boot time is pretty evenly split between kernel and user space, so I imagine we could get significant speed-ups from both.

4 months later

Hi!

Has anyone made further progress in improving the boot time of Bela?

Thanks,

Geert

    Hi gbevin

    We're currently working on a more up-to-date version of the kernel (see here for progress reports) and once we have that working nicely we'll spend some time optimising the boot. There's a fair amount of generic advice on improving the BeagleBone's boot time around (e.g here), most of which should work with Bela if you want to give it a try. We will try to incorporate some of this into a future release once we've got the new kernel up and running.

    a year later

    I guess you've seen this one:
    https://elinux.org/images/b/b3/Elce11_koen.pdf

    For me personally, having things on stage that takes more than say 5 seconds to boot fully is never gonna happen. I'm confident it's possible to get Bela on BBB to boot in less than 5!

    Our new [v0.3.1 image] boots and makes sound in around 16 seconds, which is about as goos as it gets when using Debian. We have a testing openADK image that boots in about 3seconds, but it does not have all the Debian goodies (mainly: a huge number of stable packages readily available).

      8 days later

      My understanding is that openADK runs on multiple operating systems, while buildroot is Linux only. On the other hand, buildroot seems to have a much larger user base.