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 7d2h
        50K .......... .......... .......... .......... ..........  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 44s

2023-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 mode
      2            /usr/bin/gcc-9   90        manual mode
    
    Press <enter> to keep the current choice[*], or type selection number: 2
    
    
  2. 回到danzero目录,readme执行!bash test.sh
    然后我们就成功了!完结撒花~~~~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

日期工具的逻辑与数据请求函数的完善

src\libs\utils.js 获取当前日期格式 /*** 获取当前日期格式* param {*} field * returns */ function getNowDate(field) {const date new Date()let year date.getFullYear(),month date.getMonth() 1,day date.getDate()switch (field) {case day:return ${year}-${mo…

psutil, 一个超级有用的Python库

Python的psutil是一个跨平台的库&#xff0c;可以用于获取系统运行时的各种信息&#xff0c;包括CPU使用率、内存使用情况、磁盘和网络信息等。它主要用来做系统监控&#xff0c;性能分析&#xff0c;进程管理。它实现了同等命令行工具提供的功能&#xff0c;如ps、top、lsof、…

【图论】Dijkstra 算法求最短路 - 构建邻接矩阵(带权无向图)

文章目录 例题&#xff1a;到达目的地的方案数题目描述代码与解题思路构建带权无向图的邻接矩阵 例题&#xff1a;到达目的地的方案数 题目链接&#xff1a;1976. 到达目的地的方案数 题目描述 代码与解题思路 func countPaths(n int, roads [][]int) int {g : make([][]int…

QT 配置https 5.12.2 64位kitsMINGW_64

将 D:\QT5.12.2\Tools\mingw730_64\opt\bin 中的libeay32.dll 和 ssleay32.dll 复制到D:\QT5.12。2\5.12.2\msvc2017_64\bin中 尝试了各种各样的方法&#xff0c;直接这一步就解决了

141 Linux 系统编程18,线程,ps –Lf 进程 查看LWP,线程间共享数据,优缺点,编译加-lpthread,

一 线程概念 什么是线程 LWP&#xff1a;light weight process 轻量级的进程&#xff0c;本质仍是进程(在Linux环境下) 进程&#xff1a;独立地址空间&#xff0c;拥有PCB 线程&#xff1a;有独立的PCB&#xff0c;但没有独立的地址空间(共享) 区别&#xff1a;在于是否共…

设计模式八:观察者模式

文章目录 1、观察者模式2、示例3、spring中的观察者模式3.1 spring观察者模式的使用3.2 spring观察者模式原理解析 1、观察者模式 观察者模式&#xff08;Observer Design Pattern&#xff09;,也叫做发布订阅模式&#xff08;Publish-Subscribe Design Pattern&#xff09;、模…

docker学习入门篇

1、docker简介 docker官网&#xff1a; www.docker.com dockerhub官网&#xff1a; hub.docker.com docker文档官网&#xff1a;docs.docker.com Docker是基于Go语言实现的云开源项目。 Docker的主要目标是&#xff1a;Build, Ship and Run Any App, Anywhere(构建&…

【STL】string各种函数的应用

1.string 基本赋值操作 string assign&#xff08;string str&#xff0c;int n&#xff09; string assign&#xff08;string str,int pos,int n&#xff09; 2.string存取字符操作 (at()) 注意&#xff1a;[ ]越界不会抛出异常&#xff0c;at越界会抛出异常 3.string拼接…

Singularity 容器技术从入门到掌握

Singularity 容器技术 | 从入门到掌握 谈起容器技术&#xff0c;大家第一时间想到的肯定是最流行的功能强大的 docker。但实际上在生信领域&#xff0c;许多公共课程和公司在配置分析流程时更多使用的还是 singularity&#xff0c;这主要是为了解决我们的几个痛点&#xff1a;…

深入学习默认成员函数——c++指南

前言&#xff1a;类和对象是面向对象语言的重要概念。 c身为一门既面向过程&#xff0c;又面向对象的语言。 想要学习c&#xff0c; 首先同样要先了解类和对象。 本节就类和对象的几种构造函数相关内容进行深入的解析。 目录 类和对象的基本概念 封装 类域和类体 访问限定符…

【基于langchain + streamlit 完整的与文档对话RAG】

本地部署文档问答webdemo 支持 pdf支持 txt支持 doc/docx支持 源文档索引 你的点赞和收藏是我持续分享优质内容的动力哦~ 废话不多说直接看效果 准备 首先创建一个新环境&#xff08;选择性&#xff09; conda create -n chatwithdocs python3.11 conda activate chatwith…

数据库规范化设计案例解析

1.介绍 数据库规范化设计是数据库设计的一种重要方法&#xff0c;旨在减少数据库中的冗余数据&#xff0c;提高数据的一致性&#xff0c;确保数据依赖合理&#xff0c;从而提高数据库的结构清晰度和维护效率。规范化设计通过应用一系列的规范化规则&#xff08;或称“范式”&a…

springboot的Converter和HttpMessageConveter

Converter和HttpMessageConveter是springboot和springmvc在处理请求的时候需要用到的。但是这两者的完全是不一样的&#xff0c;作用的地方也不一样。 1&#xff0c;springboot和springmvc处理请求的流程 先来回顾一下处理请求的流程&#xff1a; 用户向服务器发送请求&#…

【C++精简版回顾】22.流迭代器(输入输出迭代器)

1.输出迭代器 1.节点&#xff0c;重载 struct student {string name;int age; }; ostream& operator<<(ostream& out,student stu) {out << stu.age << stu.name ;return out; } 2.main int main() {//输入流迭代器int array[6] { 1,2,3,4,5,6 };os…

Python批量提取Word文档表格数据

在大数据处理与信息抽取领域中&#xff0c;Word文档是各类机构和个人普遍采用的一种信息存储格式&#xff0c;其中包含了大量的结构化和半结构化数据&#xff0c;如各类报告、调查问卷结果、项目计划等。这些文档中的表格往往承载了关键的数据信息&#xff0c;如统计数据、项目…

2021年中国环境统计年鉴、工业企业污染排放数据库

《中国环境统计年鉴》是国家统计局和生态环境部及其他有关部委共同编辑完成的一本反映我国环境各领域基本情况的年度综合统计资料。收录了上一年年全国各省、自治区、直辖市环境各领域的基本数据和主要年份的全国主要环境统计数据。 内容共分为十二个部分,即:1.自然状况;2.水环…

性能测试总结 —— 工具选型篇!

本篇文章主要简单总结下性能测试工具的原理以及如何选型。性能测试和功能测试不同&#xff0c;性能测试的执行是基本功能的重复和并发&#xff0c;需要模拟多用户&#xff0c;在性能测试执行时需要监控指标参数&#xff0c;同时性能测试的结果不是那么显而易见&#xff0c;需要…

Java详解:单列 | 双列集合 | Collections类

○ 前言&#xff1a; 在开发实践中&#xff0c;我们需要一些能够动态增长长度的容器来保存我们的数据&#xff0c;java中为了解决数据存储单一的情况&#xff0c;java中就提供了不同结构的集合类&#xff0c;可以让我们根据不同的场景进行数据存储的选择&#xff0c;如Java中提…

chrome高内存占用问题

chrome号称内存杀手不是盖的&#xff0c;不设设置的话&#xff0c;经常被它内存耗尽死机是常事。以下自用方法 1 自带的memory saver chrome://settings/performance PerformanceMemory Saver When on, Chromium frees up memory from inactive tabs. This gives active tab…

删除数据表

oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 删除数据表属于数据库对象的操作 drop table 表名称; 删除 emp30 表 SQL> drop table emp30;表已删除。 上面这个语句运行后&#xff0c;就会把数据表 emp30 删除 在…