Editing Kernel Competence

Jump to: navigation, search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
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.
  
Line 32: Line 21:
 
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)].
 
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/>
+
'''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/>
 
<code><nowiki>#</nowiki> kldload vboxdrv</code><br/>
  
Line 72: Line 61:
 
The kernel security level settings may prevent a module from being loaded  or unloaded by giving ''Operation not permitted''.
 
The kernel security level settings may prevent a module from being loaded  or unloaded by giving ''Operation not permitted''.
  
===Loading Modules at Boot===
+
===Loading modules at Boot===
 
Normally you want to load a kernel module automatically at boot.<br/>
 
Normally you want to load a kernel module automatically at boot.<br/>
You have to make an entry in the '''[[/boot/loader.conf]]''' file.
+
You have to use ''/boot/loader.conf'' by writing:<br/>
 
+
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>
 
<code>vboxdrv_load="YES"</code>
  
==[[Sysctl]]==   
 
  
With [[Sysctl] you will get information obout your kernel version and much more.<br/>
+
==Kernel Tools==  
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.
 
  
  

Please note that all contributions to GhostBSD Wiki are considered to be released under the Creative Commons Attribution (see GhostBSD Wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel | Editing help (opens in new window)