Dune项目地址:https://github.com/project-dune/dune
我的初步实验环境是:
此处是centos系列的,
这里主要注意的是要内核版本是3.x系列的可能不较容易出问题。
经过多方测试,我们在使用VMWare进行部署ubunut14时,内核版本自带的是4.x系列,也可以进行编译通过。但是此处需要注意一个事情,在使用VMWare的时候,最好使用VMWare14版本以上的,我之前用VMWare10.版本,虽然成功部署dune项目,但是运行起来后一直出现段错误,后来改成VMWare14版本后,错误消失。
如果在centos系统没有安装Linux内核版本的话,可以进行安装,yum install kernels headers。或者使用
wget ftp://ftp.pbone.net/mirror/ftp.scientificlinux.org/linux/scientific/7.0/x86_64/updates/security/kernel-devel-3.10.0-693.el7.x86_64.rpm,下载rpm包,然后使用 rpm -ivh xxx.rpm 命令进行安装也可以。
使用 cd /usr/src/kernels可以查看linux系统内核版本是否安装。
在服务器上面使用git clone https://github.com/project-dune/dune.git 命令将项目拷贝下来,cd dune进入到项目
首先使用 ./dune_req.sh查看服务器的环境是否符合Dune项目的要求
如果是在centos系列下,当你在root用户状态下,运行make命令进行编译,此时可能会发现程序如下报错
没关系,这个时候我们需要做一个工作,将dune/kerl/目录下的compat.h文件中的 pgprot2cachemode函数给注释掉,如下图
此时,保存退出,在dune目录下运行make命令编译时候就不会报错了。
当然,如果是在ubuntu14版本的系统下,该错误可能不会出现,则可以进行忽略上面操作。
当我们按照dune项目中的insmod kern/dune.ko发现还是报错说已经存在此文件,说明在编译的时候自动在/dev目录下加上了dune文件,则此命令可以忽略。若没有报错则表明之前/dev目录下没有dune文件,此时正确无误。
接着,我们就要测试test文件里面的案例文件了
当我们在make的时候,会报错
这里提示缺失了pthread,在这里之前也卡了很久,后来找到答案,安装glibc静态库即可,
此处我们暂且只需要运行 yum install glibc-static 进行安装glibc就能解决该问题,安装成功后,继续在test文件夹下面运行make命令,此时就会编译通过。
根据git项目的指示,可能我们还需要在按照dune项目要的要求,在/etc/default/grub文件中的GRUB_CMDLINE_LINUX_DEFAULT选项中增加 nokaslr参数,添加成功后是否启动系统根据不同情况来看。
然后退出到dune文件夹下面,运行test/hello就能看到输出结果
运行test/test也能看到dune项目的测试结果
注:如果需要在linux桌面下使用vscode对项目进行调试的时候,需要以root方式打开vscode才能正确运行项目,此时需要使用命令:
sudo code --user-data-dir="~/.vscode-root" 打开IDE才行。
--------------------------------------------------------------------------------------------------------------------------------------
如果您也在搭建该项目或曾经成功搭建过,或者在对dune项目内部过程有所研究,或者对此项目感兴趣
欢迎邮件联系,可发邮件至[email protected],发邮件请备注Dune