搭建MacOS Windows Linux三系统无缝切换的终极工作环境
你是否想拥有一台能用于学习 Linux 且易于使用的电脑?
你是否想拥有一台安装了 Windows 和 Linux 双系统的电脑?
你是否想过让一台电脑上的双系统不用重启就能切换系统使用?
你是否还贪心过同时安装 MacOS Windows Linux 三系统?
如果三系统能无重启随意切换,你期待吗?
如何看待计算机
想想我们都用计算机干了一些什么事?仔细归纳的话,计算机似乎就是一个多功能的通用高级工具。我们用它去办公、去记录、去设计、去娱乐、去社交等等,所以从工具属性的角度去看待计算机的话,或许能降低我们对它认知的神秘感。
是工具就存在着交互,鼠标键盘麦克风输入给操作,屏幕音箱输出给我们反馈,计算机的一切设计变更都可以看做是为了更好的交互体验。在计算机的早期并没有现在这么直观,生动的图形界面,我们想要计算机完成一些任务的交互方式就是键盘输入一些我们称为字的符号,简称字符,多个字符在一起就叫字符串,计算机接收到这些字符串后,根据程序的设定,就会执行输入字符串对应的计算任务,然后以我们能看懂的字符串形式输出结果,这一过程看上去就是我们输入一个命令,计算机执行命令后输出执行结果,我们称这种交互方式为命令行交互方式。
以前计算机是昂贵的,大多情况下都是一帮人去操作一台电脑,以计算机为中心的话,那每个连接操作计算机的设备就是一个端点,称为终端。所以其实那时候的人机交互方式就是通过终端键盘输入,计算机运行计算任务后将输出传递回终端显示。这种古老的终端命令行交互方式一直保留到了今天,在今天图形化操作界面中可以虚拟出终端的输出界面,我们称为虚拟终端。虚拟终端是我们今天能继续以命令行的方式同计算机交互的基础。
命令行交互之所以到现在还不衰落,是因为他没有图形界面的负担,程序执行快,而且对于熟练了命令行操作的专业人员来说,命令行操作不知比图形化效率提高了多少倍,而且命令行里不同的命令互相组合,便可进一步组合成一条新命令,对于重复的操作这不是很灵活高效嘛?
上面说了这么多看似跟这次题目不太相关的东西,其实就是希望对一些读者建立对计算机还算明了的认知吧!其实学习 Linux 不就是去了解掌握 Linux 命令行各种命令及组合各种命令的过程嘛,好了,讲了这些,希望能对 Linux 的初学者有一定的帮助。下面就开始拥抱 Linux 吧!
拥抱Linux
Linux
其实主要就是 Linux 内核
,众多 Linux 的桌面操作系统都是在内核的基础上定制开发了一些应用工具程序,图形化界面等。常见的 Linux
发行版很多,常见的就包括 RedHat Debian CentOS ubuntu Arch Manjaro
等等。我们想学习 Linux 或需要一个 linux 的开发环境,首先需要一个能使用的 Linux
操作系统,下面介绍几种搭建可用 Linux
系统环境的方式。
虚拟机安装
一般我们学习或是简单的开发任务,我们常见的做法在 Windows
系统上通过虚拟化软件虚拟出一台电脑主机,然后选择一个 Linux
桌面操作系统安装到虚拟机上,我们便能拥有一个实际运行的 Linux
系统,任何的操作其实跟实际的主机没太大的区别,不过一般 Linux
发行版的桌面操作系统都是比较大的,对于原本性能就比较弱的 Windows
电脑来说,运行虚拟机可能会很吃力。
可用于虚拟化的软件还是比较多的,Windows
自带的 Hyper-V
、VMware
系列、开源的 vitrulbox
qemu
等,苹果系统上你还可以使用苹果的 Parallels Desktop
。这里较为推荐的是 VMware
系列的软件,它目前也有个人免费版,具体选择它还有一些其他的原因,后面的内容将会看到。
通过 VMware
虚拟机安装操作系统其实是很简单的,大概可以分为三步:
- 配置出虚拟主机,从创建虚拟机开始,其实就是在一步一步的引导你完成对虚拟主机的配置,比如选择
CPU
的核心数量、内存大小、硬盘大小等,像网络、USB、显示屏等由于需要与主机共用,所以提供了一些机制去共享主机的网络,USB
接口、显示屏等; - 虚拟机配置好后,当然就是为这台虚拟好的主机安装一个操作系统了。在配置的时候我们选择的虚拟光盘镜像(
.iso
)文件,其实就相当于我们将系统安装光盘插入到了虚拟主机中,虚拟主机启动的时候就会读取这个虚拟光盘里面的操作系统安装程序,然后根据安装程序完成操作系统的安装。还有一些其他的配置,比如选择系统启动引导方式是传统引导还是UEFI
引导、 显存什么的,根据自己的理解配置,不行用默认的就可以了; - 安装驱动,虚拟机软件从主机中虚拟出一台虚拟电脑,那就需要对主机的硬件设备也做一些虚拟,虚拟机里面的系统需要驱动这些硬件怎么办,那就是为虚拟机系统安装
VMware-tools
啦,虚拟机系统的所有驱动都相当于在这个VMware-tools
中啦,安装完成后虚拟机出了性能外,在功能上跟实际的主机就几乎没啥区别了。
具体安装过程不做详细介绍,有需要的读者可以百度参考一下其他作者的文章,这里主要是理解这个核心思想,理顺了逻辑关系,具体实践的时候也就是顺理成章的事了。
WSL
WSL
是 Windows Subsystem for Linux
的简写,是 Windows10
系统开始支持的,对于有一定Linux基础的读者,可以尝试用一下 WSL
,对 Linux
零基础的人来说,这不太推荐,因为它没有桌面环境,只能用命令行的方式交互,并且它能直接访问到你 Windiws
的文件数据,存在敲错命令导致重要文件数据被删除的风险。
WSL
的使用方式也很简单,大概就是两步:
- 启动
WSL
。在搜索栏搜索控制面板,打开控制面板界面后,依次选择 程序 ,启动或关闭Windows的功能,找到并勾选适用于Linux的Windows子系统,点击确认即可,之后需要重启电脑,重启后便启动WSL
成功; - 重启后在
Windows
的应用商店里面搜索Linux
,选择一个你喜欢的发行版后点击获取安装就好了,安装完成后便可以直接点击启动菜单里的应用打开了,你也可以在cmd
里或直接搜索bash
运行。之后便可以通过 Linux 命令行的方式同电脑交互了。
虽然 WSL
能满足很多场景的需求了,但是也还存在一些问题,比如还无法使用主机的 USB 端口等;
让windows像一个桌面Linux发行版
如果你对美学有一定的追求,或者你用过 Linux
桌面操作系统的话,你一定接受不了 Windows
的虚拟终端,不论是 cmd
还是 Power Shell
在用的时候都让人感觉一言难尽,好在我们也有一些方案去做美化。这里推荐的是使用一个叫 Cmder 的虚拟终端工具,下载完成后,解压到任意一个目录,然后可以手动创建一个 Cmder.exe
快捷方式到桌面,然后打开,我们在应用窗口的右下角找到终端的设置,在通用里面找到 选择你启动的时候执行的任务的设置项,设置为 {WSL:bash}
,这样,以后你每次打开都会进入到 Linux 的 bash
里面了。你还可以设置虚拟终端最小化与恢复的快捷键。如果你接触过 Manjaro Linux
的话,那你一定知道下拉的终端窗口,Cmder
也支持下拉的方式,你只需要在设置页面点击相关选项即可,具体可参照下图:
你也可以设置语言、主题颜色等,更多的功能就自己去尝试吧,怎么样,现在是不是有一种 Windows 桌面的Linux系统发行版的感觉了。
Windows & Linux双系统
对于一些依赖 Linux
去做且对算力有要求的一些使用开发需求时,上面提到的这两种方式明显或多或者的存在着一些性能上的问题,这时候我们考虑的就是直接在物理主机上安装 Linux 系统,我们可以将电脑的硬盘划分出一部分供安装 Linux
系统使用,这样我们电脑就是 Linux 与 Windows 共存的双系统了,我们可以在开机的时候可以选择进 Windows
或 Linux
。我们可以用多种方式去安装双系统,具体安装过程就是把系统镜像恢复到硬盘上的过程,大家可以参考其他具体安装的文章(下一节我也会介绍一种简单的方法)。这里需要注意的就是使用UEFI引导的电脑,我们一般都有一个引导分区,虽然双系统我们可以用一个引导分区去引导多个系统,但是不建议这么做,最好一个系统一个引导分区,具体原因下面描述。
双系统切换必须重启?
对于双系统,有些时候可能因为一件简单的小事,我们都要重启切换到另一个系统处理后再回到当前系统,这是一件很烦心的事情,有没有一种方式能做到不需要重启也能切换系统呢?在经过一番尝试之后,我找到了一种折中且我自己很满意的方案。
电脑的启动过程就是读取硬盘上的操作系统程序到内存中执行,如果我能让虚拟机启动的时候去读取硬盘上的另一个操作系统程序运行,那不就是能打开另一个系统,去完成需要另一个系统才能完成的工作啦!而且,从使用的角度看,我相当于同时运行着硬盘上的两个系统。经过一番折腾后,确实做到了,Windows
中,我们在配置虚拟机硬盘的时候选择使用物理磁盘,之后选中另一个系统需要用到的所有硬盘分区,我们便可以通过虚拟机启动另一个系统啦。但是有一个要求就是独立的引导分区,不然公共的引导分区被当前系统占用了,虚拟机是没有权限再去访问的,所以上一节我建议一个系统对应一个启动分区。
我们甚至可以用虚拟机来安装双系统,先划分出一块硬盘空间并删除掉,然后再虚拟机配置的时候选择这一块硬盘空间,之后就是常规的启动安装流程,安装完后我们也可以安装 VMware-tools
程序,这个程序在物理机启动的系统的时候也不会产生冲突的。第二系统安装好后,我们关机,选择 bootice 这样的工具程序,找到第二系统启动分区的启动 EFI
文件,然后将这个 EFI
文件添加到 BIOS
启动列表,后续电脑在启动的时候我们就可以选择并启动这个由虚拟机安装的系统了。
详细可参考我在B站上传的一个视频:
Linux 中启动 Windows 系统
在前文中我推荐使用 VMware
系列虚拟机还有一个原因就是 VMware
能安装在 Windows
Linux
和 MacOS
上,这样兼容性上应该会好很多。当然,Linux
使用虚拟机去启动 Windows
在逻辑上都是能走通的,这里就不介绍了,有兴趣的读者可以自己去尝试一下。
我还想要 MacOS
在很多应用场景中,MacOS
是很有优势的,比如笔者就是在用 MacOS
的 FCPX
来剪辑视频的,而且苹果系统交互及优化方面的确做的很好。但是苹果设备一般都很贵,一般人想买一台预算都非常吃紧。不过我们也有一些其他的方式能使用上苹果系统,那就是黑苹果。
黑苹果
自从苹果采用了 Inter 的 CPU 后,就意味着苹果系统程序能被 Inter的处理器执行,黑苹果就自然的诞生了,正常安装并驱动的黑苹果系统一般还是能稳定运行的,至少笔者自从用上后就没有用 Windows
当主力系统的想法了。
黑苹果的安装过程
具体黑苹果的安装与驱动过程这里就不做介绍了,我同样上传了一些分享视频到B站,有需要的读者可以观看分享视频,后续我如果整理了黑苹果相关的文章,你同样可以阅读参考:
终极目标–同时运行 MacOS Windows 与 Linux 系统
其实原理都同上述双系统一样,如果读者也成功安装了黑苹果的话,我这里以我的安装情况做一下介绍:在硬件上,我一共有三块固态硬盘及一块机械硬盘;每固态硬盘硬盘分别安装一个系统,都有独立的启动引导盘;机械硬盘用于存数据;
在苹果系统中安装 VMware fusion
虚拟化软件,启动硬盘上的系统和 Windows
上略有不同;在 MacOS 上,我们打开终端后,先查询一下自己的硬盘分区情况:
1 | diskutil list |
1 | /dev/disk0 (internal, physical): |
然后,我们可以到 VMware fusion
的安装位置,找到一个用于将物理硬盘转换为虚拟机能认识的硬盘的工具,执行命令如下:
1 | # vmware-rawdiskCreator create <diskDev> <partNums> <virtDiskPath> <adapterType> |
上面这一行命令的意思就是,运行 vmware-rawdiskCreator
的 create
去将物理磁盘 /dev/disk1
全部分区 fullDevice
创建为 VMware 的虚拟磁盘设备,虚拟磁盘文件以 Windows
命名,磁盘的适配类型为 ide
。这样就会在当前文件夹下生成一个名为 windows.vmdk
的虚拟磁盘文件,我们可以使用编辑工具打开这个文件,他其实就是将一些描述信息告诉 VMware 虚拟机而已。
同理,我想讲 disk4
也创建为一个虚拟磁盘给虚拟机中的 windows
使用,那我就执行如下命令:
1 | /Applications/VMware\ Fusion.app/Contents/Library/vmware-rawdiskCreator create /dev/disk4 fullDevice data ide |
创建好虚拟磁盘后,我们打开 VMware fusion
并创建自定义虚拟机,然后根据提示一步一步完成配置,配置完成后其实会生成一个 .vmx
的虚拟机文件,这个文件记录了虚拟机的虚拟硬盘文件 .vmdk
的位置,我们直接删除它生成的虚拟硬盘文件,并把 .vmx
文件中关于虚拟硬盘文件的名字改为我们创建的 windows.vmdk
就好了,如果还要添加 data.vmdk
的话,同样通过虚拟机添加一个虚拟磁盘,然后同样的逻辑进行替换即可。之后别忘了将生成的 .vmdk
文件拷贝到与 .vmx
相同的文件夹,启动虚拟机后 windows
系统就启动成功了。
创建 Linux
的虚拟磁盘也按照同样的方式就好。这里并没有做详细的演示,其实理清逻辑原理,一步一步多动脑去做,其实也不是很难的。
总结
由于我主要使用的是 MacOS 系统,平常需要用到 Windows Linux
的时候就用虚拟机打开,并没有尝试通过 Windows Linux
的虚拟机来启动黑苹果,如果读者感兴趣的话,请自行研究,切记理清逻辑关系与原理,问题总有办法解决的。
搭建MacOS Windows Linux三系统无缝切换的终极工作环境
https://ereel.cn/2022/02/12/搭建MacOS-Windows-Linux三系统无缝切换的工作环境/