Freitag, 30. November 2012

openSUSE on CuBox (Day 7)

I started off today with the status that my CuBox image would boot into yast2-firstboot without manual intervention. After configuring the system in yast2-firstboot, I tried rebooting. On reboot, the boot process did not get past "loading initrd". I was told on the opensuse-arm mailing list that the initrd automatically gets overwritten after yast2-firstboot. Given that it was necessary to change ramdiskaddr from 0x300 to 0x500 to even get to yast2-firstboot, I knew where to look to address the reboot problem - to whatever script was called to rewrite the initrd.

Alex Graf put me on the right track. He pointed out that the uboot-setup.tgz file in the JeOS-cubox package also needs to be updated. The contents of this .tgz are used to rewrite the initrd. When you unpack uboot-setup.tgz,  you get a directory called kiwi-hook. In this directory are two files. I had forgotten to modify the setupUboot.sh file so that the ramdiskaddr there is also update to 0x5000 from 0x3000.

Once I fixed the setupUboot.sh and recreated uboot-setup.tgz, I called the precheckin.sh script (also in the JeOS-cubox package). This script regenerates the JeOS-cubox.kiwi file using the modifications I had made to the Images.kiwi.in file (i.e. changing the console line from ttyS0,115200n8 to ttySO,115200).

After recreating the new image, I dd'd it over to a mini SD card and tried it out. I got past yast2-firstboot and rebooted. This time I got past the "loading initrd" but the this error occurred:

High Capacity: Yes
Capacity: 3965190144
Bus Width: 4-bit
Loading file "/boot.scr" from mmc device 0:1 mmcda1
723 bytes read
## Executing script at 02000000
## Error: "kerneladdr" not defined
## Error: "ramdiskaddr" not defined
Loading file "uImage" from mmc device 0:1 (mmcda1)
3927920 bytes read
Loading file "initrd" from mmc device 0:1 (mmcda1)
undefined instruction
pc : [<9e34e23c>]          lr : [<036352b8>]
sp : 035ff530  ip : 03604478     fp : c6b2fd2b
r10: aad350f6  r9 : d13d13bf     r8 : 035fffcc
r7 : 8d7ea4d5  r6 : b697c9bf     r5 : 45f7c8d6  r4 : 4a59273d
r3 : ffffffff  r2 : 00000001     r1 : 007a1200  r0 : 00000000
Flags: nzcv  IRQs off  FIQs off  Mode SVC_32
Resetting CPU ...

The bootloader will continue looping to that point, until the power cable is pulled. So now it looks as though the new initrd - the one that is automatically created out of the setupUboot.sh in the kiwi-hooks directory (i.e. the contents of uboot-setup.tgz) somehow contains an illegal instruction. The next task is to identify what is going on there - which instruction is illegal.

Stay tuned! We're getting close.

Keine Kommentare: