✨ 这里主要记录一点折腾电脑过程中遇到和解决的问题~

Ubuntu 启动奇慢无比

这个问题出现在我对硬盘进行分区(准备装黑苹果)以及一系列作死操作(Windows 和 Ubuntu 的引导全被我删了)复原之后。Windows 的启动还是一如既往的快,而 Ubuntu 的启动变得奇慢无比。于是我先看看到底是什么进程拖慢了启动速度。

  1. kenshin@cheng:~$ systemd-analyze
  2. Startup finished in 1.923s (firmware) + 1.841s (loader) + 1.248s (kernel) + 1min 55.828s (userspace) = 2min 843ms
  3. graphical.target reached after 1min 55.796s in userspace

通过查阅资料知道,userspace也即 linux 的用户空间,区别于kernel,也即内核空间。可以发现userspace的启动花费了很长时间,而内核的启动几乎没有花费时间。所以问题出在用户空间启动的时候,初步猜测是加载引导的时候出了问题,很有可能是引导的地址不正确,导致系统只好遍历整个磁盘去找到正确的引导,从而导致开机时间大幅增加。
Screenshot from 2022-07-04 19-56-15.png
etc/fstab中记录了磁盘文件系统的一些信息,例如分区的 UUID。先检查一下 UUID 是否正确。使用gparted工具查看磁盘分区情况:
Screenshot from 2022-07-04 19-15-32.png
文件系统为ext4的即 Ubuntu,我们比对 UUID 发现和上面的一样,可以说明分区的 UUID 并没有出问题。
Screenshot from 2022-07-04 20-00-38.png
根据文件注释中的提示,我们使用blkid查看所有设备的 UUID,结果如下:
Screenshot from 2022-07-04 20-04-08.png
注意/dev/nvme0n1p1,也即从上往下数第11行处,这一分区是EFI system partition,也即EFI存放的位置,比对其 UUID ,发现不一致,修改/etc/fstab中对应/boot/efi的 UUID 后重新开机正常。
Screenshot from 2022-07-04 20-09-06.png
总结一下原因,大概是因为我之前误删了EFI恢复之后,文件的地址变了,但 Ubuntu 上的记录并没有改变,因此EFI的地址是旧值,导致开机时需要遍历寻找EFI。合理推测如果我对硬盘进行扩容导致分区的 UUID 发生变化时也会出现这样的问题。

Hackintosh 定制教程

dl 定制给我的,感谢 dl

我爱Monterey!
Screen Shot 2022-07-08 at 23.43.42.png

写在前面

  • 本文为HUAWEI MateBook X Pro 2020 (MACHC-WAH9LP)特别撰写,请勿直接抄作业。
  • 务必阅读完全文并理解后再开始行动,不要走一步看一步!

    必要准备

    硬件

  • 一块至少16GB的U盘

    软件

    Windows环境

  • DiskGenius

  • balenaEtcher
  • macOS 12.1 (21C52)镜像——务必看清版本号!!
  • EFI——请仔细阅读README.md

    macOS环境

    macOS下的软件建议单独放置在一块FAT32格式的U盘上。你也可以把他们放在Windows的任何一个你能记住的位置,但请注意,在不安装插件的情况下,Windows采用的NTFS文件格式对于macOS来说是只读的,只能拷贝。

  • Hackintool

    基础知识:UEFI,引导与操作系统

    黑苹果要求你对操作系统的引导流程非常熟悉。如果你不知道某个分区/文件夹是做什么的,千万不要乱动。在对你的内置硬盘做任何操作之前,请先在U盘尝试,确保你至少有一种保底手段进系统。好的习惯大幅减少翻车概率~
    目前支持UEFI引导的操作系统,包括Windows, LinuxmacOS,它们的引导方式是类似的。
    打开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 BootSecure BootIntel SGX一定要关闭。

调整内部硬盘分区

WindowsESP分区只有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文件夹拷贝到300MBFAT32格式的分区,这会儿他还没有名字,你可以右键 > 设置卷标,分区叫啥名儿对UEFI来说并不重要。方便起见,我这里叫他ESP2

    现在你的内部硬盘上应该有WindowsLinux的系统分区,一个ESP分区,一个MSR分区,一个ESP2分区,以及一片未分配区域。保险起见,我建议你先试试能不能从ESP2启动。

  • 重启,狂按F2进入BIOS,找到BOOT选项卡(或者之类的选项),选择启动顺序,如果能从第二个分区启动就成功了。

  • 回到Windows,用DiskGenius直接删掉原来的ESP分区避免混淆。

    制作USB启动盘

    这会抹掉U盘上的所有数据,务必提前备份!!

  • 管理员模式打开balenaEtcher,跟着提示选择系统镜像位置和USB设备,静待写入完成。过程中如果报格式化千万不要点确定,这是因为Windows不认识macOSHFS+文件格式。

  • 完成后打开DiskGenius,U盘上应该有三个分区,EFIWEPEinstall macOSEFI分区里面是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,查找MLBSystemSerialNumberSystemUUID,把<string></string>里的内容换成自己的,哪个是哪个根据长度来判断。保存,通过DiskGenius把改好的config.plist覆盖到U盘里的对应位置。
  • 再次回到macOS,登录AppleID,如果FaceTime能用就说明成功骗过了苹果 :)

    合并Windows引导

    这里只说明如何合并Windows引导,Linux道理应该是一样的。当然,务必备份EFI文件夹。

  • 现在引导分散在内部硬盘的ESP分区和U盘上的EFI分区,我们要将其合并。回到Windows,用DiskGeniusESP分区中的Microsoft文件夹拖到U盘的/EFI文件夹里,和BOOTOC同级。

  • 找到顶栏的工具 > 设置UEFI BIOS启动项添加U盘的/EFI/Microsoft/Boot/bootmgfw.efi
  • 再次重启,OpenCore引导界面应该同时有Windows(External)macOS
  • 回到Windows,删掉ESP分区下的所有文件。再次提醒,这会一起干掉你的**Linux**引导
  • 把U盘EFI分区里的EFI文件夹拷过来,重定向一下bootmgfw.efi,因为用的是绝对路径。
  • 拔掉U盘,如果还能正常引导的话……

    教程正式结束,感谢观看!