[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: armel packages for linux-2.6.23-2 and install problem



Long agonising story about a Thecus brick and request for info on
increasing ramdisk size at boot

2008/1/7, Martin Michlmayr <tbm@cyrius.com>:
> Did you modify the MTD partitions?

Oops. Make that a yes. I couldn't use the Thecus web interface, which
needs flash player, so I had loaded kernel and initrd in RedBoot with

load -v -r -b 0x800000 -m http -h 192.168.1.1 /.../armel-installer-initrd.gz
fis create ramdisk
load -v -r -b 0x200000  -m http -h 192.168.1.1 /.../vmlinuz-2.6.21-1-iop32x
fis create kernel
exec -c "console=ttyS0,115200 root=/dev/ram0 initrd=0xa0800000,42M mem"

without realising that that truncated the ramdisk partition size too.
Fixed in RedBoot with:
fis load ramdisk    # at 0x80000
fis create ramdisk -l 0xd00000

That let it boot the old kernel and ramdisk, and the dpkg -i of the
new kernel package worked, but booting it failed because, although the
kernel flash partition was big enough, it was only loading the new
kernel up to the length of the old kernel:

RedBoot> exec -c "console=ttyS0,115200 root=/dev/ram0 initrd=0xa0800000,42M"
Build ATAG
ATAG_MEM: Overwrite ram_end with real_region_top=0x20000000, memsize=512 M
ATAG_MEM=536870912@0xa0000000, MACH_TYPE=1101
Using base address 0x00200000 and length 0x0012fbd4
<hang>

Fortunately I had backed up the mtd contents somewhere (but not the
new kernel and ramdisk images, managgia!) so I've restored those:

RedBoot> load -v -r -b 0x200000 -m http -h 192.168.1.1 /martin/tech/n2100/debian
/mtd/mtdblock2
RedBoot> fis create kernel
RedBoot> load -v -r -b 0x800000 -m http -h 192.168.1.1 /martin/tech/n2100/debian
/mtd/mtdblock1
RedBoot> fis create ramdisk -l 0xd00000 -s 0x3e0000

and it now uncompresses and boots the old kernel again but clags saying:

RAMDISK: Compressed image found at block 0
RAMDISK: incomplete write (-28 != 32768) 8388608
List of all partitions:
1f00        256 mtdblock0 (driver?)
1f01      13312 mtdblock1 (driver?)
1f02       1408 mtdblock2 (driver?)
1f03       1152 mtdblock3 (driver?)
1f04          4 mtdblock4 (driver?)
1f05        128 mtdblock5 (driver?)
No filesystem could mount root, tried:  cramfs
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0)

That seems to be because the initrd is set to 8MB and
"gzip -d < mtdblock/mtdblock1 | wc -c" says it's 9093120 bytes.
(gzip: stdin: decompression OK, trailing garbage ignored)

The kernel that's booting is 2.6.22-3, same as when it worked, and the
ramdisk contains the right image
("gzip -d < mtdblock1 | cpio -i -t"
lists lib/modules/2.6.22-3-iop32x/...)
and those mtdblock contents were taken from it when it booted ok before.

I've tried
RedBoot> fis load ramdisk
RedBoot> fis load kernel
RedBoot> exec -c "console=ttyS0,115200 root=/dev/ram0 initrd=0xa0800000,42M"
which I presume should set the ramdisk size, but it seems not to.

I'm stumped now. Anyone know how to up the kernel ramdisk size from
the bootparams?
The ",42M" above" doesn't do it, nor does the ramdisk_size=16384"
mentioned in "man bootparam" - all die saying "RAMDISK: incomplete
write (-28 != 32768) 8388608"
(and errno 28 is "No space left on device")

   M


Reply to: