Latest revision |
Your text |
Line 3: |
Line 3: |
| | | |
| ==Introduction== | | ==Introduction== |
− | On this page and its sub-pages we will collect all information connect to the kernel, like managing kernel modules, retrieve information from the kernel and use special commands.<br/> | + | On this page and its sub-pages we will collect all information connect to the kernel, like managing kernel modules, retrieve information from the kernel and use special commands. |
− | [https://github.com/freebsd/freebsd/blob/master/sys/conf/NOTES '''NOTES''']: Lines that can be cut/pasted into kernel and hints configs.<br/>
| + | |
− | * Lines that begin with ''device'', ''options'', ''machine'', ''ident'', ''maxusers'', ''makeoptions'', ''hints'', etc. go into the kernel configuration that you run [https://www.freebsd.org/cgi/man.cgi?query=config&apropos=0&sektion=8&manpath=FreeBSD+5.0-RELEASE&arch=default&format=html config(8)] with.
| + | |
− | * Lines that begin with 'hint.' are NOT for config(8), they go into your hints file. See /boot/device.hints and/or the 'hints' config(8) directive.
| + | |
| | | |
| ==Kernel== | | ==Kernel== |
Line 13: |
Line 10: |
| | | |
| To follow the UNIX philosophy: to minimalist, modular software development the Ghost/FreeBSD kernel is set together out of modules. If a hardware requires a special piece of software, a appropriate module has to be loaded in to the working memory. Not needed modules stay on the hard disc or the software repositories. | | To follow the UNIX philosophy: to minimalist, modular software development the Ghost/FreeBSD kernel is set together out of modules. If a hardware requires a special piece of software, a appropriate module has to be loaded in to the working memory. Not needed modules stay on the hard disc or the software repositories. |
− |
| |
− | ==[[Kenv]]==
| |
− |
| |
− | The kernel is started by the boot loader. The boot loader delivers environment variables to the kernel. Together they form the ''kernel environment.'' The kernel and its environment form also a MIB tree, like the [[sysctl]] tree. With the [https://www.freebsd.org/cgi/man.cgi?query=kenv&apropos=0&sektion=0&manpath=FreeBSD+12.1-RELEASE+and+Ports&arch=default&format=html kenv(8)] utility you can view the kernel environment.
| |
− |
| |
− | ==[[kldstat]]==
| |
− |
| |
− | The [[kldstat]] utility displays the status of any files dynamically linked into the kernel.
| |
| | | |
| ==Modules== | | ==Modules== |
| | | |
− | The kernel and any modules included with GhostBSD are files in the directory '''/boot/[[Kernel|kernel]]'''. | + | The kernel and any modules included with GhostBSD are files in the directory ''/boot/kernel''. |
− | Third-party modules are located in '''/boot/[[Modules|modules]]'''. Not all modules are loaded by default. If needed, one can load them later.<br/> | + | Third-party modules are located in ''/boot/modules''. Not all modules are loaded by default. If needed, one can load them later.<br/> |
| All files elsewhere on the system or in the [https://www.freebsd.org/ports/kld.html ports] called the ''userland'', meaning they are intended for users even if they use kernel facilities. | | All files elsewhere on the system or in the [https://www.freebsd.org/ports/kld.html ports] called the ''userland'', meaning they are intended for users even if they use kernel facilities. |
| | | |
− | ===Loading and Unloading Modules on a running System=== | + | ==Kernel Tools== |
− | | + | |
− | Loading and unloading kernel modules is done with [https://www.freebsd.org/cgi/man.cgi?query=kldload&apropos=0&sektion=8&manpath=FreeBSD+12.1-RELEASE+and+Ports&arch=default&format=html kldload(8)] and [https://www.freebsd.org/cgi/man.cgi?query=kldunload&apropos=0&sektion=8&manpath=FreeBSD+12.1-RELEASE+and+Ports&arch=default&format=html kldunload(8)].
| + | |
− | | + | |
− | '''Example:''' You want to load ''vboxdrv.ko,'' listed in '''/boot/[[Modules|modules]]/vboxdrv.ko''' as a third-party kernel module. You simply chop of ''/boot/modules/'' and the ''.ko'' extention and write in a terminal:<br/>
| + | |
− | <code><nowiki>#</nowiki> kldload vboxdrv</code><br/>
| + | |
− | | + | |
− | The following options are available:<br/>
| + | |
− | {|
| + | |
− | |<nowiki>-n</nowiki>
| + | |
− | |Do not try to load module if already loaded.
| + | |
− | |-
| + | |
− | |<nowiki>-v</nowiki>
| + | |
− | |Be more verbose.
| + | |
− | |-
| + | |
− | |<nowiki>-q </nowiki>
| + | |
− | |Silence any extraneous warnings.
| + | |
− | |}
| + | |
− | | + | |
− | To unload this module you write:<br/>
| + | |
− | <code><nowiki>#</nowiki> kldunload vboxdrv</code><br/>
| + | |
− | | + | |
− | The following options are available:<br/>
| + | |
− | {|
| + | |
− | |style="vertical-align:top|<nowiki>-f</nowiki>
| + | |
− | |
| + | |
− | |Force the unload. This ignores error returns to MOD_QUIESCE from the module and implies that the module should be unloaded even if it is currently in use. The users are left to cope as best they can.
| + | |
− | |-
| + | |
− | |<nowiki>-v</nowiki>
| + | |
− | |
| + | |
− | |Be more verbose.
| + | |
− | |-
| + | |
− | |<nowiki>-i</nowiki>
| + | |
− | |''id''
| + | |
− | |Unload the file with this ID.
| + | |
− | |-
| + | |
− | |<nowiki> -n</nowiki>
| + | |
− | |''name''
| + | |
− | |Unload the file with this name.
| + | |
− | |}
| + | |
− | | + | |
− | '''NOTES'''<br/>
| + | |
− | The kernel security level settings may prevent a module from being loaded or unloaded by giving ''Operation not permitted''.
| + | |
− | | + | |
− | ===Loading Modules at Boot===
| + | |
− | Normally you want to load a kernel module automatically at boot.<br/>
| + | |
− | You have to make an entry in the '''[[/boot/loader.conf]]''' file.
| + | |
− | | + | |
− | The procedure is always the same: Take the name of the kernel module and add: <code>_load="YES"</code>
| + | |
− | | + | |
− | For example:<br/>
| + | |
− | | + | |
− | <code>vboxdrv_load="YES"</code>
| + | |
− | | + | |
− | ==[[Sysctl]]==
| + | |
− | | + | |
− | With [[Sysctl] you will get information obout your kernel version and much more.<br/>
| + | |
− | The simplest and best supported way to alter a kernel is to use the '''[[sysctl]]''' interface. The [https://www.freebsd.org/cgi/man.cgi?query=sysctl&apropos=0&sektion=8&manpath=FreeBSD+12.1-RELEASE+and+Ports&arch=default&format=html sysctl(8)] allows you to retrieve the values used by the kernel and in some cases to set them.
| + | |
| | | |
− | sysctl is a very powerful program. You can solve performance issues but also crash your system.
| |
| | | |
| | | |