Win+ Linux 双系统到底有什么弊端和优点?
最近对折腾 Linux 有点小兴趣,想要了解下 Linux 下的开发,跑虚拟机感觉有点变扭。
准备装个双系统,开始一腔热血,思考半天准备 win10+manjaro 双系统。
但身边的朋友却说双系统有很多的问题,确实不太懂这方面的知识。
想请教下各位。
双系统有什么弊端? 又有什么优点?
目前渣配: 256 固态 1T 机械 UEFI+GPT 格式启动 Win10 家庭版
最近对折腾 Linux 有点小兴趣,想要了解下 Linux 下的开发,跑虚拟机感觉有点变扭。
准备装个双系统,开始一腔热血,思考半天准备 win10+manjaro 双系统。
但身边的朋友却说双系统有很多的问题,确实不太懂这方面的知识。
想请教下各位。
双系统有什么弊端? 又有什么优点?
目前渣配: 256 固态 1T 机械 UEFI+GPT 格式启动 Win10 家庭版
如果一定要玩 PC 游戏可以装个只有游戏的 win,毕竟为玩游戏切一下也不废事。
为何不借着这个机会(双系统麻烦),转到虚拟机 linux,多熟悉熟悉终端,让坏事变好事。
win10 里只有游戏,manjaro 里有时用 vbox 跑 win7 虚拟机,解决一些不得不用 win 的情况(目前基本没有,偶尔打开虚拟机为 QT 程序打个包,或者给手机 9008 线刷一下)
现在很少切系统玩游戏了,一是没多少时间,再一个也是嫌麻烦(最初装 linux 的目的就是让自己玩游戏时嫌麻烦)
分区:一个 512 固态硬盘,100 多 G 给 win,剩下的 manjaro,两个系统都是单分区(现在越来越感觉多分区没多大意义)
至于正文里说的双系统有很多问题,我觉得问题肯定有,从大的角度看有两类:硬件问题( linux 兼容性)和软件问题,前者对于 linux 新用户来说需要多花一些时间,不过用新一点的内核基本不会有硬件问题,后者在 arch 系 aur 的加持下基本都可以解决(面向编程和日常通讯)
如果你只想了解 linux 的开发的话,建议在 win 下使用子系统;如果你是奔着把 linux 作为主力系统的目标去的话,需要有心里准备,因为的确需要解决一些问题,但解决问题的过程能让人收获不少,我觉得是值得的
日常用的话可以考虑 WSL,我做 Web 开发用我的
如果想使用桌面和系统服务可以用虚拟机,我曾经在 2015 年到 2016 年使用台式机+Win10+Virtual Box+Arch Linux 做主力开发,上班的时候 Virtual Box 全屏,下班后把 Virtual Box 休眠回到 Windows 界面玩游戏。
要是你觉得基本使用方面都熟悉了,打算研究一下系统引导、驱动硬件(比如直接从 Linux 中调用显卡硬件)等可以装双系统,现在主流发行版装双系统也不难,兼容性最好的是台式机,笔记本也可以考虑 Ubuntu 认证的机型(或 System76 的产品)。
缺点:
非常容易丢数据!!
windows 的启动顺序:上电 -> 主板 efi -> windows boot manager (未知) -> windows loader(efi)
linux 的启动顺序: 上电 -> 主板 efi -> grub (efi) -> linux loader(efi) -> linux 内核
双系统的启动顺序: 上电->主板 efi-> grub (efi) -> windows boot manager (未知)-> windows loader(efi)
windows 的 boot manager 和 bcd,数据和可执行程序放在哪没几个人搞得清楚,似乎也会直接写到主板 efi 相关的 rom 里去
grub,可执行文件在 efi 分区里,配置文件在 linux 的 /boot 下,如果用默认参数安装 /boot 就是挂在 / 里,意味着启动配置文件在 linux 分区里,那么想在 windows 下编辑 grub 的启动配置,或者想卸载 linux 保留 windows 就变得非常非常困难,一旦 linux 的 rootfs 挂了 windows 也起不来了
而非常不幸的是,linux 本身非常容易莫名其妙挂掉,比如你两年没升级的 arch,心血来潮升一下,挂了。ubuntu1604,改一下源升到 1804,成功了,再改源升 2004,挂了,这种系统版本升级失败都是直接毁掉 libc 之类的基础依赖,想修想回滚都非常非常困难,至少单机不外挂系统是无法修复的。在 linux 挂掉的情况下,你想重装 linux ?或者干脆卸掉?不好意思,grub 配置文件也在里头,仔细考虑。
另外一个非常不幸的点是 bcdedit 也非常难用而且原理不明,你没法简单地 copy 一下 bcd 文件和 boot manager 的 efi 程序就能让 windows loader 正常跑起来,全中文互联网世界你都找不到 “windows 系统还在引导没了如何修复”的正确的步骤和资料。
还有一个更更不幸的点是,windows 跨版本升级时有时候会把引导重新写一遍,意味着会丢失主板 efi->grub 的流程而直接执行 windows boot manager……
没那必要。还不如开个 vps 来尝试,还有快照,还不占资源。
上说的切换问题也就是重启一次的问题,不知有啥麻烦的,在座的硬盘应该都比我的辣鸡 stat 固态要强吧,我切换系统都不用一分钟
win 那边的更新也没问题,可以正常更新
wsl2 虽然不是不能用,但是和真正的 linux 文件系统相比还是不太行,要是 wsl 给力我早就主力回 win 了
linux 也不是不能玩游戏,有 steam,用手柄玩空洞骑士也没问题,不过你双系统就不用考虑游戏问题了,玩游戏就切去 win 专心玩游戏
chrome,Firefox 没有视频硬解,chromium 有
一台 win
一台 mac
一台 linux
一台 chrome os
再整一台 vps
就可以了
如果你不是做需要硬性依赖 Linux 内核开发的软件开发,一般这个组合都能搞定。比如你可以在 wsl 里跑 epoll,process fork,signal 这些 linux 上的东西; redis/mongodb/msyql 也可以像云服务器一样启动——虽然我现在都是用 docker 启动了。wsl 里跑 docker 只能调用 windows 下的 docker,但体验上我暂时没感觉有差异。而且我觉得 Docker in windows 的那个 dashboard 非常好用,并不想用 linux 下的 docker 命令行了。
bootsect 写入引导扇区代码(仅针对于 BIOS/legacy 模式启动的计算机)
bootsect /nt60 {第一个激活主分区盘符:} /mbr
bcdboot 重建 windows 引导文件:
最简单的:bcdboot c:windows,c:是安装的 windows 在 pe 、re 里面的盘符。
或者:bcdboot c:windows /s x: ,x: 是启动分区,bios 中是第一个激活分区,uefi 是 esp 分区。
或者相对的完整版本:bcdboot c:windows /s x: /f all /l zh-cn , /f 可以接受的值:bios,all,uefi
好橡还有个 bootrec 命令更傻瓜。比 grub-install,grub-mkconfig 不难到哪里去。
UEFI 模式还有一个神器:grub-mkstandalone 生成一个 efi 文件,直接放到 u 盘 /硬盘 efibootbootx64.efi, 启动就是 grub shell 了,然后可以手动引导 linux 内核或者 `chainloader /EFI/Microsoft/Boot/bootmgfw.efi` 启动 Windows,很方便。
至于双系统丢文件,新手常见情况都是没关闭 Windows 8/10 的快速启动,又作死在 linux 里面读写 ntfs 分区。。。
我的折腾路线变化:
不能接受虚拟机,虚拟机中 linux gui 好卡啊,这么优秀的系统不能活在 windows 的管理下。
↓
Linux gui 太垃圾了,浏览器看个视频都没显卡加速解码,gui 咋看很惊艳,但细节经不起推敲。Windows 真香,虚拟机 nb 。
↓
很久没用 kde 了,甚是想念,压缩个分区装个 linux 用 kde 。kde 真香,linux 真方便
↓
Windows 还是离不开,两系统各有长短,纠结。干脆把 ArchLinux 调整成既可以在 Windows hyper-V 虚拟机中启动,也可以直接在实体机中启动,这下不纠结了。
↓
用了很久以后,发现基本都是在虚拟机中启动 linux,极少极少在实体机上启动 linux,干脆删除了实体机启动的特性,只用虚拟机了。
docker wsl 都很好用其实.没必要用 linux GUI 了.
实际上卵用没有,任何时间段你只能使用一个系统,而多系统需求往往都是需要你同时启动两个系统在不同的系统之间切换的。所以这东西大家玩腻了都不玩了