代码拉取完成,页面将自动刷新
import os
OUTPUT = "output"
BOOT_SRC = "./bootloader/boot.asm"
BOOT_BIN = "./output/boot.bin"
LOADER_SRC = "./bootloader/loader.asm"
LOADER_BIN = "./output/loader.bin"
IMG = "./output/a.img"
def main():
# os.path.exists(path) # path是文件夹或者文件的相对路径或者绝对路径
# 创建文件夹 output
if not os.path.exists(OUTPUT):
os.mkdir(OUTPUT)
# 编译 boot.asm
src = BOOT_SRC
out = BOOT_BIN
cmd_str = "nasm " + src + " -o " + out
print(cmd_str)
os.system(cmd_str)
# 编译 loader.asm
src = LOADER_SRC
out = LOADER_BIN
cmd_str = "nasm " + src + " -o " + out
print(cmd_str)
os.system(cmd_str)
# 创建一个 60M 的虚拟硬盘,由于搭了两套开发环境,所以这里 bximage 有两种命令格式
# 使用 “bximage --help” 命令可获得 bximage 的用法
# 另一个:bximage $@ -func="create" -hd=60 -imgmode="flat" -q
cmd_str = "bximage " + IMG + ' -hd -size=60 -mode="flat" -q'
print(cmd_str)
os.system(cmd_str)
# 将 boot.bin 写入硬盘 a.img 的第 0 个扇区
cmd_str = "dd if=" + BOOT_BIN + " of=" + IMG + " bs=512 count=1 conv=notrunc"
print(cmd_str)
os.system(cmd_str)
# dd if=$(BOOT_BIN) of=$(IMG) bs=512 count=1 conv=notrunc
# 将 loader.bin 写入硬盘 a.img 的第 2 个扇区开始的连续 20 个扇区(10K)
cmd_str = "dd if=" + LOADER_BIN + " of=" + IMG + " bs=512 count=20 seek=2 conv=notrunc"
print(cmd_str)
os.system(cmd_str)
print("Success!")
if __name__ == '__main__':
main()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。