dangzero环境配置问题

文章目录

  • 安装虚拟机
  • dangzero
    • Compile the KML kernel
    • Obtain Ubuntu 20.04
    • Create VM
    • Install Ubuntu
    • Run Ubuntu
    • Move KML kernel to VM
    • Inside VM: Install Kernel
    • Update grub to auto-select KML kernel
    • Boot parameters
    • Run KML
    • Test KML
    • Obtain glibc-2.31
    • Install gcc-5 for kernel module
    • Install the kernel module
    • Test DangZero

安装虚拟机

参考链接
注意点:
虚拟机位置要放在固态硬盘里,最少要512B,因为后面还需要在虚拟机里套虚拟机。
在这里插入图片描述
内存也开到8G:
在这里插入图片描述
磁盘大小给到512G:
在这里插入图片描述

dangzero

按照开源代码的README逐行运行下载

Compile the KML kernel

  1. 下载git源码后,进入dangzero目录
    sudo apt install git
    git clone https://github.com/vusec/dangzero.git
    
  2. 下载docker
    先使用docker version命令检查docker是否已下载
    cmh@cmh-virtual-machine:~/dangzero/kml-image$ docker version
    找不到命令 “docker”,但可以通过以下软件包安装它:
    sudo apt install podman-docker  # version 3.4.4+ds1-1ubuntu1.22.04.2, or
    sudo apt install docker.io      # version 24.0.5-0ubuntu1~22.04.1
    
    根据提示,我的ubuntu为ubuntu-22.04.3-desktop-amd64.iso,因此使用sudo apt install docker.io命令下载docker镜像
    cmh@cmh-virtual-machine:~/dangzero/kml-image$ sudo apt install docker.io
    正在读取软件包列表... 完成
    正在分析软件包的依赖关系树... 完成
    。。。。。。
    
  3. 若不是root超级用户,则将使用的用户添加到docker用户组
    cmh@cmh-virtual-machine:~/dangzero/kml-image$ sudo groupadd docker 
    groupadd:“docker”组已存在
    cmh@cmh-virtual-machine:~/dangzero/kml-image$ 
    sudo gpasswd -a cmh docker
    正在将用户“cmh”加入到“docker”组中
    cmh@cmh-virtual-machine:~/dangzero/kml-image$ newgrp docker
    cmh@cmh-virtual-machine:~/dangzero/kml-image$ docker images
    REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
    
  4. readme执行!
    需要注意的是,Step 7/10 : RUN wget -O kernel.gz download.vusec.net/dataset/kml-kernel.tar.gz的文件较大,且在虚拟机中下载速度很慢,我失败了2次,白天下载速度是20K/s,凌晨下载的速度会是1M/s,暂时不知道为什么,所以建议晚上下载,先去睡觉,第二天早上就下载完毕!
    cmh@cmh-virtual-machine:~/dangzero/kml-image$ bash build_kml.sh 
    DEPRECATED: The legacy builder is deprecated and will be removed in a future release.Install the buildx component to build images with BuildKit:https://docs.docker.com/go/buildx/Sending build context to Docker daemon  3.584kB
    Step 1/10 : FROM ubuntu:14.04---> 13b66b487594
    Step 2/10 : ARG DEBIAN_FRONTEND=noninteractive---> Using cache---> f208b78419c9
    Step 3/10 : RUN apt update---> Using cache---> e6e9104e8d36
    Step 4/10 : RUN apt install -y build-essential libncurses-dev bison flex libelf-dev libssl-dev bc wget---> Using cache---> 24bd00a774fc
    Step 5/10 : RUN mkdir -p /home/kml---> Using cache---> 5a00886e6ed7
    Step 6/10 : WORKDIR /home/kml---> Using cache---> d4f1c2b90429
    Step 7/10 : RUN wget -O kernel.gz download.vusec.net/dataset/kml-kernel.tar.gz---> Running in 6320086b7bfa
    --2023-11-08 15:57:57--  http://download.vusec.net/dataset/kml-kernel.tar.gz
    Resolving download.vusec.net (download.vusec.net)... 130.37.53.80
    Connecting to download.vusec.net (download.vusec.net)|130.37.53.80|:80... connected.
    HTTP request sent, awaiting response... 301 Moved Permanently
    Location: https://download.vusec.net/dataset/kml-kernel.tar.gz [following]
    --2023-11-08 15:57:59--  https://download.vusec.net/dataset/kml-kernel.tar.gz
    Connecting to download.vusec.net (download.vusec.net)|130.37.53.80|:443... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 4315393639 (4.0G) [application/x-gzip]
    Saving to: 'kernel.gz'0K .......... .......... .......... .......... ..........  0% 6.87K 7d2h50K .......... .......... .......... .......... ..........  0% 16.7K 5d0h

Obtain Ubuntu 20.04

readme执行!需要注意ubuntu的版本,readme中的是20.04.5,但是官网找不到这个版本,所以就用了20.04.6的,经过实验也是可行的。

cmh@cmh-virtual-machine:~/dangzero$ wget https://releases.ubuntu.com/20.04/ubuntu-20.04.6-desktop-amd64.iso
--2023-11-11 10:04:49--  https://releases.ubuntu.com/20.04/ubuntu-20.04.6-desktop-amd64.iso
正在解析主机 releases.ubuntu.com (releases.ubuntu.com)... 91.189.91.123, 185.125.190.37, 91.189.91.124, ...
正在连接 releases.ubuntu.com (releases.ubuntu.com)|91.189.91.123|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 4351463424 (4.1G) [application/x-iso9660-image]
正在保存至: ‘ubuntu-20.04.6-desktop-amd64.iso’ubuntu-20.04.6-desktop-amd64.iso       21%[==============>                                                          ] 900.35M   922KB/s    剩余 ubuntu-ubuntu-20.04.6-desktop-amd64.iso       51%[====================================>                                    ]   2.09G   888KB/s  ubuntu-20.04.6ubuntu-20.04.6-desktop-amd64.iso       62%[============================================>                            ]   2.53G  100ubuntu-20.04.6-desktoubuntu-20.04.6-desktop-amd64.iso       83%[============================================================>            ]   3.4ubuntu-20.04.6-desktop-amd64.iso    100%[===================================================================>]   4.05G   894KB/s    用时 78m 44s2023-11-11 11:23:34 (900 KB/s) - 已保存 ‘ubuntu-20.04.6-desktop-amd64.iso’ [4351463424/4351463424])

Create VM

  1. 使用sudo apt install qemu-utils下载qemu工具
  2. readme执行!
    cmh@cmh-virtual-machine:~/dangzero$ qemu-img create -f qcow2 ubuntu.img 60G
    Formatting 'ubuntu.img', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=64424509440 lazy_refcounts=off refcount_bits=16
    

Install Ubuntu

  1. 根据参考链接关闭windows所有虚拟化所有的内容,注意在配置之前先将虚拟机关闭
  2. 执行sudo apt install qemu-system-x86下载qemu工具
  3. readme执行!
    • 注意-m 指定内存数,-smp指定核心数,readme中分别是16G和8,但是我的虚拟机都没这么大,因此我分别配置成4G和4
    • -cdrom参数的镜像也需要注意使用自己下载的版本
    • 添加-cpu host选项
    • 最终的命令如下:
    cmh@cmh-virtual-machine:~/dangzero$ qemu-system-x86_64 -cdrom ubuntu-20.04.6-desktop-amd64.iso -drive "file=ubuntu.img,format=qcow2" -enable-kvm -m 4G -smp 4 -cpu host
    

Run Ubuntu

:从此节往后若不做说明,均不是在QEMU的虚拟机上操作。
在上一步Install Ubuntu之后,不要关闭该终端,则QEMU上会出现一个新的Ubuntu界面,在QEMU中我擅自做了以下1、2步(可能没有必要,但总之我做了这个工作)

  1. 创建了新用户cmh
  2. 设置了超级用户root的密码
  3. 关闭上一步Install Ubuntu产生的终端,以关闭QEMU
    在这里插入图片描述
  4. readme执行!
    和上一步Install Ubuntu的第三步注意点一致,在此不赘述。
    cmh@cmh-virtual-machine:~/dangzero$ qemu-system-x86_64 -drive "file=ubuntu.img,format=qcow2" -enable-kvm -m 4G -smp 4 -cpu host -net nic -net user,hostfwd=tcp::1810-:22
    

Move KML kernel to VM

  1. readme执行!在【qemu的虚拟机】终端上先安装openssh,以支持文件传输

    apt-get install openssh-server
    
  2. readme执行!将文件传输到QEMU的虚拟机上:

    cmh@cmh-virtual-machine:~/dangzero$ scp -P 1810 kml-image/linux-*.deb cmh@localhost:~/
    cmh@localhost's password: 
    linux-firmware-image-4.0.0-kml_4.0.0-kml-6_am 100%  944KB  37.6MB/s   00:00    
    linux-headers-4.0.0-kml_4.0.0-kml-6_amd64.deb 100% 6758KB  36.8MB/s   00:00    
    linux-image-4.0.0-kml_4.0.0-kml-6_amd64.deb   100%   38MB  39.2MB/s   00:00    
    linux-image-4.0.0-kml-dbg_4.0.0-kml-6_amd64.d 100%  366MB  54.5MB/s   00:06    
    linux-libc-dev_4.0.0-kml-6_amd64.deb          100%  772KB  27.9MB/s   00:00    
    cmh@cmh-virtual-machine:~/dangzero$ 
    

Inside VM: Install Kernel

  1. readme执行!
cd ~/
sudo dpkg -i linux-*.deb

在这里插入图片描述
2. 关闭QEMU

Update grub to auto-select KML kernel

readme执行!编辑/etc/default/grub,以在启动QEMU时不出现GUI界面,命令行比较舒服!

GRUB_DEFAULT="1>4" # depends on menu entries of grub
#GRUB_TIMEOUT_STYLE=hidden # comment out
GRUB_TIMEOUT=2 # if you want to see menu entries with GUI

Boot parameters

readme执行!编辑/etc/default/grub,以修改启动Linux的引导项(我也不懂,跟着配就行了)!

GRUB_CMDLINE_LINUX_DEFAULT="vga=normal"
# Add console=ttyS0 if you want to run without GUI
GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0 vga=normal"
# Add make-linux-fast-again for performance:
GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0 vga=normal noibrs noibpb nopti nospectre_v2 nospectre_v1 l1tf=off nospec_store_bypass_disable no_stf_barrier mds=off tsx=on tsx_async_abort=off mitigations=off"

Run KML

readme执行!

qemu-system-x86_64 -drive "file=ubuntu.img,format=qcow2" -enable-kvm -m 4G -smp 4 -cpu host,-avx,-f16c,-avx512f,-pdpe1gb -nographic -serial mon:stdio -net nic -net user,hostfwd=tcp::1810-:22

KML开始启动
在这里插入图片描述
启动成功后,就可以愉快地使用命令行执行了!
在这里插入图片描述

Test KML

readme执行!
:此节均是在QEMU中执行!没有问题,不记录。
测试成功的结果是,在QEMU虚拟机的/trusted目录下为ring0,而在其他目录下为ring 3。

Obtain glibc-2.31

readme执行!没问题!
:此节除了scp -P 1810 patchglibc.diff u16@localhost:/trusted/glibc/glibc-2.31/,其他命令均在QEMU中执行!

Install gcc-5 for kernel module

readme执行!没问题!

Install the kernel module

  1. 在QEMU虚拟机里用git下载一份dangzero的源码,或者从外层虚拟机下载后scp到QEMU的虚拟机中
  2. 在QEMU的dangzero目录下readme执行!

Test DangZero

  1. 在QEMU虚拟机中先使用sudo update-alternatives --config gcc命令选择gcc-9,执行命令后出现以下界面,选择2

    There are 2 choices for the alternative gcc (providing /usr/bin/gcc).Selection    Path            Priority   Status
    ------------------------------------------------------------0            /usr/bin/gcc-9   90        auto mode
    * 1            /usr/bin/gcc-5   50        manual mode2            /usr/bin/gcc-9   90        manual modePress <enter> to keep the current choice[*], or type selection number: 2
  2. 回到danzero目录,readme执行!bash test.sh
    然后我们就成功了!完结撒花~~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/741178.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

KEIL 5.38的ARM-CM3/4 ARM汇编设计学习笔记10 - STM32的SDIO学习2 - Card Identification

KEIL 5.38的ARM-CM3/4 ARM汇编设计学习笔记10 - STM32的SDIO学习2 - Card Identification 一、问题回顾二、本次的任务三、 需要注意的问题3.1 Card Identification Mode时的时钟频率3.2 CMD0指令的疑似问题3.3 发送带参数的ACMD41时要注意时间时序和时效3.4 CPSM的指令发送问题…

【Linux】深入探索:Linux网络调试、追踪与优化

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;Linux ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 1. 调试网络问题 a. 使用ping和traceroute b. 使用netstat和ss c. 使用tcpdump和Wireshark 2. 追踪网络问题 a. 使用mtr b.…

北京公司注册地址想要迁到新疆该如何操作

尊敬的客户&#xff0c;您好&#xff01;我是经典世纪胡云帅&#xff08;游览器搜经典世纪胡云帅&#xff09;&#xff0c;您选择了北京经典世纪集团有限公司-资 质代办&#xff0c;我们将竭诚为您服务&#xff01;如果您的公司注册地址想要迁到新疆&#xff0c;这里有一些重要…

一台服务器,最大支持的TCP连接数是多少?

一个服务端进程最大能支持多少条 TCP 连接&#xff1f; 一台服务器最大能支持多少条 TCP 连接&#xff1f; 一、原理 TCP 四元组的信息&#xff1a;源IP、源端口、目标IP、目标端口。 一个服务端进程最大能支持的 TCP 连接个数的计算公式&#xff1a;最大tcp连接数客户端的IP…

基于springboot实现成人教育教务系统项目【项目源码+论文说明】

基于springboot实现成人教育教务系统演示 摘要 随着市场经济的产业化结构升级&#xff0c;人才结构也在不断发生这巨大的变化和变革。而且各大企业都在处于一个高速发展和壮大的阶段&#xff0c;在这个高速发展和结构化升级的时期对于人才的需求也在不断的增多。企业和用工单位…

【Python】新手入门学习:详细介绍组合/聚合复用原则(CARP)及其作用、代码示例

【Python】新手入门学习&#xff1a;详细介绍组合/聚合复用原则&#xff08;CARP&#xff09;及其作用、代码示例 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集…

Nmap最常用命令(非常详细)零基础入门到精通,收藏这一篇就够了

nmap是我们最常用的工具。但是命令太多了&#xff0c;没办法全部记下。我们在实际工作中只需要记住最常用的几条命令就行了。 主机发现 里面nmap&#xff0c;我们可以扫描在同一局域网内有哪些设备在线。常用命令如下&#xff1a; nmap 192.168.50.1/24 -sL 上面命令&#…

羊大师分析,羊奶和牛奶哪个更有营养

羊大师分析&#xff0c;羊奶和牛奶哪个更有营养 羊奶和牛奶都是营养丰富的奶制品&#xff0c;它们各自具有独特的营养价值和特点&#xff0c;因此无法简单地判断哪个更有营养。 羊奶中含有较高的脂肪和蛋白质&#xff0c;同时富含矿物质和维生素&#xff0c;如钙、磷、铁、锌以…

揭秘FastStone Capture:一款强大且高效的截图工具

目录 【引子】【FastStone Capture概述】【安装步骤】【使用攻略】【核心功能解析】【总结】 【引子】 在数字化信息时代&#xff0c;无论是工作汇报、在线教学&#xff0c;还是日常交流中&#xff0c;屏幕截图已经成为我们必不可少的辅助工具。今天&#xff0c;我要为大家详细…

git svn混用

背景 项目代码管理初始使用的svn, 由于svn代码操作&#xff0c;无法在本地暂存&#xff0c;有诸多不便&#xff0c;另外本人习惯使用git. 所以决定迁移至git管理 迁移要求&#xff1a; 保留历史提交记录 迁移流程 代码检出 git svn svn_project_url git代码提交 修改本…

得物布局构建耗时优化方案实践

一、背景 当谈到移动应用程序的体验时&#xff0c;页面启动速度是其中至关重要的一点&#xff0c;更快的页面展示速度确保应用程序可以迅速加载并响应用户的操作, 从而提高用户使用 App 时的满意度。在页面启动的整个流程中&#xff0c;随着 UI 复杂度的上升&#xff0c;布局的…

【Java探索之旅】解密Java中的类型转换与类型提升

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; Java编程秘籍 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一、类型转化1.1 自动类型转换&#xff08;隐式类型转换&#xff09;1.2 强制类型转换…

Arduino IDE的下载和安装

一、Arduino的介绍 Arduino是一款开源电子原型平台&#xff0c;主要包含两部分&#xff1a;硬件&#xff08;各种型号的Arduino板&#xff09;和软件&#xff08;Arduino IDE&#xff09;。这个平台由意大利的Massimo Banzi、David Cuartielles等人共同开发设计&#xff0c;并于…

ES分片均衡策略分析与改进

从故障说起 某日早高峰收到 Elasticsearch 大量查询超时告警&#xff0c;不同于以往&#xff0c;查看 Elasticsearch 查询队列监控后发现&#xff0c;仅123节点存在大量查询请求堆积。 各节点查询队列堆积情况 查看节点监控发现&#xff0c;123节点的 IO 占用远高于其他节点。…

【论文阅读】IEEE Access 2019 BadNets:评估深度神经网络的后门攻击

文章目录 一.论文信息二.论文内容1.摘要2.引言3.主要图表4.结论 一.论文信息 论文题目&#xff1a; BadNets: Evaluating Backdooring Attacks on Deep Neural Networks&#xff08;BadNets:评估深度神经网络的后门攻击&#xff09; 论文来源&#xff1a; 2019-IEEE Access …

安卓内嵌uniapp的H5页面 android调用h5内部方法

uniapp H5与原生安卓的数据互通和方法调用_安卓代码中调用uniapp中页面中的方法-CSDN博客文章浏览阅读8.7k次&#xff0c;点赞4次&#xff0c;收藏22次。1、准备我这里是uniapp与原生安卓之间的相互调用&#xff0c;也就是原生安卓内嵌H5页面&#xff0c;下面先来准备一下安卓端…

吴恩达 x Open AI ChatGPT ——如何写出好的提示词视频核心笔记

核心知识点脑图如下&#xff1a; 1、第一讲&#xff1a;课程介绍 要点1&#xff1a; 上图展示了两种大型语言模型&#xff08;LLMs&#xff09;的对比&#xff1a;基础语言模型&#xff08;Base LLM&#xff09;和指令调整语言模型&#xff08;Instruction Tuned LLM&#xff0…

CentOS 7 devtoolset编译addressSanitizer版本失败的问题解决

在我的一个Cent OS7开发环境中&#xff0c;按https://yeyongjin.blog.csdn.net/article/details/134178420的方法升级GCC版本到8.3.1。 这两天&#xff0c;要用Google的addressSanitizer检验内存问题&#xff0c;加上编译参数后&#xff0c;却发现编译不通过。configure时直接退…

WanAndroid(鸿蒙版)开发的第二篇

前言 DevEco Studio版本&#xff1a;4.0.0.600 WanAndroid的API链接&#xff1a;玩Android 开放API-玩Android - wanandroid.com 1、WanAndroid(鸿蒙版)开发的第一篇 其他一些参考点&#xff0c;请参考上面的WanAndroid开发第一篇 效果 首页实现 整体布局分为头部的Banne…

基于Gui Guider进行LVGL的页面绘制和移植

在之前的文章里讲过一种页面切换的方式&#xff0c;那就是&#xff1a;定义和创建页面对象绘制页面内容切换页面。参考这篇文章&#xff1a; LVGL如何创建页面并实现页面的切换-CSDN博客 这篇文章讲了如何绘制并切换页面。 但是现在遇到一个问题&#xff0c;那就是页面绘制&…