Again, this is stream of consciousness, complete with mistakes and backtracks, so please read to the end before trying to duplicate what I did. If you want to jump ahead to where I actually succeeded look for "phdisk.exe", but you will need to read the previous stuff as well. This is happening 21 Nov 2000.
After some careful searching around on Toshiba's web site, it appears that I may be able to upgrade my Toshiba 6.4 Gb disk (MK6409 MAV) to an 18 Gb disk (MK1814 GAV). It appears to have the same physical dimensions, consume less power, and otherwise be a compatible IDE/ATA drive. The disk came from Dirt Cheap Drives, and was about $250. Cheap enough to take a chance on.
The disk caddy is quite elegant, and I don't forsee problems with putting the new drive into it. Of course I really want to have a new caddy as well, but that appears to be very very hard to do. I'm working on the local Sony service place... They were quite helpful, but eventually told me that I could purchase each of the various components of the disk caddy for about $50 apiece, totalling about $200. Crazy! Where do old PCG838's go to die, I wonder? I'd love to visit the graveyard and scrounge a few bones.
The interesting problems will be:
1. Does my BIOS recognize the disk or does the 24 bit IDE problem restrict me to 8.4 Gb? Just how current is the BIOS in this venerable notebook?
2. Where do I put the 200 Mb hibernation partition? Will it work?
3. What is the easiest way to move my old system(s) from the 6.4 to the 18 Gb disk? I think the answer is to partition the new disk in a compatible way, do a workstation install of Linux onto a new, big partition, get the ethernet up, restore the old stuff onto the new disk, and then try booting off of the old stuff from the new disk.
In the meantime, I clearly need a backup of the old disk:
tar cvlf - / | rsh avidya "cat > /va/notebook/root.tar" tar cvlf - /usr | rsh avidya "cat > /va/notebook/usr.tar" tar cvlf - /home | rsh avidya "cat > /va/notebook/home.tar" tar cvlf - /mnt/win98 | rsh avidya "cat > /va/notebook/win.tar"
Here's what I get using "cfdisk /dev/hda" on the existing disk:
cfdisk 2.10f Disk Drive: /dev/hda Size: 6495068160 bytes Heads: 240 Sectors per Track: 63 Cylinders: 839 Name Flags Part Type FS Type [Label] Cyl Sect (MB) ----------------------------------------------------------------------- hda1 Boot Primary Win95 FAT32 269 4067280 2082.45 hda5 Logical Linux ext2 14 211680 108.39 hda6 Logical Linux ext2 340 5140800 2632.09 hda7 Logical Linux ext2 149 2252880 1153.48 hda8 Logical Linux swap 13 196560 100.64 hda9 Logical Linux swap 13 196560 100.64 hda10 Logical Linux swap 13 196560 100.64 hda4 Primary IBM Thinkpad hibernation 27 408240 209.02 Primary Free Space 1 15120 7.75
Partition Table for /dev/hda
---Starting--- ----Ending---- Start Number of # Flags Head Sect Cyl ID Head Sect Cyl Sector Sectors -- ----- ---- ---- ---- ---- ---- ---- ---- -------- --------- 1 0x80 1 1 0 0x0B 239 63 268 63 4067217 2 0x00 0 1 269 0x05 239 63 810 4067280 8195040 3 0x00 0 0 0 0x00 0 0 0 0 0 4 0x00 0 1 811 0xA0 239 63 837 12262320 408240 5 0x00 1 1 269 0x83 239 63 282 63 211617 6 0x00 1 1 283 0x83 239 63 622 63 5140737 7 0x00 1 1 623 0x83 239 63 771 63 2252817 8 0x00 1 1 772 0x82 239 63 784 63 196497 9 0x00 1 1 785 0x82 239 63 797 63 196497 10 0x00 1 1 798 0x82 239 63 810 63 196497
Well, my poor 6.4 Gb disk seems to have bitten the dust in the process of writing the tar files. It did finish writing them, but I cannot access the disk any more. Did it overheat? So now I'm really committed to this crazy idea.
Anyway, move the new disk into the caddy, plug it in, and find that the BIOS only sees 8.4 Gb worth. Oh well. This is likely to cause problems with the hibernate, and I'll have to be careful about where I put boot partitions, although Linux should still be able to deal with the entire disk.
Proceed with a Linux install as follows:
1. Boot linux install disk, ask for custom installation.
2. Partition the disk to have
1 = 2082 Mb, type 0b (this will be /mnt/win98) 4 = 209 Mb, type 0a 2 = 150 Mb, type 83 (this will be my /) 3 = the rest 5 = 100 Mb, type 82 swap (out of primary partition 3) 6 = the rest, type 83 (which I designate as /usr)
3. Answer the questions to do a minimal install (don't make a boot floppy)
4. Linux boots. It can't mount /mnt/win98 because it's unformatted, so shut down, put in windows install disk, let it format (AND NO MORE).
5. Bring up the internet:
ifconfig -a ifconfig eth0 ...my_IP_address... ifconfig eth0 ifconfig eth0 broadcast ...my_netmask... netmask 0xffffff00 route route add -net default gw ...my_gateway... netstat -rn
6. Try a hibernate -- sorry charlie, saves to memory not disk.
7. do a tar back from avidya of win98 to see if it works...
cd /; rsh ...my_IP_address... cat /va/notebook/win.tar | tar xvpf -
Then add an entry to lilo.conf:
rerun lilo, reboot, and it does seem to be OK. That's amazing.
8. Fool around with the BIOS. In [auto] detect it finds 17475 cyl, 15 hd, 63 sect -> 8455 Mb. Change to [user] with 35071 cyl, 16 hd, 63 sect -> 18100 Mb. Having done this Linux still boots but windows doesn't. The hope is that I can now put the hibernate partition at the very end.
OK, back to linux install, custom, use fdisk. This time partition, units are cylinders of 15120 * 512 bytes; disk has 240 heads, 63 sectors, 2334 cyl.
1 = 2082 Mb, type 0b (this will be /mnt/win98) 4 = 209 Mb = 27 cyl, range between 2316-2343, type 0a 2 = Extended, all the rest 5 = 150 Mb, type 83 (will be /, currently /mnt/root) 6 = 1000 Mb, type 83 (will be /usr, currently /mnt/usr) 7 = 2500 Mb, type 83 (will be /home, currently /mnt/home) 8 = 100 Mb, type 82 (swap) 9 = 100 Mb, type 82 (swap) 10 = 100 Mb, type 82 (swap) 11 = the rest, type 83 (which I designate as /)
3. Answer the questions to do a minimal install (make a boot floppy)
But now this won't boot -- it gets to "LI" but can't get out the LILO. So sad.
OK, problem probably is using the extended partition which extends over the 8.4G boundary. Try the following:
1 = 1-283 = 2139 Mb, type 0b (/mnt/win98) 4 = 2317-2343 = 209 Mb = 27 cyl, type 0a 2 = 284-1000 = Extended, front half, up to 7.7Gb 3 = 1001-2316 = back half of disk, (currently /mnt/big) 5 = 150 Mb, type 83 (will be /, currently /mnt/root) 6 = 1000 Mb, type 83 (will be /usr, currently /mnt/usr) 7 = 441-962 = 4033 Mb, type 83 (will be /home, currently /) 8 = 100 Mb, type 82 (swap) 9 = 100 Mb, type 82 (swap) 10 = 100 Mb, type 82 (swap)
This now works OK, but will not hibernate.
So let's go back to the idea of letting the BIOS use [auto] for the disk configuration, and put the hibernation partition at the very end of the 8.4 Gb. It thinks that it has 17475 cyl x 15 head x 63 sect = 16513875 blocks = 8455 Mb. When we get to Linux, we have to place things on even cylinder boundaries, which correspond to 15120 blocks, and 8455Mb corresponds to 1082.1875 linux cylinders. Hmmm. The problem is the incommesurability of what BIOS thinks the disk geometry is compared to Linux.
So let's try a hack. Delete all parititions using Linux (necessary since DOS fdisk won't deal with Linux logical partitions) and then boot up DOS from the system recovery CD and use DOS fdisk to create the windows and hibernation partitions. The hope is that DOS will take its cue from the BIOS. Of course I already know that DOS sees 17 Gb, so this may be a forlorn hope... But I very much suspect that the BIOS will not hibernate to a partition which disobeys its notion of what the geometry is.
Well, this doesn't seem to work either. All I can specify is partitions in units of Mbyte, and I'm extremely doubtful that the DOS fdisk will hit the right place. So one final attempt. I'll let the system recovery disk totally trash and restore the disk. It's going to give me a 17.3 Mbyte C: drive, so I suspect I'm screwed, but I'll let it do its thing.
Sniffing around the net yielded a few clues:
As it came out of the box, the drive had two partitions on it. Partition 1 had Win 98 with lots of apps on it, and Partition 4 is the Hibernation partition, where the machine puts RAM and video data when you put the book to sleep. Partition 4 was something like 130MB, which seemed like overkill to me. I did some research, and found that the size of Partition 4 only needs to be the size of your RAM plus about 3 MB for Video memory. Run phdisk.exe (it's in the SonySys directory) to resize it. I got the partition down to about 35 MB. fdisk reports the parition id type as 'a0'.
OK, I found phdisk.exe on the system recovery disk in a subdirectory called SPT. It apparently is Phoenix Systems NoteBIOS's way to create a hibernate partition! With a complete Win98 eating up my entire disk I ran it:
phdisk /ram192 /create /partition
This nuked the windows partition, and created primary partition 1 with 204 Mbyte of space. Sheesh. I then reran DOS fdisk and created 2082M for primary partition 2 and made it active. Upon rebooting the system disk again I was asked to format it, and I agreed.
I reboot linux again, and find that
1 = 1024-1306 = win98 4 = 997-1023 = hibernate
Nuke partition #1 and redo as:
1 = 1 - 283 = 2139 Mb, type 0b (/mnt/win98) ( 4 = 997-1023 = hibernate ) 3 = 1024-2343 = back half of disk, (currently /mnt/big) 2 = 284- 996 = Extended, front half, up to 7.7Gb 5 = 284- 304 = 150 Mb, type 83 (will be /, currently /mnt/root) 6 = 305- 440 = 1000 Mb, type 83 (will be /usr, currently /mnt/usr) 7 = 441- 954 = 4033 Mb, type 83 (will be /home, currently /) 8 = 955- 968 = 100 Mb, type 82 (swap) 9 = 969- 982 = 100 Mb, type 82 (swap) 10 = 983- 996 = 100 Mb, type 82 (swap)
After the minimal Linux installation was complete I tested the disk hibernation and it seems to work. Amazing. Then, in order to maximize the chances of getting Windows to work, I put the win98 recovery disk back in and let it reformat the windows partition once again.
So now all I have to do is clean up. I've got a bare-bones Linux in /dev/hda7 which allows me to access the net and move things back and forth. I mount the other partitions as /mnt/win98, /mnt/root, and /mnt/usr, and tar back the previous backups onto these partitions. I rerun lilo to point at this new partition /dev/hda5, reboot, and hey! my old system is back again. Even more amazing, windows appears to have survived this tarring and untarring intact. Now I wipe out the bare-bones linux in /dev/hda7 and restore my user files, and mount the back half of the disk as /d0. All done -- now I've got my 6.4 Gbyte old system in the 8.4 Gb front half of the disk and a new 10 Gb back half of the disk to play in.