After some more research through the kernel logs, it seems that the beagleboard_defconfig was renamed several times, currently it is available as omap2plus_defconfig. I probably need to build a new kernel now... Unfortunately it takes quite a while to build a new kernel on an emulated ARM board (I'm not into crosscompiling with a recent gcc version yet). The SD card I have is a little small, putting both the root filesystem and the kernel-sources on it seems difficult, an exercise I'll experiment with later.
The beagleboard uses u-boot as bootlader, and I have not found out how to use a initial RAM disk. This has not been an issue yet, as I did not feel like creating an initial RAM disk by hand. Fedora comes with dracut that can generate one for me, so why bother?
The current kernel has all requirements built-in. There is no need for an initial RAM disk. Well, actually there is... init seems to require the /proc fileystem mounted, if it is not mounted, init decides to reboot the system as there are some process-communication issues. Starting with an emergency shell (pass init=/bin/dash on the commandline) allows me to manually mount /proc (even if it claims to be mounted already).
Compared to an older version of the kernel, this kernel offers options to enable optimized OMAP-serial ports:
CONFIG_SERIAL_OMAP=y CONFIG_SERIAL_OMAP_CONSOLE=yWith these options enabled, the standard /dev/ttyS2 does not seem to provide any output. Instead it seems to be required to use the OMAP-specific /dev/ttyO2 (that's an 'O' for Oscar, not a '0' as zero).
My final u-boot defaults (saved with saveenv) looks like this:
OMAP3 beagleboard.org # printenv stdin=serial stdout=serial stderr=serial serial=3a5c00020000000004013ef109010017 bootargs=console=ttyO2,115200n8 root=/dev/mmcblk0p2 ro rootwait init=/bin/dash bootcmd=mmcinit ; fatload mmc 0:1 0x80000000 uimage-2.6.38-rc3.beagleboard_201102131201 ; bootm 0x80000000 Environment size: 267/131068 bytes
Booting the system and starting dash as directed by the init parameter can be done as follows:
OMAP3 beagleboard.org # boot ## Booting kernel from Legacy Image at 80000000 ... Image Name: Linux-2.6.38-rc3.beagleboard Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 1751256 Bytes = 1.7 MB Load Address: 80008000 Entry Point: 80008000 Verifying Checksum ... OK Loading Kernel Image ... OK OK Starting kernel ... Uncompressing Linux... done, booting the kernel. Linux version 2.6.38-rc3.beagleboard (root@fedora-arm) (gcc version 4.4.2 20091019 (Red Hat 4.4.2-5) (GCC) ) #2 Sun Feb 13 22:26:07 EST 2011 CPU: ARMv7 Processor [411fc082] revision 2 (ARMv7), cr=10c53c7f CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache Machine: OMAP3 Beagle Board Memory policy: ECC disabled, Data cache writeback OMAP3430/3530 ES2.1 (l2cache iva sgx neon isp ) SRAM: Mapped pa 0x40200000 to va 0xfe400000 size: 0x10000 Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512 Kernel command line: console=ttyO2,115200n8 root=/dev/mmcblk0p2 ro rootwait init=/bin/dash PID hash table entries: 512 (order: -1, 2048 bytes) Dentry cache hash table entries: 16384 (order: 4, 65536 bytes) Inode-cache hash table entries: 8192 (order: 3, 32768 bytes) Memory: 128MB = 128MB total Memory: 126296k/126296k available, 4776k reserved, 0K highmem Virtual kernel memory layout: vector : 0xffff0000 - 0xffff1000 ( 4 kB) fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) DMA : 0xffc00000 - 0xffe00000 ( 2 MB) vmalloc : 0xc8800000 - 0xf8000000 ( 760 MB) lowmem : 0xc0000000 - 0xc8000000 ( 128 MB) modules : 0xbf000000 - 0xc0000000 ( 16 MB) .init : 0xc0008000 - 0xc002b000 ( 140 kB) .text : 0xc002b000 - 0xc033d000 (3144 kB) .data : 0xc033e000 - 0xc0369480 ( 174 kB) NR_IRQS:402 Clocking rate (Crystal/Core/MPU): 26.0/332/500 MHz Reprogramming SDRC clock to 332000000 Hz GPMC revision 5.0 IRQ: Found an INTC at 0xfa200000 (revision 4.0) with 96 interrupts Total of 96 interrupts on 1 active controller OMAP clockevent source: GPTIMER12 at 32768 Hz sched_clock: 32 bits at 32kHz, resolution 30517ns, wraps every 131071999ms Console: colour dummy device 80x30 Calibrating delay loop... 471.61 BogoMIPS (lpj=1843200) pid_max: default: 32768 minimum: 301 Mount-cache hash table entries: 512 CPU: Testing write buffer coherency: ok print_constraints: dummy: NET: Registered protocol family 16 omap_device: omap_gpio.0: new worst case activate latency 0: 30517 OMAP GPIO hardware version 2.5 OMAP GPIO hardware version 2.5 OMAP GPIO hardware version 2.5 OMAP GPIO hardware version 2.5 OMAP GPIO hardware version 2.5 OMAP GPIO hardware version 2.5 omap_mux_init: Add partition: #1: core, flags: 0 OMAP3 Beagle Rev: unknown 3 omap_device: omap_uart.0: new worst case activate latency 0: 30517 omap_device: omap_uart.0: new worst case deactivate latency 0: 30517 Found NAND on CS0 Registering NAND on CS0 Unable to get DVI reset GPIO OMAP DMA hardware revision 4.0 bio: create slab
at 0 SCSI subsystem initialized omap_device: omap_i2c.1: new worst case activate latency 0: 30517 omap_i2c omap_i2c.1: bus 1 rev3.12 at 2600 kHz twl4030: PIH (irq 7) chaining IRQs 368..375 twl4030: power (irq 373) chaining IRQs 376..383 twl4030: gpio (irq 368) chaining IRQs 384..401 print_constraints: VUSB1V5: 1500 mV normal standby print_constraints: VUSB1V8: 1800 mV normal standby print_constraints: VUSB3V1: 3100 mV normal standby twl4030_usb twl4030_usb: Initialized TWL4030 USB module print_constraints: VMMC1: 1850 <--> 3150 mV at 3000 mV normal standby print_constraints: VDAC: 1800 mV normal standby print_constraints: VDVI: 1800 mV normal standby print_constraints: VSIM: 1800 <--> 3000 mV at 1800 mV normal standby omap_i2c omap_i2c.3: bus 3 rev3.12 at 100 kHz Switching to clocksource 32k_counter Switched to NOHz mode on CPU #0 musb-hdrc: version 6.0, tusb-omap-dma, peripheral, debug=0 NET: Registered protocol family 2 IP route cache hash table entries: 1024 (order: 0, 4096 bytes) TCP established hash table entries: 4096 (order: 3, 32768 bytes) TCP bind hash table entries: 4096 (order: 2, 16384 bytes) TCP: Hash tables configured (established 4096 bind 4096) TCP reno registered UDP hash table entries: 256 (order: 0, 4096 bytes) UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) NET: Registered protocol family 1 RPC: Registered udp transport module. RPC: Registered tcp transport module. RPC: Registered tcp NFSv4.1 backchannel transport module. NetWinder Floating Point Emulator V0.97 (double precision) JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc. msgmni has been set to 246 io scheduler noop registered io scheduler deadline registered io scheduler cfq registered (default) Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled omap_uart.0: ttyO0 at MMIO 0x4806a000 (irq = 72) is a OMAP UART0 omap_uart.1: ttyO1 at MMIO 0x4806c000 (irq = 73) is a OMAP UART1 omap_uart.2: ttyO2 at MMIO 0x49020000 (irq = 74) is a OMAP UART2 console [ttyO2] enabled brd: module loaded loop: module loaded twl_rtc twl_rtc: rtc core: registered twl_rtc as rtc0 omap_device: omap_i2c.1: new worst case deactivate latency 0: 30517 i2c /dev entries driver sdhci: Secure Digital Host Controller Interface driver sdhci: Copyright(c) Pierre Ossman TCP cubic registered NET: Registered protocol family 17 NET: Registered protocol family 15 VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 1 omap_voltage_late_init: Unable to create voltage debugfs main dir vdd_debugfs_init: Unable to create debugfs directory for vdd_mpu vdd_debugfs_init: Unable to create debugfs directory for vdd_core Power Management for TI OMAP3. regulator_init_complete: VDVI: incomplete constraints, leaving on regulator_init_complete: VDAC: incomplete constraints, leaving on twl_rtc twl_rtc: setting system clock to 2000-01-01 00:03:14 UTC (946684994) Waiting for root device /dev/mmcblk0p2... mmc0: new SD card at address 9ced mmcblk0: mmc0:9ced SD02G 1.89 GiB mmcblk0: p1 p2 EXT3-fs: barriers not enabled kjournald starting. Commit interval 5 seconds EXT3-fs (mmcblk0p2): mounted filesystem with writeback data mode VFS: Mounted root (ext3 filesystem) readonly on device 179:2. Freeing init memory: 140K /bin/dash: can't access tty; job control turned off #
The way to boot into a multi-user system (or change the runlevel so something else) was the following:
# mount /proc # mount /sys # exec initUnfortunately it looks as if upstart or udev from Fedora 12 does not recognise the /dev/ttyO* as serial console. Of course I do not have the possibility (hte beagleboard has, just I do not) to connect a monitor over HDMI or S-video and serial-console is the only working output available. Yet another thing to look into some other day.