Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

No boot on real hardware

Aperta
#573 5 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
35/100
Tipo di issue
Bug
Chiarezza
Da chiarire
Stato di attività
Tranquilla
Stack tecnologico
rust

Direzione di ricerca

Inizia riproducendo l’esempio di base sull’hardware reale interessato e confronta il suo output con il log di QEMU, soprattutto nel punto in cui si arresta dopo l’inizializzazione del framebuffer. L’issue non indica alcun file sorgente né alcun test; il lavoro è completato quando è stato identificato il motivo per cui l’avvio si arresta sulle macchine segnalate e dimostrato che il kernel prosegue oltre quel punto sull’hardware reale.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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.

Lingua principale
Rust
Stelle
1.7k
Fork
240
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di rust-osdev/bootloader

Tutte le issue di rust-osdev/bootloader

Issue simili

Altre issue su Rust

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.