From 091efd11fc11b8df1a6d3ca19a72440778a146dd Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Wed, 14 Oct 2026 13:11:47 +0800 Subject: [PATCH] =?UTF-8?q?chore(build):=20build.py=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=20--bootloader=EF=BC=88make=20-C=20boot=20/=20GNU-EFI=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bootx64.efi 不由 viperc 产出,长期停留在旧件——改了 boot.c 却仍在用旧引导器 (本次即踩到:boot.c 的栈区占位因 bootloader 未重编而未生效)。 - 传 --bootloader 时执行 make -C boot(MSYS make → WSL Ubuntu → objcopy 直接 产出 disk/EFI/BOOT/bootx64.efi) - 未传时若 boot/boot.c 比 disk/EFI/BOOT/bootx64.efi 新,打印过期提醒 --- build.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/build.py b/build.py index b084a7c..8eb9e71 100644 --- a/build.py +++ b/build.py @@ -9,6 +9,7 @@ import threading clean = '--noclean' not in sys.argv kernel_only = '--kernel-only' in sys.argv noapp = '--noapp' in sys.argv +bootloader = '--bootloader' in sys.argv # 编译内核 @@ -97,6 +98,20 @@ else: shutil.copy(vpui_path, "./disk/libs/vpui64.so") +# 编译 bootloader(GNU-EFI:MSYS make → WSL Ubuntu); +# bootx64.efi 不由 viperc 产出,容易忘记重编而一直用旧引导器(改了 boot.c / 内核预留逻辑 +# 却仍在用旧件)。显式传 --bootloader 才重编;未传时若 boot.c 比产物新则给出提醒。 +boot_src = "boot/boot.c" +boot_out = "disk/EFI/BOOT/bootx64.efi" +if bootloader: + print("[build] building bootloader (make -C boot)...") + boot_rc = os.system('make -C boot') + if boot_rc != 0: + print("[build] 警告: bootloader 构建失败(需 MSYS make + WSL Ubuntu + _UNCADK/tools/gnu-efi)") +elif os.path.exists(boot_src) and os.path.exists(boot_out) and os.path.getmtime(boot_src) > os.path.getmtime(boot_out): + print("[build] 警告: boot/boot.c 比 disk/EFI/BOOT/bootx64.efi 新 → bootloader 已过期,请用 --bootloader 重编") + + os.system('powershell -ExecutionPolicy Bypass -File ./Scripts/disk.ps1')