Debian – Fix Debian GNU/Linux on SSD in ThinkPad T-43 Ultra Bay Not Booting

bootdebiangrub2thinkpad

I am trying to get a few more useful years from a ThinkPad T-43 (x86 processor, model 1871-48U, BIOS 1.29, which, according to this appears to be the latest.) by installing Debian Buster i386. I want to put it on an SSD installed in the Ultra Bay, where the CD/DVD drive normally lives. I do not want or need dual-boot. I can install Buster, but can't get it to boot.

A few possibly relevant facts:

  • The main drive bay of the T-43 is equipped for a PATA device.
  • Windows 7 will boot from SSD in the Ultra Bay, with or without a drive in the main bay.
  • Patience is the key to installing to a drive in the Ultra Bay when there is no drive present in the main bay. You just have to wait through the timeouts. For reasons I don't understand, it seems impossible to install anything on a drive in the Ultra Bay without a drive present in the main (PATA) bay. I conjecture that has something to do with the internal PATA / SATA bridge making it "look like" there's a disk present, but that's just a guess.
  • I can install Debian Buster (i386) on a magnetic disk PATA drive in the main drive bay. It boots as expected, with no error messages and no grub prompt.

So, with a copy of Buster installed on the main PATA drive, I did another install from USB with the target being the SSD in the Ultra Bay. I made the choice of "everything in one partition," so there's only a root partition and a swap partition. I manually selected the SSD at the point in the process where grub is installed in the MBR.

That install would not boot. I got a blank screen with flashing cursor and nothing else.

If I boot from the PATA drive, I can see the SSD as /dev/sdb. I can mount the root (only) partition and see that the expected files are there. It just won't boot.

Attempting to force a boot loader on the SSD I tried

sudo grub-install /dev/sdb --force --boot-directory=/mnt as suggested in this answer.

That got me a grub> prompt after boot from the SSD. The response to ls was (hd0) (hd0,msdos5) (hd0,msdos1) (fd0). (There is no floppy drive, but there is a floppy connector, and it's enabled in the BIOS.)

I entered the following grub parameters:

grub> set root=(hd0,1)
grub> linux /vmlinuz root=/dev/sda1
grub> initrd /initrd.img
grub> boot

That actually got me to the Debian desktop after numerous errors of "ATA.1 device not ready" and "SRST failed errno -16." (I believe that ATA.1 is the main bay, which was empty at the time.)

Once I reached the desktop and opened a terminal, the update-grub command (as root) appeared to work.

Sadly, a reboot brings me right back to the grub> prompt.

I tried grub-install /dev/sda --force --boot-directory=/ after rebooting and entering the grub parameters above. Rebooting still gets me a grub prompt.

I'm pretty sure at this point that I'm doing something wrong with grub. Help on what I've been doing wrong will be most appreciated.

Note: In case others read this, someone in a ThinkPad forum commented offhand that "older ThinkPads will not boot from USB 3 drives." I could have saved myself a lot of grief had I seen that a couple of days earlier. I'd give credit if I remembered who posted that, but I don't.

Best Answer

Yup, I was missing something about grub. After booting through entering the grub parameters, one needs update-grub followed by grub-install /dev/sda I'm not sure why doing it with --force didn't have the same effect.

It boots without intervention now, but still takes forever because it's timing out on the "phantom" disk in the main bay. I think that's another question for another time.

Related Question