LXD容器中通过Qemu安装Win7虚拟机(呕心制作-诸多细节)

前言


为了抵御网络攻击,实验复现某些计算机漏洞,需要安装Win7操作系统。

真是呕心制作,反复尝试好多次,搜索很多相关资料,终于总结出这篇文章,其目的是通过虚拟化技术,完成Win7的安装配置。其中还包括别的文章中没有提及的可视化界面设置Win7网络同一网段通信等细节,如有用,希望大家点赞收藏。

文章目录

  • 前言
  • Qemu安装Win7
    • 一. 安装配置qemu
    • 二. 安装可视化window7
      • 2.1 物理机操作
      • 2.2 界面转发-容器设置
      • 2.3 界面转发-宿主机设置
      • 2.4 测试界面转发
      • 2.5 安装win7
        • 2.5.1 驱动下载
        • 2.5.2 加载镜像
        • 2.5.3 网络配置
        • 2.5.4 统一网段

Qemu安装Win7


一. 安装配置qemu

先查看虚拟机是否满足虚拟化配置

LC_ALL=C lscpu | grep Virtualization
egrep -c '(vmx|svm)' /proc/cpuinfo

或者

cat /proc/cpuinfo | grep vmx
lsmod | grep kvm

有输出结果表明支持虚拟化

在这里插入图片描述

安装下载qemu及相关软件包

sudo apt install qemu qemu-kvm virt-manager bridge-utils libvirt-bin virtinst libvirt-daemon-system

添加用户

useradd -g $USER libvirt
useradd -g $USER libvirt-kvm

设置开机自启

systemctl enable libvirtd.service && sudo systemctl start libvirtd.service

查看版本

qemu-system-x86_64 --version

在这里插入图片描述

二. 安装可视化window7

前置条件:

  • 物理机的IP地址为:10.96.233.24

  • 虚拟机的IP地址为:10.233.73.1

  • 容器的IP地址为:10.233.73.123

其中容器指创建在虚拟机上的LXD,而我们的qemu又是运行在容器中,win7安装在qemu

2.1 物理机操作


首先本身的物理机要开启虚拟化,进入任务管理器,查看当前CPU,确保虚拟化为已启用
在这里插入图片描述

在系统设置中搜索内核隔离,将其关闭
在这里插入图片描述

再开启VMWare的虚拟化引擎

在这里插入图片描述

2.2 界面转发-容器设置


设置容器的密码为root,否则不允许远程登录

passwd root

由于容器没有界面,所以需要利用SSHX11完成界面转发到宿主机上

apt-get install openssh-server

修改容器的ssh配置文件

vi /etc/ssh/sshd_config

PermitRootLoginX11Forwarding修改为yes,同时去掉注释

在这里插入图片描述
在这里插入图片描述

重启容器的ssh服务

systemctl restart sshd

查看是否成功开启服务

systemctl status sshd

在这里插入图片描述

2.3 界面转发-宿主机设置


修改宿主机的ForwardAgentforwardx11以及forwardx11trustedyes,同时去掉注释

vi /etc/ssh/ssh_config

特别注意,这个配置文件名称和上面那个不同

在这里插入图片描述

重启宿主机的ssh服务

systemctl restart sshd

查看是否开启服务

systemctl status sshd

在这里插入图片描述

2.4 测试界面转发


在容器中下载测试软件

apt-get install x11-apps

宿主机通过ssh -X登录容器

ssh -X root@10.233.73.123

宿主机使用命令查看图形化界面是否转发成功

xclock

在这里插入图片描述

2.5 安装win7


2.5.1 驱动下载

我们需要两个驱动:

  • 第一个是:下载网卡驱动,点击下载Virtio网卡驱动,下载驱动重命名为virtio01103.iso,用于给win7设置网络

在这里插入图片描述

  • 第二个是:下载win7的镜像,网上很多资源,或者下载我百度网盘里面的镜像,点击下载Win7家庭版64位镜像,下载的镜像重命名为win7x64.iso

将下载好的镜像全部传递到容器中

lxc file push virtio01103.iso Win7/root/MyWin7/
lxc file push win7x64.iso Win7/root/MyWin7/
2.5.2 加载镜像

宿主机利用远程登录到容器

ssh -X root@10.233.73.123

在这里插入图片描述

创建一个新的磁盘windows7.qcow2用于放置win7的文件,大小为20G

qemu-img create -f qcow2 windows7.qcow2 20G

此时我们拥有如下文件,包括两个镜像文件和一个磁盘文件

在这里插入图片描述

加载镜像

qemu-system-x86_64 -m 1G -cpu host -enable-kvm -boot d -hda /root/MyWin7/windows7.qcow2 -cdrom /root/MyWin7/win7x64.iso -usbdevice tablet -net nic,model=virtio -net user -drive file=/root/MyWin7/virtio01103.iso,media=cdrom
  • -m 1G:表示划分的内存大小
  • -cpu host:表示使用的cpu使用和主机一样
  • -enable-kvm:用于启动kvm
  • -boot d:从硬盘启动系统
  • -hda windows7.qcow2:加载的磁盘
  • -cdrom winx64.iso:加载的镜像
  • -usbdevice tablet:用于保证qemu中的鼠标和容器中同步
  • -net nic,model=virtio -net user :表示为客户机创建虚拟网卡,其中模式为virtio
  • -drive file:表示加载的网卡镜像

如果成功开启了kvm,但是依旧无法加载镜像,可去除-cpu host -enable-kvm选项,加载镜像

qemu-system-x86_64 -m 1G -boot d -hda /root/MyWin7/windows7.qcow2 -cdrom /root/MyWin7/win7x64.iso -usbdevice tablet -net nic,model=virtio -net user -drive file=/root/MyWin7/virtio01103.iso,media=cdrom

开始加载镜像
在这里插入图片描述

直接下一步
在这里插入图片描述

选择自定义设置,然后默认磁盘即可
在这里插入图片描述

等待安装
在这里插入图片描述

安装成功

在安装完成镜像后,我们启动win7,已经不需要加载win7virtio镜像了,所以,当关机后再次启动win7,命令如下

qemu-system-x86_64 -m 1G -boot d -hda /root/MyWin7/windows7.qcow2 -usbdevice tablet -net nic,model=virtio -net user
2.5.3 网络配置

刚装载好的电脑没有网络,打开设备管理器,选择更新驱动

在这里插入图片描述

自定义驱动,选择我们刚才下载的驱动器

在这里插入图片描述

确认安装

在这里插入图片描述

安装成功,有网啦

在这里插入图片描述

2.5.4 统一网段

虽然这个时候可以ping通外网,但是IP地址不在当前宿主机的网段下,而是在qemu的自带网段下面,宿主机无法和qemu直接通信,我们要通过桥接网络接口的方式实现统一网段

qemu关闭,在容器中下载相关网桥工具

apt-get install bridge-utils        # 虚拟网桥工具
apt-get install uml-utilities       # UML(User-mode linux)工具

在容器中执行如下命令,创建一个tap0接口

ifconfig eth0 down    					# 首先关闭宿主机网卡接口
brctl addbr br0                     # 添加名为 br0 的网桥
brctl addif br0 eth0       				# 在 br0 中添加一个接口
brctl stp br0 off                   # 如果只有一个网桥,则关闭生成树协议
ifconfig br0 0.0.0.0 promisc up     		# 启用 br0 接口
ifconfig eth0 0.0.0.0 promisc up    		# 启用网卡接口
dhclient br0                        # 从 dhcp 服务器获得 br0 的 IP 地址
tunctl -t tap0 -u root              # 创建一个 tap0 接口,只允许 root 用户访问
brctl addif br0 tap0                # 在虚拟网桥中增加一个 tap0 接口
ifconfig tap0 0.0.0.0 promisc up        # 启用 tap0 接口
brctl showstp br0                   # 显示 br0 的各个接口

再次加载镜像,但是这次的网络链接方式变为了-net tap,同时指定了名称为ifname=tap0

qemu-system-x86_64 -m 1G -boot d -hda /root/MyWin7/windows7.qcow2 -usbdevice tablet -net nic,model=virtio -net tap,ifname=tap0,script=no,downscript=no

我们打开qemu,查看ip,已经和宿主机及容器在同一个网段下面了

此时我们所有的IP信息如下:

  • 物理机的IP地址为:10.96.233.24

  • 虚拟机的IP地址为:10.233.73.1

  • 容器的IP地址为:10.233.73.123

  • qemuwin7的IP为:10.233.73.76

在这里插入图片描述

这个时候win7已经可以ping通宿主机和容器,但宿主机和容器无法pingwin7

在这里插入图片描述

还要做最后一步,在控制面板中关闭防火墙设置

在这里插入图片描述

到现在为止,宿主机可以pingwin7

在这里插入图片描述

容器也可以pingwin7

在这里插入图片描述

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

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

相关文章

imgaug库指南(九):从入门到精通的【图像增强】之旅

引言 在深度学习和计算机视觉的世界里,数据是模型训练的基石,其质量与数量直接影响着模型的性能。然而,获取大量高质量的标注数据往往需要耗费大量的时间和资源。正因如此,数据增强技术应运而生,成为了解决这一问题的…

计算机网络(超级详细笔记)

使用教材计算机网络(第8版)(谢希仁) 第一章:概述 第二章:物理层 第三章:数据链路层 第四章:网络层 第五章:运输层 第六章:应用层 目…

王中阳Go赠书活动第一期:《TVM编译器原理与实践》

文章目录 前言TVM编译器的实现过程关于《TVM编译器原理与实践》编辑推荐内容简介作者简介图书目录书中前言/序言《TVM编译器原理与实践》全书速览入手《TVM编译器原理与实践》传送门:结束语参加抽奖 前言 随着人工智能的发展,计算机视觉、自然语言处理和…

RapidSSL和Geotrust的通配符证书区别

RapidSSL颁发的数字证书产品方便快捷,只有一款DV基础型通配符SSL证书,只需要验证域名所有权就可以签发证书。Geotrust旗下的通配符SSL证书产品不止一款,既有DV基础型通配符SSL证书,也有OV企业型通配符SSL证书。今天就随SSL盾小编了…

【每日论文阅读】Do Perceptually Aligned Gradients Imply Robustness?

近似人眼梯度 https://icml.cc/virtual/2023/oral/25482 对抗性鲁棒分类器具有非鲁棒模型所没有的特征——感知对齐梯度(PAG)。它们相对于输入的梯度与人类的感知非常一致。一些研究已将 PAG 确定为稳健训练的副产品,但没有一篇研究将其视为…

性能分析与调优: Linux 实现 CPU剖析与火焰图

目录 一、实验 1.环境 2.CPU 剖析 3.CPU火焰图 一、实验 1.环境 (1)主机 表1-1 主机 主机架构组件IP备注prometheus 监测 系统 prometheus、node_exporter 192.168.204.18grafana监测GUIgrafana192.168.204.19agent 监测 主机 node_exporter192…

产教融合 | 湖南科技大学近千名学子走进云畅科技,深度研学低代码技术与应用

近日,湖南科技大学计算机学院和潇湘学院的2022级共918名同学齐聚湖南云畅网络科技有限公司(简称“云畅科技”),展开了一场深入了解低代码行业前沿技术的研学之旅。此次活动旨在拓展学生视野,提升对数字化转型的认知&am…

Jmeter扩展函数?年薪50W+的测试大佬教你怎么玩

我的 jmeter 里面,怎么没有 MD5 函数,base64 函数也没有,我是不是用了假的 jmeter? 哈哈哈,不是的。jmeter 的函数,有自带函数和扩展函数两大块,自带函数,就是 jmeter 官方自带的&a…

React.Children.map 和 js 的 map 有什么区别?

JavaScript 中的 map 不会对为 null 或者 undefined 的数据进行处理,而 React.Children.map 中的 map 可以处理 React.Children 为 null 或者 undefined 的情况。 React 空节点:可以由null、undefined、false、true创建 import React from reactexport …

CompletableFuture超详解与实践

0.背景 一个接口可能需要调用 N 个其他服务的接口,这在项目开发中还是挺常见的。举个例子:用户请求获取订单信息,可能需要调用用户信息、商品详情、物流信息、商品推荐等接口,最后再汇总数据统一返回。 如果是串行(按…

ME11/ME12拷贝采购信息记录

注意点: ECC没有好用的修改/创建采购信息记录BAPI所以使用BDC处理, 因为BDC执行过程如果遇到黄色提示消息就会暂停,所以如果遇到黄色提示需要增强处理 还有就是价格的小数位数问题,如JPY不能使用小数位数问题处理 增强调整 如下…

C语言—数据类型

变量和基本数据类型 变量类型的概念 变量是在程序中可以发生变化的量,变量是有类型的,变量的类型决定了变量存储空间的大小以及如何解释存储的位模式。 1字节(Byte)8位(bit) 定义格式 存储类型 数据…

基于Java+Springboot+Mybatis+Vue+微信小程序的轿车改装设计方案

微信小程序的轿车改装设计方案,用户可以自行在小程序中查看某型号轿车的零件,可以查看相关的汽车资源。 一、API1.1 SpringBoot框架搭建1.2 数据库设计1.3 实体映射创建Mapper1.4 接口封装1.5 常用字段类型 二、小程序2.1 项目创建2.2 首页2.3 产品中心页 三、管理端…

[C#]winform利用seetaface6实现C#人脸检测活体检测口罩检测年龄预测性别判断眼睛状态检测

【官方框架地址】 https://github.com/ViewFaceCore/ViewFaceCore 【算法介绍】 SeetaFace6是由中国科技公司自主研发的一款人脸识别技术,它基于深度学习算法,能够快速、准确地识别出人脸,并且支持多种应用场景,如门禁系统、移动…

通过Kuboard部署Nginx服务并映射挂载NFS服务器

这里写目录标题 一、项目概述二、环境三、样式nginx运行页面nginx挂载存储页面nginx服务service页面index代理网页 四、部署流程集群导入NFS服务器搭建新建nginx工作负载配置拷贝配置信息到NFS 五、总结 一、项目概述 使用Kuboard图形化页面部署Nginx工作负载,代理…

FineBI实战项目一(8):每天每小时订单笔数

1 明确数据分析目标 统计每个小时产生的订单个数 2 创建用于保存数据分析结果的表 create table app_hour_orders(id int primary key auto_increment,daystr varchar(20),hourstr varchar(20),cnt int ); 3 编写SQL语句进行数据分析 selectsubstring(createTime,1,10) as …

SpringBoot pom.xml文件标签含义

Pom文件 基本构成 通过最简单的一个SpringBoot项目的 Pom文件来了解一下Pom文件的基本构成 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XML…

Failed to create CUDAExecutionProvider 使用onnxruntime-gpu未成功调用gpu

最近在使用GPU对onnx模型进行加速过程中&#xff08;仅针对N卡&#xff0c;毕竟也没有别的显卡了。。&#xff09;&#xff0c;遇到了点问题&#xff1a;就是明明在安装了合适版本的显卡驱动和CUDA后&#xff0c;onnx还是不能够成功调用GPU&#xff0c;并且还出现了先导入torch…

专属定制适合个人的知识付费平台,打造个性化品牌与自主管理体验

明理信息科技知识付费saas租户平台 在当今数字化时代&#xff0c;知识付费平台已经成为人们获取专业知识、提升自身素质的重要渠道。然而&#xff0c;公共知识付费平台虽然内容丰富&#xff0c;但难以满足个人或企业个性化的需求和品牌打造。因此&#xff0c;我们提出了专属定…

代码随想录算法训练营day6|242.有效的字母异位词、349.两个数组的交集、202.快乐数

哈希表理论基础 建议&#xff1a;大家要了解哈希表的内部实现原理&#xff0c;哈希函数&#xff0c;哈希碰撞&#xff0c;以及常见哈希表的区别&#xff0c;数组&#xff0c;set 和map。 什么时候想到用哈希法&#xff0c;当我们遇到了要快速判断一个元素是否出现集合里的时…