美文网首页
【OsDev:(自动化构建:写镜像,运行)脚本】

【OsDev:(自动化构建:写镜像,运行)脚本】

作者: 月下蓑衣江湖夜雨 | 来源:发表于2020-11-07 00:33 被阅读0次

    virtualbox命令行启动、关闭虚拟机

    启动:

    VBoxManage  startvm  "ubuntu16.04"
    

    关机:

    VBoxManage  controlvm "ubuntu16.04"  poweroff
    

    说明:
    1、"ubuntu16.04"是虚拟机的名称;
    2、如果无法识别VBoxManage命令,需要添加环境变量;

    WSL dd命令使用

    dd if=/mnt/c/Users/zkai/Desktop/OsDevLab/boot/bootsec.com  of=/mnt/c/Users/zkai/VirtualBox\ VMs/OsDev/OsDev.vhd  conv=notrunc
    dd if=/mnt/c/Users/zkai/Desktop/OsDevLab/loader/loader.com  of=/mnt/c/Users/zkai/VirtualBox\ VMs/OsDev/OsDev.vhd  bs=512  count=15  seek=1  conv=notrunc
    dd if=/mnt/c/Users/zkai/Desktop/OsDevLab/c/bin/kernel.bin  of=/mnt/c/Users/zkai/VirtualBox\ VMs/OsDev/OsDev.vhd  bs=512  count=15  seek=19  conv=notrunc
    

    notrunc:不截断输出文件。

    安装虚拟机选择的虚拟硬盘格式时注意

    1、选择VHD
    2、固定大小
    VirtualBox不支持Raw格式的镜像(img),固定大小的VHD格式是最接近Raw格式的镜像。
    否则,像那种压缩格式的,dd命令写入的达不到预期的效果。

    固定方式VHD格式

    WSL 编译命令

    wsl内部使用:

    nasm  /mnt/c/Users/zkai/Desktop/OsDevLab/boot/reset/boot_reset.asm  -o  /mnt/c/Users/zkai/Desktop/OsDevLab/boot/reset/boot_reset.com
    

    wsl外部使用:

    wsl nasm  /mnt/c/Users/zkai/Desktop/OsDevLab/boot/reset/boot_reset.asm  -o  /mnt/c/Users/zkai/Desktop/OsDevLab/boot/reset/boot_reset.com
    

    reset虚拟机【写一个仅打印的boot到引导扇区,为了验证后面的修改是否有效】

    1、关闭虚拟机

    VBoxManage  controlvm "OsDev"  poweroff
    

    2、写引导扇区

    wsl dd if=/mnt/c/Users/zkai/Desktop/OsDevLab/boot/reset/boot_reset.com  of=/mnt/c/Users/zkai/VirtualBox\ VMs/OsDev/OsDev.vhd  conv=notrunc
    

    3、启动虚拟机

    VBoxManage  startvm  "OsDev"
    

    4、reset&run.bat

    VBoxManage  controlvm "OsDev"  poweroff
    timeout 3
    wsl dd if=/mnt/c/Users/zkai/Desktop/OsDevLab/boot/reset/boot_reset.com  of=/mnt/c/Users/zkai/VirtualBox\ VMs/OsDev/OsDev.vhd  conv=notrunc
    timeout 3
    VBoxManage  startvm  "OsDev"
    pause
    

    5、install&run.bat

    VBoxManage  controlvm "OsDev"  poweroff
    timeout 3
    wsl dd if=/mnt/c/Users/zkai/Desktop/OsDevLab/boot/bootsec.com  of=/mnt/c/Users/zkai/VirtualBox\ VMs/OsDev/OsDev.vhd  conv=notrunc
    wsl dd if=/mnt/c/Users/zkai/Desktop/OsDevLab/loader/loader.com  of=/mnt/c/Users/zkai/VirtualBox\ VMs/OsDev/OsDev.vhd  bs=512  count=15  seek=1  conv=notrunc
    wsl dd if=/mnt/c/Users/zkai/Desktop/OsDevLab/c/bin/kernel.bin  of=/mnt/c/Users/zkai/VirtualBox\ VMs/OsDev/OsDev.vhd  bs=512  count=15  seek=19  conv=notrunc
    timeout 3
    VBoxManage  startvm  "OsDev"
    pause
    

    【注意】上述脚本能成功执行的前提是VirtualBox管理程序是关闭的。
    6、c_make.bat【只编译c目录】

    wsl rm /mnt/c/Users/zkai/Desktop/OsDevLab/c/bin/*
    
    wsl nasm -f elf -o /mnt/c/Users/zkai/Desktop/OsDevLab/c/bin/kernel.o  /mnt/c/Users/zkai/Desktop/OsDevLab/c/kernel.asm
    wsl nasm -f elf -o /mnt/c/Users/zkai/Desktop/OsDevLab/c/bin/klib.o    /mnt/c/Users/zkai/Desktop/OsDevLab/c/klib.asm
    wsl gcc -m32 -c -o /mnt/c/Users/zkai/Desktop/OsDevLab/c/bin/start.o   /mnt/c/Users/zkai/Desktop/OsDevLab/c/start.c
    
    wsl ld -m elf_i386 -s -Ttext 0x30400 -o /mnt/c/Users/zkai/Desktop/OsDevLab/c/bin/kernel.bin  /mnt/c/Users/zkai/Desktop/OsDevLab/c/bin/kernel.o  /mnt/c/Users/zkai/Desktop/OsDevLab/c/bin/start.o  /mnt/c/Users/zkai/Desktop/OsDevLab/c/bin/klib.o
    pause
    

    相关文章

      网友评论

          本文标题:【OsDev:(自动化构建:写镜像,运行)脚本】

          本文链接:https://www.haomeiwen.com/subject/xdjovktx.html