目錄

iShengP 的 Z370F + i7–8700K + RX570 Hackintosh Build 黑蘋果建置 (Catalina ver. with Vanilla Install)

一篇面向新手與高手參考用的 Hackintosh Build.

更新提醒!
這篇文章已經由此文章代替,將作為史料的一部分,未來不會再做任何更新及維護。
iShengP 的 Z370F + i7–8700K + RX570 Hackintosh Build 黑蘋果建置 (Catalina ver. with OpenCore)

更新內容

想看我更新的log直接拉到底,

前言

從我小學看著電腦雜誌,灌了我第一次的黑蘋果以來,如今已經走過了十多個年頭,看著黑蘋果社群,灌系統的方法也隨著時間越來越改良、進步,那種突破了重重困難、除錯的成就感,真的是讓我深深的著迷在其中。因此後來即使我買了 Mac Mini、MacBook Pro 之後我還是一直有在持續的使用黑蘋果,在研究的過程中也順帶的認識的白蘋果的很多概念,也在我除錯以及維修上也有所收穫,真的是非常的有趣。

繼上兩篇黑蘋果的文章之後好像有點上癮,所以這次系統更新之後很不意外的又會有第三篇出現了。以下是我這次進行 Catalina 的一個紀錄,供大家參考。(這篇也有對應 Mojave,所以被 32 位元應用程式困在 Mojave 的人也可以參考這篇的安裝)

這次我 follow 的 Guide 是 Reddit 上寫的 Hackintosh Vanilla Guide,這篇真的寫得非常棒,在這邊推薦給大家看。底下也會有不少內容是從這篇裡面部分節錄翻譯的。

Getting Started

『最後就是這篇文章是針對桌機撰寫的,所以筆電的話建議是找專門的 Guide,其實步驟跟 know how 遠比桌機來的複雜許多。』

為什麼 Vanilla?

這次的文章跟先前最大的不同在於就是我不再使用 tonymacx86 的工具進行裝機了,同時這也是未來的趨勢,所以我們更應該要了解一下 Vanilla Install 到底是什麼?

Vanilla Install 是一種安裝黑蘋果的方式。 簡單來說,就是一種盡可能不修改系統,讓 macOS 最接近白蘋果的安裝方式。

以下是我個人認為的一些優點

  1. 盡可能不修改系統檔案。 Vanilla 安裝的內容幾乎都放在 EFI 目錄底下,大部分的功能都有點像外掛性質,因此可以達到盡可能不修改系統的效果,日後除錯也相對容易。因此在如系統升級,可以避免掉一些因為已經修改的系統檔案遭受更新程式修改而造成問題的狀況。
  2. 你會比較知道你在幹嘛。 tonymacx86 的工具是好用,但是因為要做到「最簡易」,安裝過程其實是不透明的。因此你到底裝了什麼?為什麼要這樣安裝?其實都不知道。因此在未來除錯的時候會比較頭痛。另外就是在網路上發問,你也比較能釐清狀況。
  3. 比較簡單。 這是滿矛盾的,tonymacx86 的工具雖然設計得很簡單,但是有些時候會過度修改系統,改一些你根本不需要修改的內容。因此明明很簡單就能搞定的問題,但是事後往往還要再花很多時間進行除錯修復。
  4. beast 程式不是完美的。 繼上面令人頭痛的過度修改系統、不透明的安裝模式,同時beast裡包的程式也未必是最新的,在過去也有未經過允許或是同意將開發者的軟體包入裡頭的紀錄。

因此,我覺得比起上網 YouTube 看怎麼安裝,或是花大筆時間在幫 Multibeast/Unibeast 安裝的黑蘋果進行除錯,那還不如在一開始就選擇用最乾淨的方式來將系統搞定。

(題外話就是裝了很多次以後,才發現其實 Vanilla Install 才是真正難度最低、效果最好的裝機方案,幾乎不太需要特別設定什麼就能讓零件好好工作)

硬體挑選到底是什麼概念?

基本上掌握一些原則,參考一下別人的安裝成果(build),購買近似的硬體,基本上都不太會出錯。以下是我在 2017 年底思考黑蘋果所挑的組合。 處理器:Intel Core i7–8700K 散熱器:Corsair H115i 主機板:ASUS ROG STRIX Z370-F GAMING 顯示卡:ASUS ROG STRIX-RX570-O4G-GAMING 顯示卡:ASUS ROG STRIX-GTX1080-A8G-GAMING 記憶體:GSKILL Trident Z DDR4 3200MHz CL16 8GBx2 SSD:Intel SSD 730 Series (240GB,2.5in SATA 6Gb/s,20nm,MLC) SSD:Intel SSD 545s Series (256GB,2.5in SATA 6Gb/s,3D2,TLC) SSD:Micron Crucial MX500 500GB HDD:Toshiba 4TB (MD04ACA400) HDD:Seagate IronWolf 4TB (ST4000VN008) WiFi、BT:Fenvi FV-T919 光碟機:Pioneer BDR-S09XLT 機殼:Fractal Design Define R6 螢幕:BenQ EW3270U (32吋,3840x2160) 鍵盤:Cooler Master Novatouch 滑鼠:Logitech MX Master 2S

目前除了我的 RX570 跟 MX500 是之後補上來的 + 換了一台螢幕以外基本上都跟 2017 年差不多,就今年的角度來看,Intel Core i5 / i7 / i9 + Z370 晶片組 + AMD 顯卡 都還是一個比較沒問題也最多人使用的組合,仔細一想也就會意識到選購硬體最大的原則就是購買白蘋果有使用的硬體。

當然如果你是很反骨想要用 Celeron / Pentium 這種超低階 或是要用 HEDT 的超高階平台如 Xeon 或是 Threadripper 那也不是不行,但是要 De 的 bug 也是會比較多啦!(當然這個問題會隨著時間的推進越來越少,像是還沒發佈正式版的 Clover 替代品:Open Core 就有大幅改善不同硬體的相容性,尤其是 AMD 這一塊。)

另外 10 年前可能會說弄黑蘋果不要買 AMD 的平台,所以幾乎網路上的教學都是 Intel based 的,不過現在實在是太香太香了,Ryzen 的黑蘋果使用者也比以前多很多,所以也不是不行啦,建議還是要爬相關的資訊,可以去 amd-osx.com 逛一逛吧。

至於 NVidia 顯卡的話就別碰了吧,原因除了官方說的正在等 Apple 簽名以外,我想應該只是蘋果不希望 CUDA 在 macOS 中阻擋 Metal 的推廣而已吧,不過我覺得這是一種雙輸就是了,所以 RX5xx 跟 Vega 都是很好的選擇,至於 Navi 系列的卡(如 RX5700 / RX5700XT)不是不能用,但就目前為止也只是最低限度的支援,穩定性跟效能還有待商榷,不知道蘋果要拖到民國幾年才會把 Navi 的驅動放進 macOS 裡面?

WiFi、藍牙卡的部分最好選擇跟 Mac 同晶片的,最常見的選擇就是 BCM94360 系列的晶片,圖個便宜方便我就直接上淘寶買那張 T919 的了。目前用 Apple 的鍵盤、觸控板、AirDrop、HandOff、SideCar 等等功能都沒有任何問題,非常的棒!

最後就是我的藍光光碟機 S09XLT 在 macOS 底下完全不工作,但是會一直偵測到空白光碟跳視窗,所以我是建議不要考慮這臺來當作你的組合。

準備

準備 kexts

kexts 是什麼?就是 Kernel Extension,核心擴充的意思。 你可以想像成 macOS 的驅動程式就好。

那這邊就列出所有我有用到的 kexts,也附上了下載的連結。

必裝

  • VirtualSMC.kext — 跟 FakeSMC.kext 相同,為 SMC 晶片的模擬器,如果你沒有這兩個之一的話那你就沒有辦法開機。這個非常的重要!

說個笑話就是上面的 Guide 並沒有將 VirtualSMC.kext 放在底下的列表當中,寫在最上頭(而且沒放超連結),所以我每次都會很奇妙的無視這個 kext 忘了放,最後裝機就在那邊卡住花了好幾個鐘頭除錯,所以千萬不要犯了跟我一樣的智障錯誤。

網路

  • IntelMausi.kext— 有線網路的 kext。基本上新的 Intel 有線網路晶片都適用。

USB

Lilu.kext

  • Lilu.kext — 提供對任何 kext 以及 進程(process) 進行修補的能力的 kext

音效

  • AppleALC.kext — 提供 AppleHDA.kext 支援非官方的解編碼器的能力,主要是支援非官方的音效晶片。需要搭配 Lilu.kext 運作。

顯示卡 GPU

WiFi、藍芽

  • AirportBrcmFixup.kext — 提供支援以及修復 WiFi 網卡連接的能力。需要搭配 Lilu.kext 運作。
  • BrcmPatchRAM2.kext — 提供非官方藍芽支援以及修復藍芽連接的能力。需要搭配 BrcmFirmwareData.kext 運作。
  • BrcmFirmwareData.kext — 作為 Injector 使用,搭配 BrcmPatchRAM2.kext 使用的必要 kext。
  • (不過我自己在安裝 Catalina 的時候漏裝了 Brcm* 這些 kext 但電腦正常運作,所以我想應該就看需求吧)

準備 macOS

下載 macOS 安裝程式

macOS Mojave Mac App Store 連結
macOS Catalina Mac App Store 連結

下載就好,跳出安裝 macOS Mojave 的視窗就將視窗關起來就可以了。

隨身碟格式化

以下是 macOS 開機碟的一些要求:

  • GUID 分割區配置表
  • 1 個分割區
  • Mac OS 擴充格式(日誌式)

格式化這個工作也可以直接用 磁碟工具程式 完成,可以直接跳到下個步驟。

如果你是個很喜歡硬派步驟的人,那就繼續看下去:

打開終端機(Terminal),輸入指令 diskutil list

列出所有的硬碟清單,你可以從這個列表中看到你的隨身碟。

那我們就輸入指令進行格式化的動作,在disk##裡面帶入我們剛剛查詢的硬碟代號 diskutil partitionDisk /dev/disk# GPT JHFS+ "USB" 100%

大概是這樣的意思 diskutil(磁碟管理工具) partitionDisk(格式化硬碟) /dev/disk#(硬碟代號) GPT(GUID磁碟分割表) JHFS+(Mac OS 擴充格式(日誌式)) “USB”(取名叫 USB) 100%(整個磁碟)

安裝程式寫入隨身碟

那我們就對隨身碟進行寫入的動作,蘋果已經幫我們做好了功能

如果你是 GUI 控的話,你可以直接下載 DiskMaker 之類的工具省下打以下指令的麻煩。

輸入指令:

macOS Catalina 使用者 sudo /Applications/Install\ macOS\ Catalina.app/Contents/Resources/createinstallmedia --volume /Volumes/USB

macOS Mojave 使用者 sudo "/Applications/Install macOS Mojave.app/Contents/Resources/createinstallmedia" --volume /Volumes/USB

這樣子終端機就會幫我們把下載下來的 macOS 安裝檔灌進名為 USB 的隨身碟裡頭,非常的簡單。

Clover 安裝

  1. 上網下載最新、或是穩定版的 Clover(Catalina 截至目前最好是用最新版的) 最新版 https://github.com/Dids/clover-builder/releases 穩定版 https://sourceforge.net/projects/cloverefiboot/
  2. 下載完成之後將 .pkg 安裝程式啟動,進行隨身碟的安裝。
  3. 在這個階段,重點在於安裝位置要選擇隨身碟,也就是那個叫做 Install macOS Catalina 的那個隨身碟。千萬不要點錯,尤其是這玩意裝在白蘋果(真正的Mac)就慘了。
  4. 在自訂裡面,預設的選項安裝 AptioMemoryFixHFSPlusApfsDriverLoader 足矣,不需要特別勾選其他的選項。
  5. 安裝結束之後,Clover 會幫忙掛載隨身碟的 EFI 磁區好讓我們進行操作
  • 將上方的所有 kext Copy 到 \EFI\EFI\CLOVER\kexts\Other\ 裡面
  • 將下載下來的 VirtualSMC 裡面的 VirstalSMC.efi,或是你想要安裝的EFI驅動程式 Copy 到 \EFI\EFI\CLOVER\drivers\UEFI 裡面
  • 將你 Patch USB 的 SSDT-EC.aml 或是其他透過 DSDT 製作的 .aml 修正檔 copy 到 \EFI\EFI\CLOVER\drivers\ACPI\patched 裡面(你可能會很問號,可以看看底下的EC修正內容)

這樣子就能開工,重新開機進行安裝了。

BIOS 設定

參考資料:

ASUS ROG STRIX Z370-G Hackintosh Guide mATX Build - Hackintosher

更新 BIOS 到最新版,我在寫這篇文章的時候為 2401 (07/12/2019) ``離開 > 載入最佳化預設值
Ai Tweaker \ Ai 智慧超頻:XMP
進階 \ 中央處理器設定 > Intel Virtualization Technology:開啟
進階 \ 系統代理設定 > VT-d:關閉
進階 \ 系統代理設定 \ 顯示設定 > 首選顯示卡:PCIE
進階 \ 系統代理設定 \ 顯示設定 > 混合多螢幕輸出模式:開啟
進階 \ PCH 設定 > IOAPIC 24-119 Entries:開啟
進階 \ 內建裝置設定 > RGB 燈光 > When system is in sleep, hibernate or soft off states:關閉
進階 \ 高級電源管理 > 由 PCI-E 裝置喚醒:開啟
進階 \ 網路堆棧 > 網路堆棧:已關閉
進階 \ USB Configuration > Legacy USB 支援:自動
啟動 \ 啟動設定 > 快速啟用:Disabled
啟動 \ 安全啟動選單 > 作業系統類型:其他作業系統

F10 存檔,重新進入 BIOS

進階 \ 系統代理設定 \ 顯示設定 > DVMT Pre-Allocated:192M````F10 存檔,重新開機``

上面有些中文有些英文不是我打錯,而是 BIOS 裡頭真的是這樣寫(笑)

啟動 iGPU 跟 DVMT 很重要是在於 Catalina (Mojave) 會自動將一些工作給內顯做,像是一些小的 Render 如QuickLook(Finder中按下空白鍵) 之類的,如果沒有開啟的話這些功能都會故障。除非將 SMBIOS 改成那些沒有內顯的電腦 (如 iMacPro 1,1),或是安裝相關 kext 如 NoVPAJpeg.kext 之類的。(NoVPAJpeg.kext 好像停止開發然後已經整合進 WhateverGreen.kext 裡頭了,有需要可以研究看看)

安裝

[Catalina 使用者] EC 修正

參考資料:

https://www.reddit.com/r/hackintosh/comments/den28t/whats_new_in_macos_catalina/

Common Problems and Workarounds in Hackintosh Catalina

在 macOS Catalina 裡面 AppleACPIEC 的運作邏輯跟以往系統不太一樣,所以當驗證失敗,尤其是驗證嵌入式控制器(EC)沒過的時候會造成卡死的情況,例如這些情況: apfs_module_start… Waiting for Root device Waiting on…IOResources… previous shutdown cause…

因此我們需要針對 EC 來進行修正。沒有把這個問題搞定,就沒有 Catalina 可以用。

目前最簡單的方式就是透過 SSDTTime 工具來將實際電腦裡的 EC 偽造成假的 EC。

  1. 第一次開機,進到 Clover EFI 畫面的時候按下 F4 擷取電腦的 DSDT
  2. 將電腦關機,把隨身碟拔下,插到正常的電腦掛載隨身碟的 EFI 磁區,在 \EFI\EFI\CLOVER\drivers\ACPI\original 裡面找到 DSDT.aml,並且複製一份備用。
  3. Clone 下最新的 repo https://github.com/corpnewt/SSDTTime
  4. 打開終端機,輸入 chmod u+x 並且空格將 SSDTTime.command 拖入視窗中按下 return
  5. 雙擊 SSDTTime.command 開啟安裝程式
  6. 輸入 2 選擇 2. Fake EC 的選項後,將剛剛的 DSDT.aml 拖入視窗當中就會針對檔案進行修正
  7. 完成後你就可以在 Result 資料夾內找到修正的 SSDT-EC.aml 可供使用
  8. 將製作好的 SSDT-EC.aml 檔案複製到隨身碟EFI磁區的 \EFI\EFI\CLOVER\drivers\ACPI\patched 裡面
  9. 重新開機,正式進行安裝PS. 如果你發現你的 SSDTTime.command 一把檔案拖進去沒有任何反應的話,你可以考慮換一台電腦再試試看,我的 MacBook Pro 沒有反應,但是 Mac Mini 正常。

Clover EFI 設定

  1. 上方 BIOS 存檔重新開機之後,按下 F8 開啟 Boot Menu,在裡頭選擇你的 USB 隨身碟開機(並且前方要掛 UEFI 字樣)。
  2. 開機會啟動 Clover EFI,會跳出一個類似開機選單的內容,選擇 Boot macOS Install from Install macOS Catalina (Boot macOS Install from Install macOS Mojave),在上頭按下 Space 進入進階選單。
  3. 移動光標,在 -v Verbose 底下按下 return 打勾,在移到上方的 Boot macOS with Selected Options,按下 return

這樣子, Clover 就會以文字模式啟動 macOS。這時候是最容易發生問題的地方,所以你如果剛剛有開 -v的話應該是可以看到電腦正在跑一堆字,這時候當卡在某一行字非常久的時候,就可以在 Google 上針對那行字來找解決方案。

macOS 安裝

基本上就跟白蘋果完全一樣的操作。唯一要注意的只有格式化硬碟而已。如果你已經會格式化硬碟的話你就可以整段跳過。

  1. 成功進到安裝畫面,macOS工具程式 > 磁碟工具程式
  2. 左上方展開選單點選 顯示方式 > 顯示所有裝置
  3. 點選硬碟的名稱 > 清除

我都習慣用這樣的配置

  • 名稱:Macintosh HD
  • 格式:APFS
  • 架構:GUID 分割區配置表

(當然名稱你可以用自己喜歡的,我之所以取 Macintosh HD 純粹是因為真正的 Mac 都取這個名字,主要是安撫我的心靈用的)

這樣子系統碟就已經準備好,可以進行安裝了。選擇安裝目標的時候選擇 Macintosh HD 就行了。

安裝的過程中電腦會重新開機大約 3 次,很在意細節的人可以在每次開機的當下都按 F8 確保是從隨身碟開機。

至於 Clover 該從 Prebooter 還是 macOS Install 開機其實都無所謂,只要你上方的 kext 都有確實放好在隨身碟的 EFI 裡頭是不太會出錯的。

最後最後,你就會設定一下系統,然後成功地進到了桌面。 恭喜你,你完成了一半了。

Clover 安裝

跟上面一樣的安裝方法安裝 Clover 即可,但是這次要安裝到你的系統碟,也就是剛剛範例裡面的 Macintosh HD 裡面,別安裝錯了。

安裝結束之後,Clover 會幫忙掛載系統硬碟的 EFI 磁區好讓我們進行工作

  1. 如果沒看到 EFI 磁區,用 Clover Configurator 將隨身碟的 EFI 磁區掛載 mount 起來
  2. 將隨身碟 EFI 磁區裡的 kextsdriversACPI 直接覆蓋到系統碟的對應資料夾

Config.plist 修正

安裝完 Clover 之後就要來針對 Clover 的設定進行一些更詳細的修改,config.plist 位在 EFI\Clover 底下,使用 Clover Configurator 打開。

什麼?你的電腦沒有 Clover Configurator?那我們一起順便安裝一下吧

Download Clover Configurator 5.6.2.0 | mackie100 projects

  1. 從上方連結下載 Clover Configurator
  2. Clover Configurator.app 拖至 應用程式 資料夾
  3. EFI\Clover底下找到 config.plist 右鍵,使用 Clover Configurator 打開

這樣我們就能接著底下繼續設定了

ACPI

/ishengp-catalina-clover/images/2.png

Patches 加入值

change XHC1 to XHC 避免與內建USB產生衝突 Comment: change XHCI to XHC Find: 58484349 Replace: 5848435f

change XHC1 to XHC 避免與內建USB產生衝突 Comment: change XHC1 to XHC Find: 58484331 Replace: 5848435f

change SAT0 to SATA 修正SATA裝置的相容性 Comment: change SAT0 to SATA Find: 53415430 Replace: 53415441

BOOT

/ishengp-catalina-clover/images/3.png

Arguments 加入值

  • -v - 啟用文字模式
  • dart=0 - 防護 Vt-d 造成的問題
  • debug=0x100 - 防止在核心錯誤 kernel panic 重開機方便除錯
  • keepsyms=1 - 在核心錯誤的時候印出紀錄,搭配上方使用

DefaultBootVolume — 預設開機的磁碟,LastBootedVolume 就是記憶上次啟動的硬碟

Timeout — 開機選單時間,預設 5 秒,0 代表完全跳過,-1 代表無視時間

Kernel and Kext Patches

/ishengp-catalina-clover/images/4.png

KextsToPatch 加入值

修正 USB 槽位的限制(此為 Catalina 10.15.0 版,一個版本即可) Name*: com.apple.iokit.IOUSBHostFamily Find* [HEX]: 83FB0F0F Replace* [HEX]: 83FB3F0F Comment: USB Port Limit Patch 1 PMHeart/DalianSky MatchOS: 10.15.x````Name*: com.apple.driver.usb.AppleUSBXHCI Find* [HEX]: 83F90F0F Replace* [HEX]: 83F93F0F Comment: USB Port Limit Patch 2 PMHeart/DalianSky MatchOS: 10.15.x

修正 USB 槽位的限制(此為 Mojave 10.14.6版,一個版本即可) Name*: com.apple.iokit.IOUSBHostFamily Find* [HEX]: 83FB0F0F Replace* [HEX]: 83FB3F0F Comment: USB Port Limit Patch 1 PMHeart/DalianSky MatchOS: 10.14.x````Name*: com.apple.iokit.IOUSBHostFamily Find* [HEX]: 83E30FD3 Replace* [HEX]: 83E33FD3 Comment: USB Port Limit Patch 2 PMHeart/DalianSky MatchOS: 10.14.x````Name*: com.apple.driver.usb.AppleUSBXHCI Find* [HEX]: 83FB0F0F Replace* [HEX]: 83FB3F0F Comment: USB Port Limit Patch 3 PMHeart/DalianSky MatchOS: 10.14.x````Name*: com.apple.driver.usb.AppleUSBXHCI Find* [HEX]: 83FF0F0F Replace* [HEX]: 83FF3F0F Comment: USB Port Limit Patch 4 PMHeart/DalianSky MatchOS: 10.14.x

SMBIOS

/ishengp-catalina-clover/images/5.png /ishengp-catalina-clover/images/6.png

你可以直接點擊右中方的箭頭選擇你的 Mac 機型,這邊有幾台機型給大家參考

  • iMac18,1 — 適合使用內顯的使用者
  • iMac18,3 — 適合使用獨顯的使用者,使用內顯做一些額外的運算

選擇之後就會自動生出序號、主板序號等等的內容,模擬成一台真正的 Mac,這樣才能使用 iMessage,FaceTime 等功能。

弄完之後去按一下 Check Coverage,檢查一下產生的序號是否有人使用過了(官網有跳出說有購買日期或是保固內之類的代表有人使用),就再去 Serial Number 旁邊按一下 Generate New,直到序號無人使用為止。

System Parameters

/ishengp-catalina-clover/images/7.png

Inject Kexts,這邊選擇 Detect

  • Yes - 啟用 EFI 裡頭的 kext
  • No - 不啟用 EFI 裡頭的 kext
  • Detect - 在有 FakeSMC.kext 啟用 EFI 裡頭的 kext

存檔之後,你可以複製一份起來備用。當你哪次開機有問題的時候可以拿來救援一下,或是當你在社群發問的時候當作一個參考。

我做到這邊,電腦的所有功能都正常了,可以開心的使用電腦了。希望你也能順利的完成屬於自己的黑蘋果。

更新內容、編輯紀錄

2019/11/2

系統升級至 macOS Catalina 10.15.1
直接升級會造成重開機後進系統沒畫面的狀況,更新 WhateverGreen 至 1.3.4 即可解決問題。其餘功能正常。

教訓:1. 不要第一時間升級系統。 2. 升級系統前要做 EFI 備份,以及將 kext 都更新到最新版。 3. 記得看看有沒有其他白老鼠的問題回報吧。

2019/12/12

更新所有的 kext 至最新版,Clover 更新至 5099
IntelMausiEthernet 使用 IntelMausi 代替
系統升級至 macOS Catalina 10.15.2
功能全數正常。

2019/12/13

修正 Inject Kext 至 Detect,感謝 Mao-Sung Chang 的提出。 最後就是我可能上面有哪個地方手殘寫錯了,或是這篇還有什麼希望看我補充說明的都可以在底下跟我說,雖然說是純粹給我自己看的但是其實還是希望有那麼一點參考價值啦(笑)。 喜歡文章歡迎幫我按拍手,我看了很開心說不定以後就會有很多篇這類的文章吧。




謝謝您的閱讀。
如果喜歡我的文章,您的 5下鼓掌 將會成為我寫作的動力。

點擊上方鼓掌登入 LikeCoinID點擊鼓掌5下
使我獲得回饋且無須付費轉化為寫作的助力。
您也可以留言、追蹤我,在未來期望也能夠有與您交流互動的機會。