Hallo Leute, ich hab mir in letzter Zeit einige Tutorials bezüglich Kernelschreiben angesehen...das ist alles schön und gut, die Codes versteh ich auch soweit. Das Problem ist jetzt allerdings der Compeliervorgang: Es ist ja asm+ C file zu .o files... und dann? Wie kann ich einen Bootfähigen USB erstellen? (Ich benutze NASM auf MAC) Tausend Dank, Alles Liebe, Paul
Und der Teil steht nicht im Tutorial? Das ist ein hochkomplexes Thema. Das kann man nicht mal eben so schnell beantworten. Du hast ja nichtmal die Plattform genannt, auf welcher gebootet werden soll. Auf dem MAC selbst kann man m.W. sowieso nichts eigenes booten dank SecureBoot.
Dr. Sommer schrieb: > sowieso nichts eigenes booten dank SecureBoot Das ist auf modernen PCs nicht besser, die sind auch zugenagelt.
Georg G. schrieb: > Das ist auf modernen PCs nicht besser, die sind auch zugenagelt. Bei vielen kann man es aber im BIOS-Setup abschalten. Noch... Man kann es aber auch im qemu ausprobieren.
Paul schrieb: > soweit. Das Problem ist jetzt allerdings der Compeliervorgang: Es ist ja > asm+ C file zu .o files... und dann? Was sind das für komische Tutorials wenn da nicht mal steht wie man einen Linker benutzt und was ein Linkerscript ist? > Wie kann ich einen Bootfähigen USB erstellen? (Ich benutze NASM auf MAC) Zunächst mal musst Du herausfinden, wie der Bootvorgang deines Systems abläuft. z.B. war es früher beim BIOS Boot so, das das Bios auf den ersten Sektor der Festplatte geschaut hat, und von dort einen Bootcode geladen hat (ja das sind nur ein paar hundert Byte) Dieser Bootcode wurde an eine bestimmte Addresse im RAM geladen (immer die selbe) und von da an musste der Bootcode selbst sehen wie es weiter geht. Der Bootcode konnte in gewissen Grenzen dazu noch mit dem Bios interagieren. Auf dieser Basis musste mann dann sein Linkerscript machen, also das die .o Dateien in ein Binary zusammengetan werden konnten. Heuzutage ist das mit EFI etwas einfacher (Wenn man Secure-Boot auschaltet) Bei EFI gibt es eine EFI Systempartition, in der man den Bootlader, Programme oder auch den Kernel als Binärdatei ablegen kann. Das EFI Bios liest dann die komplette Datei in den RAM (an definierte Addresse wiederum) und started diese. Das funktioniert z.B. beim Linux Kernel, beim Grub Bootloader mit EFI Modus oder auch beim "Memtest86" tool. Ich denke mit dem Quellcode der o.g. Tools kommst Du schon weiter. Alternativ: Hier steht im Prinzip alles was Du machen must: https://wiki.osdev.org/UEFI
Vorschlag: Zieh dir ein Ubuntu ISO und erstelle damit einen bootfähigen USB-Stick. Dann durchsuchst du den Stick und findest z.B. einen Ordner isolinux (so heißt er zumindest bei mir). Darin sind mehrere .cfg Dateien. Die schaust du dir genauer an. Hier noch ein Beispiel:
1 | label rescue |
2 | menu label ^Rescue mode |
3 | kernel /install/vmlinuz |
4 | append vga=788 initrd=/install/initrd.gz rescue/enable=true --- quiet |
Für dich relevant ist die Zeile mit dem Eintrag "kernel". Hinweis: Dieser Fall ist noch für den alten Bootmodus. Ob das bei UEFI auch noch so funktioniert, weiß ich nicht.
Ok danke für die vielen hilfreichen Antworten! Ich werde einmal alles ausprobieren ;) Alles Liebe, Paul
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.