From 524829370d27f82f4d9a111c15a298b91a4248c9 Mon Sep 17 00:00:00 2001 From: mintsuki Date: Sat, 20 Feb 2021 23:04:06 +0100 Subject: [PATCH] misc: Initial 3-stage bootloader work --- Makefile | 12 +++-- limine-install.c | 47 ++++++++++++++----- limine-pxe.bin | Bin 31353 -> 29196 bytes limine.bin | Bin 31737 -> 29580 bytes limine.sys | Bin 0 -> 4036 bytes stage2.map | Bin 4655 -> 4 bytes stage2/Makefile | 13 ++++-- stage2/drivers/vbe.c | 108 +++++++++++++++++++++---------------------- stage2/lib/blib.h | 3 ++ stage2/lib/config.c | 17 +++++++ stage2/linker.ld | 18 +++++--- 11 files changed, 139 insertions(+), 79 deletions(-) create mode 100644 limine.sys diff --git a/Makefile b/Makefile index 3d3b559a..fac6d112 100644 --- a/Makefile +++ b/Makefile @@ -10,12 +10,15 @@ PATH := $(shell pwd)/toolchain/bin:$(PATH) all: limine-install -limine-install: limine-install.c limine.o - $(CC) $(CFLAGS) -std=c11 limine.o limine-install.c -o limine-install +limine-install: limine-install.c limine.o limine_sys.o + $(CC) $(CFLAGS) -std=c11 limine.o limine_sys.o limine-install.c -o limine-install limine.o: limine.bin $(OBJCOPY) -B i8086 -I binary -O default limine.bin limine.o +limine_sys.o: limine.bin + $(OBJCOPY) -B i8086 -I binary -O default limine.sys limine_sys.o + clean: rm -f limine.o limine-install @@ -28,6 +31,7 @@ bootloader: stage2 decompressor cd bootsect && nasm bootsect.asm -fbin -o ../limine.bin cd pxeboot && nasm bootsect.asm -fbin -o ../limine-pxe.bin cp stage2/stage2.map ./ + cp stage2/stage3.bin ./limine.sys bootloader-clean: stage2-clean decompressor-clean test-clean rm -f stage2/stage2.bin.gz test/stage2.map test.hdd @@ -72,8 +76,8 @@ echfs-test: test.hdd bootloader | all echfs-utils -g -p0 test.hdd import stage2.map boot/stage2.map echfs-utils -g -p0 test.hdd import test/test.elf boot/test.elf echfs-utils -g -p0 test.hdd import test/bg.bmp boot/bg.bmp - echfs-utils -g -p0 test.hdd import test/font.bin boot/font.bin - ./limine-install test.hdd + ./limine-install ./ test.hdd + echfs-utils -g -p0 test.hdd import ./limine.sys boot/limine.sys qemu-system-x86_64 -net none -smp 4 -enable-kvm -cpu host -hda test.hdd -debugcon stdio ext2-test: test.hdd bootloader | all diff --git a/limine-install.c b/limine-install.c index e672f540..74cf034d 100644 --- a/limine-install.c +++ b/limine-install.c @@ -260,34 +260,53 @@ static bool _device_write(const void *buffer, uint64_t loc, size_t count) { } while (0) extern uint8_t _binary_limine_bin_start[], _binary_limine_bin_end[]; +extern uint8_t _binary_limine_sys_start[], _binary_limine_sys_end[]; int main(int argc, char *argv[]) { int ok = 1; uint8_t *bootloader_img = _binary_limine_bin_start; size_t bootloader_file_size = (size_t)_binary_limine_bin_end - (size_t)_binary_limine_bin_start; + uint8_t *stage3_img = _binary_limine_sys_start; + size_t stage3_file_size = + (size_t)_binary_limine_sys_end - (size_t)_binary_limine_sys_start; uint8_t orig_mbr[70], timestamp[6]; + char *limine_sys_path = NULL; + int limine_sys = -1; if (sizeof(off_t) != 8) { fprintf(stderr, "ERROR: off_t type is not 64-bit.\n"); goto cleanup; } - if (argc > 1 && strstr(argv[1], "limine.bin") != NULL) { - fprintf(stderr, - "WARNING: Passing the bootloader binary as a file argument is\n" - " deprecated and should be avoided in the future.\n"); - argc--; - argv[1] = argv[0]; - argv++; - } - - if (argc < 2) { - printf("Usage: %s [GPT partition index]\n", argv[0]); + if (argc < 3) { + printf("Usage: %s [GPT partition index]\n", argv[0]); goto cleanup; } - device = open(argv[1], O_RDWR); + #define MAX_STAGE3_PATH 1024 + + limine_sys_path = malloc(MAX_STAGE3_PATH); + if (limine_sys_path == NULL) { + perror("ERROR"); + goto cleanup; + } + + snprintf(limine_sys_path, MAX_STAGE3_PATH, "%s/limine.sys", argv[1]); + + limine_sys = creat(limine_sys_path, 0644); + if (limine_sys == -1) { + perror("ERROR"); + goto cleanup; + } + + if (write(limine_sys, stage3_img, stage3_file_size) != + (ssize_t)stage3_file_size) { + perror("ERROR"); + goto cleanup; + } + + device = open(argv[2], O_RDWR); if (device == -1) { perror("ERROR"); goto cleanup; @@ -483,6 +502,10 @@ cleanup: free(cache); if (device != -1) close(device); + if (limine_sys_path != NULL) + free(limine_sys_path); + if (limine_sys != -1) + close(limine_sys); return ok; } diff --git a/limine-pxe.bin b/limine-pxe.bin index a0664bdd56f453e2086368e508bae10b23b33b5a..405cc4e785b3e2f8ed796e45d737dcaecd4072e4 100644 GIT binary patch delta 27223 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 delta 29397 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 diff --git a/limine.bin b/limine.bin index 94f837c28b8a6ac52975e7a9a84f55be454b869c..05615af03c5ab5b6adb0da0ec3b91ad1caefc98f 100644 GIT binary patch delta 27220 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 nYQ>GX@xA-L?|$F? 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 diff --git a/limine.sys b/limine.sys new file mode 100644 index 0000000000000000000000000000000000000000..54d47749936495ae8e51b27af529fc6eb3a1eed6 GIT binary patch literal 4036 zcmb_feQZN zN)zr(owxP!u(Us#PThn$E2Dp`(n2+nz#m~YARIK*g+L)|vf?tgdX~M`TTng-kT1yy? zuU5R??sk2H)y z8lK}MV3`gT^JMjnY-zzk*$BT;eSOhEsDxjBqB#wx71>(7Ryh0IX}hL3r>p;oxE|JP zt+?`d*+LPqdl4a)L!S0_J~RC#zre5a;pvR+!s_cC?S^>(045Mo*3M^j5mnt^4n3&{ zClX&&o)XQJe`ng9`qY+Bq$)u^{5c9Jt;p+bDdX^6C@U$S8B75^hvHIoMYfHp#t0aV zFq%0z4{0Txc^A*d`p&Y@Cht^z&>fmo%~}FhS6q-Mt-Nad8d^;h%HIl2K_zQ%rD7~9 zu2s!o3X#UAgt_aZX4&9H&8%2Q#~^2&^MwtItW9(3x88>#VO zv;rYx`9pSkb81IqRt_c`BXjQHpO&O5JiA1J{v2+&OAQj-01MR3Mbu}i=oGY`+HUx) zIb!|mMA^&g_m8?9~N3H}?9&eC(a+S)Pb06UIU6)9i$?UL;zzu<==2T2MAV06(eZmRMdy$vggE zEa!|W%QDaR#JkIqMN|p;OBNBf^k@7Y5=fu=_d*eYYs>r!B;Xs#$;LBST4YIVW$mrh zqMa^dJs7-}?D2JE3;LP8mLBHHsyTOKWb|@kbGH}|VmY<#0IZLyeLsz6^WJV==&5t`JHIM>Q>u7&4Tb~lIT zO1rm(=j7l|V+4JPC?o6nm>eEO_=2j%gC(XIo*3b_vro()#c>8At*xdQ#q1Lzqo``e zs6cgRgB2|;zAnkASQ2;+3O?U<6=V~^A*$>F<1rA~z&P*B{m00PQO5yhxm+CJx91R= zsG;bSg9|dH*3O9xeKLlZ6G7sm*u+2~lDlV=)P0Tg`Ri=xz zpKIR$$?EZ8{J zqZ-MHqyL-rg2D#093)gc|3S|{f^2Sq&Aq$Wpq2*>oy7*DUtnb$Rs+|FUjhEEm%x{R ztHqx$@YBSf(oOTlz2G|+`F5;Gf1dc)z!&=RBEPu6FW&q=64Op1-@*;YLIC$1k$O2&PiiYDB#1<{A3@#%p>+uaHO~QRArD_$Utn4f zgs0A%!Jn~#XbdUof3T6}7t zhO#k^h-~~xjjHC6vd^)>@m4lC>H|WQiW=BUa&b#8yLM3$3#z*0z=FC!LM61Bg_`tE zQGz2}qn=0#OK~)revIDP;3NLXZIkurfFL@w1EeMWu@A2{fW&({v9d7XS_{@4QH^9p zkFYu`aNTObI&BUdrg>pe7lHZfw7Y_|9weY;M?n61ktWktf)*Zff>g}3y9BN1zA)>_ zH%0qVKZ;Qo2r^8S0j=@hBzJI9MLGUH;Z+R=)B3Pi|lyQ%7r|5(<-QkhiESB zuT}YVF-3mfB4leih=SJhp6X4O=%Gc4? z5|Gr!yH_TQuENff&A60yd2lHXYzNP%X~OYBt3J9w#9pQqT`zQ{vTqDeU`f&N5&vZa zpOAV31rv4AoJrNgeRRiVgQb)WA1;W9>uuui_Uf@d`b_e*h;FD6IF;e(-ZLc-J7HUB rEB`N-|4UBE;gLL!U3QNYwx?_!_>vL#gZ^*>SVn%Z)H0F(%get341y<) literal 0 HcmV?d00001 diff --git a/stage2.map b/stage2.map index 5a8a0beba0e08707e8a998fc3865ea6164da1618..7bde8641b93c7c55f7365596085b0ce811d0b6c8 100644 GIT binary patch literal 4 LcmezW|Nnmg3Hk&5 literal 4655 zcmai2Z>$|f6+hQM5GbNW6Doc&G{r*b?dxl48bczA(F9{qf+6_9VejtTdpB=)XW#7X zd-qmIkUysJLqTH|YE2MYAQCW05hFz_0zM6t)!WZlB%*@{1d*3s! zUwVGOb9Uy;nKS2{`{+g@QJ6p*T0auoS|%!pL|D*eAPZ?kK9HiD(-nX$hC!0h7aE}5 ziA}L(I}Ms#SnQNq(Sat%c3Y?EaFg?kKh@-9k<&tx=tYJWLFiQU!!G@HBvxDhyJq~x z^rgzY-4C)Jz1`tBGc+|4tIw~f8UOj9X7Gu~6g^%u{v3-n!yX^6p(>5gvRBaaH5X@& zda0)PSbqZK9j0~&6NfW}2vwOGsp&7Zf+OAu!WlYQb8(^RExrqJk~htT z(LtK4B*w=dSVpx|6-i{|)yp-R8cYXy9MbNUbeAM^ba1(Xm)pLL7AsAj2)^Uz80T?T z=JdX=j>PLArZNrlA(c+VW23J)F;#Pt?ylu_sPduUB$y9$RM0~Wm5t29jtJA7j*i5( zoGpWd7Hh)Vz6_iPdM3_#IQ;8P)V4R*`dY)F%@=fT&ESBWn#g@}=@`YIWMHDWm=QhH zkV1w=X;H*GCB0B7vRLL%M%5GO`(M`&tPkUC<(YgD4083*d z^1*L&=|aK5m>#M4i7WVLldpn(*1diaHnt?9y{RH|AG|++kYT@D zAaU^uUcIk^VPA$bcqqLrFr}8X;r>d)PW4LUT{)suE;Bmt0G|c^yQPjkh`?h}BL(_~ z3Pl>^bkp~+%D_z9$7qe)r~sxt)kY%;+Eet=hjBZ@6oqm|7=CR>Qd4xi|e5k2-zSF4myT%Bvp4-t(3-b}1|8+f<-q^I8HBZ0R&+l<21O~qD<*W6~m#>MU>O#pLiQ)48MJP4OB6U z(M%mC>V%QI6hpTH=0S$W^dzJx?&1B}`!e(fh{9;2%9v(;YAZM{4P$^xN)xM$mO%0j zc|4E_efmi(j1I}pi#QE>lHUC@1WRSzxMvTD%hp4Y1*xQ2XkrW}{Wyuxi?YJxTII-_ zBP)DDTb>%FU@Ef`O;}30>S_Pv+zzyV93#7m8M^G5F(aNmX#rfrtGOU4CEfaSBwEtl zzD)#qo(yqJqi*hv>m`d~4I@K`^*0bYQ+cyC#b0`d=?& zQ`}WVcS6y)rzZe$&3TSFanZ_&numPCeb0~S^xxQ}?8Ca$$vhkMD;n}0PDazE2OwfZ zLTVVqX5BH=awJVEZ5nij&gZ?$=ujyg(F-+i)Bl{~Huq4hFwg9IezcY^N^us+0qGZE zq%+%1#}euuuRwIh_+y@r$JiTQa?6zC^oHL#dN5|Z7wlY)pc@h|vjIzUkWd0KARL6m z0%oEee{>>dozFn@?bXiUdurUBkLVw4DeY4DEyWi~SDvuX%+3keLFx=M*rA%FlaM)5 zb}C)Fa*$Xp6_K%zE_GATvD6+p99tBe!2;-Brr4Rp&sMN7bRXo)^zz{$OJ!`rq=LhWAYyR$R zZRx>8w)QoLZJGSUzwo5Eu+V9*yOVPmgz9#A{N2&ykeNNxr>np@e{3C@dxPiZtfa^P z3&Chim3RqC8@!XH5yhnyzxyP;LM?9}1g_|t<;`y~MOx}z|R7gD1TL(x^#Uf&{{h&Io}1s>U&v;Y)LPq`*c zr#y1=CGGx@zdpHRdWtq|#JTvVpEtg8gzZY*5p?hBMqu|-(c2%d3BUe-YQ`>c#)YF# z+#2VD;0>jU=@KuyN&K@O@hq7JXpp-+!GM#9ZUezTbnPE<&> 24) #define R(rgb) (uint8_t)(rgb >> 16) @@ -69,7 +69,7 @@ static int margin_gradient; #define B(rgb) (uint8_t)(rgb) #define ARGB(a, r, g, b) (a << 24) | ((r & 0xFF) << 16) | ((g & 0xFF) << 8) | (b & 0xFF) -static inline uint32_t colour_blend(uint32_t fg, uint32_t bg) { +stage3_text static inline uint32_t colour_blend(uint32_t fg, uint32_t bg) { unsigned alpha = 255 - A(fg); unsigned inv_alpha = A(fg) + 1; @@ -80,19 +80,19 @@ static inline uint32_t colour_blend(uint32_t fg, uint32_t bg) { return ARGB(0, r, g, b); } -void vbe_plot_px(int x, int y, uint32_t hex) { +stage3_text void vbe_plot_px(int x, int y, uint32_t hex) { size_t fb_i = x + (vbe_pitch / sizeof(uint32_t)) * y; vbe_framebuffer[fb_i] = hex; } -static void _vbe_plot_bg_blent_px(int x, int y, uint32_t hex) { +stage3_text static void _vbe_plot_bg_blent_px(int x, int y, uint32_t hex) { vbe_plot_px(x, y, colour_blend(hex, background->get_pixel(background, x, y))); } -void (*vbe_plot_bg_blent_px)(int x, int y, uint32_t hex) = vbe_plot_px; +stage3_data void (*vbe_plot_bg_blent_px)(int x, int y, uint32_t hex) = vbe_plot_px; -static uint32_t blend_gradient_from_box(int x, int y, uint32_t hex) { +stage3_text static uint32_t blend_gradient_from_box(int x, int y, uint32_t hex) { if (x >= frame_width && x < frame_width + VGA_FONT_WIDTH * cols && y >= frame_height && y < frame_height + VGA_FONT_HEIGHT * rows) { return hex; @@ -133,7 +133,7 @@ static uint32_t blend_gradient_from_box(int x, int y, uint32_t hex) { return colour_blend((hex & 0xffffff) | (new_alpha << 24), bg_px); } -void vbe_plot_background(int x, int y, int width, int height) { +stage3_text void vbe_plot_background(int x, int y, int width, int height) { if (background) { for (int yy = 0; yy < height; yy++) { for (int xx = 0; xx < width; xx++) { @@ -149,7 +149,7 @@ void vbe_plot_background(int x, int y, int width, int height) { } } -void vbe_plot_rect(int x, int y, int width, int height, uint32_t hex) { +stage3_text void vbe_plot_rect(int x, int y, int width, int height, uint32_t hex) { for (int yy = 0; yy < height; yy++) { for (int xx = 0; xx < width; xx++) { vbe_plot_px(x + xx, y + yy, hex); @@ -157,7 +157,7 @@ void vbe_plot_rect(int x, int y, int width, int height, uint32_t hex) { } } -void vbe_plot_bg_blent_rect(int x, int y, int width, int height, uint32_t hex) { +stage3_text void vbe_plot_bg_blent_rect(int x, int y, int width, int height, uint32_t hex) { for (int yy = 0; yy < height; yy++) { for (int xx = 0; xx < width; xx++) { vbe_plot_bg_blent_px(x + xx, y + yy, hex); @@ -171,7 +171,7 @@ struct vbe_char { uint32_t bg; }; -void vbe_plot_char(struct vbe_char *c, int x, int y) { +stage3_text void vbe_plot_char(struct vbe_char *c, int x, int y) { uint8_t *glyph = &vga_font[(size_t)c->c * VGA_FONT_HEIGHT]; vbe_plot_bg_blent_rect(x, y, VGA_FONT_WIDTH, VGA_FONT_HEIGHT, c->bg); @@ -184,7 +184,7 @@ void vbe_plot_char(struct vbe_char *c, int x, int y) { } } -static void plot_char_grid(struct vbe_char *c, int x, int y) { +stage3_text static void plot_char_grid(struct vbe_char *c, int x, int y) { if (!double_buffer_enabled) { vbe_plot_char(c, x * VGA_FONT_WIDTH + frame_width, y * VGA_FONT_HEIGHT + frame_height); @@ -192,14 +192,14 @@ static void plot_char_grid(struct vbe_char *c, int x, int y) { grid[x + y * cols] = *c; } -static void clear_cursor(void) { +stage3_text static void clear_cursor(void) { struct vbe_char c = grid[cursor_x + cursor_y * cols]; c.fg = text_fg; c.bg = text_bg; plot_char_grid(&c, cursor_x, cursor_y); } -static void draw_cursor(void) { +stage3_text static void draw_cursor(void) { if (cursor_status) { struct vbe_char c = grid[cursor_x + cursor_y * cols]; c.fg = cursor_fg; @@ -208,7 +208,7 @@ static void draw_cursor(void) { } } -static void scroll(void) { +stage3_text static void scroll(void) { clear_cursor(); for (int i = cols; i < rows * cols; i++) { @@ -227,7 +227,7 @@ static void scroll(void) { draw_cursor(); } -void vbe_clear(bool move) { +stage3_text void vbe_clear(bool move) { clear_cursor(); struct vbe_char empty; @@ -246,37 +246,37 @@ void vbe_clear(bool move) { draw_cursor(); } -void vbe_enable_cursor(void) { +stage3_text void vbe_enable_cursor(void) { cursor_status = true; draw_cursor(); } -void vbe_disable_cursor(void) { +stage3_text void vbe_disable_cursor(void) { clear_cursor(); cursor_status = false; } -void vbe_set_cursor_pos(int x, int y) { +stage3_text void vbe_set_cursor_pos(int x, int y) { clear_cursor(); cursor_x = x; cursor_y = y; draw_cursor(); } -void vbe_get_cursor_pos(int *x, int *y) { +stage3_text void vbe_get_cursor_pos(int *x, int *y) { *x = cursor_x; *y = cursor_y; } -void vbe_set_text_fg(int fg) { +stage3_text void vbe_set_text_fg(int fg) { text_fg = ansi_colours[fg]; } -void vbe_set_text_bg(int bg) { +stage3_text void vbe_set_text_bg(int bg) { text_bg = ansi_colours[bg]; } -void vbe_double_buffer_flush(void) { +stage3_text void vbe_double_buffer_flush(void) { for (size_t i = 0; i < (size_t)rows * cols; i++) { if (!memcmp(&grid[i], &front_grid[i], sizeof(struct vbe_char))) continue; @@ -291,7 +291,7 @@ void vbe_double_buffer_flush(void) { } } -void vbe_double_buffer(bool state) { +stage3_text void vbe_double_buffer(bool state) { if (state) { memcpy(front_grid, grid, rows * cols * sizeof(struct vbe_char)); double_buffer_enabled = true; @@ -308,7 +308,7 @@ void vbe_double_buffer(bool state) { } } -void vbe_putchar(uint8_t c) { +stage3_text void vbe_putchar(uint8_t c) { switch (c) { case '\b': if (cursor_x || cursor_y) { @@ -354,7 +354,7 @@ void vbe_putchar(uint8_t c) { } } -bool vbe_tty_init(int *_rows, int *_cols, uint32_t *_colours, int _margin, int _margin_gradient, struct image *_background) { +stage3_text bool vbe_tty_init(int *_rows, int *_cols, uint32_t *_colours, int _margin, int _margin_gradient, struct image *_background) { int req_width = 0, req_height = 0, req_bpp = 0; char *menu_resolution = config_get_value(NULL, 0, "MENU_RESOLUTION"); @@ -495,7 +495,7 @@ struct vbe_mode_info_struct { uint8_t reserved2[189]; } __attribute__((packed)); -static void get_vbe_info(struct vbe_info_struct *buf) { +stage3_text static void get_vbe_info(struct vbe_info_struct *buf) { struct rm_regs r = {0}; r.eax = 0x4f00; @@ -503,7 +503,7 @@ static void get_vbe_info(struct vbe_info_struct *buf) { rm_int(0x10, &r, &r); } -static void get_vbe_mode_info(struct vbe_mode_info_struct *buf, +stage3_text static void get_vbe_mode_info(struct vbe_mode_info_struct *buf, uint16_t mode) { struct rm_regs r = {0}; @@ -513,7 +513,7 @@ static void get_vbe_mode_info(struct vbe_mode_info_struct *buf, rm_int(0x10, &r, &r); } -static int set_vbe_mode(uint16_t mode) { +stage3_text static int set_vbe_mode(uint16_t mode) { struct rm_regs r = {0}; r.eax = 0x4f02; @@ -550,7 +550,7 @@ struct edid_info_struct { uint8_t checksum; } __attribute__((packed)); -static int get_edid_info(struct edid_info_struct *buf) { +stage3_text static int get_edid_info(struct edid_info_struct *buf) { struct rm_regs r = {0}; r.eax = 0x4f15; @@ -572,13 +572,13 @@ struct resolution { uint16_t bpp; }; -static struct resolution fallback_resolutions[] = { +stage3_data static struct resolution fallback_resolutions[] = { { 1024, 768, 32 }, { 800, 600, 32 }, { 640, 480, 32 } }; -bool init_vbe(struct vbe_framebuffer_info *ret, +stage3_text bool init_vbe(struct vbe_framebuffer_info *ret, uint16_t target_width, uint16_t target_height, uint16_t target_bpp) { print("vbe: Initialising...\n"); diff --git a/stage2/lib/blib.h b/stage2/lib/blib.h index 0d327b01..5f8ddf44 100644 --- a/stage2/lib/blib.h +++ b/stage2/lib/blib.h @@ -43,4 +43,7 @@ uint64_t strtoui(const char *s, const char **end, int base); typedef void *symbol[]; +#define stage3_text __attribute__((section(".stage3_text"))) +#define stage3_data __attribute__((section(".stage3_data"))) + #endif diff --git a/stage2/lib/config.c b/stage2/lib/config.c index c9c7fa9b..df60239f 100644 --- a/stage2/lib/config.c +++ b/stage2/lib/config.c @@ -16,7 +16,18 @@ bool config_ready = false; static char *config_addr; +extern symbol stage3_addr; + int init_config_disk(struct volume *part) { + struct file_handle stage3; + + if (fopen(&stage3, part, "/limine.sys") + && fopen(&stage3, part, "/boot/limine.sys")) { + panic("Could not open stage 3"); + } + + fread(&stage3, stage3_addr, 0, stage3.size); + struct file_handle f; if (fopen(&f, part, "/limine.cfg") @@ -35,6 +46,12 @@ int init_config_disk(struct volume *part) { } int init_config_pxe(void) { + struct tftp_file_handle stage3; + if (tftp_open(&stage3, 0, 69, "limine.sys")) { + panic("Could not open stage 3"); + } + tftp_read(&stage3, stage3_addr, 0, stage3.file_size); + struct tftp_file_handle cfg; if (tftp_open(&cfg, 0, 69, "limine.cfg") && tftp_open(&cfg, 0, 69, "tomatboot.cfg")) { diff --git a/stage2/linker.ld b/stage2/linker.ld index 8551fe38..b4cf68e2 100644 --- a/stage2/linker.ld +++ b/stage2/linker.ld @@ -5,18 +5,24 @@ SECTIONS { . = 0x8000; - .text : { + .entry : { KEEP(*(.entry*)) - KEEP(*(.realmode*)) - *(.text*) } - .rodata : { + .realmode : { + KEEP(*(.realmode*)) + } + + .stage2 : { + *(.text*) + *(.data*) *(.rodata*) } - .data : { - *(.data*) + .stage3 : { + stage3_addr = .; + *(.stage3_text*) + *(.stage3_data*) } .bss : {