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

发布时间:2024年01月08日

前言


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

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

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 驱动下载

我们需要两个驱动:

在这里插入图片描述

  • 第二个是:下载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

在这里插入图片描述

文章来源:https://blog.csdn.net/weixin_45266856/article/details/135452755
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。