Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

No boot on real hardware

Abierto
#573 5 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Necesita aclaración
Estado de actividad
Tranquilo
Stack tecnológico
rust

Línea de trabajo

Empieza reproduciendo el ejemplo básico en el hardware real afectado y compara su salida con el registro de QEMU, especialmente en el punto en el que se detiene después de la inicialización del framebuffer. El issue no indica ningún archivo fuente ni prueba; se considera completado cuando se haya identificado por qué el arranque se detiene en las máquinas indicadas y se haya demostrado que el kernel continúa más allá de ese punto en hardware real.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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.

Lenguaje dominante
Rust
Estrellas
1.7k
Forks
240
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Aún no hemos revisado los archivos de configuración de este proyecto. Empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de rust-osdev/bootloader

Todos los issues de rust-osdev/bootloader

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.