文章

启动Windows支持的Linux虚拟机

如何在自己的Windows电脑上启动Linux虚拟机

启动Windows支持的Linux虚拟机

起因是学校有脑残作业,必须使用360浏览器才能完成作业,但是大家都知道360浏览器是流氓软件,所以逼着不会安装虚拟机的我学习并在自己的电脑上启动一个Linux虚拟机,然后在虚拟机里安装360浏览器,这样就既可以完成作业,又不会被360浏览器骚扰,本文便用来记录和方便其他人使用。

注:
对于很少碰计算机的读者可能不知道如何运行指令,首先按Win键搜索PowerShell可以打开PowerShell,用来运行后面大多数的命令。除此之外,对于虚拟机的命令需要在虚拟机打开的界面运行。只有部分特殊声明的命令是在CMD窗口运行的,打开方式是Win+R同时按下,然后输入cmd,按回车打开。

需求

首先我需要明白自己的需求,我的需求是:

  1. 虚拟机要能够运行
  2. 虚拟机最好不要安装在C盘
  3. 使用镜像,否则梯子受不了
  4. 使用图形化界面

针对我的需求,我上网找到一些教程1 2 3 4 5,我主要参考的是参考资料1,下面我就记录一下我的安装过程。

测试wsl

首先第一步,我测试了一下我有没有wsl2,报错

1
2
3
C:\Users\Administrator> wsl --set-default-version 2
Please enable the Virtual Machine Platform Windows feature and ensure virtualization is enabled in the BIOS.
For information please visit https://aka.ms/wsl2-install

指出我需要

  1. 启用 “虚拟机平台” Windows 功能
  2. 在BIOS中启用虚拟化

但是实际上BIOS中虚拟化是默认开启的,所以实际上只是开启”虚拟机平台” Windows 功能,大家如果遇到同样的问题就不用非得去看BIOS,等开启”虚拟机平台” Windows 功能仍然不行再看就好。

不过测试结果告诉我,我需要安装wsl2,因为报错:

1
2
PS C:\Users\Administrator> wsl --update
Invalid command line option: --update

而报错是因为在首次设置 WSL 2 时,系统需要一个特定的内核组件安装包,直接运行命令是不行的,所以我还得去手动安装一下WSL发行版,网址2。安装之后再执行

1
wsl --set-default-version 2

就不会报错了。

下载

接下来就是下载安装包,在同样的网址2下大家按照教程1找到自己中意的发行版下载即可,不过下载比较缓慢,大家耐心等待就好。

大家一定要记住自己的账户密码,后面还会用到的!

接下来仍然按照教程操作,不过我们第一步下载下来的直接就是.appx文件,这不是第二步我们需要的文件,这里我们还是需要手动更改文件为.zip后缀,正常进行教程的第一步,不过后面的步骤就是一样的了,这样我们就成功将一个Ubuntu虚拟机安装到了我们的电脑上,而且不是C盘。

控制

尽管我们后面要给虚拟机安装桌面,但是这里我觉得仍然有必要知道怎么控制虚拟机。

主要是两个操作,一个是打开虚拟机,任何时候打开虚拟机你都只需要运行安装的ubuntu.exe文件(不过我的这个文件叫ubuntu2404.exe,读者可以找一下自己的这个文件叫什么,应该是大差不差的);而关闭虚拟机只需要在PowerShell里运行wsl --shutdown就可以关掉所有正在运行的虚拟机了。

配置镜像

配置镜像源是很重要的,不然下载东西可以痛苦死你。这里的步骤我主要参考了4,但是因为教程并不十分完全,所以还参考了Gemini的建议,经过我的安装,总结步骤如下:

首先强烈建议运行

1
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

源配置文件通常是 /etc/apt/sources.list,命令的作用是备份这个文件,方便出问题更改。

然后执行

1
sudo nano /etc/apt/sources.list

进入编辑界面,编辑配置文件,但是这里不建议直接复制教程4的配置,我最开始就是这样做的,可是后面下载配置时会出错,我更建议的是去镜像站根据自己的版本生成对应配置文件,然后粘贴过去(补充:粘贴按键我还没有弄得很清楚,不过我感觉应该是右键粘贴,读者也可以试试)。配置完成后

  • Ctrl + X保存退出。
  • 输入Y确认保存。
  • Enter确认文件名。

接下来执行

1
sudo apt update

让APT重新加载软件包列表,以便从新的镜像源获取信息,同时也可以检查一下镜像十分成功地加载了。检查完成之后也可以使用

1
sudo apt upgrade

把可用更新安装一下。

打开桌面

接下来我们需要打开虚拟机的桌面,不然我怎么使用该死的360呢😭,这部分主要参考5。 首先依次运行如下代码安装依赖,如果前面镜像配置准确则应该流程地就可以安装:

1
2
3
4
sudo apt-get install xorg
sudo apt install -y xrdp
sudo apt install -y xfce4
sudo apt install -y xfce4-goodies

接下来设置端口:

1
sudo sed -i 's/port=3389/port=3390/g' /etc/xrdp/xrdp.ini

还有修改配置文件(我也不知道是干什么的,只不过参考链接4 5 都有):

1
sudo echo xfce4-session >~/.xsession

接下来重启服务

1
sudo service xrdp restart

还有获取ip:

1
ip a

我这一步的输出如下,记住第六个,参考5,具体地就是数字后面跟着eth0的那一个。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 4a:45:3e:36:fc:87 brd ff:ff:ff:ff:ff:ff
3: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 76:02:63:dc:4d:f6 brd ff:ff:ff:ff:ff:ff
4: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
    link/ipip 0.0.0.0 brd 0.0.0.0
5: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
    link/sit 0.0.0.0 brd 0.0.0.0
6: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:3c:43:53 brd ff:ff:ff:ff:ff:ff
    inet 172.29.253.231/20 brd 172.29.255.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::215:5dff:fe3c:4353/64 scope link
       valid_lft forever preferred_lft forever

然后在远程桌面里链接,这里有两种方法,图像化地可以参考4,或者直接cmd执行:

1
mstsc /v:172.29.253.231:3390

其中172.29.253.231是我的ip,而3390是我们前面设置的端口号。

值得注意的是,每次启动虚拟机都需要重新查看ip和设置端口号,每次启动ip都会变化,所以需要改变参数,而且设置完成仍然需要重启xrdp

至此如果没有问题我们就应该可以链接进虚拟机的桌面了。至于更改语言,大家可以参考5中的设置过程,选择语言和编码方式时不用十分严谨,选几个基本上就够用了,UTF-8基本上就能对付大多数情况了。

安装360

不要忘了我们的主线任务——安装360浏览器,完成作业。最开始我想这么奇葩的需求,应该不会有教程吧,结果你猜怎么着,还真有!6 跟着教程,我们首先下载360的linux安装包,随后在虚拟机命令行使用如下命令将文件复制到我们的虚拟机中(!千万不要双击运行了,给你真实电脑装一个就好玩了😂)

1
2
cd /mnt/c/Users/Administrator/Downloads
cp browser360-cn-stable_13.4.1000.56-1_amd64.deb /home/linux-admin/Desktop/

其中/mnt/c/Users/Administrator/Downloads是你下载的安装包的路径,\mnt是固定的,c/是C盘,后面路径就和真实路径相同。browser360-cn-stable_13.4.1000.56-1_amd64.deb是360安装包的名称,而/home/linux-admin/Desktop/是桌面路径,其中linux-admin请换成你自己的用户名。

然后在虚拟机里运行

1
sudo dpkg -i /home/linux-admin/Desktop/browser360-cn-stable_13.4.1000.56-1_amd64.deb

运行安装包安装360,最后的参数仍然是安装包路径。

网络问题

到这一步理论上来说安装就完成了,可是我却遇到了下面的问题:明明虚拟机ping可以访问网络,可是浏览器却无法打开网站。经过我的排查发现是https协议的问题,卡在TLS/SSL握手上了。AI给的解决方案也很简单,首先运行

1
sudo ip link set dev eth0 mtu 1350

临时放宽握手条件,经测试,这时就可以正常访问网站了。不过AI还告诉我可以使用配置文件永久更改,但是我怎么尝试也不行,遂放弃。不过对于我这种做一下作业,也完全没什么必要搞那么清楚,本来就是为了存放一些不想安装到电脑上的程序的 (当垃圾桶使)

本文由作者按照 CC BY 4.0 进行授权