【OsDev:(自動(dòng)化構(gòu)建:寫鏡像,運(yùn)行)腳本】

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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容