- Как исправить ошибку Kernel driver not installed (rc=-1908) в VirtualBox на macOS
- Kernel driver not installed (rc=-1908) Getting Errors in macOS Big Sur 11.0.1
- 4 Answers 4
- Mac Technology Overview
- Kernel and Device Drivers Layer
- High-Level Features
- XPC Interprocess Communication and Services
- Caching API
- In-Kernel Video Capture
- The Kernel
- 64-Bit Kernel
- Device-Driver Support
- Network Kernel Extensions
- IPC and Notification Mechanisms
- Network Support
- Standard Network Protocols
- Network Technologies
- Network Diagnostics
- File-System Support
- Security
- Scripting Support
- Threading Support
- Software Development Support
- Binary File Architecture
- Language Support
Как исправить ошибку Kernel driver not installed (rc=-1908) в VirtualBox на macOS
Пользователи macOS (в особенности Big Sur) сталкиваются со следующей ошибкой при использовании виртуализации VirtualBox от Oracle:
Kernel driver not installed (rc=-1908)
Make sure the kernel module has been loaded successfully.
where: suplibOsInit what: 3
VERR_VM_DRIVER_NOT_INSTALLED
(-1908) — The support driver is not installed.
On linux, open returned ENOENT.
Исправить эту ошибку крайне просто. Вероятнее всего, причина её возникновения в том, что на этапе установки VirtualBox вы проигнорировали уведомление о том, что в настойках нужно предоставить одно из разрешений:
Чтобы исправить это, перейдите в «Системные настройки» macOS, откройте раздел «Защита и безопасность». В нём снимите замок в левом нижнем углу, а затем кликните на кнопку «Разрешить» рядом с появившемся пунктом «Загрузка системного ПО разработчика „Oracle America, Inc.” была заблокирована».
Если этого пункта у вас нет, попробуйте переустановить VirtualBox.
Источник
Kernel driver not installed (rc=-1908) Getting Errors in macOS Big Sur 11.0.1
I just want to work with VirtualBox but now I am getting this type of error.
I could not find a proper solution.
4 Answers 4
MAC with BIG SUR — Kernel driver not installed (rc=-1908)
Make sure the kernel module has been loaded successfully.
where the error is:
Download and install the latest VirtualBox 6.1.18 or higher. And then follow the below steps to resolve.
Step 2: Go into System Preferences->Security & Privacy
Step 3: Unlock the security center
Step 4: Approve the software by Oracle
Big Sur disables the VirtualBox kernel extensions as part of the installation process. You can verify this by running:
If the kernel extensions are installed, you will see something like this:
If you don’t see the extensions loaded, the easier fix is to delete your current VirtualBox app, download and install the lastest version and then go the Security & Privacy System Preferences Pane. You should see a message that some applications require a restart to work correctly.
Restart your Mac and VirtualBox should now work. You can re-run the kexstat command just to be sure the extensions were loaded.
Источник
Mac Technology Overview
Kernel and Device Drivers Layer
The lowest layer of OS X includes the kernel, drivers, and BSD portions of the system and is based primarily on open source technologies. OS X extends this low-level environment with several core infrastructure technologies that make it easier for you to develop software.
High-Level Features
The following sections describe features in the Kernel and Device Drivers layer of OS X.
XPC Interprocess Communication and Services
XPC is an OS X interprocess communication technology that complements App Sandbox by enabling privilege separation. Privilege separation, in turn, is a development strategy in which you divide an app into pieces according to the system resource access that each piece needs. The component pieces that you create are called XPC services.
You create an XPC service as an individual target in your Xcode project. Each service gets its own sandbox—specifically, it gets its own container and its own set of entitlements. In addition, an XPC service that you include with your app is accessible only by your app. These advantages add up to making XPC the best technology for implementing privilege separation in an OS X app.
XPC is integrated with Grand Central Dispatch (GCD). When you create a connection, you associate it with a dispatch queue on which message traffic executes.
When the app is launched, the system automatically registers each XPC service it finds into the namespace visible to the app. An app establishes a connection with one of its XPC services and sends it messages containing events that the service then handles.
Caching API
The libcache API is a low-level purgeable caching API. Aggressive caching is an important technique in maximizing app performance. However, when caching demands exceed available memory, the system must free up memory as necessary to handle new demands. Typically, this means paging cached data to and from relatively slow storage devices, sometimes even resulting in systemwide performance degradation. Your app should avoid potential paging overhead by actively managing its data caches, releasing them as soon as it no longer needs the cached data.
In the wider system context, your app can also help by creating caches that the operating system can simply purge on a priority basis as memory pressure necessitates. The libcache library and Foundation framework’s NSCache class help you to create these purgeable caches.
For more information about the functions of the libcache library, see libcache Reference . For more information about the NSCache class, see NSCache Class Reference.
In-Kernel Video Capture
I/O Video provides a kernel-level C++ programming interface for writing video capture device drivers. I/O Video replaces the QuickTime sequence grabber API as a means of getting video into OS X.
I/O Video consists of the IOVideoDevice class on the kernel side (along with various related minor classes) that your driver should subclass, and a user space device interface for communicating with the driver.
For more information, see the IOVideoDevice.h header file in the Kernel framework.
The Kernel
Beneath the appealing, easy-to-use interface of OS X is a rock-solid, UNIX-based foundation that is engineered for stability, reliability, and performance. The kernel environment is built on top of Mach 3.0 and provides high-performance networking facilities and support for multiple, integrated file systems.
The following sections describe some of the key features of the kernel and driver portions of Darwin.
Mach is at the heart of Darwin because it provides some of the most critical functions of the operating system. Much of what Mach provides is transparent to apps. It manages processor resources such as CPU usage and memory, handles scheduling, enforces memory protection, and implements a messaging-centered infrastructure for untyped interprocess communication, both local and remote. Mach provides the following important advantages to Mac computing:
Protected memory. The stability of an operating system should not depend on all executing apps being good citizens. Even a well-behaved process can accidentally write data into the address space of the system or another process, which can result in the loss or corruption of data or even precipitate system crashes. Mach ensures that an app cannot write in another app’s memory or in the operating system’s memory. By walling off apps from each other and from system processes, Mach makes it virtually impossible for a single poorly behaved app to damage the rest of the system. Best of all, if an app crashes as the result of its own misbehavior, the crash affects only that app and not the rest of the system.
Preemptive multitasking. With Mach, processes share the CPU efficiently. Mach watches over the computer’s processor, prioritizing tasks, making sure activity levels are at the maximum, and ensuring that every task gets the resources it needs. It uses certain criteria to decide how important a task is and therefore how much time to allocate to it before giving another task its turn. Your process is not dependent on another process yielding its processing time.
Advanced virtual memory. In OS X, virtual memory is “on” all the time. The Mach virtual memory system gives each process its own private virtual address space. For 64-bit apps, the theoretical maximum is approximately 18 exabytes, or 18 billion billion bytes. Mach maintains address maps that control the translation of a task’s virtual addresses into physical memory. Typically only a portion of the data or code contained in a task’s virtual address space resides in physical memory at any given time. As pages are needed, they are loaded into physical memory from storage. Mach augments these semantics with the abstraction of memory objects. Named memory objects enable one task (at a sufficiently low level) to map a range of memory, unmap it, and send it to another task. This capability is essential for implementing separate execution environments on the same system.
Real-time support. This feature guarantees low-latency access to processor resources for time-sensitive media apps.
Mach also enables cooperative multitasking, preemptive threading, and cooperative threading.
64-Bit Kernel
As of v10.8, OS X requires a Mac that uses the 64-bit kernel. A 64-bit kernel provides several benefits:
The kernel can support large memory configurations more efficiently.
The maximum size of the buffer cache is increased, potentially improving I/O performance.
Performance is improved when working with specialized networking hardware that emulates memory mapping across a wire or with multiple video cards containing over 2 GB of video RAM.
Because a 64-bit kernel does not support 32-bit drivers and kernel extensions (KEXTs), those items must be built for 64-bit. Fortunately, for most drivers and KEXTs, building for a 64-bit kernel is usually not as difficult as you might think. For the most part, transitioning a driver or KEXT to be 64-bit capable is just like transitioning any other piece of code. For details about how to make the transition, including what things to check for in your code, see 64-Bit Transition Guide.
Device-Driver Support
Darwin offers an object-oriented framework for developing device drivers called the I/O Kit framework. This framework facilitates the creation of drivers for OS X and provides much of the infrastructure that they need. Written in a restricted subset of C++ and designed to support a range of device families, the I/O Kit is both modular and extensible.
Device drivers created with the I/O Kit acquire several important features:
True plug and play
Dynamic device management (“hot plugging”)
Power management (for both desktops and portables)
If your device conforms to standard specifications—such as those for mice, keyboards, audio input devices, modern MIDI devices, and so on—it should just work when you plug it in. If your device doesn’t conform to a published standard, you can use the I/O Kit resources to create a custom driver to meet your needs. Devices such as AGP cards, PCI and PCIe cards, scanners, and printers usually require custom drivers or other support software in order to work with OS X.
For information on creating device drivers, see IOKit Device Driver Design Guidelines.
Network Kernel Extensions
Darwin allows kernel developers to add networking capabilities to the operating system by creating network kernel extensions (NKEs). The NKE facility allows you to create networking modules and even entire protocol stacks that can be dynamically loaded into the kernel and unloaded from it. NKEs also make it possible to configure protocol stacks automatically.
NKE modules have built-in capabilities for monitoring and modifying network traffic. At the data-link and network layers, they can also receive notifications of asynchronous events from device drivers, such as when there is a change in the status of a network interface.
Integrated with Darwin is a customized version of the Berkeley Software Distribution (BSD) operating system. Darwin’s implementation of BSD includes much of the POSIX API, which higher-level apps can also use to implement basic app features. BSD serves as the basis for the file systems and networking facilities of OS X. In addition, it provides several programming interfaces and services, including:
The process model (process IDs, signals, and so on)
Basic security policies such as file permissions and user and group IDs
Threading support (POSIX threads)
Networking support (BSD sockets)
Note: For more information about the FreeBSD operating system, go to The FreeBSD Project website . For more information about the boot process of OS X, including how it launches the daemons used to implement key BSD services, see Daemons and Services Programming Guide.
The following sections describe some of the key features of the BSD layer of OS X.
IPC and Notification Mechanisms
OS X supports the following technologies for interprocess communication (IPC) and for delivering notifications across the system:
File System Events. File System Events ( FSEvents ) is a mechanism for notifying your app when changes occur in the file system, such as at the creation, modification, or removal of files and directories. The FSEvents API gives you a way to monitor many directories at once and detect general changes to a file hierarchy. For example, you might use this technology in backup software to detect what files changed. The FSEvents API is not intended for detecting fine-grained changes to individual files.
Kernel queues and kernel events. These mechanisms allow you to intercept kernel-level events to receive notifications about changes to sockets, processes, the file system, and other aspects of the system. Kernel queues and events are part of the FreeBSD layer of the operating system and are described in the kqueue and kevent man pages.
BSD notifications. BSD notifications have a few advantages over the notification services that are offered by Core Foundation and Foundation. For example, your program can receive BSD notifications through mechanisms that include Mach ports, signals, and file descriptors. Moreover, this technology is lightweight, efficient, and capable of coalescing notifications.
You can add support for BSD notifications to any type of program, including Cocoa apps. For more information, see Mac Notification Overview or the notify man page. For a discussion of Cocoa and Core Foundation interfaces for interprocess notification, see Distributed Notifications .
Sockets and ports. Sockets and ports are portable mechanisms for interprocess communication. A socket represents one end of a communications channel between two processes either locally or across the network. A port is a channel between processes or threads on the local computer. Core Foundation and Foundation provide higher-level abstractions for ports and sockets that make them easier to implement and offer additional features. For example, you can use a CFSocket with a CFRunLoop to multiplex data received from a socket with data received from other sources (or more information, see CFSocket Reference and CFRunLoop Reference).
Streams. A stream is mechanism for transferring data between processes when you are communicating using an established transport mechanism such as Bonjour or HTTP. Higher-level interfaces of Core Foundation and Foundation (which work with CFNetwork ) provide a stream-based way to read and write network data and can be used with run loops to operate efficiently in a network environment.
Pipes. A pipe is a communications channel typically created between a parent and a child process when the child process is forked. Data written to a pipe is buffered and read in first-in, first-out (FIFO) order. You can create named pipes ( pipe function) for communication between related processes or named pipes for communication between any two processes. A named pipe must be created with a unique name known to both the sending and the receiving process.
Shared memory. Shared memory is a region of memory that has been allocated by a process specifically for the purpose of being readable and possibly writable among several processes. You can create regions of shared memory using several BSD approaches, including the shm_open and shm_unlink routines, and the mmap routine. Access to shared memory is controlled through POSIX semaphores, which implement a kind of locking mechanism.
Although shared memory permits any process with the appropriate permissions to read or write a shared memory region directly, it is very fragile—leading to the dangers of data corruption and security breaches—and should be used with care. It is best used only as a repository for raw data (such as pixels or audio), with the controlling data structures accessed through more conventional interprocess communication.
For information about shm_open , shm_unlink , and mmap , see the shm_open , shm_unlink , and mmap man pages.
Apple event. An Apple event is a high-level semantic event that an app can send to itself, to other apps on the same computer, or to apps on a remote computer. Apps can use Apple events to request services and information from other apps. To supply services, you define objects in your app that can be accessed using Apple events and then provide Apple event handlers to respond to requests for those objects.
Although Apple events are not a BSD technology, they are a low-level alternative for interprocess communication. To learn how to use Apple events, see Apple Events Programming Guide.
Note: Mach ports are another technology for transferring messages between processes. However, messaging with Mach port objects is the least desirable way to communicate between processes. Mach port messaging relies on knowledge of the kernel interfaces, which might change in a future version of OS X. The only time you might consider using Mach ports directly is if you are writing software that runs in the kernel.
Network Support
OS X is one of the premier platforms for computing in an interconnected world. It supports the dominant media types, protocols, and services in the industry, as well as differentiated and innovative services from Apple.
The OS X network protocol stack is based on BSD. The extensible architecture provided by network kernel extensions, summarized in Network Kernel Extensions , facilitates the creation of modules implementing new or existing protocols that can be added to this stack.
Standard Network Protocols
OS X provides built-in support for a large number of network protocols that are standard in the computing industry. Table 6-1 summarizes these protocols.
802.1x is a protocol for implementing port-based network access over wired or wireless LANs. It supports a wide range of authentication methods, including TLS, TTLS, LEAP, MDS, and PEAP (MSCHAPv2, MD5, GTC).
The Dynamic Host Configuration Protocol and the Bootstrap Protocol automate the assignment of IP addresses in a particular network.
Domain Name Services is the standard Internet service for mapping host names to IP addresses.
The File Transfer Protocol and Secure File Transfer Protocol are two standard means of moving files between computers on TCP/IP networks.
The Hypertext Transport Protocol is the standard protocol for transferring webpages between a web server and browser. OS X provides support for both the insecure and secure versions of the protocol.
The Lightweight Directory Access Protocol lets users locate groups, individuals, and resources such as files and devices in a network, whether on the Internet or on a corporate intranet.
The Name Binding Protocol is used to bind processes across a network.
The Network Time Protocol is used for synchronizing client clocks.
The Printer Access Protocol is used for spooling print jobs and printing to network printers.
For dial-up (modem) access, OS X includes PPP (Point-to-Point Protocol). PPP support includes TCP/IP as well as the PAP and CHAP authentication protocols.
The Point-to-Point Protocol over Ethernet protocol provides an Ethernet-based dial-up connection for broadband users.
The Secure/Multipurpose Internet Mail Extensions protocol supports encryption of email and the attachment of digital signatures to validate email addresses.
Service Location Protocol is designed for the automatic discovery of resources (servers, fax machines, and so on) on an IP network.
The Simple Object Access Protocol is a lightweight protocol for exchanging encapsulated messages over the web or other networks.
The Secure Shell protocol is a safe way to perform a remote login to another computer. Session information is encrypted to prevent unauthorized access of data.
TCP/IP and UDP/IP
OS X provides two transmission-layer protocols, TCP (Transmission Control Protocol) and UDP (User Datagram Protocol), to work with the network-layer Internet Protocol (IP). (OS X includes support for IPv6 and IPSec.)
XML-RPC is a protocol for sending remote procedure calls using XML over the web.
OS X also implements a number of file-sharing protocols; see Table 6-4 for a summary of these protocols.
Network Technologies
OS X supports the network technologies listed in Table 6-2 .