I recently acquired a Stone Computers NOTCHA-116-7 netbook which seemed to me to be a perfect candidate for running Serenity due to its CPU which which roughly equivalent to a PIII/Pentium-M, 1 GB RAM, 60 GB IDE HD, PS/2 keyboard/touchpad and that all-important integrated RTL-8139 NIC.
I spent all day yesterday setting up netboot.xyz on my home network specifically so I could try to install Serenity (USB boot failed and I had difficulty opening it up to physically access the disk) but I just get a few rows of pixels at the top of the screen when I try to boot serenity. Unfortunately it lacks a serial port and so I'm unable to get any real error messages out of it so if I've not already specifically requested that Serenity gains the ability to be able to print boot messages to the display then I'm requesting that now in order to help debug booting on such machines.
I have been able to successfully install Debian 10 on it and I have attached the dmesg output when booting Slackware on it, the key lines of which would seem to be:
DMI: Stone-Computers NOTCHA-116-7/VIA Demo Board, BIOS 6.00 02/21/2008
...
Initializing CPU#0
Initializing HighMem for node 0 (000373fe:0003bee0)
Initializing Movable for node 0 (00000000:00000000)
Memory: 900720K/981444K available (13177K kernel code, 1176K rwdata, 4208K rodata, 1004K init, 696K bss, 80724K reserved, 0K cma-reserved, 76680K highmem)
virtual kernel memory layout:
fixmap : 0xfffa1000 - 0xfffff000 ( 376 kB)
cpu_entry : 0xffc00000 - 0xffc28000 ( 160 kB)
pkmap : 0xff400000 - 0xff800000 (4096 kB)
vmalloc : 0xf7bfe000 - 0xff3fe000 ( 120 MB)
lowmem : 0xc0000000 - 0xf73fe000 ( 883 MB)
.init : 0xdae42000 - 0xdaf3d000 (1004 kB)
.data : 0xda8de5e0 - 0xdae22380 (5391 kB)
.text : 0xd9c00000 - 0xda8de5e0 (13177 kB)
Maybe this is failing due to the memory map as would seem to be the case for my other failed bare metal install? https://github.com/SerenityOS/serenity/issues/617
That's definitely a strange problem. From what I see, this is the BIOS provided memory map:
BIOS-provided physical RAM map:
BIOS-e820: [mem 0x0000000000000000-0x00000000000927ff] usable
BIOS-e820: [mem 0x0000000000092800-0x000000000009ffff] reserved
BIOS-e820: [mem 0x00000000000dc000-0x00000000000dffff] reserved
BIOS-e820: [mem 0x00000000000e8000-0x00000000000fffff] reserved
BIOS-e820: [mem 0x0000000000100000-0x000000003bedffff] usable
BIOS-e820: [mem 0x000000003bee0000-0x000000003bee9fff] ACPI data
BIOS-e820: [mem 0x000000003beea000-0x000000003befffff] ACPI NVS
BIOS-e820: [mem 0x000000003bf00000-0x000000003fffffff] reserved
BIOS-e820: [mem 0x00000000e0000000-0x00000000efffffff] reserved
BIOS-e820: [mem 0x00000000fec00000-0x00000000fec0ffff] reserved
BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
BIOS-e820: [mem 0x00000000fff80000-0x00000000ffffffff] reserved
There are 2 usable regions, one below the 1MB (high memory) region, one above. In comparison to the previous issue you opened there were 2 usable regions above 1MB. So, I assume this issue isn't related to memory map problems...
I looked for the IDE controller in the text log but only I found these lines:
aic94xx: Adaptec aic94xx SAS/SATA driver version 1.0.3 loaded which is a SATA/SAS controller
and -
LSI 3ware SAS/SATA-RAID Controller device driver for Linux v3.26.02.000.
which is a RAID controller I presume.
and then:
pata_via 0000:00:0f.0: version 0.3.4
scsi host0: pata_via
scsi host1: pata_via
ata1: PATA max UDMA/133 cmd 0x1f0 ctl 0x3f6 bmdma 0x4460 irq 14
ata2: PATA max UDMA/133 cmd 0x170 ctl 0x376 bmdma 0x4468 irq 15
which means IDE is presumably working. I'd say that you might check the BIOS settings, just to make sure you selected to use only IDE (maybe it is labeled "legacy support" or "IDE")...
Overall it seems your machine is suitable for booting Serenity. However, I still suspect that the problem could be the IDE controller. Searching "pata_via" in google leads me to this page:
https://github.com/torvalds/linux/blob/master/drivers/ata/pata_via.c
It could be easily an IDE controller that requires a unique setup, but Serenity doesn't know how to handle such type of controllers and fails to boot.
Thanks for giving your feedback Liav! We can only guess without seeing the actual boot errors of course.
The only storage option in the BIOS apart from changing the device boot order is to enable/disable 32 bit transfers. I tried both settings and both failed to boot. The BIOS boot order menu lists the HD as an IDE disk so that is why I am presuming it is IDE rather than SATA. I've not been able to open it up yet to check the interface type.
Thanks for giving your feedback Liav! We can only guess without seeing the actual boot errors of course.
The only storage option in the BIOS apart from changing the device boot order is to enable/disable 32 bit transfers. I tried both settings and both failed to boot. The BIOS boot order menu lists the HD as an IDE disk so that is why I am presuming it is IDE rather than SATA. I've not been able to open it up yet to check the interface type.
Don't bother opening it up just to see what is the interface type, since it is written in the dmesg log:
ata2.00: ATA-7: ST760211DE, 3.01, max UDMA/66
ata2.00: 117210240 sectors, multi 16: LBA48
ata2.00: limited to UDMA/33 due to 40-wire cable
The ATA IDENTIFY CMD returned that the interface is 40-wire cable. Even if that interface is "emulated", that is also what Serenity will probably see during boot.
As AK said in the IRC channel, our best bet is to build a boot parameter that will enable text mode. Then we can debug what's going on.
Thanks to @supercomputer7, we now have a method for getting a text boot to debug boot issues on machines without a serial port. All you need to do is edit Kernel/Arch/i386/Boot/boot.S and remove | MULTIBOOT_VIDEO_MODE from the end of the .set multiboot_flags line (line 5).
After doing that, I can see that serenity stops booting after detecting my PCI devices. It detects my RTL8139 and assigns it a mac address then the last line it prints before booting stops is:
Syscall: int 0x82 handler installed
From my checking now, the problem is probably with your IDE controller. I tried to boot Serenity on q35 machine (with an AHCI controller), it halts on the same message:
MM initialized.
Initializing APIC, base: Pfee00000
Enabling local APIC for cpu #0
PIT: 1000 Hz, square wave (4a9)
PCI device: bus=0 slot=0 function=0 id=8086:29c0
PCI device: bus=0 slot=1 function=0 id=1234:1111
PCI device: bus=0 slot=2 function=0 id=8086:10d3
PCI device: bus=0 slot=3 function=0 id=1b36:000d
PCI device: bus=0 slot=4 function=0 id=8086:2415
PCI device: bus=0 slot=31 function=0 id=8086:2918
PCI device: bus=0 slot=31 function=2 id=8086:2922
PCI device: bus=0 slot=31 function=3 id=8086:2930
BXVGA: framebuffer @ Pfd000000
Process: New process PID=0 with name=colonel
Thread{0x00309788}: New thread TID=0 in colonel(0)
Process: New process PID=1 with name=init_stage2
Thread{0x0030a080}: New thread TID=0 in init_stage2(1)
Process: New process PID=2 with name=syncd
Thread{0x0030a938}: New thread TID=0 in syncd(2)
Process: New process PID=3 with name=Finalizer
Thread{0x0030b1e8}: New thread TID=0 in Finalizer(3)
Syscall: int 0x82 handler installed
This is your IDE Controller according to your dmesg log:
pci 0000:00:0f.0: [1106:0581] type 00 class 0x01018a
pci 0000:00:0f.0: reg 0x20: [io 0x4460-0x446f]
pci 0000:00:0f.0: legacy IDE quirk: reg 0x10: [io 0x01f0-0x01f7]
pci 0000:00:0f.0: legacy IDE quirk: reg 0x14: [io 0x03f6]
pci 0000:00:0f.0: legacy IDE quirk: reg 0x18: [io 0x0170-0x0177]
pci 0000:00:0f.0: legacy IDE quirk: reg 0x1c: [io 0x0376]
Which corresponds to:
0x8A - ISA Compatibility mode controller, supports both channels switched to PCI native mode, supports bus mastering
instead of the QEMU IDE controller:
0x80 - ISA Compatibility mode-only controller, supports bus mastering
The garbage pixels at the top of your screen are probably text content being written into the VGA framebuffer. I would try turning off the graphical stuff that we ask grub to do in [boot.s] (you might want the [multiboot specification] handy), which should let serenity write its boot log out to the screen. This is assuming there's not a serial port available to get some logs from.
Edit: After reading this thread all the way through, I see you've already done this. Hooray!
lspci says it is using a CX700/VX700 RAID Controller for the IDE interface and a VT8237/VX700 PCI bridge.
lspcisays it is using a CX700/VX700 RAID Controller for the IDE interface and a VT8237/VX700 PCI bridge.
Please check if you can disable the RAID functionality in the BIOS settings. It will be very useful if you can copy the lspci output here (although I gathered some info from the dmesg log). I wonder if Linux detects some sort of SAS/SATA controller (I think I saw something like that in the dmesg log) and tries to use it (again, lspci output will help here).
There is no option to disable RAID in the BIOS. The only disk option in the BIOS (except changing boot order) is to enable/disable 32 bit IO.
@Quaker762 sent me a patch for the PATA code that prints an error at boot when no supported IDE controller is found which has proven that that is the issue here. I leave it to him to commit it.
Here is the full lspci output:
00:00.0 Host bridge: VIA Technologies, Inc. CX700/VX700 Host Bridge (rev 10)
00:00.1 Host bridge: VIA Technologies, Inc. CX700/VX700 Host Bridge
00:00.2 Host bridge: VIA Technologies, Inc. CX700/VX700 Host Bridge
00:00.3 Host bridge: VIA Technologies, Inc. CX700/VX700 Host Bridge
00:00.4 Host bridge: VIA Technologies, Inc. CX700/VX700 Host Bridge
00:00.7 Host bridge: VIA Technologies, Inc. CX700/VX700 Host Bridge
00:01.0 PCI bridge: VIA Technologies, Inc. VT8237/VX700 PCI Bridge
00:0f.0 IDE interface: VIA Technologies, Inc. CX700/VX700 RAID Controller
00:10.0 USB controller: VIA Technologies, Inc. VT82xx/62xx UHCI USB 1.1 Controller (rev 90)
00:10.1 USB controller: VIA Technologies, Inc. VT82xx/62xx UHCI USB 1.1 Controller (rev 90)
00:10.2 USB controller: VIA Technologies, Inc. VT82xx/62xx UHCI USB 1.1 Controller (rev 90)
00:10.4 USB controller: VIA Technologies, Inc. USB 2.0 (rev 90)
00:11.0 ISA bridge: VIA Technologies, Inc. CX700/VX700 PCI to ISA Bridge
00:11.7 Host bridge: VIA Technologies, Inc. CX700/VX700 Internal Module Bus
00:13.0 PCI bridge: VIA Technologies, Inc. CX700/VX700 Host Bridge
00:13.1 PCI bridge: VIA Technologies, Inc. CX700/VX700 PCI to PCI Bridge
01:00.0 VGA compatible controller: VIA Technologies, Inc. CX700/VX700 [S3 UniChrome Pro] (rev 03)
02:01.0 Audio device: VIA Technologies, Inc. VT8237A/VT8251 HDA Controller (rev 10)
03:09.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (rev 10)
Most helpful comment
The garbage pixels at the top of your screen are probably text content being written into the VGA framebuffer. I would try turning off the graphical stuff that we ask grub to do in [boot.s] (you might want the [multiboot specification] handy), which should let serenity write its boot log out to the screen. This is assuming there's not a serial port available to get some logs from.
Edit: After reading this thread all the way through, I see you've already done this. Hooray!