That said. I read as much on killhdinitrd as I could:
Here's some links. You'll need to read up on the concept of
monte , then to answer just what killhdinitrd is:
There's the official killhdinitrd release thread, the killhdinitrd support thread and my thread on my experience using killhdinitrd in a monte configuration (you're reading it) and probably a few more.
After trying to digest that and determine what, if any of it, I needed to know for my situation. I dove in.
IMPORTANT: You must be accurate distinguishing between:
1. killinitrd - The one you've always used,
(Sleeper too...,[EDIT] - I've been notified that Sleep used replace-initrd. I stand corrected. - Thanks, w2kr.)
You can use killinitrd, which many people who manually monte'd their tivos used, to do the same thing. Here's a link, just pick your software version.
It just removes/replaces the initrd, in your monte-into (vmlinux.px kernel), which would perform the checks and will overwrite your hacks if not accomplished.
2. killhdinitrd - the newly created one from HD Team that patches certain kernels to allow them to boot and pass the check themselves. This new capability allows you to boot a modified kernel (no checks) and file system and thus a monte isn't required to hack your tivo unless you still want one, like me, OR there isn't a kernel that works on your tivo software version that is supported by killhdinitrd 0.9.2.
On to the adventure
-----------------------
The first thing I had to do was see if I had an original 31u5 kernel.
I did, so I grabbed a drive, dd'd the 31u5kernel.img to a non-active partition, ran killhdinitrd and SUCCESS!
I dd'd it back out to an image (31u5HDkernel.img) for later use.
I also dd'd out the normal killinitr'd kernel to vmlinux.px
Put 'monte', 'kmonte.o' and 'vmlinux.px' in the proper places where they're called in the script version you use. In my case, I put the files in /monte.
Rename rc.sysinit to rc.sysinit.real then place rc.sysinit.bogus in /etc/rc.d renamed to rc.sysinit.
Make sure everything's executable, and hasn't been edited with a windows/DOS editor, and reboot. The boot sequence follows:
1. /etc/rc.d/rc.sysinit (which is the renamed contents of rc.sysinit.bogus) starts up, checks for monte, performs the monte if it's there or jumps into the regular/original rc.sysinit if not.
2. Monte IS there so it boot's the vmlinux.px (normal 4.0.1b-02 killinitrd'd kernel) that I've been using.
So now here's the setup:
-------------------------------------
/dev/hda2 (nothing)
/dev/hda3 (nothing) Future home of the next tivosoftware release - Kernel
/dev/hda4 (nothing) Future home of the next tivosoftware release - File System
/dev/hda5 (nothing) Future home of my hacks for backup purposes
/dev/hda6 (killhdinitrd'd 31u5HDkernel.img) Set the bootpage to boot this straight up.
/dev/hda7 (normal root fs) Added kmonte.o, monte, and vmlinux.px
/dev/hda8 (swap)
(MFS partitions in between)
/dev/hda16 (empty)
So with partitions 2, 3, 4, 5, and 16 empty I should be able to use 2 or 5 for hacks.
3/4 will be where the next upgrade of tivo software will go.
I still have to research on how to stop the upgrade (probably use InstallSW.itcl) and allow me to capture the slices, rename the rc.sysinit to rc.sysinit.real and put the .bogus one in place... yada-yada...
Here's the rc.sysinit.bogus I'm using right now (thanks rc3105). There are about 3 versions going right now, I'm researching the differences and will keep updating what I have and documenting what works for me.
I won't publish this as a file and the content is subject to change.
[EDIT] I originally posted a slightly different .bogus given to me by rc3105 BEFORE he posted the other one. I've removed that one and duplicated the one Riley posted in the killhdinitrd thread. Having a different one posted caused confusion with the goal here. The goal here is simply to document the use of killhdinitrd and an rc.sysinit wrapper script to monte a tivo, and provide users with the knowledge to begin their own hacking using killhdinitrd.
Code:#!/bin/bash # bogus rc.sysinit, checks for monte export PATH=/sbin:/bin:/tivobin:/tvbin:.:/:/etc/rc.d export TERM=xterm export PS1='\h:\w$ ' #enable this next line if you're paranoid #/bin/bash</dev/ttyS2&>/dev/ttyS2& bootparm=`/sbin/bootpage -p /dev/hda` if [ "$sp" != "true" ]; then echo "sp=\"$sp\" must be first pass, trying to run monte" /sbin/insmod -f /monte/kmonte.o /monte/monte /monte/vmlinux.px "$bootparm sp=true" else echo "sp=\"$sp\" must be second pass" exec /etc/rc.d/rc.sysinit.real fi echo "monte sysinit wrapper complete, you're on your own"
NutKase



Reply With Quote
