iMac Pro Xeon Processor…

Aha. This is cool. Thanks to Intel lifting a lid in their documentation for developers. The iMac Pro comes with the Intel® Xeon® Processor Scalable Family, based on Skylake microarchitecture. Which is confusing the crap out of me.

The CPUID checks (0x5065X) for it are already there in High Sierra!!!

The Developer Previews of High Sierra supports both Skylake X and new Xeon models!

Apple can use processors from the Scalable Family for a new Mac Pro, without having to change anything in the xcpm_bootstrap and cpuid_set_info routines!

This particular piece of XNU code has changed for High Sierra:

static uint32_t
cpuid_set_cpufamily(i386_cpu_info_t *info_p)
{
	uint32_t cpufamily = CPUFAMILY_UNKNOWN;

	switch (info_p->cpuid_family) {
	case 6:
		switch (info_p->cpuid_model) {
		case 23:
			cpufamily = CPUFAMILY_INTEL_PENRYN;
			break;
		case CPUID_MODEL_NEHALEM:
		case CPUID_MODEL_FIELDS:
		case CPUID_MODEL_DALES:
		case CPUID_MODEL_NEHALEM_EX:
			cpufamily = CPUFAMILY_INTEL_NEHALEM;
			break;
		case CPUID_MODEL_DALES_32NM:
		case CPUID_MODEL_WESTMERE:
		case CPUID_MODEL_WESTMERE_EX:
			cpufamily = CPUFAMILY_INTEL_WESTMERE;
			break;
		case CPUID_MODEL_SANDYBRIDGE:
		case CPUID_MODEL_JAKETOWN:
			cpufamily = CPUFAMILY_INTEL_SANDYBRIDGE;
			break;
		case CPUID_MODEL_IVYBRIDGE:
		case CPUID_MODEL_IVYBRIDGE_EP:
			cpufamily = CPUFAMILY_INTEL_IVYBRIDGE;
			break;
		case CPUID_MODEL_HASWELL:
		case CPUID_MODEL_HASWELL_EP:
		case CPUID_MODEL_HASWELL_ULT:
		case CPUID_MODEL_CRYSTALWELL:
			cpufamily = CPUFAMILY_INTEL_HASWELL;
			break;
		case CPUID_MODEL_BROADWELL:
		case CPUID_MODEL_BRYSTALWELL:
			cpufamily = CPUFAMILY_INTEL_BROADWELL;
			break;
		case CPUID_MODEL_SKYLAKE:
		case CPUID_MODEL_SKYLAKE_ULT:
		case CPUID_MODEL_SKYLAKE_ULX:
		case CPUID_MODEL_SKYLAKE_DT:
		case CPUID_MODEL_SKYLAKE_W:
			cpufamily = CPUFAMILY_INTEL_SKYLAKE;
			break;
		case CPUID_MODEL_KABYLAKE:
		case CPUID_MODEL_KABYLAKE_ULT:
		case CPUID_MODEL_KABYLAKE_ULX:
		case CPUID_MODEL_KABYLAKE_DT:
			cpufamily = CPUFAMILY_INTEL_KABYLAKE;
			break;
		}
		break;
	}

	info_p->cpuid_cpufamily = cpufamily;
	DBG("cpuid_set_cpufamily(%p) returning 0x%x\n", info_p, cpufamily);
	return cpufamily;
}

In the currently available source code (for Sierra 10.12.4) the lines for Kabylake are missing, as well, of course, for the line to support the new Skylake processors.

There are currently no CPUID checks (0x5067X) for the Intel® Xeon PhiTM Processor 3200, 5200, 7200 Series in High Sierra, but then again, that may change with a future update!

Warning: My assumption here is that the xcpm_bootstrap and cpuid_set_info routines in the XNU source code for High Sierra aren’t going to change anymore, since the iMac Pro (iMac19,1) is already being used with High Sierra (websites can confirm this by checking their logs) but we still don’t know for sure what Apple will use in the iMac Pro.

Ok. So the CPUID checks are there, and there is (still) no Apple hardware with a Skylake X processor, but the iMac Pro won’t be available before December 2017 so anything can happen. Please keep that in mind!

Edit: For people wondering about what CPUID’s are, here are a few example:

0x506E3 Skylake Desktop
0x50650 Skylake-X
0x50652 Skylake Xeon (stepping B-0)
0x50654 Skylake Xeon (stepping H-0)
0x6066X Cannonlake
0x706EX IceLake

This number is used to identify the processor family, model and stepping. In CPU-Z you would see this next to “Ext. Model”:

5E
55
55
55
66
7E

In the same order as the numbers above.

Scripts to install/upgrade to High Sierra DP6 (17A344b)…

I wrote a new handy script (install_1013_DP6_17A344b.sh) to install macOS High Sierra Beta DP-6 and (update_1013_DP6_17A344b.sh) to upgrade your copy of High Sierra DP5 to DP6.

The installer.pkg created by the script will simulate the App Store download and installation method, and all you have to do is:

1.) Run install_1013_DP6_17A344b.sh
2.) Run /Applications/Install macOS High Sierra Beta.app
3.) Reboot

Notes: I have yet to try the scripts myself – I cannot download the files right now (we’re still at sea). Also. You may want to run checkAPFSSettings.sh in single-user mode.

Please note that the App Store.app downloads files to: /Library/Updates but the script uses either: /tmp/091-28081 or /tmp-28062 and all the downloaded files will be gone after a reboot and thus you may want to make a backup of the files!

Thanks!

Tip: If you are getting this error

installer: The upgrade failed (The Installer could not install the software because there was no software found to install.)

Then rm /tmp/091-2806[1/2]/installer.pkg and run the script again. This should output

Creating installer.pkg ...
productbuild: Wrote product to installer.pkg
Running installer ...
installer: Package name is Install macOS High Sierra Beta
installer: Upgrading at base path /Volumes/HS
installer: The upgrade was successful.
Copying: InstallESDDmg.pkg to the target location ...
Copying: AppleDiagnostics.dmg to the target location ...
Copying: AppleDiagnostics.chunklist to the target location ...
Copying: BaseSystem.dmg to the target location ...
Copying: BaseSystem.chunklist to the target location ...

But you should not see something like:

productbuild: warning: package /tmp/091-28061/InstallAssistantAuto.pkg could not be loaded
productbuild: warning: package /tmp/091-28061/RecoveryHDMetaDmg.pkg could not be loaded

In case you happen to run into this error, then simply remove the broken packages and run the script again.

Update: I finally had fast enough WiFi to run the script myself, and everything went fine. I only updated the SMBIOS data for the iMac Pro and changed the firmware features.

Support for Skylake X found in High Sierra DP-X

You may remember my blog about XCPM for unsupported Processors and I thought about having another look. This time I looked at the Developer Previews of High Sierra and this is what I found. Let’s start with the switch table of _xcpm_bootstrap:

Ok. Let’s do the math:

0xffffffff - (0xfffffe5a - 0x01) = 0x1a6	// case 0  (0x3c - 0x3c = 0x00/0)
0xffffff80003a6334 - 0x1a6 = 0xffffff80003a618e

0xffffffff - (0xfffffedc - 0x01) = 0x124	// case 1  (0x3d - 0x3c = 0x01/1)
0xffffff80003a6334 - 0x124 = 0xffffff80003a6210

0xffffffff - (0xfffffef5 - 0x01) = 0x10b	// case 9  (0x45 - 0x3c = 0x09/9)
0xffffff80003a6334 - 0x10b = 0xffffff80003a6229

0xffffffff - (0xffffff0b - 0x01) = 0xf5		// case 10 (0x46 - 0x3c = 0x0a/10)
0xffffff80003a6334 - 0xf5 = 0xffffff80003a623f

0xffffffff - (0xffffff2c - 0x01) = 0xd4		// case 11 (0x47 - 0x3c = 0x0b/11)
0xffffff80003a6334 - 0xd4 = 0xffffff80003a6260

0xffffffff - (0xfffffed0 - 0x01) = 0x130	// case 18 (0x4e - 0x3c = 0x12/18)
0xffffff80003a6334 - 0x130 = 0xffffff80003a6204

0xffffffff - (0xffffff38 - 0x01) = 0xc8		// case 25 (0x55 - 0x3c = 0x19/25)
0xffffff80003a6334 - 0xc8 = 0xffffff80003a626c

0xffffffff - (0xfffffec1 - 0x01) = 0x13f	// case 33 (0x5d - 0x3c = 0x21/33)
0xffffff80003a6334 - 0x13f = 0xffffff80003a61f5

0xffffffff - (0xfffffe73 - 0x01) = 0x18d	// case 34 (0x5e - 0x3c = 0x22/34)
0xffffff80003a6334 - 0x18d = 0xffffff80003a61a7

Now we have the offsets and type of processors. And they all match. You can check that yourself below – this is a code snippet of _xcpm_bootstrap in the High Sierra kernel:

ffffff80003a6173	movl	%ebx, %eax
ffffff80003a6175	addb	$-0x3c, %al
ffffff80003a6177	cmpb	$0x22, %al
ffffff80003a6179	ja   	0xffffff80003a619d

ffffff80003a617b	movzbl	%al, %eax
ffffff80003a617e	leaq	0x1af(%rip), %rcx
ffffff80003a6185	movslq	(%rcx,%rax,4), %rax
ffffff80003a6189	addq	%rcx, %rax
ffffff80003a618c	jmpq 	*%rax

ffffff80003a618e	movl	$0x4, _xcpm_hwp_idle_epp(%rip)		// case  0: 0x3c = HASWELL
ffffff80003a6198	jmp 	0xffffff80003a6249

ffffff80003a619d	cmpb	$-0x72, %bl  	 	 	 	 	 	// 0x8e = KABYLAKE
ffffff80003a61a0	je   	0xffffff80003a6204

ffffff80003a61a2	cmpb	$-0x62, %bl  	 	 	 	 	 	// 0x9e	= KABYLAKE_DT
ffffff80003a61a5	jne 	0xffffff80003a61f5

ffffff80003a61a7	movq	0x752fa2(%rip), %rdi			 	// case 34: 0x5E - SKYLAKE_DT and KABYLAKE_DT

ffffff80003a61ae	testq	%rdi, %rdi
ffffff80003a61b1	jne  	0xffffff80003a61c8

ffffff80003a61b3	movq	0x729ed6(%rip), %rax
ffffff80003a61ba	movq	0x488(%rax), %rdi
ffffff80003a61c1	movq	%rdi, 0x752f88(%rip)
ffffff80003a61c8	addq	$0x2, %rdi
ffffff80003a61cc	movl	$0x2, %esi
ffffff80003a61d1	callq	0xffffff800037e070
ffffff80003a61d6	orl 	$0x4000, %eax
ffffff80003a61db	movzwl	%ax, %eax
ffffff80003a61de	cmpl	$0x5910, %eax
ffffff80003a61e3	jne 	0xffffff80003a62a1

ffffff80003a61e9	movl	$0x2000, _xcpm_hwp_idle_epp(%rip)
ffffff80003a61f3	jmp 	0xffffff80003a621a

ffffff80003a61f5	movl	$0x0, 0x6f8aa9(%rip)			 	// case 33: exit
ffffff80003a61ff	jmp 	0xffffff80003a6329

ffffff80003a6204	movl	$0x200, _xcpm_hwp_idle_epp(%rip)	// case 18: 0x4e = SKYLAKE and KABYLAKE
ffffff80003a620e	jmp 	0xffffff80003a621a

ffffff80003a6210	movl	$0x80, _xcpm_hwp_idle_epp(%rip)		// case  1: 0x3d = BROADWELL
ffffff80003a621a	movl	$0x1, 0x689cf0(%rip)
ffffff80003a6224	jmp 	0xffffff80003a62b5

ffffff80003a6229	movl	$0x10, _xcpm_hwp_idle_epp(%rip)		// case  9: 0x45 = HASWELL_ULT
ffffff80003a6233	movl	$0x1, 0x689cd7(%rip)
ffffff80003a623d	jmp 	0xffffff80003a6249

ffffff80003a623f	movl	$0x8, _xcpm_hwp_idle_epp(%rip)		// case 10: 0x46 = CRYSTALWELL
ffffff80003a6249	movl	$0x1, 0x689cc9(%rip)
ffffff80003a6253	movq	$0x0, 0x689d32(%rip)
ffffff80003a625e	jmp 	0xffffff80003a62b5

ffffff80003a6260	movl	$0x40, _xcpm_hwp_idle_epp(%rip)		// case 11: 0x47 = BROADWELL_H
ffffff80003a626a	jmp 	0xffffff80003a62b5

ffffff80003a626c	movl	$0x4000, _xcpm_hwp_idle_epp(%rip)	// case 25: 0x55 = SKYLAKE_X
ffffff80003a6276	movl	$0x0, 0x689c94(%rip)
ffffff80003a6280	movq	$0x989680, 0x689c35(%rip)
ffffff80003a628b	movl	$0x1, 0x689de3(%rip)
ffffff80003a6295	movl	$0x1, _xcpm_ubpc_enabled(%rip)
ffffff80003a629f	jmp 	0xffffff80003a62b5

ffffff80003a62a1	movl	$0x1000, _xcpm_hwp_idle_epp(%rip)
ffffff80003a62ab	movl	$0x0, 0x689c5f(%rip)
ffffff80003a62b5	incl	_xcpm_bootstrap_count(%rip)
ffffff80003a62bb	leaq	0x5d1fa1(%rip), %rdi ## literal pool for: "-xcpm"
ffffff80003a62c2	leaq	-0x14(%rbp), %rsi
ffffff80003a62c6	movl	$0x4, %edx
ffffff80003a62cb	xorl	%ecx, %ecx
ffffff80003a62cd	callq	0xffffff80008ff2c0
ffffff80003a62d2	movl	$0x1, 0x6f89cc(%rip)
ffffff80003a62dc	leaq	0x5d1f86(%rip), %rdi ## literal pool for: "-xcpm_assert"
ffffff80003a62e3	leaq	_xcpm_assert_enable(%rip), %rsi
ffffff80003a62ea	movl	$0x4, %edx
ffffff80003a62ef	xorl	%ecx, %ecx
ffffff80003a62f1	callq	0xffffff80008ff2c0
ffffff80003a62f6	leaq	0x5d1f79(%rip), %rdi ## literal pool for: "-xcpm_assert_trace"
ffffff80003a62fd	leaq	_xcpm_assert_trace(%rip), %rsi
ffffff80003a6304	movl	$0x4, %edx
ffffff80003a6309	xorl	%ecx, %ecx
ffffff80003a630b	callq	0xffffff80008ff2c0
ffffff80003a6310	movl	0x190(%r14), %eax
ffffff80003a6317	cmpl	0x194(%r14), %eax
ffffff80003a631e	sbbl	%eax, %eax
ffffff80003a6320	andl	$0x1, %eax
ffffff80003a6323	movl	%eax, _xcpm_SMT_platform(%rip)
ffffff80003a6329	addq	$0x10, %rsp
ffffff80003a632d	popq	%rbx
ffffff80003a632e	popq	%r14
ffffff80003a6330	popq	%rbp
ffffff80003a6331	retq

The next step is to combine the data and merge it into another table.

Note: If you don’t understand what we do here, then follow the link at the top of this blog article.

Note the new one in the above table. But wait. Let’s make another table. One that shows you what it is:

Well. Wasn’t that easy?

The next time I will do the same for _cpuid_set_info. That one is even more interesting, but I ran out of time…

Edit: It’s nice that the High Sierra kernel supports the Skylake X processor, and it works, but they do lack support for ECC memory, so it isn’t immediately clear why Apple did this. I mean. It cannot, as it stands right now, with the currently available Intel processors, be for the iMac Pro. My best guess is that it will be used for a new / updated Apple product. Presumably also for the yet to be released Xeon processors that will be used in the iMac Pro.

Yes of course. The Kabylake (0x8e) and Kabylake desktop (0x9e) processors are also supported, but Apple isn’t using the switch table for these. They may add it at a later date, but right now, they use simple cmp’s for it. One thing though. There is an additional check for 0x5910 for the Kabylake desktop parts. Note that 0x5912 (one example) is a Kabylake with IGPU.

p.s. I don’t have a hack handy right now (only my MacBook Pro) so I cannot verify if the Skylake X is using 0x5910 or some other processor is using it. Any takers?

Update:
I checked a data sheet of the Intel® Xeon® Processor Scalable family and they also use 0x55 to identify the processor model (CPUID 0x5065x). The only difference is that the stepping ID is either two or four. Not zero.

In other words. Apple could, in theory, use the big Xeon’s after all. Maybe only for the next Mac Pro, but we don’t know that. Only Apple could tell us that, and we all know this, that is never going to happen. That is why I have decided to have a closer look at the used Microcode. That should help.

Update-2: I checked the Intel microcode in the accidentally released firmware and found 0x50652 (stepping B-0) and that is definitely not a Skylake X processor – the B-0 stepping of the Intel® Xeon® Processor Scalable Family is CPUID 0x50652 and the H-0 stepping 0x50654.

See also Xeon Microcode Found In iMac Pro Firmware…

iMac Pro Processor Socket…

We know that the width of a DDR-4 module is 133 mm. Right? Well. I resized (a snippet of) the image that Apple uses on its website and here it is:
Snippet of Apple provided image
Isn’t that processor cooler heatsink pretty big? It measures almost 8 x 11 cm. A super size for both the LGA2066 and LGA36471 processors. Yeah. I still wonder why it is that big. Is that just to dissipate the heat, or is Apple really going to use a LGA36471 socket/processor?

Now look at that chip/print below it. What is that? The first time that I looked at the image, I immediately thought about some sort of Intel Fabric Passive (IFP). Something you see on Knights Landing Processors wherw a Wolf River Fabric is used (on supported modules).

I am probably wrong, and yes it supports six memory channels (max). Compared to four for LGA2066 processors, but none of them supports ECC memory. And there is no need to use all six channels. Four is enough, be it slightly slower.

What do you think?

Update: No. Sorry Pike. Apple is not going to use the LGA3647-1. It’s just to big to fit underneath the two heat pipes. However. The LGA2066 is 45 mm x 52.5 mm. A much better fit.

Edit: Also. I went through the firmware. Once again. And the CPUID code to read the brand string does not include checks for the X series SKU (0x55).

Edit-2: Intel confirmed that the iMac has a LGA2066 socket, for the Xeon W-2145 (8C/16T), Xeon W-2155 (10C/20T) and Xeon W-2195 (18C/38T)

Abort, abort…

Well. This sucks. Rio should have been fun, but I have to leave the ship and take a flight to the states.

Hmm. Well. Actually. This is also good news, because some of the communication with the person committing the blog articles, since I cannot do that from sea, got mixed up in the blog itself.

Why? Just don’t ask. It’s all over the Internet.

Edit: All is fine again. Hey Rio. Here I come!

Script to install macOS High Sierra DP-5 (17A330h)

I wrote a new handy script (install_1013_DP5_17A330h.sh) to install macOS High Sierra Beta DP-5.

The installer.pkg created by the script will simulate the App Store download and installation method, and all you have to do is:

1.) Run install_1013_DP5_17A330h.sh
2.) Run /Applications/Install macOS High Sierra Beta.app
3.) Reboot

Notes: I have yet to try this script myself – I cannot download the files right now (we’re still at sea). Also. You may want to run checkAPFSSettings.sh in single-user mode.

Edit: First confirmation per e-mail. Script is working!

Please note that the App Store.app downloads files to: /Library/Updates but the script uses: /tmp/091-26416 and all the downloaded files will be gone after a reboot and thus you may want to make a backup of the files!

Thanks!

HomePod (B238) prelinkedkernel unpacked…

HomePod (codename B238) is using a prelinkedkernel with 157 kexts in it. I extracted them all. Here’s the full list:

AGXFirmwareKextG4P.kext
AGXG4P.kext
ASPSupportNodes.kext
AUC.kext
AppleA7IOP.kext
AppleAE2Audio.kext
AppleARMIISAudio.kext
AppleARMPMU.kext
AppleARMPlatform.kext
AppleAVEH7.kext
AppleBCMWLANBusInterfacePCIe.kext
AppleBCMWLANCore.kext
AppleBSDKextStarter.kext
AppleBSDKextStarter.kext/PlugIns/AppleBSDKextStarterVPN.kext
AppleBluetooth.kext
AppleBluetoothDebug.kext
AppleBluetoothDebugService.kext
AppleCycloneErrorHandler.kext
AppleD2186PMU.kext
AppleDiagnosticDataAccessReadOnly.kext
AppleDialogPMU.kext
AppleEffaceableBlockDevice.kext
AppleEffaceableStorage.kext
AppleEmbeddedAudio.kext
AppleEmbeddedAudio.kext/PlugIns/AppleCX21810Audio.kext
AppleEmbeddedAudio.kext/PlugIns/AppleNitrogenAudio.kext
AppleEmbeddedLightSensor.kext
AppleEmbeddedNewAccelerometer.kext
AppleEmbeddedPCIE.kext
AppleEmbeddedTempSensor.kext
AppleEmbeddedUSB.kext
AppleEmbeddedUSBHost.kext
AppleExternalAmpController.kext
AppleFSCompressionTypeZlib.kext
AppleH6CameraInterface.kext
AppleH7ADBE0.kext
AppleHIDKeyboard.kext
AppleHIDKeyboardEmbedded.kext
AppleInterruptController.kext
AppleJPEGDriver.kext
AppleM2ScalerCSC.kext
AppleM68Buttons.kext
AppleMatch.kext
AppleMobileApNonce.kext
AppleMobileFileIntegrity.kext
AppleMultitouchSPI.kext
AppleNANDConfigAccess.kext
AppleOnboardSerial.kext
ApplePMGR.kext
ApplePeppyDriver.kext
AppleS5L8920XPWM.kext
AppleS5L8940XDWI.kext
AppleS5L8940XI2C.kext
AppleS5L8960X.kext
AppleS5L8960XDART.kext
AppleS5L8960XGPIOIC.kext
AppleS5L8960XUSB.kext
AppleS5L8960XWatchDogTimer.kext
AppleSEPCredentialManager.kext
AppleSEPKeyStore.kext
AppleSEPManager.kext
AppleSamsungPKE.kext
AppleSamsungSPI.kext
AppleSamsungSerial.kext
AppleSynopsysMIPIDSI.kext
AppleSynopsysOTGDevice.kext
AppleT7000.kext
AppleT7000CLPC.kext
AppleT7000PCIe.kext
AppleT7000PMGR.kext
AppleT7000SOCTuner.kext
AppleT7000SmartIO.kext
AppleUSBAudio.kext
AppleUSBCDC.kext
AppleUSBCommon.kext
AppleUSBDeviceAudioController.kext
AppleUSBDeviceMux.kext
AppleUSBDeviceNCM.kext
AppleUSBECM.kext
AppleUSBEthernet.kext
AppleUSBEthernetDevice.kext
AppleUSBEthernetHost.kext
AppleUSBHSIC.kext
AppleUSBHostT7000.kext
AppleUSBNCM.kext
AppleUSBNetworking.kext
AppleVXD393.kext
EncryptedBlockStorage.kext
FairPlayIOKit.kext
HFS.kext
IO80211Family.kext
IOAVFamily.kext
IOAcceleratorFamily.kext
IOAcceleratorFamily2.kext
IOAccessoryManager.kext
IOAudio2Family.kext
IOAudioCodecs.kext
IOCECFamily.kext
IOCryptoAcceleratorFamily.kext
IODARTFamily.kext
IOHDCPFamily.kext
IOHDIXController.kext
IOHDIXController.kext/PlugIns/AppleDiskImagesFileBackingStore.kext
IOHDIXController.kext/PlugIns/AppleDiskImagesKernelBacked.kext
IOHDIXController.kext/PlugIns/AppleDiskImagesRAMBackingStore.kext
IOHDIXController.kext/PlugIns/AppleDiskImagesReadWriteDiskImage.kext
IOHDIXController.kext/PlugIns/AppleDiskImagesUDIFDiskImage.kext
IOHIDFamily.kext
IOHIDFamily.kext/PlugIns/IOHIDEventDriver.kext
IOHIDFamily.kext/PlugIns/IOHIDEventDriverSafeBoot.kext
IOImageLoader.kext
IOMobileGraphicsFamily.kext
IONetworkingFamily.kext
IOPCIFamily.kext
IOReportFamily.kext
IOSerialFamily.kext
IOSkywalkFamily.kext
IOSlaveProcessor.kext
IOSlowAdaptiveClockingFamily.kext
IOStorageFamily.kext
IOStreamFamily.kext
IOSurface.kext
IOTextEncryptionFamily.kext
IOTimeSyncFamily.kext
IOUSBDeviceFamily.kext
IOUSBHostFamily.kext
IOUSBHostFamily.kext/PlugIns/AppleUSBEHCI.kext
IOUSBHostFamily.kext/PlugIns/AppleUSBHostCompositeDevice.kext
IOUSBHostFamily.kext/PlugIns/AppleUSBHostMergeProperties.kext
IOUSBHostFamily.kext/PlugIns/AppleUSBHostPacketFilter.kext
IOUSBHostFamily.kext/PlugIns/AppleUSBHostUserClient.kext
IOUSBHostFamily.kext/PlugIns/AppleUSBHub.kext
IOUSBHostFamily.kext/PlugIns/AppleUSBOHCI.kext
IOUserEthernet.kext
IOgPTPPlugin.kext
L2TP.kext
LSKDIOKit.kext
LSKDIOKitMSE.kext
Libm.kext
LightweightVolumeManager.kext
PPP.kext
PPTP.kext
ProvInfoIOKit.kext
RTBuddy.kext
Sandbox.kext
System.kext/PlugIns/BSDKernel.kext
System.kext/PlugIns/IOKit.kext
System.kext/PlugIns/Libkern.kext
System.kext/PlugIns/MACFramework.kext
System.kext/PlugIns/Mach.kext
System.kext/PlugIns/Private.kext
System.kext/PlugIns/Unsupported.kext
apfs.kext
corecapture.kext
corecrypto.kext
mDNSOffloadUserClient-Embedded.kext
pthread.kext

Some of the filenames may lead to something that you didn’t know already. For example. AppleCX21810Audio.kext points to the Conexant CX21810 codec.

I also extracted the kernel. A branch of the High Sierra (v17.0.0) codebase. Three days newer than the currently available High Sierra Developer Preview (17A315i).

Note: The prelinkedkernel is LZSS compressed, and you need to skip the first 51 bytes!

globResourceFiles.py

I wrote a Python script (globResourceFiles.py) last year that I want to share with you. Here is the output of it:

-------------------------------------
52 Resource files (plists) found
-------------------------------------
Mac-00BE6ED71E35EB86 - iMac13,1
Mac-031AEE4D24BFF0B1 - Macmini6,1
Mac-031B6874CF7F642A - iMac14,1
Mac-06F11F11946D27C5 - MacBookPro11,5
Mac-06F11FD93F0323C5 - MacBookPro11,4
Mac-189A3D4F975D5FFC - MacBookPro11,1
Mac-27ADBB7B4CEE8E61 - iMac14,2
Mac-2BD1B31983FE1663 - MacBookPro11,3
Mac-2E6FAB96566FE58C - MacBookAir5,2
Mac-35C1E88140C3E6CF - MacBookAir6,1
Mac-35C5E08120C7EEAF - Macmini7,1
Mac-3CBD00234E554E41 - MacBookPro11,2
Mac-42FD25EABCABB274 - iMac15,1
Mac-473D31EABEB93F9B - MacBookPro13,1
Mac-4B682C642B45593E - iMac18,1
Mac-4B7AC7E43945597E - MacBookPro9,1
Mac-65CE76090165799A - iMac17,1
Mac-66E35819EE2D0D05 - MacBookPro13,2
Mac-66F35F19FE2A0D05 - MacBookAir5,1
Mac-6F01561E16C75D06 - MacBookPro9,2
Mac-77EB7D7DAF985301 - iMac14,3
Mac-77F17D7DA9285301 - iMac18,2
Mac-7DF21CB3ED6977E5 - MacBookAir6,2
Mac-7DF2A3B5E5D671ED - iMac13,3
Mac-81E3E92DD6088272 - iMac14,4
Mac-937CB26E2E02BB01 - MacBookAir7,2
Mac-9AE82516C7C6B903 - MacBook9,1
Mac-9F18E312C5C2BF0B - MacBookAir7,1
Mac-A369DDC4E67F1C45 - iMac16,1
Mac-A5C67F76ED83108C - MacBookPro13,3
Mac-AFD8A9D944EA4843 - MacBookPro10,2
Mac-B809C3757DA9BB8D - iMac17,1
Mac-BE088AF8C5EB4FA2 - iMac18,3
Mac-BE0E8AC46FE800CC - MacBook8,1
Mac-C3EC7CD22292981F - MacBookPro10,1
Mac-DB15BD556843C820 - iMac17,1
Mac-E43C1C25D4880AD6 - MacBookPro12,1
Mac-EE2EBD4B90B839A8 - MacBook10,1
Mac-F60DEB81FF30ACF6 - MacPro6,1
Mac-F65AE981FFA204ED - Macmini6,2
Mac-FA842E06C61E91C5 - iMac15,1
Mac-FC02E91DDD3FA6A4 - iMac13,2
Mac-FFE5EF870D7BA81A - iMac16,2
---------------------------------------
-- No match for Mac-4BFBC784B845591E --
-- No match for Mac-50619A408DB004DA --
-- No match for Mac-551B86E5744E2388 --
-- No match for Mac-7BA5B2D9E42DDD94 --
-- No match for Mac-90BE64C3CB5A9AEB --
-- No match for Mac-B4831CEBD52A0C4C --
-- No match for Mac-CAD6701F7CEA0921 --
-- No match for Mac-CF21D135A7D34AA6 --
-- No match for Mac-F305150B0C7DEEEF --
---------------------------------------

Nothing special. Just a handy tool that I use from time to time.

Why do I love sailing?

Phew. Let’s take a shower… A breathtaking picture coming up…

Image of Clipper race sailboat taking a nosedive into a wave

What a picture! Yeah. This kind of shots make my day. All year long.

But this shot also reminds me about something that I’d rather like to forget; I lost my first sailboat at a young age. Which sunk when I did something stupid. A reminder that we like to come home without issues. Safe and sound. Anyway. We’re slowly on our way back to Rio and now I will need to spent some time with the kids. I’m also getting hungry. Wait! Pasta again?

p.s. I know. Just Google it 😉

Edit: Oops. Now I get it. I told my friend, the one who posted the article – since I cannot do this from sea – to add an alt tag, but I forgot that you also should use a title tag as well. Ok. Fixed!