LTS 安装
在Store中搜索Linux,获取22.04以上版本Ubuntu。
因为环境安装脚本支持版本为22.04:
安装完直接打开,不出所料报错了。
报错原因是没有打开子系统,去控制面板开启下面的选项。
开启后仍然报相同的错误,又去github搜索了一下错误码,发现是内核版本太低了。
按照说明更新后,报错更新,这下能看懂了,原因是BIOS未开启虚拟化。
这个报错可能是三个原因导致的:
1、主板未开启虚拟化(我的问题)
2、windows未开启虚拟化
3、windows未开启Hyper-V
到这里需要打开三个选项,并根据自己的主板品牌用对应的方法开去虚拟化。我的是华硕主板,搜索对应的方法:
果然OK了:
最近又用到WSL,突然发现打不开了,还是报一样的错,但是上面三个都开了。查了一下
DISM /Online /Enable-Feature /All /FeatureName:Microsoft-Hyper-V
bcdedit /set hypervisorlaunchtype auto
这是同样问题的issue页,简单来说,还是hyperV没开启。
https://github.com/microsoft/WSL/issues/5363
这是微软官方的配置文档,详细描述了需要开启的配置:
https://learn.microsoft.com/en-us/windows/wsl/install-manual
克隆&编译项目
bustub的github地址如下:
https://github.com/cmu-db/bustub
首先在WSL中安装复制粘贴工具,这样才能在windows与虚拟机之间复制粘贴
sudo apt-get autoremove open-vm-tools
sudo apt-get install open-vm-tools-desktop
安装完成后关闭虚拟机重启,右键点击就可以粘贴了。
cd …
sudo mkdir DBMS
sudo git clone https://github.com/cmu-db/bustub.git
克隆成功后就可以在windows下打开了。
接下来按照课程的要求配置环境
cd DBMS
cd bustub
sudo build_support/packages.sh
到这里会自动安装依赖包。
接着编译项目,最后一行的2是编译所用CPU核心数,可以根据自己的配置设置,bustub项目并不大,设置1也可以。
sudo mkdir build
cd build
sudo cmake -DCMAKE_BUILD_TYPE=Debug …
sudo make -j2
至此,项目的编译运行应该没有什么问题了。
此外,如果需要对某个作业进行单测,可以按照课程描述进行单测:
比如完成了LRUK替换策略-lru_k_replacer任务后,可以去test/buffer文件夹下面找到对应的单测文件,然后在这里make后执行测试。
IDE配置
我选择vscode连接wsl进行代码的编写,保存时需要授予权限。ding是用户名,bustub是当前文件夹的子文件或子文件夹,即授予权限的文件夹
sudo chown -R ding bustub
编写代码完成后,首先讲测试用例的第二个形参的DISABLE_前缀去掉。cd进入build文件夹,执行下面两行代码,其中lru_k_replacer是需要单测的测试用例名称
然后执行测试: