Damn Small Linux Forums

Full Version: Unable to boot on old Toshiba laptop
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I have a Toshiba Satellite Pro 4200 (P3, 533MHz, 128MB RAM) and am really having a hard time getting DSL to boot.

Before we begin, I'm a Linux veteran of 30 years, so talk technical, as I shall be doing.

Firstly, the live CD will not boot. Or not past loading the kernel. It just kernel panics. Which is no biggie really, there's ways around that. I'm running the laptop on an 8GB SD card in a 44-pin IDE to SD adapter. So I can install "offline" using my main PC and QEmu, which I have done.  I've made an image of the OS, fully working, using QEmu running with the same specs as the laptop (P3 cpu, 128MB). That was tricky to begin with, as the initrd is too big for 128MB RAM - you can't have an initrd that is more than 1/4 the amount of available space, and at 39MB that's just a few MB too many. But rebuilding the initrd with modules=dep brings it down to a mere 8MB which is perfect.

So... moving it on to the laptop. The kernel boots, and the initrd loads. Then it tries to (as far as I can tell) mount the root filesystem, and fails, and can't run init.  But I cannot work out why.  It doesn't tell me that is what is happening, in so many words, it's what I have inferred from the debug output I can get.  Which is (I had to video capture this and step it frame by frame to get the juicy bits...):

Code:
/init: line 7: mkdir: Value too large for defined data type
/init: line 8: mkdir: Value too large for defined data type
/init: line 9: mkdir: Value too large for defined data type
/init: line 10: mkdir: Value too large for defined data type
/init: line 11: mkdir: Value too large for defined data type
/init: line 12: mkdir: Value too large for defined data type
/init: line 13: mount: Value too large for defined data type
/init: line 14: mount: Value too large for defined data type
/init: line 17: cat: Value too large for defined data type
Loading, please wait...
/init: line 36: mount: Value too large for defined data type
/init: line 39: ln: Value too large for defined data type
... and so on for a number of lines and commands up to line 89 ...
Begin: Loading essential drivers ... done.
/init: line 149: cat: Value too large for defined data type
Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.

Then the kernel panics. "Attempted to kill init! exit code = 0x00000100"

There might be something inbetween the last Begin: and the kernel panic, but if there is, it goes past too quiclky even for the video capture to get it.

I thought at first it might be balking at the ext4 filesystem I had for root, but I have rebuilt the image with ext2 and it's identical in behaviour.

Here's the full kernel panic data:
[Image: panic.png]

The full boot sequence can be grabbed here: https://majenko.co.uk/i/dsl-boot.mkv

I am out of ideas. I've even tried booting the root FS direct without the initrd, using various paths for the root (direct /dev, label, uuid, etc) and using /bin/bash as the init (linux ... root=/dev/sda2 init=/bin/bash ...) to no avail - all panic.

I've been tearing my hair out for days with this, even having people live on my twitch stream trying to help me get it going, with no luck.

.... help?

Update: I have cranked the frame rate of my capture dongle, and got an extra message that flew by too quickly before:

No root device specified. Boot arguments must include a root= parameter

Spoiler.... there *is* a root= parameter, and I have tried various different permutations to no avail....

Looking at the init scripts that are executing it could be that `cat` isn't functioning (along with the other essential commands) because of this "Value too large for defined data type" problem, which means the big `case` for setting the environment variables (including ROOT) from the kernel command line parameters (which uses cat to grab them from /proc) fails miserably.

To further cloud the waters, here's what I found on stack exchange for that error:

Quote:The error message you get matches the error code EOVERFLOW, which in the open system call is returned if a 32-bit application tries to open a large (>= 2 GB) file:
Quote:EOVERFLOW
pathname refers to a regular file that is too large to be opened. The usual scenario here is that an application compiled on a 32-bit platform without -D_FILE_OFFSET_BITS=64 tried to open a file whose size exceeds (1<<31)-1 bytes;
As the text hints, 32-bit applications can access larger files, iff they are compiled with the necessary settings (using larger integers for the relevant data types, and calling the proper versions of the system calls).

It would seem that the application you are running isn't compiled to support large files. And no, you can't change that except by recompiling it or getting a version with large file support.

Could it be that we can't have a filesystem of > 2GB or something silly like that? Lemme just "quickly" rebuild my image on smaller SD card... (actually on second thoughts, that can't be it, since it boots with this same image fine on qemu, so it's something specific to this laptop) ... (also you need 3.2GB for the root partition, so no... that's 100% not it.... Just rubberducking here....)
Ohohoho.... Progress.

This is a bug with BusyBox that keeps cropping up. The bundled version suffers from it. However this version which is statically linked seems to work perfectly. At least it doesn't give the error, and I can run commands in an initrd shell, which I couldn't before...
Good work--way to stay after it, man!
It goes deeper.

The problem seems to exist in the main installation too. I can now get the system to partially boot, but even /bin/dash suffers from the same fate. Replacing that with the statically linked busybox (linking /bin/sh to /bin/busybox instead of /bin/dash) lets me get a bit further into the boot sequence, but still things are very, very, broken. For a start, I can't load any kernel modules because of this "Value too large for defined data type" problem.

I don't get why it's only on this hardware that it's showing the problem. In a VM, or in a similarly specc'd desktop computer it's perfectly fine - just not on this Toshiba laptop.
Bonjour @Majenko,
Cela ne résoudra probablement pas ton problème.
As-tu essayé de démarrer en mode xorg=safe (paramètre sur la ligne kernel du chargeur d'amorçage) ?
Bon courage.

---------------- Translate in english ----------------
Hello @Majenko,

This probably won't solve your problem.

Have you tried to boot in xorg=safe mode (parameter on the kernel line of the bootloader)?

Good luck.
Never having had any Toshibas, still looking for BIOS info. Pretty funny I just found the Satellite Pro 4200 Manual you uploaded on the wayback (Thanks @majenko!)...

Not that you haven't tried this, but just another idea:

Could there be some Int13h thing screwing with LBA on that device (but maybe not on another device?) Say, for example, you fashion a CD with PloP on it and boot that to try to get a USB (different hardware device to BIOS) to boot?

I know it shouldn't be different, but maybe it is...
(08-10-2024, 03:32 PM)grindstone Wrote: [ -> ]Never having had any Toshibas, still looking for BIOS info. Pretty funny I just found the Satellite Pro 4200 Manual you uploaded on the wayback (Thanks @majenko!)...

Not that you haven't tried this, but just another idea:

Could there be some Int13h thing screwing with LBA on that device (but maybe not on another device?) Say, for example, you fashion a CD with PloP on it and boot that to try to get a USB (different hardware device to BIOS) to boot?

I know it shouldn't be different, but maybe it is...

It's unlikely, since I have had other linuxes (linuces?) working (though none have worked in the way I want through either being too old to support the hardware I need, or just plain strange like Tiny Core).

There are certainly strange things, hardware wise, on this laptop though - the soundcard (a Yamaha SD-XG) isn't supported properly by any Linux I've found yet, and that soundcard is specifically what I want to use on this laptop - I'm looking to turn it into a MIDI synth with a USB MIDI input piping through direct to the XG synth. The *only* OS I have found so far that does work with it is Windows 98. Even XP won't work with the SD-XG and only gives me the OPL3. So I've gone back to 98 for the time being - I'll revisit Linux again some time - and now just need to find a USB MIDI adapter that doesn't bluescreen Windows 98 and actually works....