Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Question on second stage #481

Open
boredcoder411 opened this issue Jan 12, 2025 · 5 comments
Open

Question on second stage #481

boredcoder411 opened this issue Jan 12, 2025 · 5 comments

Comments

@boredcoder411
Copy link

I've read the through the first bootsector's code, and everything looks good with objdump: _second_stage_start label is supposed to be at ram 0x7e00 and the code calls it, but I'm trying to make my own second stage and don't understand just how the second stage is placed after the first one. I've tried assembling a program with nasm -f bin and just cat appending to the original file, but that doesn't seem to work, even if the new code is at offset 0x7e00. Am I missing something?

@bjorn3
Copy link
Contributor

bjorn3 commented Jan 12, 2025

create_mbr_disk inserts padding as necessary to write it to the right location on the disk. And the first stage then loads a fixed sector on the disk to a fixed address in ram.

@boredcoder411
Copy link
Author

So I can't just write bytes at the second sector?

@bjorn3
Copy link
Contributor

bjorn3 commented Jan 12, 2025

Looks like the second stage is actually written to the second sector:

let second_stage_start_sector = 1;
When cat'ing are you sure the first file for the boot sector is exactly 512 bytes?

@boredcoder411
Copy link
Author

Yep! Because the linker script fills with 00 and 55aa at the 511 and 512 bytes

@boredcoder411
Copy link
Author

https://github.com/boredcoder411/rust_boot
If you want to check it out, but it looks fine to me

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants