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

2020-11-07  本文已影响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
上一篇 下一篇

猜你喜欢

热点阅读