直接上问题:我的电脑是MAC一体机,安装了双系统,windows系统是WIN10,使用WIN10自带的并通过微软的应用商店安装了Terminal 和 Ubuntu 22.04.1 LTS ,安装成功后便可通过Terminal操作Ubuntu系统,在给Ubuntu系统安装GO环境时,解压从GO官方网站下载的tar.gz压缩包时报如下错误(这里只展示部分信息,未记录全):
/usr/bin/gzip: 1: ELF : not found
/usr/bin/gzip: 3: : not found /usr/b
经过研究发现,这个ELF 报错最主要的原因是,Windows自带的wsl版本问题,这个wsl是什么呢?说白了它就是windows系统能支持安装及操作Linux系统的底层支持工具。如果有想详细了解它的同学可以直接去学习:什么是适用于 Linux 的 Windows 子系统 | Microsoft Learn (微软官方说明)
知道了它的底层是什么就好解决了,肯定是这个wsl出现问题了,打开Win10 的 PowerShell,输入命令:wsl -l -v 命令,发现它的默认版本是1,ubuntu对应它的版本也是1。问题找到了,我安装的是最新的Ubuntu系统,应该使用wsl 的版本是2。那就直接把它切为2,使用如下命令切换其默认的版本:wsl --set-default-version 2,切换了默认版本之后,后面再安装其它Linux操作系统时,它就默认给操作系统配置成默认的版本号。
我们已经安装好的Ubuntu 22.04.1 的wsl还是1,还需要使用如下命令进行切换:wsl --set-version Ubuntu 22.04.1 这时会提示你正在切换,需要等几分钟,如下图:
等了几分钟之后,它直接报出“切换失败,可能是未开启CPU虚拟化”,我们都知道如果非MAC电脑,我们可以直接进bios系统里的CPU进行设置,但是MAC电脑没有bios系统。想确认的小伙伴可以打开任务管理器如下图(显示“虚拟化:禁用”的就是未开启):
虽然MAC电脑没有bios系统,但是也是有解决办法,两种办法,但是本人感觉还是第二种解决方法比较彻底,在这里我们将两种方法都给大家写出来。
方法一:
1、关闭Windows系统,进入Mac系统(相信有很多小伙伴在安装了Windows系统后不知道怎么进入Mac系统,具体方法:在电脑开机时按住"option"键,直到出来系统选择界面,就可以切换了)。
2、进入Mac系统后打开终端(不知道终端在哪的小伙伴看这里,路径:“前往——实用工具——终端”)。
3、在终端输入如下命令确认硬件是否支持:sysctl -a | grep machdep.cpu.features ,查看终端返回的信息里是否包含 "VMX" 三个字母。如果包含就说明硬件是支持,可以继续下面的步骤;如果没有,那就只能换电脑了。
4、继续在终端输入:sysctl kern.hv_support 开启虚拟化,如果输出为1则是开启成功,如果输出为0,则开启失败。(开启失败的小伙伴需要在终端输入:sudo nvram boot-args=”kext-dev-mode=1 输入密码重启Mac后就可以开启了)
5、开启后再进入Windows 系统后查看任务管理器就是开启的状态
注意:这个方法我个人判定在Mac系统里是可以的,当我在Windows系统继续切换wsl版本的时候还是失败,我再重启后任务管理器中的虚拟化就是禁用的了。所以不提倡这个方法,这里写出这个方法的原因是为只使用MAC系统小伙伴提供开启虚拟化的思路。
方法二(推荐):
1、下载成功后查看 refind.conf 配置文件中的 #enable_and_lock_vmx false 是否开启,并设置为 true,即:enable_and_lock_vmx true
2、将refind整个文件夹复制到C盘的根目录下
3、用管理员打开 PowerShell (打开方法:鼠标右键点击左下角的windows“开始菜单”如下图:)
4、这时需要将你电脑的EFI目录映射出来方便操作,在PowerShell中输入:mountvol g: /s 这时“我的电脑”下会多出一个G盘,这个盘就是电脑的EFI盘,注意这个盘下的任何文件谨慎操作,操作不当可能会造成无法开机。
5、在PowerShell 中进入C盘的根目录,输入:cd C:/
6、将refind整个目录拷贝到G盘根目录下,输入:xcopy /E refind g:\EFI\refind\
7、将refind 设置为引导程序,输入:bcdedit /set "{bootmgr}" path \EFI\refind\refind_x64.efi
8、重启电脑,重启时引导中会有两个Windows图标,两个Mac图标,选择第一个Windows图标进入即可。进入系统后查看任务管理器中的虚拟化是否是开启的状态,如下图即可:
9、安装虚拟化服务,用键盘调出【运行】(具体方法:Win + R 两个键),在运行框中输入control,如下图:打开控制面板
10、点击【程序——启用或关闭Windows功能】,如下图:
11、勾选虚拟服务(Hyper-v)并安装 (注意:Hyper-v下的必需全部勾选),如下图:
12、安装完成后重启电脑再重新设置Ubuntu的wsl版本即可。
注:这个方法唯一的缺点是引导界面会出现两个windows图标和两个Mac图标,需要自己辨别,图标下有相应的英文说明。
按照以上步骤设置好之后就可进入Terminal的Ubuntu系统里进行解压相应的tar.gz文件了。