| Title: OpenBSD: getting started | |
| Author: Solène | |
| Date: 03 May 2021 | |
| Tags: openbsd | |
| Description: | |
| # Introduction | |
| This is a guide to OpenBSD beginners, I hope this will turn to be an | |
| useful resource helping people to get acquainted to this operating | |
| system I love. I will use a lot of links because I prefer to refer to | |
| official documentation. | |
| If you are new on OpenBSD, welcome aboard, this guide is for you. If | |
| you are not new, well, you may learn a few things. | |
| # Installation step | |
| This article is not about installing OpenBSD. There are enough | |
| official documentation for this. | |
| OpenBSD FAQ about Installation | |
| # Booting the first time | |
| So, you installed OpenBSD, you chose to enable X (the graphical | |
| interface at boot) and now you face a terminal on a gray background. | |
| Things are getting interesting here. | |
| ## Become super user (root) | |
| You will often have to use the root account for commands or modifying | |
| system files. | |
| ```get super user | |
| su -l | |
| ``` | |
| You will have to type root user password (defined at install time) to | |
| change to that user. If you type "whoami" you should see "root" as the | |
| output. | |
| ## You got a mail! | |
| When you install the system (or upgrade) you will receive an email on | |
| root user, you can read it using the "mail" command, it will be an | |
| email from Theo De Raadt (founder of OpenBSD) greeting you. | |
| You will notice this email contain hints and has basically the same | |
| purpose of my current article you are reading. One important man page | |
| to read is afterboot(8). | |
| afterboot(8) man page | |
| ## What is a man page? | |
| If you don't know what a man page is, it's really time to learn because | |
| you will need it. When someone say a "man page" it implies "a manual | |
| page". Documentation in OpenBSD is done in manual pages related to | |
| various software, concepts or C functions. | |
| To read a man page, in a terminal type "man afterboot" and use arrows | |
| or page up/down to navigate within the man page. You can read "man | |
| man" page to read about man itself. | |
| Previously I wrote "afterboot(8)" but the real man page name is | |
| "afterboot", the "(8)" is meant to specify the man page section. Some | |
| words can be used in various contexts, that's where man pages sections | |
| come into the place. For instance, there are sysctl(2) documenting the | |
| system call "sysctl()" while sysctl(8) will give you information about | |
| the sysctl command to change kernel settings. You can specify which | |
| section you want to read by typing the number before the page name, | |
| like in "man 2 sysctl" or "man 8 sysctl". | |
| Man pages are constructed in the same order: NAME, SYNOPSIS, | |
| DESCRIPTION..... SEE ALSO..., the section "SEE ALSO" is an important | |
| one, it gives you man page references of other pages you may want to | |
| read. For example, afterboot(8) will give you hints about doas(1), | |
| pkg_add(1), hier(7) and many other pages. | |
| Now, you should be able to use the manual pages. | |
| # Install a desktop environment | |
| When you want to install a desktop environment, there will often be a | |
| "meta package" which will pull every packages required for the | |
| environment to work. | |
| OpenBSD provides a few desktop environments like: | |
| - Gnome 3 => pkg_add gnome | |
| - Xfce => pkg_add xfce | |
| - MATE => pkg_add mate | |
| When you install a package using "pkg_add", you may find a message at | |
| the end of the pkg_add output telling you there is a file in | |
| /usr/local/share/doc/pkg-readmes/ to read, those files are specifics to | |
| packages and contains instructions that should be read before using a | |
| package. | |
| The instructions could be about performance, potential limits issues, | |
| configuration snippets, how to init the service etc... They are very | |
| important to read, and for desktop environment, they will tell you | |
| everything you know to get it started. | |
| # Graphical session | |
| When you log-in from the xenodm screen (the one where you have a Puffer | |
| fish and OpenBSD logo asking login/password), the program xenodm will | |
| read your ~/.xsession file, this is where you prepare your desktop and | |
| the execute commands. Usually, the first blocking command (that keeps | |
| running on foreground) is your window manager, you can put commands | |
| before to customize your system or run programs in background. | |
| ```file example of .xsession | |
| # disable bell | |
| xset b off | |
| # auto blank after 10 minutes | |
| xset s 600 600 | |
| # run xclock and xload | |
| xclock -geometry 75x75-70-0 -padding 1 & | |
| xload -nolabel -update 5 -geometry 75x75-145-0 & | |
| # load my ~/.profile file to define ENV | |
| . ~/.profile | |
| # display notifications | |
| dunst & | |
| # load changes in X settings | |
| xrdb -merge ~/.Xresources | |
| # turn the screen reddish to reduce blue color | |
| sct 5600 | |
| # synchronize copy buffers | |
| autocutsel & | |
| # kdeconnect to control android phone | |
| kdeconnect-indicator & | |
| # reduce sound to not destroy my ears | |
| sndioctl -f snd/1 output.level=0.3 | |
| # compositor for faster windows drawing | |
| picom & | |
| # something for my mouse setup (I can't remember) | |
| xset mouse 1 1 | |
| xinput set-prop 8 273 1.1 | |
| # run my window manager | |
| fvwm2 | |
| ``` | |
| # Configure your shell | |
| This is a very recurrent question, how to get your shell aliases to be | |
| working once you have logged in? In bash, sh and ksh (and maybe other | |
| shells), every time you spawn a new interactive shell (in which you can | |
| enter commands), the environment variable ENV will be read and if it | |
| has a value matching a file path, it will be loaded. | |
| The design to your beloved shell environment set is the following: | |
| - ~/.xsession will source ~/.profile when starting X, inheriting the | |
| content to everything run from X | |
| - ~/.profile will export ENV like in "export ENV=~/.myshellfile" | |
| # CPU frequency auto scaling | |
| If you run a regular computer (amd64 arch) you will want to run the | |
| service "apmd" in automatic mode, it will keep your CPU at lowest | |
| frequency and increase the frequency when you have some load, allowing | |
| to reduce heat, power usage and noise. | |
| Here are commands to run as root: | |
| ```commands | |
| rcctl enable apmd | |
| rcctl set apmd flags -A | |
| rcctl start apmd | |
| ``` | |
| # What are -release and -stable? | |
| To make things simple, the "-release" version is the whole sets of | |
| files to install OpenBSD of that release when it's out. Further | |
| updates for that release are called -stable branch, if you run "pkg_add | |
| -u" to update your packages and "syspatch" to update your base system | |
| you will automatically follow -stable (which is fine!). Release is a | |
| single point in time of the state of OpenBSD. | |
| # Quick FAQ | |
| ## Where is steam? | |
| No steam, it's proprietary and can't run on OpenBSD | |
| ## Where is wine? | |
| No wine, it would require changes into the kernel. | |
| ## Does my recent NVIDIA card work? | |
| No nvidia driver, it would work but with a VESA driver, it will be | |
| sluggish and very slow. | |
| ## Does the linux emulation work? | |
| There is no linux emulation. | |
| ## I want my favorite program to run on OpenBSD | |
| If it's not opensource and not using a language like Java or C# that | |
| use a Language Virtual Machine allowing abstraction layer to work, it | |
| won't work (and most program are not like that). | |
| If it's opensource, it may be possible if all its dependencies are | |
| available on OpenBSD. | |
| Get into the ports tree to make things run on OpenBSD | |
| ## Can I have sudo? | |
| OpenBSD ships a sudo alternative named "doas" in the base system but | |
| sudo can be installed from packages. | |
| doas man page | |
| doas.conf man page | |
| ## How to view the package list? | |
| You can check the package directory in a mirror or visit | |
| Openports.pl (using the development version of the ports tree) | |
| ## What can the virtualization tool do? | |
| The virtualization system of OpenBSD can run OpenBSD or some linux | |
| distributions but without a graphical interface and with only 1 CPU. | |
| This mean you will have to configure a serial console to proceed to the | |
| installation and then use ssh or the serial console to use your system. | |
| There is qemu in ports but it's not accelerated and won't suit most of | |
| people needs because it's terribly terribly slow. |