✨ 这里主要记录一点折腾电脑过程中遇到和解决的问题~
Ubuntu 启动奇慢无比
这个问题出现在我对硬盘进行分区(准备装黑苹果)以及一系列作死操作(Windows 和 Ubuntu 的引导全被我删了)复原之后。Windows 的启动还是一如既往的快,而 Ubuntu 的启动变得奇慢无比。于是我先看看到底是什么进程拖慢了启动速度。
kenshin@cheng:~$ systemd-analyze
Startup finished in 1.923s (firmware) + 1.841s (loader) + 1.248s (kernel) + 1min 55.828s (userspace) = 2min 843ms
graphical.target reached after 1min 55.796s in userspace
通过查阅资料知道,userspace
也即 linux 的用户空间,区别于kernel
,也即内核空间。可以发现userspace
的启动花费了很长时间,而内核的启动几乎没有花费时间。所以问题出在用户空间启动的时候,初步猜测是加载引导的时候出了问题,很有可能是引导的地址不正确,导致系统只好遍历整个磁盘去找到正确的引导,从而导致开机时间大幅增加。etc/fstab
中记录了磁盘文件系统的一些信息,例如分区的 UUID。先检查一下 UUID 是否正确。使用gparted
工具查看磁盘分区情况:
文件系统为ext4
的即 Ubuntu,我们比对 UUID 发现和上面的一样,可以说明分区的 UUID 并没有出问题。
根据文件注释中的提示,我们使用blkid
查看所有设备的 UUID,结果如下:
注意/dev/nvme0n1p1
,也即从上往下数第11行处,这一分区是EFI system partition
,也即EFI
存放的位置,比对其 UUID ,发现不一致,修改/etc/fstab
中对应/boot/efi
的 UUID 后重新开机正常。
总结一下原因,大概是因为我之前误删了EFI
恢复之后,文件的地址变了,但 Ubuntu 上的记录并没有改变,因此EFI
的地址是旧值,导致开机时需要遍历寻找EFI
。合理推测如果我对硬盘进行扩容导致分区的 UUID 发生变化时也会出现这样的问题。
Hackintosh 定制教程
dl 定制给我的,感谢 dl
写在前面
- 本文为
HUAWEI MateBook X Pro 2020 (MACHC-WAH9LP)
特别撰写,请勿直接抄作业。 -
必要准备
硬件
-
软件
Windows
环境 - balenaEtcher
- macOS 12.1 (21C52)镜像——务必看清版本号!!
EFI——请仔细阅读README.md
macOS
环境macOS
下的软件建议单独放置在一块FAT32
格式的U盘上。你也可以把他们放在Windows
的任何一个你能记住的位置,但请注意,在不安装插件的情况下,Windows
采用的NTFS
文件格式对于macOS
来说是只读的,只能拷贝。-
基础知识:UEFI,引导与操作系统
黑苹果要求你对操作系统的引导流程非常熟悉。如果你不知道某个分区/文件夹是做什么的,千万不要乱动。在对你的内置硬盘做任何操作之前,请先在U盘尝试,确保你至少有一种保底手段进系统。好的习惯大幅减少翻车概率~
目前支持UEFI引导的操作系统,包括Windows
,Linux
和macOS
,它们的引导方式是类似的。
打开DiskGenius
,你会发现你的系统盘分区结构大概长这样: ``` HD0:xxxx ├─ESP │ └─EFI │ ├─BOOT │ │ └─BOOTx64.efi │ └─Microsoft ├─MSR └─Local Disk
// 如果安装了Linux,可能还有Grub之类的 ```
其中最重要的是ESP
或者EFI
分区,不同的机器可能名字不一样,反正就是硬盘最前面一块FAT32
格式的区域,里面存储的就是我们的引导信息。当按下开机键,主板首先会读取保存在一块独立ROM上的UEFI
,此时按下某个键可以进入BIOS
修改启动选项,具体哪个键每个品牌不一样,华为好像是F2
,不行就一个个试过去。接着UEFI
开始读取硬盘信息,找到所有FAT32
格式的分区并提取/EFI/BOOT
中的.efi
文件,作为你能看到的一个启动项。选择启动项后,UEFI
会根据.efi
文件中的信息找到磁盘上的操作系统,并把操作权限移交给操作系统。
不要把
ESP
分区和EFI
文件夹搞混了。ESP
是微软给未命名的引导分区的缺省命名,和Local Disk
类似,是一个物理分区,而EFI
是一个文件夹。后面的U盘中,你甚至还能看到EFI
分区里有一个EFI
文件夹……
考虑到原生系统一般来说都是Windows
,这里的BOOTx64.efi
文件是微软给定的,它的行为方式是找到../Microsoft/Boot
下的bootmgfw.efi
,对应是BIOS
启动项中的Windows Boot Manager
。而我们要用的是另外一种引导,也就是OpenCore
。
前面下载的EFI v0.7.8.0.zip
中有一个EFI v0.7.8.0
文件夹,把它拷贝到桌面上,重命名为EFI
。找到/OC
下的config.plist
文件,Crtl + F
搜索SystemProductName
,找到仿冒的设备型号,例如MacBookPro15,3
,记住它,我们后面会用到。
关于OC
的细节就不细说了,它的工作机制非常非常复杂,但引导方式类似的。首先加载BOOTx64.efi
,接着去找../OC/OpenCore.efi
。当然在OC
文件夹下还有一大堆乱七八糟的文件夹,这些就是仿冒苹果设备需要的驱动、信息表啥的。配置EFI
是黑苹果过程中最痛苦的一步,这也就是为什么我们要抄作业。
开始安装
BIOS
设置
重启,狂按F2
进入BIOS
,具体设置照抄黑果小兵。有些选项可能没有,那就不管,主要是一些启动相关的选项,比如Fast Boot
,Secure Boot
和Intel SGX
一定要关闭。
调整内部硬盘分区
Windows
的ESP
分区只有100MB,而macOS
要求至少200MB的可用空间,为此我们需要扩大该分区。这一步非常危险,我强烈建议你备份EFI
文件夹。如果不幸翻车,你可以在BIOS
的启动项选择界面进入U盘的第二个分区,也就是WEPE
。这是一个WinRE
(恢复环境),基本上是一个轻量级Windows
系统。不过如果都到这一步了,直接来找我吧。
- 还是
DiskGenius
,首先备份内部硬盘的EFI
文件夹。选中/ESP/EFI
,右键 > 复制到桌面
。 - 在上面的蓝色条条
右键
你的系统分区(一般是一个很大的NTFS
分区),拆分分区
,分区后部的容量就是给macOS
的容量,记住它的容量。由于这是直接对系统盘进行的操作,WIndows
会要求你进入WinRE
环境,跟着提示走即可。顺带一提,不要试图操作ext4
格式的分区,那是Linux
的系统分区。 进入
WinRE
,重复一遍刚才的操作,它会分出两个NTFS
分区。在蓝条条上右键
分出来的那个空分区,删除当前分区
,它应该会变成灰色。这一步千万别把你的系统盘格了……那真救不回来了
右键
灰条条,建立新分区
,文件系统选FAT32
,大小300MB
,其他默认。再在剩下的灰条条右键 > 建立新分区
,格式继续FAT32
,大小占满,这就是macOS
的系统分区。点击左上角的保存更改
再格式化
就完成了。将前面备份的
EFI
文件夹拷贝到300MB
的FAT32
格式的分区,这会儿他还没有名字,你可以右键 > 设置卷标
,分区叫啥名儿对UEFI
来说并不重要。方便起见,我这里叫他ESP2
。现在你的内部硬盘上应该有
Windows
和Linux
的系统分区,一个ESP
分区,一个MSR
分区,一个ESP2
分区,以及一片未分配区域。保险起见,我建议你先试试能不能从ESP2
启动。重启,狂按
F2
进入BIOS
,找到BOOT
选项卡(或者之类的选项),选择启动顺序,如果能从第二个分区启动就成功了。回到
Windows
,用DiskGenius
直接删掉原来的ESP
分区避免混淆。制作USB启动盘
这会抹掉U盘上的所有数据,务必提前备份!!
管理员模式打开
balenaEtcher
,跟着提示选择系统镜像位置和USB设备,静待写入完成。过程中如果报格式化千万不要点确定,这是因为Windows
不认识macOS
的HFS+
文件格式。完成后打开
DiskGenius
,U盘上应该有三个分区,EFI
,WEPE
和install macOS
。EFI
分区里面是Clover
引导,也是一种黑苹果引导,但有些旧了,我们不用它。切到浏览文件
,直接删除EFI
分区下的所有文件,把前面下载的EFI
文件夹拷贝进来,启动盘就制作完成了。安装
macOS
插入U盘,重启,狂按
F2
进入BIOS
,从U盘的第一个分区启动,进入OpenCore
的引导界面。他可能是一个类似Grub
的命令行界面,也可能是GUI
,取决于作者。不论如何,选择install macOS
,如果能跑完苹果进度条,那基本上完成了。- 跑完条就进入
macOS
恢复环境了。首先选中第四个磁盘工具
,根据容量找到给macOS
准备的宗卷(1024 vs 1000,容量不是刚刚好的,差不多就行)。抹掉
,格式选APFS
,分区图(如果有的话)选GUID 分区图
。 - 关闭
磁盘工具
,进入第二个安装macOS
,跟着流程把镜像释放到刚才的宗卷上。可能重启几次,你都需要手动选择从U盘启动,然后在OpenCore
的引导界面选择安装器。忘记安装器叫啥名儿了,反正带macOS
但不是前面选的install macOS
就完事。整个过程很长,要有耐心,不要相信他那个还剩几分钟的P话…… 重启几次之后就装完了,接下来是一些基本设置,跟着流程走就行。有一点特别注意,每台白苹果都有特定的
序列号
、主板序列号
和SmUUID
,俗称三码。这部分信息应该是独一无二的,共用的话可能导致你的AppleID
被ban掉。所以这一步中,所有涉及到AppleID
的设置都先跳过,用本地账户登录。修改三码
如果一切顺利,我们现在应该已经能进入
macOS
桌面了!找到之前下载的HackinTool.app
,拷贝到桌面上,双击运行。切换到序列号生成器
,选择前面记下来的设备型号,点右边的刷新
,多刷几次,然后访问查看您的保障服务和支持期限 - Apple 支持,如果提示查不到序列号就成功了。记下这里的三码。- 回到
Windows
,还是打开config.plist
,查找MLB
,SystemSerialNumber
和SystemUUID
,把<string></string>
里的内容换成自己的,哪个是哪个根据长度来判断。保存,通过DiskGenius
把改好的config.plist
覆盖到U盘里的对应位置。 再次回到
macOS
,登录AppleID
,如果FaceTime
能用就说明成功骗过了苹果 :)合并
Windows
引导这里只说明如何合并
Windows
引导,Linux
道理应该是一样的。当然,务必备份EFI
文件夹。现在引导分散在内部硬盘的
ESP
分区和U盘上的EFI
分区,我们要将其合并。回到Windows
,用DiskGenius
将ESP
分区中的Microsoft
文件夹拖到U盘的/EFI
文件夹里,和BOOT
,OC
同级。- 找到顶栏的
工具 > 设置UEFI BIOS启动项
,添加
U盘的/EFI/Microsoft/Boot/bootmgfw.efi
。 - 再次重启,
OpenCore
引导界面应该同时有Windows(External)
和macOS
。 - 回到
Windows
,删掉ESP
分区下的所有文件。再次提醒,这会一起干掉你的**Linux**
引导! - 把U盘
EFI
分区里的EFI
文件夹拷过来,重定向一下bootmgfw.efi
,因为用的是绝对路径。 - 拔掉U盘,如果还能正常引导的话……
教程正式结束,感谢观看!