{"id":35854,"date":"2024-11-27T10:52:55","date_gmt":"2024-11-27T09:52:55","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=35854"},"modified":"2024-11-27T10:52:58","modified_gmt":"2024-11-27T09:52:58","slug":"freebsd-basics-1-the-first-steps","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-1-the-first-steps\/","title":{"rendered":"FreeBSD basics &#8211; 1 &#8211; The first steps"},"content":{"rendered":"\n<p>In case you follow the blogs here, you might have noticed that I got interested in <a href=\"https:\/\/www.freebsd.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">FreeBSD<\/a> over the last months (or even year(s)).  The reasons for this are multiple: FreeBSD development is organized in very much the same way as it is with PostgreSQL. The <a href=\"https:\/\/www.freebsd.org\/copyright\/freebsd-license\/\" target=\"_blank\" rel=\"noreferrer noopener\">license<\/a> is very much the same. The <a href=\"https:\/\/www.freebsd.org\/copyright\/freebsd-license\/\">history<\/a> is really interesting as it goes back to the roots of Unix. A lot of companies trust in FreeBSD, but nobody really knows who they are and for what reasons (sounds familiar to PostgreSQL people). There are public references (e.g. <a href=\"https:\/\/papers.freebsd.org\/2019\/fosdem\/looney-netflix_and_freebsd\/\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a>, or <a href=\"https:\/\/en.wikipedia.org\/wiki\/OneFS_distributed_file_system\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a>) but as it is &#8220;do with it what you like&#8221; (same as PostgreSQL) there is no single source of reference. You are free to do with it whatever you want.<\/p>\n\n\n\n<p>The installation is straight forward, so I am not going to look into that here (you might want to check this <a href=\"https:\/\/www.dbi-services.com\/blog\/postgresql-on-freebsd-getting-started\/\">old post which has detailed screenshots for installing FreeBSD<\/a> in a virtualized environment). In this first post, we&#8217;re going to look at the very basic differences when it comes to FreeBSD and a common Linux distribution. The last sentence already comes with a huge difference between those two: FreeBSD is a complete operating system (i<a href=\"https:\/\/docs.freebsd.org\/en\/books\/handbook\/ports\/\" target=\"_blank\" rel=\"noreferrer noopener\">ncluding packages and ports<\/a>), while Linux usually refers to the kernel only. In the Linux world it is up to the distributions to bundle all the stuff you usually need for running a Linux server or workstation. FreeBSD is different, it is not only the kernel, it comes with almost everything you need by default.<\/p>\n\n\n\n<p>Assuming you&#8217;ve installed FreeBSD in one way or the other (and you did not create additional users during the installation process) it looks like this once you log in (over ssh in this example)<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nFreeBSD 14.1-RELEASE GENERIC\n\nWelcome to FreeBSD!\n\nRelease Notes, Errata: https:\/\/www.FreeBSD.org\/releases\/\nSecurity Advisories:   https:\/\/www.FreeBSD.org\/security\/\nFreeBSD Handbook:      https:\/\/www.FreeBSD.org\/handbook\/\nFreeBSD FAQ:           https:\/\/www.FreeBSD.org\/faq\/\nQuestions List:        https:\/\/www.FreeBSD.org\/lists\/questions\/\nFreeBSD Forums:        https:\/\/forums.FreeBSD.org\/\n\nDocuments installed with the system are in the \/usr\/local\/share\/doc\/freebsd\/\ndirectory, or can be installed later with:  pkg install en-freebsd-doc\nFor other languages, replace &quot;en&quot; with a language code like de or fr.\n\nShow the version of FreeBSD installed:  freebsd-version ; uname -a\nPlease include that output and any error messages when posting questions.\nIntroduction to manual pages:  man man\nFreeBSD directory layout:      man hier\n\nTo change this login announcement, see motd(5).\nroot@freebsd14:~ # \n<\/pre><\/div>\n\n\n<p>The <a href=\"https:\/\/en.wikipedia.org\/wiki\/Message_of_the_day\">message of the day<\/a> gives you some hints for getting more information about FreeBSD. This is not commonly done by default in Linux distributions (except Ubuntu, which even comes with a dynamic <a href=\"https:\/\/manpages.ubuntu.com\/manpages\/jammy\/man5\/update-motd.5.html\">motd<\/a>). If you don&#8217;t like this, have a look at &#8220;man motd&#8221; which points you to &#8220;\/etc\/motd.template&#8221; which is the template for the message of the day.<\/p>\n\n\n\n<p>One of the first things you&#8217;ll probably notice is, that you are not dropped into a bash <a href=\"https:\/\/docs.freebsd.org\/en\/books\/handbook\/basics\/#shells\" target=\"_blank\" rel=\"noreferrer noopener\">shell<\/a> (but the <a href=\"https:\/\/man.freebsd.org\/cgi\/man.cgi?query=sh&amp;sektion=1&amp;format=html\" target=\"_blank\" rel=\"noreferrer noopener\">Bourne shell<\/a>) as it usually is the case with Linux distributions:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,3]; title: ; notranslate\" title=\"\">\nroot@freebsd14:~ $ echo $SHELL\n\/bin\/sh\nroot@freebsd14:~ $ ls -la \/bin\/sh\n-r-xr-xr-x  1 root wheel 168344 May 31 11:00 \/bin\/sh\n<\/pre><\/div>\n\n\n<p>If you want, you can get bash by installing the corresponding package using <a href=\"https:\/\/github.com\/freebsd\/pkg\" target=\"_blank\" rel=\"noreferrer noopener\">pkg<\/a>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\nroot@freebsd14:~ $ pkg install bash\n<\/pre><\/div>\n\n\n<p>Doing that comes with another difference compared to Linux distributions. Additional programs do not go to either &#8220;\/bin\/&#8221; or &#8220;\/usr\/bin&#8221;, they go to &#8220;\/usr\/local\/bin&#8221;:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\nroot@freebsd14:~ $ which bash\n\/usr\/local\/bin\/bash\nroot@freebsd14:~ $ ls \/usr\/local\/bin\/\ndrwxr-xr-x  2 root wheel     10 Nov 26 10:12 .\ndrwxr-xr-x  9 root wheel      9 Nov 26 10:12 ..\n-rwxr-xr-x  1 root wheel 968408 Oct 31 02:13 bash\n-r-xr-xr-x  1 root wheel   6902 Oct 31 02:13 bashbug\n-rwxr-xr-x  1 root wheel  42640 Oct 31 02:05 envsubst\n-rwxr-xr-x  1 root wheel  42728 Oct 31 02:05 gettext\n-r-xr-xr-x  1 root wheel   5190 Oct 31 02:05 gettext.sh\n-rwxr-xr-x  1 root wheel  10656 Oct 31 02:04 indexinfo\n-rwxr-xr-x  1 root wheel  42496 Oct 31 02:05 ngettext\nlrwxr-xr-x  1 root wheel      4 Oct 31 02:14 rbash -&gt; bash\n<\/pre><\/div>\n\n\n<p>The same is true for package configuration files, they do not go into &#8220;\/etc&#8221; but into &#8220;\/usr\/local\/etc\/&#8221;:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\nroot@freebsd14:~ $ ls -la \/usr\/local\/etc\/\ntotal 27\ndrwxr-xr-x  4 root wheel    6 Nov 26 10:12 .\ndrwxr-xr-x  9 root wheel    9 Nov 26 10:12 ..\ndrwxr-xr-x  2 root wheel    3 Nov 26 10:12 bash_completion.d\ndrwxr-xr-x  5 root wheel    5 Nov 26 10:12 periodic\n-rw-r--r--  1 root wheel 2392 Oct 31 02:04 pkg.conf\n-rw-r--r--  1 root wheel 2392 Oct 31 02:04 pkg.conf.sample\n<\/pre><\/div>\n\n\n<p>Before you can install additional packages, you need to setup your network (if not done automatically during the installation). Doing that in Linux varies from distribution to distribution, and in FreeBSD it is also different. If you try to get the current configuration using the &#8220;<a href=\"https:\/\/man7.org\/linux\/man-pages\/man8\/ip.8.html\" target=\"_blank\" rel=\"noreferrer noopener\">ip<\/a>&#8221; command you&#8217;ll notice that it is not available:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\nroot@freebsd14:~ $ ip\n-sh: ip: not found\n<\/pre><\/div>\n\n\n<p>You need to do that using &#8220;<a href=\"https:\/\/man.freebsd.org\/cgi\/man.cgi?query=ifconfig&amp;sektion=8&amp;format=html\" target=\"_blank\" rel=\"noreferrer noopener\">ifconfig<\/a>&#8221; (as in the old days of Linux or maybe even today with some distributions):<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\nroot@freebsd14:~ $ ifconfig\nvtnet0: flags=1008843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP&gt; metric 0 mtu 1500\n     options=4c07bb&lt;RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,LRO,VLAN_HWTSO,LINKSTATE,TXCSUM_IPV6&gt;\n        ether 52:54:00:af:79:80\n        inet 192.168.122.34 netmask 0xffffff00 broadcast 192.168.122.255\n        media: Ethernet autoselect (10Gbase-T &lt;full-duplex&gt;)\n        status: active\n        nd6 options=29&lt;PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL&gt;\nlo0: flags=1008049&lt;UP,LOOPBACK,RUNNING,MULTICAST,LOWER_UP&gt; metric 0 mtu 16384\n        options=680003&lt;RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6&gt;\n        inet 127.0.0.1 netmask 0xff000000\n        inet6 ::1 prefixlen 128\n        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2\n        groups: lo\n        nd6 options=21&lt;PERFORMNUD,AUTO_LINKLOCAL&gt;\n<\/pre><\/div>\n\n\n<p>Adding a permanent configuration would look like this, using the <a href=\"https:\/\/man.freebsd.org\/cgi\/man.cgi?query=sysrc&amp;sektion=8&amp;format=html\" target=\"_blank\" rel=\"noreferrer noopener\">sysrc<\/a> utility:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\nroot@freebsd14:~ $ sysrc ifconfig_vtnet0=&quot;inet 192.168.122.34 netmask 255.255.255.0&quot;\nifconfig_vtnet0: inet 192.168.122.34 netmask 255.255.255.0 -&gt; inet 192.168.122.34 netmask 255.255.255.0\n<\/pre><\/div>\n\n\n<p>The syntax for this is easy to understand: There is an &#8220;ifconfig&#8221; prefix (because this is what we want to do), followed by an underscore and then the name of the interface followed by the configuration for that interface.<\/p>\n\n\n\n<p>What this is doing is to add this configuration to &#8220;<a href=\"https:\/\/man.freebsd.org\/cgi\/man.cgi?query=rc.conf&amp;sektion=5&amp;apropos=0&amp;manpath=FreeBSD+14.1-RELEASE+and+Ports\" target=\"_blank\" rel=\"noreferrer noopener\">\/etc\/rc.conf<\/a>&#8221; (you could also add that manually, but it is recommend to use sysrc as it does some sanity checks):<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\nroot@freebsd14:~ $ grep vtnet0 \/etc\/rc.conf\nifconfig_vtnet0=&quot;inet 192.168.122.34 netmask 255.255.255.0&quot;\n<\/pre><\/div>\n\n\n<p>The same procedure for the default router:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,3]; title: ; notranslate\" title=\"\">\nroot@freebsd14:~ $ sysrc defaultrouter=&quot;192.168.122.1&quot;\ndefaultrouter: 192.168.122.1 -&gt; 192.168.122.1\nroot@freebsd14:~ $ grep defaultrouter \/etc\/rc.conf\ndefaultrouter=&quot;192.168.122.1&quot;\n<\/pre><\/div>\n\n\n<p>The last step is to configure name resolution and this goes into &#8220;<a href=\"https:\/\/man.freebsd.org\/cgi\/man.cgi?query=resolv.conf&amp;apropos=0&amp;sektion=5&amp;manpath=FreeBSD+14.1-RELEASE+and+Ports&amp;arch=default&amp;format=html\" target=\"_blank\" rel=\"noreferrer noopener\">\/ect\/resolv.conf<\/a>&#8220;, as it was on Linux before <a href=\"https:\/\/en.wikipedia.org\/wiki\/Systemd\" target=\"_blank\" rel=\"noreferrer noopener\">systemd<\/a>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\nroot@freebsd14:~ $ cat \/etc\/resolv.conf \nnameserver 192.168.122.1\nnameserver 8.8.8.8\n<\/pre><\/div>\n\n\n<p>As there is no systemd in FreeBSD, it is not used to control services. This is done using the &#8220;<a href=\"https:\/\/man.freebsd.org\/cgi\/man.cgi?query=service&amp;sektion=8&amp;format=html\" target=\"_blank\" rel=\"noreferrer noopener\">service<\/a>&#8221; command (restarting the network stack in this case):<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\nroot@freebsd14:~ $ service netif restart &amp;&amp; service routing restart\nStopping Network: lo0 vtnet0.\nlo0: flags=8048&lt;LOOPBACK,RUNNING,MULTICAST&gt; metric 0 mtu 16384\n        options=680003&lt;RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6&gt;\n        groups: lo\n        nd6 options=21&lt;PERFORMNUD,AUTO_LINKLOCAL&gt;\nvtnet0: flags=1008802&lt;BROADCAST,SIMPLEX,MULTICAST,LOWER_UP&gt; metric 0 mtu 1500\n        options=4c07bb&lt;RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,LRO,VLAN_HWTSO,LINKSTATE,TXCSUM_IPV6&gt;\n        ether 52:54:00:af:79:80\n        media: Ethernet autoselect (10Gbase-T &lt;full-duplex&gt;)\n        status: active\n        nd6 options=29&lt;PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL&gt;\nStarting Network: lo0 vtnet0.\nlo0: flags=1008049&lt;UP,LOOPBACK,RUNNING,MULTICAST,LOWER_UP&gt; metric 0 mtu 16384\n        options=680003&lt;RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6&gt;\n        inet 127.0.0.1 netmask 0xff000000\n        inet6 ::1 prefixlen 128\n        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2\n        groups: lo\n        nd6 options=21&lt;PERFORMNUD,AUTO_LINKLOCAL&gt;\nvtnet0: flags=1008843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP&gt; metric 0 mtu 1500\n        options=4c07bb&lt;RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,LRO,VLAN_HWTSO,LINKSTATE,TXCSUM_IPV6&gt;\n        ether 52:54:00:af:79:80\n        inet 192.168.122.34 netmask 0xffffff00 broadcast 192.168.122.255\n        media: Ethernet autoselect (10Gbase-T &lt;full-duplex&gt;)\n        status: active\n        nd6 options=29&lt;PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL&gt;\ndelete host 127.0.0.1: gateway lo0 fib 0: gateway uses the same route\ndelete net default: gateway 192.168.122.1 fib 0: not in table\ndelete host ::1: gateway lo0 fib 0: gateway uses the same route\ndelete net fe80::: gateway ::1\ndelete net ff02::: gateway ::1\ndelete net ::ffff:0.0.0.0: gateway ::1\ndelete net ::0.0.0.0: gateway ::1\nadd host 127.0.0.1: gateway lo0 fib 0: route already in table\nadd net default: gateway 192.168.122.1\nadd host ::1: gateway lo0 fib 0: route already in table\nadd net fe80::: gateway ::1\nadd net ff02::: gateway ::1\nadd net ::ffff:0.0.0.0: gateway ::1\nadd net ::0.0.0.0: gateway ::1\n<\/pre><\/div>\n\n\n<p>Once this is ready, you should have a fully functional network:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; highlight: [1,7]; title: ; notranslate\" title=\"\">\noot@freebsd14:~ $ host dbi-services.com\ndbi-services.com has address 188.114.96.3\ndbi-services.com has address 188.114.97.3\ndbi-services.com has IPv6 address 2a06:98c1:3121::3\ndbi-services.com has IPv6 address 2a06:98c1:3120::3\ndbi-services.com mail is handled by 0 dbiservices-com0i.mail.protection.outlook.com.\nroot@freebsd14:~ $ ping www.dbi-services.com\nPING www.dbi-services.com (188.114.96.3): 56 data bytes\n64 bytes from 188.114.96.3: icmp_seq=0 ttl=57 time=16.670 ms\n64 bytes from 188.114.96.3: icmp_seq=1 ttl=57 time=17.779 ms\n^C\n--- www.dbi-services.com ping statistics ---\n2 packets transmitted, 2 packets received, 0.0% packet loss\nround-trip min\/avg\/max\/stddev = 16.670\/17.224\/17.779\/0.554 ms\n\n<\/pre><\/div>\n\n\n<p>The first thing you should do once you have the network running, is to patch the system to the latest release. This is done using &#8220;<a href=\"https:\/\/man.freebsd.org\/cgi\/man.cgi?query=freebsd-update&amp;apropos=0&amp;sektion=8&amp;manpath=FreeBSD+14.1-RELEASE+and+Ports&amp;arch=default&amp;format=html\" target=\"_blank\" rel=\"noreferrer noopener\">freebsd-update<\/a>&#8221; (&#8220;fetch&#8221; will inspect the system and download what is required, &#8220;install&#8221; will apply the patches):<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,3,3,18,31,33]; title: ; notranslate\" title=\"\">\nroot@freebsd14:~ $ uname -a\nFreeBSD freebsd14.it.dbi-services.com 14.1-RELEASE FreeBSD 14.1-RELEASE releng\/14.1-n267679-10e31f0946d8 GENERIC amd64\nroot@freebsd14:~ $ freebsd-update fetch\nLooking up update.FreeBSD.org mirrors... 3 mirrors found.\nFetching public key from update2.freebsd.org... done.\nFetching metadata signature for 14.1-RELEASE from update2.freebsd.org... done.\nFetching metadata index... done.\nFetching 2 metadata files... done.\nInspecting system... done.\nPreparing to download files... done.\nFetching 115 patches.....10....20....30....40....50....60....70....80....90....100....110.. done.\nApplying patches... done.\nThe following files will be updated as part of updating to\n14.1-RELEASE-p6:\n\/bin\/freebsd-version\n\/boot\/kernel\/cfiscsi.ko\n...\nroot@freebsd14:~ $ freebsd-update install\nCreating snapshot of existing boot environment... done.\nInstalling updates...\nRestarting sshd after upgrade\nPerforming sanity check on sshd configuration.\nStopping sshd.\nWaiting for PIDS: 857.\nPerforming sanity check on sshd configuration.\nStarting sshd.\nScanning \/usr\/share\/certs\/untrusted for certificates...\nScanning \/usr\/share\/certs\/trusted for certificates...\n done.\nroot@freebsd14:~ $ reboot\nroot@freebsd14:~ $ uname -a\nFreeBSD freebsd14.it.dbi-services.com 14.1-RELEASE-p5 FreeBSD 14.1-RELEASE-p5 GENERIC amd64\nroot@freebsd14:~ $ cat \/etc\/os-release \nNAME=FreeBSD\nVERSION=&quot;14.1-RELEASE-p6&quot;\nVERSION_ID=&quot;14.1&quot;\nID=freebsd\nANSI_COLOR=&quot;0;31&quot;\nPRETTY_NAME=&quot;FreeBSD 14.1-RELEASE-p6&quot;\nCPE_NAME=&quot;cpe:\/o:freebsd:freebsd:14.1&quot;\nHOME_URL=&quot;https:\/\/FreeBSD.org\/&quot;\nBUG_REPORT_URL=&quot;https:\/\/bugs.FreeBSD.org\/&quot;\n<\/pre><\/div>\n\n\n<p>This brought the system to the latest release (there is much more to learn from the output above, but this will be a topic for a later post).<\/p>\n\n\n\n<p>Updating (or managing) packages is done with &#8220;<a href=\"https:\/\/man.freebsd.org\/cgi\/man.cgi?query=pkg&amp;apropos=0&amp;sektion=8&amp;manpath=FreeBSD+14.1-RELEASE+and+Ports&amp;arch=default&amp;format=html\" target=\"_blank\" rel=\"noreferrer noopener\">pkg<\/a>&#8220;, but as we do not have anything installed except bash, there is not much too see right now:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; highlight: [1,5]; title: ; notranslate\" title=\"\">\nroot@freebsd14:~ $ pkg update\nUpdating FreeBSD repository catalogue...\nFreeBSD repository is up to date.\nAll repositories are up to date.\nroot@freebsd14:~ $ pkg upgrade\nUpdating FreeBSD repository catalogue...\nFreeBSD repository is up to date.\nAll repositories are up to date.\nChecking for upgrades (1 candidates): 100%\nProcessing candidates (1 candidates): 100%\nChecking integrity... done (0 conflicting)\nYour packages are up to date.\n<\/pre><\/div>\n\n\n<p>Now we&#8217;re ready to go a step further and add users and groups, but this will be the topic for the next post.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In case you follow the blogs here, you might have noticed that I got interested in FreeBSD over the last months (or even year(s)). The reasons for this are multiple: FreeBSD development is organized in very much the same way as it is with PostgreSQL. The license is very much the same. The history is [&hellip;]<\/p>\n","protected":false},"author":29,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[42],"tags":[2718,2256,46],"type_dbi":[3471],"class_list":["post-35854","post","type-post","status-publish","format-standard","hentry","category-operating-systems","tag-bsd","tag-freebsd","tag-linux-unix","type-freebsd"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>FreeBSD basics - 1 - The first steps - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-1-the-first-steps\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"FreeBSD basics - 1 - The first steps\" \/>\n<meta property=\"og:description\" content=\"In case you follow the blogs here, you might have noticed that I got interested in FreeBSD over the last months (or even year(s)). The reasons for this are multiple: FreeBSD development is organized in very much the same way as it is with PostgreSQL. The license is very much the same. The history is [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-1-the-first-steps\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-27T09:52:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-27T09:52:58+00:00\" \/>\n<meta name=\"author\" content=\"Daniel Westermann\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@westermanndanie\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Daniel Westermann\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-1-the-first-steps\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-1-the-first-steps\/\"},\"author\":{\"name\":\"Daniel Westermann\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"headline\":\"FreeBSD basics &#8211; 1 &#8211; The first steps\",\"datePublished\":\"2024-11-27T09:52:55+00:00\",\"dateModified\":\"2024-11-27T09:52:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-1-the-first-steps\/\"},\"wordCount\":803,\"commentCount\":0,\"keywords\":[\"BSD\",\"FreeBSD\",\"Linux\/UNIX\"],\"articleSection\":[\"Operating systems\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-1-the-first-steps\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-1-the-first-steps\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-1-the-first-steps\/\",\"name\":\"FreeBSD basics - 1 - The first steps - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2024-11-27T09:52:55+00:00\",\"dateModified\":\"2024-11-27T09:52:58+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-1-the-first-steps\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-1-the-first-steps\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-1-the-first-steps\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"FreeBSD basics &#8211; 1 &#8211; The first steps\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\",\"name\":\"Daniel Westermann\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"caption\":\"Daniel Westermann\"},\"description\":\"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.\",\"sameAs\":[\"https:\/\/x.com\/westermanndanie\"],\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"FreeBSD basics - 1 - The first steps - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-1-the-first-steps\/","og_locale":"en_US","og_type":"article","og_title":"FreeBSD basics - 1 - The first steps","og_description":"In case you follow the blogs here, you might have noticed that I got interested in FreeBSD over the last months (or even year(s)). The reasons for this are multiple: FreeBSD development is organized in very much the same way as it is with PostgreSQL. The license is very much the same. The history is [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-1-the-first-steps\/","og_site_name":"dbi Blog","article_published_time":"2024-11-27T09:52:55+00:00","article_modified_time":"2024-11-27T09:52:58+00:00","author":"Daniel Westermann","twitter_card":"summary_large_image","twitter_creator":"@westermanndanie","twitter_misc":{"Written by":"Daniel Westermann","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-1-the-first-steps\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-1-the-first-steps\/"},"author":{"name":"Daniel Westermann","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"headline":"FreeBSD basics &#8211; 1 &#8211; The first steps","datePublished":"2024-11-27T09:52:55+00:00","dateModified":"2024-11-27T09:52:58+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-1-the-first-steps\/"},"wordCount":803,"commentCount":0,"keywords":["BSD","FreeBSD","Linux\/UNIX"],"articleSection":["Operating systems"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/freebsd-basics-1-the-first-steps\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-1-the-first-steps\/","url":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-1-the-first-steps\/","name":"FreeBSD basics - 1 - The first steps - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2024-11-27T09:52:55+00:00","dateModified":"2024-11-27T09:52:58+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-1-the-first-steps\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/freebsd-basics-1-the-first-steps\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-1-the-first-steps\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"FreeBSD basics &#8211; 1 &#8211; The first steps"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66","name":"Daniel Westermann","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","caption":"Daniel Westermann"},"description":"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.","sameAs":["https:\/\/x.com\/westermanndanie"],"url":"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/35854","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/29"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=35854"}],"version-history":[{"count":24,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/35854\/revisions"}],"predecessor-version":[{"id":35932,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/35854\/revisions\/35932"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=35854"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=35854"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=35854"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=35854"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}