# secure_passthrough_2024bs **Repository Path**: liuxh0217/secure_passthrough_2024bs ## Basic Information - **Project Name**: secure_passthrough_2024bs - **Description**: 2024年毕业设计代码,包含对于SEV机密虚拟机的一些安全特性验证以及SWIOTLB(bounce-buffer)相关内容。 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-06-02 - **Last Updated**: 2024-06-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # secure_passthrough_2024bs #### 介绍 2024年毕业设计代码,包含对于SEV机密虚拟机的一些安全特性验证以及SWIOTLB(bounce-buffer)相关内容。 #### 安装对应版本的操作系统 为了能够正常启动AMD SEV系列的机密虚拟机需要安装特定的SVSM版本的主机系统。并且要求虚拟机中的客户机系统也需要通过对应的软件包进行更新。下面简要阐述安装特定版本主机系统的方法: (1) 获取特定版本的源代码:通过wget/git获取特定版本的源代码,本实验中主机操作系统是svsm-preview-hv-v3。之后通过tar xvf linux-version.tar.xz解压。 (2) 安装特定的软件包,通过sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison命令。 (3) 进入源码所在目录,将目前正在运行的配置文件转到当前目录中:cp -v /boot/config-$(uname -r) .config。 (4) 启动菜单编译:make menuconfig;进行选择之后选择“SAVE”保存配置。 (5) 编译内核:make。 (6) 安装所需的内核模块:sudo make modules_install。 (7) 安装内核:sudo make install。 (8) 更改/etc/default/grub文件,将新编译好的代码作为默认启动的内核版本,之后更新:update-grub。 (9) 重新启动,即在新编译的主机环境中。 #### 安装虚拟化环境 1. 安装QEMU-KVM (1)安装qemu-kvm以及所需的软件之后重新启动系统。 (2)将用户加入特定的组。 (3)启动并启用libvirt,以便后续管理 ``` sudo apt install qemu qemu-kvm virt-manager bridge-utils. sudo useradd -g $USER libvirt sudo useradd -g $USER libvirt-kvm sudo systemctl enable libvirtd.service && sudo systemctl start libvirtd.service ``` 2. 创建并启动普通虚拟机 ``` # 创建磁盘 qemu-img create -f qcow2 ubuntu.cow 20G # 启动虚拟机 qemu-system-x86_64 -m 4G -enable-kvm -cdrom ubuntu-22.04.4-live-server-amd64.iso -drive file=ubuntu.cow,format=qcow2 -boot order=d ``` 3. 创建并启动机密虚拟机 (1)为了启动机密虚拟机,需要将对应版本的SVSM软件包通过scp从主机传输到虚拟机中,通过如下命令 ``` ./launch-qemu.sh -hda guest.qcow2 scp host@ip://scripts/linux/*guest*.deb . chmod +x *.deb && dpkg -i *.deb reboot ``` (2)通过脚本启动机密虚拟机 `./launch-qemu.sh -hda guest.qcow2 -sev-es` #### 验证实验 1. 在对应版本的Linux中使用本仓库中的patch 2. 启动虚拟机 3. 通过dmesg查看结果 #### dump_swiotlb 可以利用dump_swiotlb模块实现对特定地址范围SWIOTLB内容的获取 ``` # 安装 insmod dump_swiotlb.ko # 卸载 rmmod dump_swiotlb ``` #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)