写在前面:
网上关于这部分的消息零零散散,参差不齐,借国庆期间自己搞完这一套流程的机会,正好赶上1024程序员节,写篇文章完整记录一下使用win+linux双系统的引导搭建过程,分享一些我踩过的坑,希望有同样需求的伙伴能通过我的文章少走一些弯路。
本文章将介绍和解决以下问题:
- Clover是什么,它有哪些作用?
- 如何进行私有化部署?
- 主板UEFI引导时需要的EFI固件如何配置?
- 搭建Clover EFI时可能遇到的bug和解决方案?
目录
可点击文章超链接快速前往对应小节查看:
写在前面:
目录
前言
需求
系统安装
黑群晖DSM系统的安装
双系统引导时Windows系统安装及注意事项
那么怎么安装UEFI启动模式的操作系统呢?
为Win系统建立ESP引导分区
固化群晖引导
提取引导文件
向固件内植入引导文件
为黑群晖激活UEFI启动项
配置Clover进行双系统切换
Clover是什么
Clover的获取和配置
获取Clover
目录结构介绍
配置Clover,注入系统信息
安装主题(可选)
向固件内植入Clover引导文件
为Clover激活UEFI启动项
完结撒花*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。
前言
笔者有台自建的Nas放在家里,平时用来当作中枢服务器和个人网盘使用,当时服务器上运行的是TrueNas系统(一个针对存储服务器特化的linux发行版),一直以来都很喜欢群晖的DSM系统,有完善易用套件体系,配套的移动端App,简洁易上手的UI界面等等,所以趁着现在机器里的资料还不多,数据迁移也比较方便,还有更换系统的可能。同时家里人偶尔也需要使用到Win系统处理些简单办公,十一假期研究了一下怎么给服务器安装上双系统。
简单介绍一下我这台自组家用服务器的配置:
CPU:i3-4170T 低功耗版(毕竟主业是存储服务器,不以性能为主,够用就行)
GPU:Nvidia GTX 1030半高刀卡(服务器其实用不上,这张卡打算给Win拿来用)
主板:华南B85 itx(自带双1G网口,非常适合用来做服务器,性价比还是不错滴)
电源:益衡7660b(600W服务器1U电源)
内存:镁光DDR3 4Gx2 1600MHz(低成本低压双通道)
机箱:迎广MS04家用服务器机箱(精致程度远超矿渣蜗牛星际,当然价格也是)
散热:intel自带散热x1、机箱12cm风扇x1
硬盘:希捷酷狼4T x4(当作资料盘),intel 600P 512G(当作系统盘)
需求
有了上面的介绍,相信本次折腾的目标就很明确了,简单归纳为以下这几方面:
- 将原有的TrueNas系统换成群晖的DSM系统
- 安装Windows系统
- 实现Windows+Linux双系统的可视化切换(重点)
系统安装
黑群晖DSM系统的安装
首先要做的是黑群晖系统的安装(因为安装步骤真的超级简单,网上的资源和教程相当丰富)我就不过多墨迹了,本文主要讲的也不是教大家怎么装系统,这一趴咱跳过。(附一个详细的黑群晖安装教程,有需要的自行戳这里)https://blog.csdn.net/weixin_43338225/article/details/124857389https://blog.csdn.net/weixin_43338225/article/details/124857389
简单归纳为以下步骤:
- 准备一个U盘、DSM系统镜像、对应的引导程序、iso镜像写入软件
- 将引导程序使用iso软件写入U盘,修改U盘的硬件ID(VID和PID)
- 电脑A关机设置从U盘启动(跟装Windows系统类似)
- 在路由器里看到分给电脑A的IP,并用另一台电脑访问它
- 在弹出的网页中上传DSM系统镜像,等待安装完成后设置初始账户
- 重启即可完成安装(安装过程需要操作的部分10min不到,相当简单了)
到这里,成功完成后我们实现了【使用U盘引导,安装并启动群晖DSM系统】这件事
(当然其他Linux系统请参考对应的安装教程,建议使用grub引导)
双系统引导时Windows系统安装及注意事项
Windows系统怎么装我相信能找这篇文章看的人都能倒背如流了,不过多赘述,这里只强调几个做双系统时需要注意的地方:
- 系统需要使用UEFI引导启动,最好不要使用传统BIOS启动。
- UEFI引导需要在GPT分区表的硬盘上安装,MBR格式的分区表不可以。
附:如何查看当前系统的启动方式呢?可以按Win+R打开运行窗口,输入msinfo32回车打开
在打开的系统信息对话框里点击左侧标签页中的“系统摘要条目”在右侧找到BIOS模式一栏查看
那么怎么安装UEFI启动模式的操作系统呢?
具体UEFI启动的和传统BIOS启动有什么区别和优点此处按下不表,如何查看要用来装系统的硬盘是GPT磁盘分区表呢?我们这里使用diskgenius工具来检查和转换。进入软件后可以在左侧树状列表中点击父级项(也就是你的硬盘),在右边可以看到当前的分区表类型(MBR or GPT)。如果显示为MBR,右键硬盘菜单,选择“转换分区表为GUID格式”,随后点击左上角的“保存更改”按钮即可。
这里是diskgenius的官网,可以从这里下载https://www.diskgenius.cn/https://www.diskgenius.cn/
涉及系统分区更改,此步骤建议在PE环境下操作!
Warning:执行这步操作时请务必确认硬盘上没有重要数据!!!
Warning:执行这步操作时请务必确认硬盘上没有重要数据!!!
Warning:执行这步操作时请务必确认硬盘上没有重要数据!!!
更换GPT分区表后原分区会失效,需要删除所有分区重新建立
为Win系统建立ESP引导分区
还是在上面说过的diskgenius软件中,在确保硬盘分区表为GPT格式以及已删除所有分区后在左侧树状列表中点击硬盘父级项(记得看容量,防止点错),随后在软件上方的管状图中点击右键,选择“新建ESP/MSR分区”,随后在弹出的对话框中点击确定即可完成引导分区的建立。
随后在管状图后部表示未分配空间的区域点击右键,选择“建立新分区”,输入你想要的大小、卷标(也就是这个分区的名字),格式选择NTFS格式即可,依次建立若干分区直至硬盘空间全部分配(或者只建立一个大分区也是可以的,因人而异)
之后就是常规Win的安装流程了,在系统安装的时候将引导分区指定为刚刚新建的ESP分区,安装分区选择你后来建立的普通NTFS分区就可以啦,这个分区会成为之后Win系统的C盘(注意分区大小,别选错了,默认的ESP分区为300MB)
- 建议安装Win8之后的系统,例如Win8、10、11等等,它们对于UEFI的支持程度会比Win7好很多,如果确实需要使用Win7或更早的系统,以上述方法安装Win7或更早的系统会发生启动报错,请参考【通过UEFI安装Win7(或者是你要使用的系统)】的文章。
- 部分主板可能需要单独开启UEFI启动模式,开启方法请具体百度【你主板的型号】+开启UEFI启动(一般来说是进入BIOS菜单修改Boot-Boot Mode-UEFI这个设置)
接下来就是喜闻乐见的打补丁装驱动环节了,到这里,成功完成后我们实现了【使用U盘引导,启动群晖DSM,使用硬盘引导启动Win系统】这件事
固化群晖引导
上文中提到我们的群晖系统只能通过U盘引导,接下来我们要做的是将在U盘内的引导程序固化在硬盘内,这样才可以实现后文中介绍的Clover双系统引导,所以接下来我们讲讲如何固化群晖的引导
提取引导文件
首先将黑群晖的引导U盘插入电脑并打开diskgenius软件,在左侧树状列表中点击U盘父级项(记得看容量来区分,防止点错),展开后点击ESP分区,然后点击右侧面板上部的“浏览文件”按住Ctrl选择图中的三个文件后点击右键,选择复制到指定的文件夹,随便放在桌面某处即可,随后拔掉U盘。
可以看到群晖的引导文件由一个grub文件夹和EFI文件夹组成。(其中grub是linux的一个启动管理器,EFI文件夹放着给主板UEFI固件识别的启动项文件。
向固件内植入引导文件
还是上面提到的diskgenius,在左侧树状列表中点击硬盘父级项(记得看容量,防止点错)同样点击ESP分区,点击浏览文件,可以看到默认里面只有一个EFI文件夹,接下来我们植入群晖的引导文件。
- 首先在diskgenius里打开EFI文件夹,在其中新建一个名为DSM的文件夹,随后打开它。
- 打开上一步从U盘里提取到的引导文件中的EFI目录,将BOOTX64.EFI文件拖到diskgenius软件窗口内
- 将上一步从U盘里提取到的引导文件中的grub目录与bzimage文件放到ESP分区的根目录
完成后引导分区内的文件结构如下:
为黑群晖激活UEFI启动项
这里我们需要借助BOOTICEx64工具修改UEFI固件,这是一个几MB的绿色小工具。
这里可以下载Bootice,也可以直接搜一下从其他地方下载,注意别下上病毒就OKhttps://download.cnet.com/Bootice-64-bit/3000-2248_4-77512928.htmlhttps://download.cnet.com/Bootice-64-bit/3000-2248_4-77512928.html
打开软件,点击UEFI选项卡,点击“修改启动序列”,在弹出的菜单里点击【添加】,在弹出的文件选择框里选择从diskgenius拷贝至桌面的EFI文件夹里的BOOTX64.EFI,随后如下图设置:
- 菜单标题可以随便填一个,填DMS即可
- 启动磁盘选择Windows系统所在的硬盘
- 启动分区选择我们装系统时创建的ESP分区(就是硬盘的0号分区)
- 启动文件路径参考图示就是我们从U盘提取出的BOOTX64.EFI文件啦
- 将新创建的条目移动到第一位,完成之后点击保存当前启动项设置,重启系统
如果不放心的话可以重启系统进入BIOS菜单的BOOT页面,看看是否多了这一个DSM启动项,是否在第一位,如果不在第一位的话可以设置为第一位,测试是否可以正常引导群晖系统
如果一切顺利,重启系统后顺利启动群晖系统,到这里我们就完成了【将黑群晖系统从U盘固化在硬盘上并顺利启动】这件事
配置Clover进行双系统切换
Clover是什么
可能有些朋友对CLOVER还不了解,因为有很多大神已经做过介绍,这里就不过多赘述了。
Clover简介和基础使用教程https://www.jianshu.com/p/b156b0177a24#https://www.jianshu.com/p/b156b0177a24#本文只是将它当作一个界面优美且可控的UEFI启动工具来用,这里可以大致将它的核心功能归类如下:
- 可引导mac os,win efi,linux efi
- 可引导传统操作系统 (WindowsXP,Linux,DOS)的启动扇区 (mbr)
- EFI bootloader 提供 RuntimeServices 与 OS 运行,
- 默认侦测并设置硬件的大部份的属性,并且用户可以在 config 中自己设置
- 可在在启动面板中重启进入其他操作系统
- 正确设置电源属性为笔记本,台式,服务器
- cpu 睿频、cpu变频档位和电压控制
- 界面可自选,主题,图标,字体均可修改(下图简单放几个Clover的主题,非常好看有木有)
Clover的获取和配置
获取Clover
Clover目前是Github上一个开源的项目,可以直接通过Github获取最新的版本(当然Github部分网络需要使用科学上网的方式访问,如果链接打不开的话可以试试用梯子)
CloverBootLader在Github上的下载地址https://github.com/CloverHackyColor/CloverBootloader/releaseshttps://github.com/CloverHackyColor/CloverBootloader/releases我们下载文件后缀名为(.zip)的那个就好啦~(你下载的时候版本可能跟我不一样,不过功能都大差不差)
打开压缩包后发现里面是若干文件夹,这里我们只需要解压themespkg和EFI目录中的Clover目录两个目录就可以啦(Clover文件夹里放着Clover的UEFI启动文件,rhemespkg是一个主题包,里面预装了几个主题,当然你也可以不解压它,自己从网上找喜欢的主题也没问题)
目录结构介绍
打开Clover目录后我们可以看到Clover的主文件夹,这里我们主要是对config文件进行修改,其他目录的功能如下:
- ACPI:调整引导OSX系统时的电源策略,包括DSDT提取与注入功能
- drivers:使用UEFI模式加载CLOVER所需要的驱动文件
- kexts:使用驱动注入时,CLOVER加载的驱动文件的存放位置
- misc:存放CLOVER环境下的截图文件
- OEM:分文件夹存放ACPI、config.plist等文件用以加载,实现单个U盘引导多个OSX
- ROM:保存提取到的显卡ROM文件
- themes:CLOVER主题存放位置
- tools:EFI Shell存放位置,放置用于进入shell环境的.efi文件,以运行一些.efi程序
- CLOVERX64.EFI:64位CLOVER的主启动文件
- config-simple.plist:CLOVER配置文件,配置工作主要在这里进行
配置Clover,注入系统信息
使用notepad++或相关软件(我这里用的是VS Code,任意一个支持代码的文本编辑器均可)打开config文件,我们可以看到这个文件有如下目录结构:
这里我们仅需要修改Boot词典和GUI词典(Boot控制的是Clover启动时自动加载某个系统,GUI控制的是Clover启动后图形界面展示的内容)
首先我们展开GUI字典,可以看到这个标签下面有大量的内容。我们要在这里指定当前Win系统以及群晖DSM系统引导位置以及启动方式,着重修改后面表格中红色加粗的字段即可,其他修改视情况而定,GUI字典设置如下:
<key>GUI</key><dict><key>ConsoleMode</key><string>0</string><key>Custom</key><dict><key>Entries</key><array><dict><key>Disabled</key><false/><key>FullTitle</key><string>WINDOWS 10</string><key>Hidden</key><false/><key>Path</key><string>\EFI\MICROSOFT\BOOT\BOOTMGFW.EFI</string><key>Type</key><string>Windows</string><key>Volume</key><string>EFI</string></dict><dict><key>CustomLogo</key><string>Apple</string><key>Disabled</key><false/><key>Hidden</key><false/><key>Path</key><string>\EFI\DSM\BOOTX64.EFI</string><key>Title</key><string>DSM 6.23</string><key>Type</key><string>Linux</string><key>Volume</key><string>EFI</string></dict></array></dict><key>CustomIcons</key><false/><key>EmbeddedThemeType</key><string>Daytime</string><key>Language</key><string>zh-Hant:-16899</string><key>Mouse</key><dict><key>Enabled</key><true/><key>Speed</key><integer>5</integer></dict><key>PlayAsync</key><true/><key>ProvideConsoleGop</key><true/><key>Scan</key><dict><key>Entries</key><true/><key>Legacy</key><false/><key>Linux</key><false/><key>Tool</key><false/></dict><key>ScreenResolution</key><string>1024x768</string><key>TextOnly</key><false/><key>Theme</key><string>BGM</string><key>Timezone</key><integer>5</integer></dict>
字段含义及设置值
标签名 | 说明 | 设置值 | 备注 |
---|---|---|---|
ConsoleMode | 控制台模式 | 0 | 0=禁用,Min=启用慢速控制台,Max=启用快速控制台 |
Custom | 自定义启动项 | - | 用下面的Entries标签定义要启动的系统 |
Disabled | 是否禁用 | false | 如果改成true表示禁用这个启动项 |
FullTitle/Title | 设置显示系统名称 | - | 可以随意设置,例如“Win10” |
Hidden | 是否隐藏 | false | 如果改成true表示影藏但不禁用这个启动项 |
Path | 设置EFI启动路径 | - | Win系统的默认路径为: \EFI\MICROSOFT\BOOT\BOOTMGFW.EFI 按照上文配置,DSM系统的路径为: \EFI\DSM\BOOTX64.EFI |
Type | 系统类型 | - | 有以下项目可选:OSX/OSXInstaller/OSXRecovery/Windows/Linux |
Volume | 系统所在的启动分区 | EFI | 本例中该值为EFI,也可以填写实际系统引导所在的分区卷名 |
CustomIcons | 是否使用自定义图标 | false | 可以指定系统显示的图标样式,没啥用 |
EmbeddedThemeType | 全局主题类型 | Daytime | 有亮色Light和暗色Dark可选,也可以使用Daytime自动 |
Language | Clover菜单语言 | en:0 | 有以下语言可选(没有中文,默认英文就行)en/ ru/ fr/ it/ es/ pt/ br/ de/ nl/ pl/ ua/ cz/ hr/ id/ ko |
Mouse | 设置鼠标 | - | Enabled值为true表示启用鼠标,Speed值为鼠标移动速度 |
PlayAsync | 开始声音同步/异步播放 | true | 设置先播放开机声音再启动Clover还是播放声音的同时启动Clover,这里默认true就可以,不用管 |
Scan | 指定扫描哪里的启动项 | Entries | 仅需设置Entries为true即可,Legacy、Linux、Tool均保持false即可,也就是说仅加载我们指定的两个系统(这样可以去掉多余的启动项) |
ScreenResolution | 菜单显示分辨率 | 1024x768 | 按照你显示器的实际大小填写即可,例如1920x1080 |
TextOnly | 是否启用纯文本界面 | false | 默认false即可,我们不需要干巴巴的纯文字界面 |
Theme | 装载的主题 | - | 填写你安装的主题名称即可,安装方法见下文 我这里使用的是叫BGM的主题 |
Timezone | 自动跳转等待的时间 | 3 | 设置X秒未操作就自动启动设定的系统 |
然后我们展开Boot字典,我们要在这里指定进入Clover后默认启动的系统,着重修改后面表格中红色加粗的字段即可,其他修改视情况而定,Boot字典设置如下
<key>Boot</key><dict><key>CustomLogo</key><false/><key>Debug</key><false/><key>DefaultLoader</key><string>\EFI\DSM\BOOTX64.EFI</string><key>DefaultVolume</key><string>EFI</string><key>DisableCloverHotkeys</key><false/><key>Legacy</key><string>PBR</string><key>NeverDoRecovery</key><true/><key>NeverHibernate</key><false/><key>NoEarlyProgress</key><false/><key>RtcHibernateAware</key><false/><key>SignatureFixup</key><false/><key>SkipHibernateTimeout</key><false/><key>StrictHibernate</key><false/><key>Timeout</key><integer>3</integer><key>XMPDetection</key><integer>-1</integer></dict>
字段含义及设置值
标签名 | 说明 | 设置值 | 备注 |
---|---|---|---|
CustomLogo | 启用自定义系统logo | false | 如果你想深度定制的话可以开,然后下面的键值填写图像路径就可以 |
Debug | 开启调试模式 | false | 调试模式会直接把运行日志显示在屏幕上,方便查错 |
DefaultLoader | 默认加载程序 | - | Win系统的默认路径为: \EFI\MICROSOFT\BOOT\BOOTMGFW.EFI 按照上文配置,DSM系统的路径为: \EFI\DSM\BOOTX64.EFI |
DefaultVolume | 默认启动分区 | - | 本例中该值为EFI,也可以填写实际系统引导所在的分区卷名 |
DisableCloverHotkeys | 禁用Clover快捷键 | false | 快捷键开着就行,从F1到F12都有对应的功能,感兴趣的自己查查 |
Legacy | 传统引导 | PBR | 可以兼容非UEFI启动的系统,本案例中我们安装的均为UEFI启动的系统,所以这里保持PBR即可 |
NeverDoRecovery | 不启用恢复 | true | 引导OSX时设置的选项,不建议修改 |
NeverHibernate | 不启用休眠 | false | 引导OSX时设置的选项,不建议修改 |
NoEarlyProgress | 不显示启动前信息 | false | 保持false即可,可以通过该部分信息了解Clover的启动状态,便于查错 |
RtcHibernateAware | 休眠修复 | false | 引导OSX时设置的选项,不建议修改 |
SignatureFixup | 硬件签名修复 | false | 引导OSX时设置的选项,不建议修改 |
SkipHibernateTimeout | 跳过休眠超时 | false | 引导OSX时设置的选项,不建议修改 |
StrictHibernate | 严格休眠 | false | 引导OSX时设置的选项,不建议修改 |
Timeout | 自动跳转等待的时间 | 5 | 设置X秒未操作就自动启动设定的系统 |
XMPDetection | 开启内存自动超频 | -1 | XMP直接在主板BIOS里设置就可以了,这里填写-1也就是禁用的意思 |
安装主题(可选)
将从压缩包中提取到的themespkg文件夹中的内容(或你自己下载的第三方主题解压后的内容)软布放入Clover文件夹的themes文件夹,在config文件GUI字典下的Theme字段填写你的主题名即可。(格式参考上面的示例代码,这里我使用的是名为“BGM”的主题)
向固件内植入Clover引导文件
与上文中植入DSM固件的操作类似,首先将改好的配置文件config-simple.plist保存并放在Clover根目录中,还是上面提到的diskgenius,在左侧树状列表中点击硬盘父级项(记得看容量,防止点错)同样点击ESP分区,点击浏览文件,打开EFI文件夹,将整个Clover文件夹拖入即可。完成后引导分区内的文件结构如下:
为Clover激活UEFI启动项
与激活DSM类似,这里我们需要借助BOOTICEx64工具修改UEFI固件,打开软件,点击UEFI选项卡,点击“修改启动序列”,在弹出的菜单里点击【添加】,在弹出的文件选择框里选择Clover文件夹里的CLOVERX64.EFI,随后如下图设置:
- 菜单标题可以随便填一个,填Clover即可
- 启动磁盘选择Clover所在的硬盘(也是Windows系统所在的硬盘)
- 启动分区选择我们装系统时创建的ESP分区(就是硬盘的0号分区)
- 启动文件路径参考图示就是刚刚复制进去的CLOVERX64.EFI文件啦
- 将新创建的条目移动到第一位,完成之后点击保存当前启动项设置,重启系统
如果不放心的话可以重启系统进入BIOS菜单的BOOT页面,看看是否多了这一个CLOVER启动项,是否在第一位,如果不在第一位的话可以设置为第一位,测试是否可以正常启动Clover
如果一切顺利,重启系统后顺利启动Clover,可以分别启动两个系统测试引导是否正常,如果正常的话,到这里我们就完成了【使用Clover引导黑群晖系统+Win双系统】这件事
完结撒花*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。
程序员节快乐!