virtualbox命令行啟動(dòng)、關(guān)閉虛擬機(jī)
啟動(dòng):
VBoxManage startvm "ubuntu16.04"
關(guān)機(jī):
VBoxManage controlvm "ubuntu16.04" poweroff
說(shuō)明:
1、"ubuntu16.04"是虛擬機(jī)的名稱;
2、如果無(wú)法識(shí)別VBoxManage命令,需要添加環(huán)境變量;
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:不截?cái)噍敵鑫募?/p>
安裝虛擬機(jī)選擇的虛擬硬盤格式時(shí)注意
1、選擇VHD
2、固定大小
VirtualBox不支持Raw格式的鏡像(img),固定大小的VHD格式是最接近Raw格式的鏡像。
否則,像那種壓縮格式的,dd命令寫入的達(dá)不到預(yù)期的效果。
固定方式VHD格式
WSL 編譯命令
wsl內(nèi)部使用:
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虛擬機(jī)【寫一個(gè)僅打印的boot到引導(dǎo)扇區(qū),為了驗(yàn)證后面的修改是否有效】
1、關(guān)閉虛擬機(jī)
VBoxManage controlvm "OsDev" poweroff
2、寫引導(dǎo)扇區(qū)
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、啟動(dòng)虛擬機(jī)
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
【注意】上述腳本能成功執(zhí)行的前提是VirtualBox管理程序是關(guān)閉的。
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