Re: Understanding kexts in the early boot process
Re: Understanding kexts in the early boot process
- Subject: Re: Understanding kexts in the early boot process
- From: Andrew Myrick <email@hidden>
- Date: Mon, 15 Jun 2009 11:06:39 -0700
So, if I understand you right, the boot loader reads the kexts into memory and passes a pointer to them to the kernel. The kernel then iterates over the kexts, executing their code.
I just try to understand when the files get read and when they get executed. If it is how I just suggested, then this means that the boot loader is the authority in selecting all the kexts for the kernel, and the kernel has no choice than to work with those - if they're not sufficient, the kernel may fail to boot because the kernel does _not_ read essential kexts on its own. Correct?
Correct. The boot loader selects this kexts using the OSBundleRequred property in the kexts' info plist. The details are a bit more complex than this, but a simplified view is that the boot loader reads all kexts with an OSBundleRequired property set to anything other than "Safe Boot". The Extensions.mkext file is a cache of all such kexts. If a kext needed for boot does not have this property, then the system will fail to boot. Also, this does _not_ mean that the read kexts will get loaded and started; the I/O Kit matching engine will load and start kexts selectively based on their personalities. This property simply ensures that these kexts are available for use at early boot time in the kernel.
-Andrew |
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-kernel mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden