No boot on real hardware
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 35/100
- Issue-Typ
- Bug
- Klarheit
- Muss geklärt werden
- Aktivitätsstatus
- Ruhig
- Tech-Stack
- rust
- Bereich
- operating-systems
Rechercherichtung
Beginnen Sie damit, das grundlegende Beispiel auf der betroffenen realen Hardware zu reproduzieren und seine Ausgabe mit dem QEMU-Log zu vergleichen, insbesondere an der Stelle, an der es nach der Framebuffer-Initialisierung stoppt. Das Issue nennt weder eine Quelldatei noch einen Test; als erledigt gilt die Aufgabe, wenn identifiziert wurde, warum der Bootvorgang auf den gemeldeten Geräten stoppt, und nachgewiesen wurde, dass der Kernel auf echter Hardware über diesen Punkt hinaus fortfährt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
When i run the basic example in qemu i get
BdsDxe: loading Boot0002 "UEFI QEMU HARDDISK QM00001 " from PciRoot(0x0)/Pci(0x1,0x1)/Ata(Primary,Master,0x0)
BdsDxe: starting Boot0002 "UEFI QEMU HARDDISK QM00001 " from PciRoot(0x0)/Pci(0x1,0x1)/Ata(Primary,Master,0x0)
INFO : Framebuffer info: FrameBufferInfo { byte_len: 4096000, width: 1280, height: 800, pixel_format: Bgr, bytes_per_pixel: 4, stride: 1280 }
INFO : UEFI bootloader started
INFO : Using framebuffer at 0x80000000
INFO : Reading configuration from disk was successful
INFO : Trying to load ramdisk via Disk
INFO : Ramdisk not found.
TRACE: exiting boot services
TRACE: switching to new level 4 table
INFO : New page table at: PhysFrame[4KiB](0x101000)
INFO : Elf file loaded at Pointer {
addr: 0x0000000006051000,
metadata: 896768,
}
INFO : virtual_address_offset: 0x10000000000
INFO : Handling Segment: Ph64(ProgramHeader64 { type_: Ok(Load), flags: Flags(4), offset: 0, virtual_addr: 0, physical_addr: 0, file_size: 2b74, mem_size: 2b74, align: 1000 })
INFO : Handling Segment: Ph64(ProgramHeader64 { type_: Ok(Load), flags: Flags(5), offset: 2b80, virtual_addr: 3b80, physical_addr: 3b80, file_size: 90a3, mem_size: 90a3, align: 1000 })
INFO : Handling Segment: Ph64(ProgramHeader64 { type_: Ok(Load), flags: Flags(6), offset: bc28, virtual_addr: dc28, physical_addr: dc28, file_size: 1058, mem_size: 13d8, align: 1000 })
INFO : Mapping bss section
INFO : Entry point at: 0x100000043f0
INFO : Creating GDT at PhysAddr(0x121000)
INFO : Map framebuffer
INFO : Allocate bootinfo
INFO : Create Memory Map
INFO : Create bootinfo
INFO : Jumping to kernel entry point at VirtAddr(0x100000043f0)
Entered kernel with boot info: BootInfo { api_version: ApiVersion { version_major: 0, version_minor: 11, version_patch: 16, pre_release: false }, memory_regions: MemoryRegions { ptr: 0x280000000e8, len: 109 }, framebuffer: Some(FrameBuffer { buffer_start: 2199023255552, info: FrameBufferInfo { byte_len: 4096000, width: 1280, height: 800, pixel_format: Bgr, bytes_per_pixel: 4, stride: 1280 } }), physical_memory_offset: None, recursive_index: None, rsdp_addr: Some(125296660), tls_template: None, ramdisk_addr: None, ramdisk_len: 0, kernel_addr: 100995072, kernel_len: 896768, kernel_image_offset: 1099511627776, kernel_stack_bottom: 1649267445760, kernel_stack_len: 81920, _test_sentinel: 0 }
=(^.^)= meow
as expected, but when i run on a real machine i either get nothing at all(black screen) on an old laptop of mine, or only the first line, so
INFO : Framebuffer info: FrameBufferInfo { byte_len: 4096000, width: 1280, height: 800, pixel_format: Bgr, bytes_per_pixel: 4, stride: 1280 }
on an old pc of mine, it doesn't seem that it continues past there and my kernel starts, i tried writing simple kernels that just shut down the PC or send some data over the serial header on the motherboard but nothing ever worked, both machines are UEFI capable and UEFI was used during all of my tests. On the PC neither UEFI nor Legacy boot work, both get the same result, the laptop isn't legacy capable.
- Vorherrschende Sprache
- Rust
- Sterne
- 1.7k
- Forks
- 240
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus rust-osdev/bootloader
-
help wanted
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 67/100
rust-osdev/bootloader#581 · 2 Kommentare ·
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 20/100
rust-osdev/bootloader#555 · 2 Kommentare ·
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 30/100
rust-osdev/bootloader#534 ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 38/100
rust-osdev/bootloader#525 ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 45/100
rust-osdev/bootloader#514 · 3 Kommentare ·
Alle Issues in rust-osdev/bootloader
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
-
bug good first issue package: quic
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 78/100
-
`dora trace view` sends a non-canonical full UUID as-is, so a valid trace ID shows "No spans found" Offencli coordinator rust
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
-
area: tasks enhancement good first issue help wanted
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
Jason-jo17/Polybench#15 · 1 Kommentar ·