搞到了片 Pandaboard ES, 經過了幾天的網上資訊過濾, 目前總算比較有頭緒了.

Pandaboard 的 support 看起來似乎不是什麼大問題, 但 ES 則感覺有點亂. 試了不同的 image 來源 (主要是 Cononical 及 Linaro), 相當的花時間. u-boot 及 kernel source tree 那個穩哪版是 official release, 都是要試過才準, 光看 document 常會發現跟實際情況有不少的差異.

Ubuntu Core 11.10 從網上收集到的資訊看來在 ES 上會有過熱的問題. 12.04.2 版執行於 Pandaboard ES 則是在開機時印出以下 message

Uncompressing Linux... done, booting the kernel.
[    0.000000] Booting Linux on physical CPU 0
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 3.2.0-1412-omap4 ([email protected]) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #16-Ubuntu SMP PREEMPT Tue Apr 17 19:38:42 UTC 2012 (Ubuntu 3.2.0-1412.16-omap4 3.2.14)
[    0.000000] CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c5387d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] Machine: OMAP4 Panda board
[    0.000000] Reserving 33554432 bytes SDRAM for VRAM
[    0.000000] Memory policy: ECC disabled, Data cache writealloc
[    0.000000] OMAP4460 ES1.1
[    0.000000] PERCPU: Embedded 8 pages/cpu @c1240000 s10080 r8192 d14496 u32768
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 251648
[    0.000000] Kernel command line: rw vram=32M fixrtc [email protected] root=/dev/mmcblk0p2 console=ttyO2,115200n8 rootwait
[    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] allocated 4194304 bytes of page_cgroup
[    0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups
[    0.000000] Memory: 991MB = 991MB total
[    0.000000] Memory: 991148k/991148k available, 57428k reserved, 228352K highmem
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
[    0.000000]     vmalloc : 0xf0800000 - 0xf8000000   ( 120 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xf0000000   ( 768 MB)
[    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
[    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
[    0.000000]       .text : 0xc0008000 - 0xc08b334c   (8877 kB)
[    0.000000]       .init : 0xc08b4000 - 0xc0918760   ( 402 kB)
[    0.000000]       .data : 0xc091a000 - 0xc09710a8   ( 349 kB)
[    0.000000]        .bss : 0xc09710cc - 0xc0a37a0c   ( 795 kB)
[    0.000000] SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[    0.000000] Preemptible hierarchical RCU implementation.
[    0.000000] NR_IRQS:410 nr_irqs:410 410
[    0.000000] ------------[ cut here ]------------
[    0.000000] WARNING: at /build/buildd/linux-ti-omap4-3.2.0/arch/arm/common/gic.c:611 gic_init+0xb0/0x11c()
[    0.000000] Cannot allocate irq_descs @ IRQ16, assuming pre-allocated
[    0.000000] Modules linked in:
[    0.000000] [] (unwind_backtrace+0x0/0xec) from [] (dump_stack+0x20/0x24)
[    0.000000] [] (dump_stack+0x20/0x24) from [] (warn_slowpath_common+0x5c/0x74)
[    0.000000] [] (warn_slowpath_common+0x5c/0x74) from [] (warn_slowpath_fmt+0x40/0x48)
[    0.000000] [] (warn_slowpath_fmt+0x40/0x48) from [] (gic_init+0xb0/0x11c)
[    0.000000] [] (gic_init+0xb0/0x11c) from [] (gic_init_irq+0x6c/0x80)
[    0.000000] [] (gic_init_irq+0x6c/0x80) from [] (init_IRQ+0x1c/0x24)
[    0.000000] [] (init_IRQ+0x1c/0x24) from [] (start_kernel+0x184/0x318)
[    0.000000] [] (start_kernel+0x184/0x318) from [<80008044>] (0x80008044)
[    0.000000] ---[ end trace da227214a82491b7 ]---
[    0.000000] OMAP clockevent source: GPTIMER1 at 32768 Hz
[    0.000000] sched_clock: 32 bits at 32kHz, resolution 30517ns, wraps every 131071999ms
[    0.000000] Console: colour dummy device 80x30
[    0.000152] Calibrating delay loop... 1392.74 BogoMIPS (lpj=5439488)
[    0.070404] pid_max: default: 32768 minimum: 301
[    0.070648] Security Framework initialized
[    0.070739] AppArmor: AppArmor initialized
[    0.070739] Yama: becoming mindful.
[    0.071044] Mount-cache hash table entries: 512
[    0.072174] Initializing cgroup subsys cpuacct
[    0.072235] Initializing cgroup subsys memory
[    0.072296] Initializing cgroup subsys devices
[    0.072326] Initializing cgroup subsys freezer
[    0.072326] Initializing cgroup subsys net_cls
[    0.072357] Initializing cgroup subsys blkio
[    0.072387] Initializing cgroup subsys perf_event
[    0.072540] CPU: Testing write buffer coherency: ok
[    0.072601] ftrace: allocating 25675 entries in 76 pages
[    0.117462] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.117523] Calibrating local timer... 341.55MHz.
[    0.164306] hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available
[    0.164428] Setting up static identity map for 0x805d4dd0 - 0x805d4e18
[    0.164459] L310 cache controller enabled
[    0.164459] l2x0: 16 ways, CACHE_ID 0x410000c7, AUX_CTRL 0x5e470000, Cache size: 1048576 B
[    0.240875] CPU1: Booted secondary processor
[    0.271057] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[    0.271087] CPU1: Unknown IPI message 0x1
[    0.271118] Brought up 2 CPUs
[    0.271148] SMP: Total of 2 processors activated (2755.07 BogoMIPS).
[    0.272125] devtmpfs: initialized
[    0.276916] omap_hwmod: l4_div_ck: missing clockdomain for l4_div_ck.
[    0.332153] omap_hwmod: mcpdm: _wait_target_ready: -16
[    0.332183] ------------[ cut here ]------------
[    0.332214] WARNING: at /build/buildd/linux-ti-omap4-3.2.0/arch/arm/mach-omap2/omap_hwmod.c:1509 _enable+0x1ec/0x220()
[    0.332214] Modules linked in:
[    0.332275] [] (unwind_backtrace+0x0/0xec) from [] (dump_stack+0x20/0x24)
[    0.332305] [] (dump_stack+0x20/0x24) from [] (warn_slowpath_common+0x5c/0x74)
[    0.332336] [] (warn_slowpath_common+0x5c/0x74) from [] (warn_slowpath_null+0x2c/0x34)
[    0.332366] [] (warn_slowpath_null+0x2c/0x34) from [] (_enable+0x1ec/0x220)
[    0.332397] [] (_enable+0x1ec/0x220) from [] (_setup.part.13+0x20/0xf0)
[    0.332427] [] (_setup.part.13+0x20/0xf0) from [] (_setup+0x94/0x9c)
[    0.332458] [] (_setup+0x94/0x9c) from [] (omap_hwmod_for_each+0x38/0x68)
[    0.332489] [] (omap_hwmod_for_each+0x38/0x68) from [] (omap_hwmod_setup_all+0x74/0xa0)
[    0.332519] [] (omap_hwmod_setup_all+0x74/0xa0) from [] (do_one_initcall+0xa0/0x170)
[    0.332550] [] (do_one_initcall+0xa0/0x170) from [] (kernel_init+0xc8/0x170)
[    0.332580] [] (kernel_init+0xc8/0x170) from [] (kernel_thread_exit+0x0/0x8)
[    0.332580] ---[ end trace da227214a82491b8 ]---
[    0.332611] omap_hwmod: mcpdm: cannot be enabled (3)
[    0.339355] Enabling ERRATA 751472
[    0.339385] OMAP4: Map 0xafe00000 to 0xfe600000 for dram barrier
[    0.340332] print_constraints: dummy:
[    0.340637] NET: Registered protocol family 16
[    0.341369] GPMC revision 6.0
[    0.341461]  mpu.0: alias fck already exists
[    0.341766]  iva.0: alias fck already exists
[    0.343200] OMAP GPIO hardware version 0.1
[    0.344848] omap_mux_init: Add partition: #1: core, flags: 2
[    0.345855] omap_mux_init: Add partition: #2: wkup, flags: 2
[    0.348602] SRAM: Mapped pa 0x40300000 to va 0xf0840000 size: 0xd000
[    0.352050] _omap_mux_init_gpio: Could not set gpio7
[    0.352111] hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
[    0.352111] hw-breakpoint: maximum watchpoint size is 4 bytes.
[    0.357818] omap_ipussdev_init: could not look up fdif
[    0.358764] OMAP DMA hardware revision 0.0
[    0.366699] bio: create slab at 0
[    0.367553] print_constraints: vwl1271: 1800 mV
[    0.368804] i2c-core: driver [twl] using legacy suspend method
[    0.368835] i2c-core: driver [twl] using legacy resume method
[    0.369628] SCSI subsystem initialized
[    0.371063] usbcore: registered new interface driver usbfs
[    0.371154] usbcore: registered new interface driver hub
[    0.371307] usbcore: registered new device driver usb
[    0.385498] omap_i2c omap_i2c.1: bus 1 rev2.4.0 at 400 kHz
[    0.386169] Skipping twl internal clock init and using bootloader value (unknown osc rate)
[    0.386688] twl6030: PIH (irq 39) chaining IRQs 368..387
[    0.387329] print_constraints: VUSB: 3300 mV normal standby
[    0.585327] twl6030_usb twl6030_usb: Initialized TWL6030 USB module
[    0.586303] print_constraints: VMMC: 1200 <--> 3000 mV at 3000 mV normal standby
[    0.586822] print_constraints: VPP: 1800 <--> 2500 mV at 1900 mV normal standby
[    0.587310] print_constraints: VUSIM: 1200 <--> 2900 mV at 1800 mV normal standby
[    0.587890] print_constraints: VCXIO: 1800 mV normal standby
[    0.588256] print_constraints: VDAC: 1800 mV normal standby
[    0.588714] print_constraints: VAUX1_6030: 1000 <--> 3000 mV at 2800 mV normal standby
[    0.588775] twl_reg twl_reg.37: Failed to set supply vmmc
[    0.588897] twl_reg twl_reg.37: can't register VAUX1_6030, -16
[    0.588897] twl_reg: probe of twl_reg.37 failed with error -16
[    0.589324] print_constraints: VAUX2_6030: 1200 <--> 2800 mV at 1800 mV normal standby
[    0.589813] print_constraints: VAUX3_6030: 1000 <--> 3000 mV at 1200 mV normal standby
[    0.590179] print_constraints: CLK32KG:
[    0.590515] print_constraints: VANA: 2100 mV normal standby
[    0.598968] omap_i2c omap_i2c.2: bus 2 rev2.4.0 at 400 kHz
[    0.614196] omap_i2c omap_i2c.3: bus 3 rev2.4.0 at 100 kHz
[    0.629455] omap_i2c omap_i2c.4: bus 4 rev2.4.0 at 400 kHz
[    0.630157] iommu_enable: NULL arch_iommu
[    0.630187] omap-iommu omap-iommu.0: can't get omap iommu: -19
[    0.630187] omap-iommu omap-iommu.0: can't attach iommu device: -19
[    0.630279] omap-iommu omap-iommu.1: tesla registered
[    0.630462] Advanced Linux Sound Architecture Driver Version 1.0.24.
[    0.631042] NetLabel: Initializing
[    0.631072] NetLabel:  domain hash size = 128
[    0.631072] NetLabel:  protocols = UNLABELED CIPSOv4
[    0.631134] NetLabel:  unlabeled traffic allowed by default
[    0.631561] Switching to clocksource 32k_counter
[    0.651397] FS-Cache: Loaded
[    0.651702] AppArmor: AppArmor Filesystem Enabled
[    0.666168] musb-hdrc: version 6.0, ?dma?, otg (peripheral+host)
[    0.666839] musb-hdrc musb-hdrc: USB OTG mode controller at fc0ab000 using DMA, IRQ 124
[    0.667114] NET: Registered protocol family 2
[    0.667541] IP route cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.668884] TCP established hash table entries: 131072 (order: 8, 1048576 bytes)
[    0.671081] TCP bind hash table entries: 65536 (order: 7, 786432 bytes)
[    0.672302] TCP: Hash tables configured (established 131072 bind 65536)
[    0.672332] TCP reno registered
[    0.672363] UDP hash table entries: 512 (order: 2, 16384 bytes)
[    0.672393] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[    0.672851] NET: Registered protocol family 1
[    1.367126] ipu-power ipu0: Test of writing to the device message log,done from ipu_pm_init
[    1.367156] ipu-power initialized ipu, major: 253, minor: 0
[    1.367736] iovmm-omap initialized ducati, major: 252, base-minor: 0
[    1.367950] iovmm-omap initialized tesla, major: 252, base-minor: 1
[    1.368927] omap-remoteproc omap-remoteproc.0: omap_rproc_probe: adding rproc tesla
[    1.369171] omap-remoteproc omap-remoteproc.0: omap-rproc initialized tesla, major: 251, base-minor: 0
[    1.369201] omap-remoteproc omap-remoteproc.1: omap_rproc_probe: adding rproc ducati-proc0
[    1.369384] omap-remoteproc omap-remoteproc.1: omap-rproc initialized ducati-proc0, major: 251, base-minor: 1
[    1.369445] omap-remoteproc omap-remoteproc.2: omap_rproc_probe: adding rproc ducati-proc1
[    1.369659] omap-remoteproc omap-remoteproc.2: omap-rproc initialized ducati-proc1, major: 251, base-minor: 2
[    1.370361] audit: initializing netlink socket (disabled)
[    1.370422] type=2000 audit(1.343:1): initialized
[    1.489807] highmem bounce pool size: 64 pages
[    1.499053] VFS: Disk quotas dquot_6.5.2
[    1.499542] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    1.503173] fuse init (API version 7.17)
[    1.503753] msgmni has been set to 1489
[    1.505493] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 250)
[    1.505645] io scheduler noop registered
[    1.505645] io scheduler deadline registered
[    1.505706] io scheduler cfq registered (default)
[    1.506439] OMAP DSS rev 4.0
[    1.529846] omap_uart.0: ttyO0 at MMIO 0x4806a000 (irq = 104) is a OMAP UART0
[    1.647308] omap_uart.1: ttyO1 at MMIO 0x4806c000 (irq = 105) is a OMAP UART1
[    1.772308] omap_uart.2: ttyO2 at MMIO 0x48020000 (irq = 106) is a OMAP UART2
[    2.961517] console [ttyO2] enabled
[    3.053558] omap_uart.3: ttyO3 at MMIO 0x4806e000 (irq = 102) is a OMAP UART3
[    3.178985] [drm] Initialized drm 1.1.0 20060810
[    3.184600] brd: module loaded
[    3.192962] loop: module loaded
[    3.196441] (stk) :sysfs entries created
[    3.200622] (stk) : debugfs entries created
[    3.205871] Non-trimmed BGAP, Temp not accurate
[    3.210876] thermal_sensor_dev_register:Need to init the cpu domain
[    3.223937] Fixed MDIO Bus: probed
[    3.227600] tun: Universal TUN/TAP device driver, 1.6
[    3.232971] tun: (C) 1999-2004 Max Krasnyansky
[    3.239990] PPP generic driver version 2.4.2
[    3.244873] usbcore: registered new interface driver smsc95xx
[    3.251312] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    3.258422] _regulator_get: ehci-omap.0 supply hsusb0 not found, using dummy regulator
[    3.266967] ehci-omap ehci-omap.0: OMAP-EHCI Host Controller
[    3.273315] ehci-omap ehci-omap.0: new USB bus registered, assigned bus number 1
[    3.281341] ehci-omap ehci-omap.0: irq 109, io mem 0x4a064c00
[    3.295684] ehci-omap ehci-omap.0: USB 2.0 started, EHCI 1.00
[    3.301971] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    3.309204] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    3.316864] usb usb1: Product: OMAP-EHCI Host Controller
[    3.322509] usb usb1: Manufacturer: Linux 3.2.0-1412-omap4 ehci_hcd
[    3.329162] usb usb1: SerialNumber: ehci-omap.0
[    3.334686] hub 1-0:1.0: USB hub found
[    3.338684] hub 1-0:1.0: 3 ports detected
[    3.373870] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    3.380584] ohci-omap3 ohci-omap3.0: OMAP3 OHCI Host Controller
[    3.387176] ohci-omap3 ohci-omap3.0: new USB bus registered, assigned bus number 2
[    3.395355] ohci-omap3 ohci-omap3.0: irq 108, io mem 0x4a064800
[    3.479644] usb usb2: New USB device found, idVendor=1d6b, idProduct=0001
[    3.486877] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    3.494537] usb usb2: Product: OMAP3 OHCI Host Controller
[    3.500274] usb usb2: Manufacturer: Linux 3.2.0-1412-omap4 ohci_hcd
[    3.506927] usb usb2: SerialNumber: ohci-omap3.0
[    3.512512] hub 2-0:1.0: USB hub found
[    3.516510] hub 2-0:1.0: 3 ports detected
[    3.521423] Initializing USB Mass Storage driver...
[    3.526763] usbcore: registered new interface driver usb-storage
[    3.533142] USB Mass Storage support registered.
[    3.538452] mousedev: PS/2 mouse device common for all mice
[    3.544799] i2c-core: driver [tm12xx_ts] using legacy suspend method
[    3.551605] i2c-core: driver [tm12xx_ts] using legacy resume method
[    3.559020] twl_rtc twl_rtc: Power up reset detected.
[    3.565521] twl_rtc twl_rtc: Enabling TWL-RTC.
[    3.572052] twl_rtc twl_rtc: rtc core: registered twl_rtc as rtc0
[    3.578826] Linux media interface: v0.10
[    3.583038] Linux video capture interface: v2.00
[    3.591796] OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
[    3.598846] device-mapper: uevent: version 1.0.3
[    3.604217] device-mapper: ioctl: 4.22.0-ioctl (2011-10-19) initialised: [email protected]
[    3.615417] _regulator_get: omap_hsmmc.0 supply vmmc_aux not found, using dummy regulator
[    3.627319] _regulator_get: omap_hsmmc.4 supply vmmc_aux not found, using dummy regulator
[    3.670715] usb 1-1: new high-speed USB device number 2 using ehci-omap
[    3.713043] thermal_governor_dev_register:Adding omap_ondie_governor governor
[    3.720642] thermal_init_thermal_state:Not all components registered for cpu domain sensor   (null), gov=ee565080, cooling=  (null)
[    3.734252] proc4430_drv_initializeModule
[    3.739105] omap-devicehandler omap-devicehandler.0: omap_devh_probe: adding devh Tesla
[    3.747833] omap-devh initialized Tesla, major: 242, base-minor: 0
[    3.754608] omap-devicehandler omap-devicehandler.1: omap_devh_probe: adding devh SysM3
[    3.763305] omap-devh initialized SysM3, major: 242, base-minor: 1
[    3.770111] omap-devicehandler omap-devicehandler.2: omap_devh_probe: adding devh AppM3
[    3.778839] omap-devh initialized AppM3, major: 242, base-minor: 2
[    3.788055] SDP4430 SoC init
[    3.823547] asoc: null-codec-dai <-> MultiMedia1 mapping ok
[    3.830383] asoc: null-codec-dai <-> MultiMedia2 mapping ok
[    3.837799] asoc: null-codec-dai <-> Voice mapping ok
[    3.843658] usb 1-1: New USB device found, idVendor=0424, idProduct=9514
[    3.851531] asoc: null-codec-dai <-> Tones mapping ok
[    3.856933] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    3.865570] asoc: null-codec-dai <-> Vibra mapping ok
[    3.871887] hub 1-1:1.0: USB hub found
[    3.876159] asoc: null-codec-dai <-> MODEM mapping ok
[    3.881652] hub 1-1:1.0: 5 ports detected
[    3.886596] asoc: null-codec-dai <-> MultiMedia1 LP mapping ok
[    3.892822] mmc0: host does not support reading read-only switch. assuming write-enable.
[    3.903442] mmc0: new high speed SDHC card at address b368
[    3.909790] asoc: FM Digital <-> omap-mcbsp-dai.1 mapping ok
[    3.915863] mmcblk0: mmc0:b368       3.73 GiB
[    3.922119] asoc: twl6040-legacy <-> mcpdm-dl mapping ok
[    3.927825]  mmcblk0: p1 p2
[    3.944793] asoc: dmic-hifi <-> omap-dmic-dai-0 mapping ok
[    3.951690] asoc: twl6040-dl1 <-> mcpdm-dl1 mapping ok
[    3.967803] asoc: twl6040-ul <-> mcpdm-ul1 mapping ok
[    3.983428] asoc: twl6040-dl2 <-> mcpdm-dl2 mapping ok
[    3.999145] asoc: twl6040-vib <-> mcpdm-vib mapping ok
[    4.005218] asoc: Bluetooth <-> omap-mcbsp-dai.0 mapping ok
[    4.011718] asoc: Bluetooth <-> omap-mcbsp-dai.0 mapping ok
[    4.018127] asoc: FM Digital <-> omap-mcbsp-dai.1 mapping ok
[    4.024719] asoc: MODEM <-> omap-mcbsp-dai.1 mapping ok
[    4.030761] asoc: dmic-hifi <-> omap-dmic-abe-dai-0 mapping ok
[    4.037353] asoc: dmic-hifi <-> omap-dmic-abe-dai-1 mapping ok
[    4.043975] asoc: dmic-hifi <-> omap-dmic-abe-dai-2 mapping ok
[    4.054199] input: PandaES Headset Jack as /devices/platform/soc-audio.0/sound/card0/input0
[    4.066925] Error: Driver 'hdmi-audio-dai' is already registered, aborting...
[    4.074523] OMAP4 HDMI audio SoC init
[    4.079711] asoc: omap4-hdmi-audio-codec <-> hdmi-audio-dai mapping ok
[    4.087524] ALSA device list:
[    4.090728]   #0: TI OMAP4 Board
[    4.094177]   #1: TI OMAP4 HDMI Board
[    4.094177] mmc1: card claims to support voltages below the defined range. These will be ignored.
[    4.107543] u32 classifier
[    4.110626]     Actions configured
[    4.115875] TCP cubic registered
[    4.120208] NET: Registered protocol family 10
[    4.128356] NET: Registered protocol family 17
[    4.133453] lib80211: common routines for IEEE802.11 drivers
[    4.139526] Registering the dns_resolver key type
[    4.144592] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
[    4.152801] ThumbEE CPU extension supported.
[    4.157379] Registering SWP/SWPB emulation handler
[    4.166717] thermal_cooling_dev_register:Found cpu cpu
[    4.172241] thermal_cooling_dev_register: doing deferred tdev
[    4.178375] thermal_sensor_dev_register:Found cpu cpu
[    4.183776] thermal_sensor_dev_register:Adding omap_ondie_sensor sensor
[    4.190856] thermal_init_thermal_state: Getting initial temp for cpu domain
[    4.198394] thermal_request_temp
[    4.201904] usb 1-1.1: new high-speed USB device number 3 using ehci-omap
[    4.209167] omap_safe_zone:hot spot temp 43629
[    4.214080] cpufreq_apply_cooling: Unthrottle cool level 0 curr cool 125000
[    4.221588] omap_thermal_step_freq_up: temperature reduced, stepping up to 0
[    4.229370]    thermal_request_temp got 38200
[    4.234802] omap_sr_disable: omap_sr struct for sr_mpu not found
[    4.241394] omap_sr_disable: omap_sr struct for sr_mpu not found
[    4.247772] mmc1: queuing unknown CIS tuple 0x91 (3 bytes)
[    4.253814] Power Management for TI OMAP4.
[    4.258422] sr_init: No PMIC hook to init smartreflex
[    4.264007] smartreflex smartreflex.0: omap_sr_probe: SmartReflex driver initialized
[    4.273651] smartreflex smartreflex.1: omap_sr_probe: SmartReflex driver initialized
[    4.281890] smartreflex smartreflex.2: omap_sr_probe: SmartReflex driver initialized
[    4.290405] mmc1: new SDIO card at address 0001
[    4.296630] SmartReflex Class3 initialized
[    4.310607] registered taskstats version 1
[    4.318420] regulator_init_complete: VANA: incomplete constraints, leaving on
[    4.326416] regulator_init_complete: CLK32KG: incomplete constraints, leaving on
[    4.342407] regulator_init_complete: VDAC: incomplete constraints, leaving on
[    4.350677] usb 1-1.1: New USB device found, idVendor=0424, idProduct=ec00
[    4.358001] usb 1-1.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    4.366485] regulator_init_complete: VUSB: incomplete constraints, leaving on
[    4.375274] twl_rtc twl_rtc: setting system clock to 2000-01-01 00:00:00 UTC (946684800)
[    4.384185] smsc95xx v1.0.4
[    4.399322] omapdrm omapdrm.0: dvi has no driver.. skipping it
[    4.495239] smsc95xx 1-1.1:1.0: eth0: register 'smsc95xx' at usb-ehci-omap.0-1.1, smsc95xx USB 2.0 Ethernet, 2e:60:aa:65:4e:01
[    4.604522] Console: switching to colour frame buffer device 240x67
[    4.647399] fb0: omapdrm frame buffer device
[    4.647399] drm: registered panic notifier
[    4.656280] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
[    4.663360] [drm] No driver support for vblank timestamp query.
[    4.663360] [drm] Initialized omapdrm 1.0.0 20110403 on minor 0
[    4.677856] EXT3-fs (mmcblk0p2): error: couldn't mount because of unsupported optional features (240)
[    5.099609] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[    5.099609] VFS: Mounted root (ext4 filesystem) on device 179:2.
[    5.115661] devtmpfs: mounted
[    5.115661] Freeing init memory: 400K
modprobe: FATAL: Could not load /lib/modules/3.2.0-1412-omap4/modules.dep: No such file or directory

modprobe: FATAL: Could not load /lib/modules/3.2.0-1412-omap4/modules.dep: No such file or directory

雖然 Cononical 官方網頁上沒放 Ubuntu Core 13.04 的 link, 但 download site 上確實是有 prebuilt image 可 download 的, 先抓下來吧
$ wget http://ports.ubuntu.com/ubuntu-ports/dists/raring/main/installer-armhf/current/images/omap4/netboot/MLO
$ wget http://ports.ubuntu.com/ubuntu-ports/dists/raring/main/installer-armhf/current/images/omap4/netboot/u-boot.bin
$ wget http://ports.ubuntu.com/ubuntu-ports/dists/raring/main/installer-armhf/current/images/omap4/netboot/uImage
$ wget http://ports.ubuntu.com/ubuntu-ports/dists/raring/main/installer-armhf/current/images/omap4/netboot/uInitrd

再來是 rootfs
$ wget http://cdimage.ubuntu.com/ubuntu-core/releases/13.04/release/ubuntu-core-13.04-core-armhf.tar.gz

接下來準備 sd card. 如果不清楚怎麼切分, 可用這個 script
$ wget http://git.openembedded.org/openembedded/tree/contrib/angstrom/omap3-mkcard.sh
$ chmod +x omap3-mkcard.sh

假設你的 sd card 是 /dev/sdb (細節可參考), 那就執行
$ sudo ./omap3-mkcard.sh /dev/sdb
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.569997 s, 1.8 MB/s
Disk /dev/sdb doesn't contain a valid partition table
DISK SIZE - 4026531840 bytes
CYLINDERS - 489
Checking that no-one is using this disk right now ...
OK

Disk /dev/sdb: 489 cylinders, 255 heads, 63 sectors/track

sfdisk: ERROR: sector 0 does not have an msdos signature

/dev/sdb: unrecognized partition table type
Old situation:
No partitions found
New situation:
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0

Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdb1   *      0+      8       9-     72261    c  W95 FAT32 (LBA)
/dev/sdb2          9     488     480    3855600   83  Linux
/dev/sdb3          0       -       0          0    0  Empty
/dev/sdb4          0       -       0          0    0  Empty
Successfully wrote the new partition table

Re-reading the partition table ...

If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
../12.04.2/omap3-mkcard.sh: line 37: kpartx: command not found
umount: /dev/sdb1: not mounted
mkfs.vfat 3.0.14 (23 Jan 2023)
umount: /dev/sdb2: not mounted
mke2fs 1.42.5 (29-Jul-2012)
Filesystem label=Angstrom
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
241440 inodes, 963900 blocks
48195 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=989855744
30 block groups
32768 blocks per group, 32768 fragments per group
8048 inodes per group
Superblock backups stored on blocks:

32768, 98304, 163840, 229376, 294912, 819200, 884736

Allocating group tables: done                           
Writing inode tables: done                           
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

omap3-mkcard.sh 會將 sd card 切成兩個 partition
$ sudo blkid
/dev/sdb1: LABEL="boot" UUID="5D4E-BD61" TYPE="vfat"
/dev/sdb2: LABEL="Angstrom" UUID="efc5ca01-44b3-4225-8a75-1c3d383e78bd" SEC_TYPE="ext2" TYPE="ext3"

Document 上說如果 format 好的 file system 要用在不同的 distro 上, 你可能要將 /dev/sdb2 的 lable 改一下 (以我們的例子改不改都沒差, 只是順帶提一下)
$ sudo tune2fs -L rootfs /dev/sdb2

接下來準備 sd card 上的內容
$ mkdir boot
$ sudo mount /dev/sdb1 /boot
$ sudo cp MLO u-boot.bin uImage uInitrd boot

還少一個 boot.scr, 這個是供 u-boot 看的 script, 編輯 boot.script, 貼上以下內容 (參考)
fatload mmc 0:1 0x80000000 uImage
fatload mmc 0:1 0x81600000 uInitrd
setenv bootargs rw vram=32M fixrtc [email protected] root=/dev/mmcblk0p2 console=ttyO2,115200n8 rootwait
bootm 0x80000000 0x81600000

以 mkimage (請安裝 u-boot-tools) 產生 boot.scr (不知怎麼用可以 man 一下, 很直觀的)
$ mkimage -A arm -T script -C none -n "boot.scr" -d boot.script boot.scr
$ sudo cp boot.scr boot
$ sudo umount boot

接下來準備 rootfs
$ mkdir rootfs
$ sudo mount /dev/sdb2 rootfs
$ sudo tar -zxvpf ubuntu-core-13.04-core-armhf.tar.gz -C rootfs

記得, 執行 tar 時一定要用 root 身份, 這樣解出來的檔案才會有正確的權限. 現在來為 panda es 啟動 serial console, 編輯 rootfs/etc/init/serial-auto-detect-console.conf, 內容如下

serial-auto-detect-console - starts getty on serial console

This service starts a getty on the serial port given in the 'console' kernel argument.

start on runlevel [23]
stop on runlevel [!23]

respawn

exec /bin/sh /bin/serial-console

然後是 rootfs/bin/serial-console
for arg in $(cat /proc/cmdline)
do

case $arg in

console=*)

tty=${arg#console=}

tty=${tty#/dev/}

case $tty in

tty[a-zA-Z]* )

PORT=${tty%%,*}

check for service which do something on this port

if [ -f /etc/init/$PORT.conf ];then continue;fi

tmp=${tty##$PORT,}

SPEED=${tmp%%n*}

BITS=${tmp##${SPEED}n}

8bit serial is default

[ -z $BITS ] && BITS=8

[ 8 -eq $BITS ] && GETTY_ARGS="$GETTY_ARGS -8 "

[ -z $SPEED ] && SPEED='115200,57600,38400,19200,9600'

GETTY_ARGS="$GETTY_ARGS $SPEED $PORT"

exec /sbin/getty $GETTY_ARGS

esac

esac
done

記得改成 executable
$ sudo chmod +x rootfs/bin/serial-console
$ sudo umount rootfs
$ sync

這頁