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

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容