I did test in on my 4.0 box, and it worked fine.
If you could supply a text capture of the tivo booting, that would *really* help. You'll have to capture via the serial port of course.
As a reference, here's my boot sequence. I've highlighted the two important parts. The red part shows that the kernel signature was there and valid. The blue part shows that the initrd was never mounted to "clean" things up before handing control off to /sbin/init.
You won't be able to see the red part unless you're booting from the bootprom menu (which means you've set its password already). But even if the red part isn't there, as long as you see the "Loading R5432 MMU routines" line, then that means the kernel passed signature verification. And so then focus on where the blue part should happen.
Code:
Kernel signed by 'Kernel release key'
Hashing kernel... done
Checking signature... done.
Signed, valid for release
Loading R5432 MMU routines.
CPU revision is: 00005430
Primary instruction cache 32kb, linesize 32 bytes.
Primary data cache 32kb, linesize 32 bytes.
Linux version 2.4.18 (build@buildmaster21) (gcc version 3.0) #6 Mon Mar 24 14:38:02 PST 2003
Determined physical RAM map:
memory: 04000000 @ 00000000 (usable)
On node 0 totalpages: 16384
zone(0): 16384 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Kernel command line: root=/dev/hda7 dsscon=true console=2,115200 handcraft=true
Monotonic time calibrated: 81.00 counts per usec
Calibrating delay loop... 161.79 BogoMIPS
Contiguous region 0: 8388608 bytes
Contiguous region 1: 1048576 bytes
Contiguous region 2: 10485760 bytes
Contiguous region of 19922944 bytes reserved at 0x80d00000.
Memory: 43640k/65536k available (1174k kernel code, 21896k reserved, 77k data, 60k init)
Dentry-cache hash table entries: 8192 (order: 4, 65536 bytes)
Inode-cache hash table entries: 4096 (order: 3, 32768 bytes)
Mount-cache hash table entries: 1024 (order: 1, 8192 bytes)
Buffer-cache hash table entries: 4096 (order: 2, 16384 bytes)
Page-cache hash table entries: 16384 (order: 4, 65536 bytes)
Checking for 'wait' instruction... unavailable.
POSIX conformance testing by UNIFIX
PCI: Probing PCI hardware
ttyS00 at iomem 0xb4100100 (irq = 79) is a 16550A
ttyS00 at port 0xbc010000 (irq = 133) is a unknown
ttyS00 at iomem 0xb4100140 (irq = 81) is a 16550A
ttyS00 at iomem 0xb4100120 (irq = 80) is a 16550A
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
Starting kswapd
Serial driver version 5.05c (2001-07-08) with MANY_PORTS SHARE_IRQ SERIAL_PCI enabled
ttyS00 at 0xb4100100x (irq = 79) is a 16550A
ttyS01 at 0xbc010000 (irq = 133) is a unknown
ttyS02 at 0xb4100140x (irq = 81) is a 16550A
ttyS03 at 0xb4100120x (irq = 80) is a 16550A
block: 128 slots per queue, batch=32
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
Uniform Multi-Platform E-IDE driver Revision: 6.31
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
hda: Maxtor 2F040L0, ATA DISK drive
ide0 at 0x400-0x407,0x438 on irq 87
hda: 80293248 sectors (41110 MB) w/2048KiB Cache, CHS=79656/16/63
Partition check:
hda: [mac] hda1 hda2 hda3 hda4 hda5 hda6 hda7 hda8 hda9 hda10 hda11 hda12 hda13 hda14
PPP generic driver version 2.4.1
PPP Deflate Compression module registered
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 4096 bind 8192)
ip_conntrack (512 buckets, 4096 max)
ip_tables: (C) 2000-2002 Netfilter core team
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 60k freed
## MIPS ## arch-specific shell functions defined
Starting rc.sysinit
Releasing /initrd and clearing ramdisk, if they exist
warning: can't open /var/mtab: No such file or directory
umount: /initrd: not mounted
Activating swap partitions
Adding Swap: 65532k swap-space (priority -1)
Loading i2c driver
Loading core system drivers
....