das Monkey's lba48 Experience

With help from TiVo Community forum member Robert S, I attempted to implement Todd Miller's lba48 kernel upgrade in addition to his previously developed bigswap upgrade. Here you will find as detailed a description of my experience as I can give. There is no new information here, and all the hard work has been done by other people; this is simply the documentation of my experience. Hopefully it will be helpful.

NOTE: If you are unfamiliar with opening your PC/TiVo, connecting and jumpering drives, burning ISO CDs, etc, you should consult Hinsdale's How-To, as a basic familiarity with computer hardware and TiVo upgrades is assumed.

Tools:
Relevant Links:
Preparation:
Before doing anything else, in Windows 2000, I went and downloaded all the relevant tools, burning an English ISO of KNOPPIX to one CD and the MFSTools 2.0 ISO to another. I don't know whether it was my burner or reader, but it took 6 tries for me to get a good KNOPPIX burn. Each burn presented me with a different error when trying to boot from the CD until I dropped the write speed from 24x to 4x. The lesson here is if KNOPPIX throws any odd errors about filesystems early in its boot sequence, it could very well be a bad burn. The ISO utilizes nearly the entire CD, so you should probably turn on data verification and check your burn thoroughly before trying to boot from it. I also downloaded the statically-linked MFSTools binaries in gzipped tar form, the lba48+big_swap kernel from Todd's FTP, and Tridge's bootpage and copied them all to my FAT32 drive (heretofore refered to as FAT32) so I'd have all the tools in one place. IE kept trying to format the bootpage file as a txt file, so I used an external HTTP downloader to get it.

Configuration:
I removed the drive from my TiVo (heretofore refered to as 40GB), along with the new Maxtor drive (heretofore refered to as 160GB) and FAT32 drive and connected them as follows:

Primary Master (/dev/hda): FAT32
Primary Slave (/dev/hdb): 40GB
Secondary Master (/dev/hdc): 160GB

Step 1: Boot into KNOPPIX and setup drives and mfstools

I inserted the KNOPPIX boot CD into my PC with the drives configured as indicated and booted up the machine. After the GUI loads, select KNOPPIX/Root Shell from the main KNOPPIX menu. Here you go through the same steps as normal (instead of "mfsbackup" style shortcuts, you must use full "mfstools backup"). Since we're using the mfstools binaries instead of the MFSTools bootdisk, we need to extract those binaries for use:
cd / (KNOPPIX drops you to a user dir)
mkdir /setup (create setup dir)
mount /dev/hda1 /setup (mount FAT32)
cd /setup
gunzip -d mfstools_2_0_static.tar.gz (unzip)
tar -xvf mfstools_2_0_static.tar
At this point, the mfstools-2.0 dir should exist under /setup. Before proceeding, I made a backup just to be safe:

Step 2: Backup Old Drive
/setup/mfstools-2.0/mfstool backup -6so tivo31.bak /dev/hdb
Step 3: Backup/Restore to New Drive

/setup/mfstools-2.0/mfstool backup -Tao - /dev/hdb | /setup/mfstools-2.0/mfstool restore -s 255 -xzpi /dev/hdc
As discussed in the linked threads, there's a problem with MFSTools 2.0 using a swap over 127, but I'm using the bigswap kernel, so it should work OK. There was no reason for me to choose 255 other than it being a nice round binary number. At this point, the 160GB drive should be expanded using the full size (since we did it while in KNOPPIX).

Step 4: Load up MFSTools in bswap mode

If everything was done correctly, there should be no more need for KNOPPIX, so I typed "shutdown" and waited for everything to terminate. I replaced the KNOPPIX CD with the MFSTools CD and rebooted the machine. Note that the drive configuration is still the same as above with hda1 as my FAT32 Tools partition, hdb as the Old 40GB Drive, and hdc as the New 160GB drive. At the boot prompt, I typed "vmlnodma hdc=bswap" and hit ENTER to boot in bswap mode for the new 160GB drive. Since we're in a new session, I needed to remount everything. I also ran bootpage to check which partition was primary.
mkdir /setup
mount /dev/hda1 /setup
/setup/bootpage /dev/hdc
My Primary Boot was 3 and Alternate Boot was 6.

Step 5: Copy New Kernel to New Drive
dd if=/setup/kernel.lba48+big_swap of=/dev/hdc3
I used 3, since bootpage listed it as my primary. Change the command to 6 if that's the primary, or to be extra safe, you can do both without harm. This kernel version gives me access to the extra space on the drive (lba48) and the extra swap I created in Step 3 (big_swap).

Step 6: Initialize New Swap
mkswap -v1 /dev/hdc8
Step 7: Install New Drive to TiVo

I hit CTRL-ALT-DELETE and let everything shut itself down, and then removed the 160GB drive from my PC and placed it into the TiVo and powered up. Everything came up smoothly, except I noticed I no longer had access to my locals. After some thought I realized that this was completely unrelated to this particular upgrade. I actually performed the upgrade with an old backup that was made with my old P3 card. Since I'm now using a P4, I think it got confused. I initiated a Clear Program Data and To Do List to reset everything, and it brought back the locals.



There you have it. That's pretty much everything. If you're doing more than one disk, or don't care about saved programs, or whatever, you can modify Step 3 to suit your needs. Just refer to the MFSTools documentation or Hinsdale's How-To for assistance. There's not much here that isn't in Todd's how-to, but I promised to write up my experience for the group, so here it is. Hopefully it can be helpful to someone. I cannot thank Todd Miller enough for writing the actual kernel and an explanation of how to get it working, and Robert S for walking me through some of the steps and helping explain how this stuff works.