编译阶段
安装RosBE,添加系统变量,使用RosBE环境在源码目录下运行configure.cmd生成目录output-MinGW-i386,接着进入该目录输入ninja bootcd来生成用于安装系统的bootcd.iso文件
使用x86 Native Tools Command Prompt for VS 2022来到源码目录下,检查m4以及BISON设置是否正确,准备编译sln:
set M4
set BISON_PKGDATADIR
如果这两条命令输出的 M4=C:\RosBE\Bin\m4.exe 和 BISON_PKGDATADIR=C:\RosBE\share\bison的话就需要手动设置路径(如果你修改了rosbe的安装路径请自行判断)
set BISON_PKGDATADIR=C:\RosBE\share\bison
set M4=C:\RosBE\Bin\m4.exe
然后修改PATH路径来使用visual studio的cmake
set PATH="你的visual studio的cmake.exe所在目录";%PATH%
configure.cmd VSSolution -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1
编译sln完成后会得到目录output-VS-i386-sln,进入该目录,找到ntoskrnl文件夹,打开里面的NTOS.sln,编译ntoskrnl.exe
镜像替换
下载windows server 2003的系统镜像,提取里面的kdcom.dll,或者也可以试试我提取的
https://ljhyyj.com/upload/kdcom.dll
使用ultraISO打开之前编译好的bootcd.iso,将之前使用vs编译好的ntoskrnl.exe和提取的kdcom.dll替换进去
安装reactos的时候语言可能需要选UK的英文,之前默认选择USA安装会卡死,选中文会因为没有字体文件全是乱码
vs安装wdk
需要比较新版本的vs,不知道具体哪个版本,反正我之前用的17.8是没有所需要的包的,还找了半天
打开visual studio installer,在单个组件中输入“(最新)”,安装所需的包
还要安装一下windowsw驱动程序工具包,不然装了wdk vs里面也没有相应功能
然后去微软官网下载wdk安装包,运行安装包,如果弹出这个画面说明你vs的配置有问题
安装成功后vs上会多出来这个东西
串口设置
我不清楚为什么使用命名管道的方式怎么连都连不上,reactos官网上也是更推荐使用虚拟串口转发的方案。
下载com0com,添加一组虚拟串口转发
设置虚拟机,连接刚刚配置的虚拟串口,如果vm检测不到新串口就重启电脑
配置vs,在刚刚安装wdk多出来的按钮里面找到configure target device,然后添加新的设备,这里network host name填自己电脑的名字
然后在下一步的配置中选择串口,不要勾选pipe,填刚刚添加的虚拟串口中的另外一个
添加完配置之后启动虚拟机,在启动选项中选reactos(debug),如果一切正常此时你的系统会中断在黑屏,同时可以观察到虚拟机串口连接成功
然后来到vs,打开调试选项卡选附加到进程,连接类型选windows kernel mode debugger,连接目标选刚刚添加的设备,进程选kernel
如果一切顺利,调试窗口将输出串口打开成功的信息,并且内核调试器成功建立连接
此时reactos从中断中恢复,成功进入系统