LXD容器中通过Qemu安装Win7虚拟机(呕心制作-诸多细节)
前言
为了抵御网络攻击,实验复现某些计算机漏洞,需要安装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
由于容器没有界面,所以需要利用SSH
的X11
完成界面转发到宿主机上
apt-get install openssh-server
修改容器的ssh
配置文件
vi /etc/ssh/sshd_config
将PermitRootLogin
和X11Forwarding
修改为yes
,同时去掉注释
重启容器的ssh
服务
systemctl restart sshd
查看是否成功开启服务
systemctl status sshd
2.3 界面转发-宿主机设置
修改宿主机的ForwardAgent
和forwardx11
以及forwardx11trusted
为yes
,同时去掉注释
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
,已经不需要加载win7
和virtio
镜像了,所以,当关机后再次启动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
-
qemu
中win7
的IP为:10.233.73.76
这个时候win7
已经可以ping
通宿主机和容器,但宿主机和容器无法ping
通win7
还要做最后一步,在控制面板中关闭防火墙设置
到现在为止,宿主机可以ping
通win7
容器也可以ping
通win7
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!