iT邦幫忙

2022 iThome 鐵人賽

DAY 26
0

我們從前面的章節知道:在蘋果系統中,能用上的硬體是有限制的

當我們想安裝一些PC上不太常見的硬體,如 10G高速網卡、Thunderbolt擴充卡、SAS陣列卡 之類時,該如何選擇呢?

一般來說,會先檢查蘋果是否有用過該型號晶片,或同晶片廠商的近似型號

以10G高速網卡為例:

在蘋果上出現過的有 Intel 的 X500系列(8259x), Aquantia 的 AQC-107 型號

有供應過給蘋果的廠商分別是 SmallTree,SolarFlare,Tehuti,Sonet 等

這幾家好像很少聽過,是吧? 沒關係,我們只要找跟這些廠商用一樣晶片型號的網卡即可(嗎?)

收張Intel X520(SFP+ port)或 X540(RJ45 port),單port或雙port皆可,若能收到以上幾家的卡,那就不用大費周章的改ID,直接使用原廠的macOS驅動即可

但,市面上大多都不是啊~~
由於這些卡跟我們要上的驅動內ID不一致(PCI ID裡的子系統識別碼SUBSYS ID),所以需要"手動"修改一下,

  • 以下一些操作,需有Linux系統的基本操作知識,如無法自己弄,請找專業人士(像是我)幫你搞定(或找我買一張改好的 XD)

下載Ubuntu ISO,製作Ubuntu開機碟,不需要安裝進電腦,只要進到Ubuntu Live環境即可

進入 Ubuntu 後,開啟Terminal終端機
輸入:

ip a

出現類似此畫面

ubuntu@ubuntu:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 74:d4:35:f9:e1:dc brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.100/24 brd 192.168.0.255 scope global dynamic noprefixroute enp2s0
       valid_lft 604683sec preferred_lft 604683sec
    inet6 fe80::cd60:85d0:9505:9a18/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: enp5s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 00:1b:21:7e:4c:f2 brd ff:ff:ff:ff:ff:ff

確認目前10G網卡的資訊,如範例中enp2s0是主機板內建的Gb網卡,而 enp5s0 則是10G網卡的名稱

修改ID前我們先將原始韌體備份起來,安裝所需要的工具:

sudo apt-get install ethtool

安裝好後,輸入以下指令將網卡韌體備份到目前的桌面(或指定放到其他隨身碟上,不然重開機後Live桌面的資料會消失!)

sudo ethtool -e 網卡名稱編號 raw on > /備份位置

EX:

sudo ethtool -e enp5s0 raw on > ~/Desktop/Intel_X520_enp5s0.bin

若,該網卡為雙port則兩個名稱都要備份一次,後續的修改也是要改兩個地方
如:enp5s0、enp5s1 兩個port的名稱編號都要記住

接下來確認 ID:

lspci -nn -vvv

找到:
05:00.0 Ethernet controller [0200]: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection [8086:10fb] (rev 01)
	Subsystem: Dell 82599ES 10-Gigabit SFI/SFP+ Network Connection [1028:7b10]
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin A routed to IRQ 16
	Region 0: Memory at df200000 (64-bit, non-prefetchable) [size=512K]
	Region 2: I/O ports at d000 [size=32]
	Region 4: Memory at df300000 (64-bit, non-prefetchable) [size=16K]
	Expansion ROM at df280000 [disabled] [size=512K]
	Capabilities: <access denied>
	Kernel driver in use: ixgbe
	Kernel modules: ixgbe

Vendor ID:Device ID = 8086:10fb
可以看到這是Intel公司(8086)出產的10G網卡晶片(10fb)型號是82599ES

Sub Vendor ID:Sub Device ID = 1028:7b10
由Dell公司(1028)生產的10G網卡型號(7b10),接口是SFP/SFP+型態

再來要搜尋這個網卡的Subsystem ID在網卡韌體的哪個位置,
需要先把byte兩兩對調:

sudo ethtool -e PORT-NAME | grep "SUBSYS_ID_IN_REVERSE"

EX: Sub Vendor ID 1028 > 28 10

sudo ethtool -e enp5s0 | grep "28 10"

若是找不到,有可能剛好斷在換行處,這時改搜尋另一組:

Sub Device ID 7b10 > 10 7b

sudo ethtool -e enp5s0 | grep "10 7b"

以此卡為例,在這個地方找到:
0x0320: 03 00 1f 00 00 00 00 00 03 13 10 7b 28 10 a6 10

可以看到,符合搜尋條件的只有這一個

  • 10 7b 28 10 對應上面列出的 1028:7b10

我們要把7b10替換成0005也就是 05 00

原10 位於0x320的第十一個Byte 即是 0x32A(0x320=該行第一個)位置,替換成05
原7b 位於0x320的第十二個Byte 即是 0x32B(0x320=該行第一個)位置,替換成00

再來看看更改的指令格式:

sudo ethtool -E <Ethernet name> magic 0x<Device id><Vendor id> offset 0x<Offset> length 1 value 0x<Value> 

套用上面記下的 enp5s0
套用上面記下的 10fb
套用上面記下的 8086
套用上面記下的 0x32A (0x32B 要再另外執行一次)
套用上面記下的 0x05 (0x00 要再另外執行一次)

修改好指令後如下:

sudo ethtool -E enp5s0 magic 0x10fb8086 offset 0x032A length 1 value 0x05
sudo ethtool -E enp5s0 magic 0x10fb8086 offset 0x032B length 1 value 0x00

執行後,再次確認一次有修改到

sudo ethtool -e enp5s0 | grep "28 10"

0x0320: 03 00 1f 00 00 00 00 00 03 13 05 00 28 10 a6 10

可以看到,修改的位置已是 05 00

重開機後,回到蘋果系統,使用DPCIManager或Hackintool看PCI List或PCIe分頁的資訊:

再來,將從SmallTree下載的kext驅動檔:SmallTreeIntel8259x.kext
放進 /EFI/EFI/OC/Kexts 資料夾裡,
並修改config.plist,加進 Kernel > Add 裡,如:

重開機後,就可以在"系統偏好設定"裡的"網路",看到此10G高速網卡了~


上一篇
第二十五章 引導除錯-2
下一篇
第二十七章 Windows系統下 掛載EFI/ESP的工具
系列文
蘋果系統安裝與優化30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言