Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Unable to boot on old Toshiba laptop
#1
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....)
Reply


Messages In This Thread
Unable to boot on old Toshiba laptop - by majenko - 08-08-2024, 02:51 PM

Forum Jump:


Users browsing this thread: 4 Guest(s)