<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Written | FreeBSD Foundation</title>
	<atom:link href="https://staging.freebsdfoundation.org/format/written/feed/" rel="self" type="application/rss+xml" />
	<link>https://staging.freebsdfoundation.org</link>
	<description>A non-profit organization dedicated to supporting and building the FreeBSD Project</description>
	<lastBuildDate>Tue, 30 Jul 2024 19:40:13 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://staging.freebsdfoundation.org/wp-content/uploads/2015/12/favicon.png</url>
	<title>Written | FreeBSD Foundation</title>
	<link>https://staging.freebsdfoundation.org</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>How to Install FreeBSD on VMware</title>
		<link>https://staging.freebsdfoundation.org/resource/how-to-install-freebsd-on-vmware/</link>
		
		<dc:creator><![CDATA[Anne Dickison]]></dc:creator>
		<pubDate>Mon, 22 Jul 2024 17:12:26 +0000</pubDate>
				<guid isPermaLink="false">https://freebsdfoundation.org/?post_type=resource&#038;p=16056</guid>

					<description><![CDATA[<p> 1. Installing VMware Fusion: VMware’s desktop products, recently made available by Broadcom as a free download for personal use, run on a wide range of systems; VMware Fusion is designed for Mac systems and can run on M-Series Apple Silicon systems, whereas VMware Workstation is a similar hypervisor that runs on Windows and Linux. Users [&#8230;]</p>
<p>The post <a href="https://staging.freebsdfoundation.org/resource/how-to-install-freebsd-on-vmware/">How to Install FreeBSD on VMware</a> first appeared on <a href="https://staging.freebsdfoundation.org">FreeBSD Foundation</a>.</p>]]></description>
										<content:encoded><![CDATA[<section class="block block-classic-editor">
<h2><b> 1. Installing VMware Fusion:</b></h2>
<p><span style="font-weight: 400;">VMware’s desktop products, recently made available by Broadcom </span><a href="https://blogs.vmware.com/teamfusion/2024/05/fusion-pro-now-available-free-for-personal-use.html"><span style="font-weight: 400;">as a free download for personal use</span></a><span style="font-weight: 400;">, run on a wide range of systems; VMware Fusion is designed for Mac systems and can run on M-Series Apple Silicon systems, whereas VMware Workstation is a similar hypervisor that runs on Windows and Linux.</span></p>
<p><img fetchpriority="high" decoding="async" class=" wp-image-16057 aligncenter" src="https://staging.freebsdfoundation.org/wp-content/uploads/2024/07/unnamed-1.png" alt="" width="632" height="216" srcset="https://staging.freebsdfoundation.org/wp-content/uploads/2024/07/unnamed-1.png 512w, https://staging.freebsdfoundation.org/wp-content/uploads/2024/07/unnamed-1-300x103.png 300w" sizes="(max-width: 632px) 100vw, 632px" /></p>
<p><span style="font-weight: 400;">Users must first register on the Broadcom support portal to install VMware Fusion or VMware Workstation. This signup process includes being included in Broadcom&#8217;s marketing lists, and free access to the hypervisors is granted for personal use.</span></p>
<p><span style="font-weight: 400;">Once registered, </span><a href="https://www.vmware.com/products/desktop-hypervisor.html"><span style="font-weight: 400;">follow the install links on VMware’s website</span></a><span style="font-weight: 400;">, log in using your Broadcom sign-in, and install the correct hypervisor for your system. </span></p>
<p>&nbsp;</p>
<h2><b>2. Getting the latest FreeBSD release:</b></h2>
<p><span style="font-weight: 400;">Visit the official </span><a href="https://www.freebsd.org/where.html"><b>FreeBSD releases page</b></a><span style="font-weight: 400;">. The disk images are listed </span><i><span style="font-weight: 400;">in order of release date</span></i><span style="font-weight: 400;">, so the most recent release can be found at the top of the page as highlighted.</span></p>
<ul>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Newer m1/m2 Apple chips will require aarch64 images</span></li>
</ul>
<ul>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">64-bit Windows machines will require amd64 images</span></li>
</ul>
<p><img decoding="async" class=" wp-image-16059 aligncenter" src="https://staging.freebsdfoundation.org/wp-content/uploads/2024/07/unnamed-3.png" alt="" width="619" height="202" srcset="https://staging.freebsdfoundation.org/wp-content/uploads/2024/07/unnamed-3.png 512w, https://staging.freebsdfoundation.org/wp-content/uploads/2024/07/unnamed-3-300x98.png 300w" sizes="(max-width: 619px) 100vw, 619px" /> </p>
<p><span style="font-weight: 400;">After clicking the link, you will be redirected to a file directory containing multiple formats and versions of the FreeBSD installer.</span></p>
<h4><b>Identifying the Correct Disk Image</b></h4>
<p><img decoding="async" class=" wp-image-16058 aligncenter" src="https://staging.freebsdfoundation.org/wp-content/uploads/2024/07/unnamed-2.png" alt="" width="599" height="193" srcset="https://staging.freebsdfoundation.org/wp-content/uploads/2024/07/unnamed-2.png 512w, https://staging.freebsdfoundation.org/wp-content/uploads/2024/07/unnamed-2-300x97.png 300w" sizes="(max-width: 599px) 100vw, 599px" /></p>
<p><span style="font-weight: 400;">For VMware, the correct format will be the image ending in <code>-disc.iso</code>, as shown above. Click this file and start downloading the image</span></p>
<p>&nbsp;</p>
<h2><b>3. Creating a FreeBSD Virtual Machine:</b></h2>
<h3><b>3.1 VMware Fusion (Mac):</b></h3>
<p><span style="font-weight: 400;">In VMware Fusion, click the ‘+’ symbol in the top left or center of the client, then click ‘New’ to create a new virtual machine. On Mac, choose ‘Create a custom virtual machine,’ select ‘Other’ as the Operating System, and ‘FreeBSD 14 64-bit’ as the firmware.</span></p>
<p><img loading="lazy" decoding="async" class=" wp-image-16060 aligncenter" src="https://staging.freebsdfoundation.org/wp-content/uploads/2024/07/unnamed-5.png" alt="" width="552" height="166" srcset="https://staging.freebsdfoundation.org/wp-content/uploads/2024/07/unnamed-5.png 512w, https://staging.freebsdfoundation.org/wp-content/uploads/2024/07/unnamed-5-300x90.png 300w" sizes="(max-width: 552px) 100vw, 552px" /></p>
<p><span style="font-weight: 400;">Select ‘Create a new virtual disk’ and ‘Continue.’ Then, finish and save the VM using your own naming convention.</span></p>
<p><span style="font-weight: 400;">Before booting, the new virtual machine must be given a CD drive to boot from, or it will fail to boot. Open it to see this message, and do not suspend it; it must be running to attach a drive.</span></p>
<p><span style="font-weight: 400;">Press command+E to open virtual machine settings and click CD/DVD. Choose the FreeBSD ISO image, the “<code>FreeBSD … disc1.iso</code>” image downloaded earlier. Then, check the box to connect a CD/DVD drive.</span></p>
<p><span style="font-weight: 400;">Right-click “virtual machine” in the top menu, and select “restart.”</span></p>
<h3><b>3.2 VMware Workstation (Windows/Linux:</b></h3>
<p><span style="font-weight: 400;">In the center of the client, click ‘Create a New Virtual Machine’ and choose the ‘Typical’ virtual machine option. </span><span style="font-weight: 400;">Choose the FreeBSD ISO image, the “<code>FreeBSD … disc1.iso</code>” image downloaded earlier.</span></p>
<p><img loading="lazy" decoding="async" class=" wp-image-16062 aligncenter" src="https://staging.freebsdfoundation.org/wp-content/uploads/2024/07/unnamed-7.png" alt="" width="332" height="331" srcset="https://staging.freebsdfoundation.org/wp-content/uploads/2024/07/unnamed-7.png 424w, https://staging.freebsdfoundation.org/wp-content/uploads/2024/07/unnamed-7-300x300.png 300w, https://staging.freebsdfoundation.org/wp-content/uploads/2024/07/unnamed-7-150x150.png 150w" sizes="(max-width: 332px) 100vw, 332px" /></p>
<p><span style="font-weight: 400;">Name the virtual machine using your own naming convention, and ‘Finish’ to create the VM. </span></p>
<p>&nbsp;</p>
<h2><b>4. Booting into FreeBSD:</b></h2>
<p><span style="font-weight: 400;">The FreeBSD booting system will automatically start once VirtualBox starts the virtual machine. Follow the </span><a href="https://www.freebsd.org/doc/handbook/using-bsdinstall.html"><b>FreeBSD Handbook’s installation guide</b></a><span style="font-weight: 400;"> to configure and set up your system. </span><span style="font-weight: 400;">When in doubt, use the default options provided</span><span style="font-weight: 400;">, which can be reconfigured later.</span></p>
<p><span style="font-weight: 400;">Once installation is complete, use the FreeBSD Handbook’s </span><a href="https://www.freebsd.org/doc/handbook/bsdinstall-post.html"><b>post-installation guide.</b></a></p>
<p><img loading="lazy" decoding="async" class="wp-image-16063 aligncenter" src="https://staging.freebsdfoundation.org/wp-content/uploads/2024/07/unnamed-8.png" alt="" width="564" height="339" srcset="https://staging.freebsdfoundation.org/wp-content/uploads/2024/07/unnamed-8.png 512w, https://staging.freebsdfoundation.org/wp-content/uploads/2024/07/unnamed-8-300x180.png 300w" sizes="(max-width: 564px) 100vw, 564px" /></p>
<p>&nbsp;</p>
<h2><b>5. Finishing Up:</b></h2>
<p><span style="font-weight: 400;">On a bare-metal system, you would now be able to boot directly into FreeBSD with no further configuration. However, since we’re using a virtual machine, a few more steps are required.</span></p>
<p><span style="font-weight: 400;">Open settings. Click on CD/DVD, and then Un-check the box that says “connect CD/DVD Drive&#8221; or “connect on boot”. Exit out of this screen. </span><span style="font-weight: 400;"><br />
</span><span style="font-weight: 400;"><br />
</span><span style="font-weight: 400;">Next, click on Processors and Memory and select more RAM and cores. The default options are quite low for a dedicated virtual machine.</span></p>
<p><span style="font-weight: 400;">Use the Start button to boot the virtual machine, and log in to the root user (or use ‘<code>su</code>’ if the guest user was given admin control)</span><span style="font-weight: 400;"><br />
</span><span style="font-weight: 400;"><br />
</span><span style="font-weight: 400;">To ensure full VMware support, install the <code>open-vm-tools</code> package with:</span></p>
<p><code><span style="font-weight: 400;">pkg install -y open-vm-tools</span></code></p>
<p><span style="font-weight: 400;">If this is the first time<code> pkg</code> has been run, respond to the prompt with y to bootstrap <code>pkg</code>. The <code>open-vm-tools</code> package contains the core user space utilities, application programs, and libraries, including vmtoolsd, to help effectively manage communication between your host and guest OSs.</span></p>
<p>&nbsp;</p>
</section><p>The post <a href="https://staging.freebsdfoundation.org/resource/how-to-install-freebsd-on-vmware/">How to Install FreeBSD on VMware</a> first appeared on <a href="https://staging.freebsdfoundation.org">FreeBSD Foundation</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>An Introduction to Packet Filter (PF)</title>
		<link>https://staging.freebsdfoundation.org/resource/an-introduction-to-packet-filter-pf/</link>
		
		<dc:creator><![CDATA[Anne Dickison]]></dc:creator>
		<pubDate>Tue, 12 Sep 2023 19:35:40 +0000</pubDate>
				<guid isPermaLink="false">https://freebsdfoundation.org/?post_type=resource&#038;p=12822</guid>

					<description><![CDATA[<p>Packet Filter, also known as PF or pf, is a BSD-licensed stateful packet filter used to filter TCP/IP traffic and perform Network Address Translation (NAT.) Originally created by OpenBSD, PF has been ported to FreeBSD since 5.3-RELEASE. PF can identify where a packet should be directed or if it should even be allowed through; this [&#8230;]</p>
<p>The post <a href="https://staging.freebsdfoundation.org/resource/an-introduction-to-packet-filter-pf/">An Introduction to Packet Filter (PF)</a> first appeared on <a href="https://staging.freebsdfoundation.org">FreeBSD Foundation</a>.</p>]]></description>
										<content:encoded><![CDATA[<section class="block block-classic-editor">
<p>Packet Filter, also known as PF or pf, is a BSD-licensed stateful packet filter used to filter TCP/IP traffic and perform Network Address Translation (NAT.) Originally created by OpenBSD, PF has been ported to FreeBSD since 5.3-RELEASE.</p>
<p>PF can identify where a packet should be directed or if it should even be allowed through; this can be decided based on the source and destination of that individual packet. PF can detect and block traffic you want to keep out of or in the local network. The firewall is highly flexible and even offers bandwidth management and packet priority.</p>
<p><img loading="lazy" decoding="async" class="wp-image-12964  aligncenter" src="https://staging.freebsdfoundation.org/wp-content/uploads/2023/09/Untitled-design-43-1024x1024.png" alt="" width="448" height="448" srcset="https://staging.freebsdfoundation.org/wp-content/uploads/2023/09/Untitled-design-43-1024x1024.png 1024w, https://staging.freebsdfoundation.org/wp-content/uploads/2023/09/Untitled-design-43-300x300.png 300w, https://staging.freebsdfoundation.org/wp-content/uploads/2023/09/Untitled-design-43-150x150.png 150w, https://staging.freebsdfoundation.org/wp-content/uploads/2023/09/Untitled-design-43-1536x1536.png 1536w, https://staging.freebsdfoundation.org/wp-content/uploads/2023/09/Untitled-design-43-2048x2048.png 2048w" sizes="(max-width: 448px) 100vw, 448px" /></p>
<h2>1 . Enabling PF</h2>
<p>PF relies on its kernel module, this must be enabled through <code>/etc/rc.conf</code> to start PF:</p>
<p><code># sysrc pf_enable=yes<br />
</code><br />
Additional options can be enabled when PF is started, this can be done by adding the following line to <code>/etc/rc.conf.</code> Required flags can later be specified between the two quotes(&#8220;&#8221;):</p>
<p><code>pf_flags="" # additional flags for pfctl startup</code></p>
<p>To start, PF will need to find its ruleset configuration file. FreeBSD does not ship with a ruleset or /etc/pf.conf. Custom rulesets can be used by specifying the path in <code>/etc/rc.conf</code></p>
<p><code>pf_rules="/path/to/pf.conf"</code><br />
<em><br />
</em>Logging support for PF is provided by <code>pflog(4)</code>. To enable logging support, add <code>pflog_enable=yes</code> to <code>/etc/rc.conf</code>:</p>
<p><code># sysrc pflog_enable=yes</code></p>
<p>The following lines can also be added to change the default location of the log file or to specify any additional flags to pass to pflog(4) when it is started:</p>
<p><code>pflog_logfile="/var/log/pflog" # where pflogd should store the logfile</code><br />
<code>pflog_flags="" # additional flags for pflogd startup</code></p>
<p>The following option will enable NAT if there is a LAN behind the firewall:</p>
<p><code>gateway_enable="YES"</code></p>
<p>PF can now be started with logging support:</p>
<p><code># service pf start</code><br />
<code># service pflog start</code></p>
<p>&nbsp;</p>
<h2>2. Using pfctl</h2>
<p>PF can be controlled using pfctl, refer to pfctl(8) for a description of all available options. Here are some of the more common pfctl options:</p>
<table style="border-collapse: collapse; width: 100%;" border="1">
<tbody>
<tr style="height: 24px;">
<td style="width: 50%; height: 24px;"><code>pfctl -e</code></td>
<td style="width: 50%; height: 24px;">Enable PF.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 50%; height: 24px;"><code>pfctl -d</code></td>
<td style="width: 50%; height: 24px;">Disable PF.</td>
</tr>
<tr style="height: 24px;">
<td style="width: 50%; height: 24px;"><code>pfctl -F all -f /etc/pf.conf</code></td>
<td style="width: 50%; height: 24px;">Flush all NAT, filter, state, and table rules and reload <code>/etc/pf.conf.</code></td>
</tr>
<tr style="height: 24px;">
<td style="width: 50%; height: 24px;"><code>pfctl -s [ rules | nat | states ]</code></td>
<td style="width: 50%; height: 24px;">Report on the filter rules, NAT rules, or state table.</td>
</tr>
<tr style="height: 23px;">
<td style="width: 50%; height: 23px;"><code>pfctl -vnf /etc/pf.conf</code></td>
<td style="width: 50%; height: 23px;">Checks <code>/etc/pf.conf</code> for errors, but does not load ruleset.</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<h2>3. Creating a Base PF Ruleset</h2>
<p>PF depends on a ruleset, which can be customized to best serve any system. Creating a base ruleset is the first step in customizing your firewall that can be further augmented and specified. Create the ruleset in</p>
<p>Start by creating a simple ruleset that applies to only a single machine, relies on one network, and does not run services:</p>
<div class="literalblock programlisting">
<div class="content">
<p><code>block in all</code></p>
<p><code>pass out all keep state</code></p>
</div>
</div>
<div class="paragraph">
<p>This rule will deny all incoming traffic, while the second rule allows connections created by this system to pass out while retaining state information on those connections. Load this new ruleset with the following:</p>
</div>
<div class="listingblock">
<div class="content">
<p class="rouge highlight"><code data-lang="shell"><span class="c"># pfctl -e ; pfctl -f /etc/pf.conf</span></code></p>
</div>
</div>
<div class="paragraph">
<p>In addition to keeping state, PF provides lists and macros that can be defined when creating rules. Macros can include lists and need to be defined before use. As an example, insert these lines at the very top of the ruleset:</p>
</div>
<div class="literalblock programlisting">
<div class="content">
<p><code>tcp_services = "{ ssh, smtp, domain, www, pop3, auth, pop3s }"</code></p>
<p><code>udp_services = "{ domain }"</code></p>
</div>
</div>
<div class="paragraph">
<p>PF can use port names and numbers if the names are listed in <code><span class="filename">/etc/services</span></code>. In this example, all traffic is blocked except for the connections initiated by this system for the seven specified TCP services and the one specified UDP service:</p>
</div>
<div class="literalblock programlisting">
<pre><code>tcp_services = "{ ssh, smtp, domain, www, pop3, auth, pop3s }"
udp_services = "{ domain }"
block all</code> <code>pass out proto tcp to any port $tcp_services keep state
pass proto udp to any port $udp_services keep state</code></pre>
<p>Next, at the top of your ruleset, create a set skip rule for the loopback device because it does not need to filter traffic and would likely bring your server to a crawl. </p>
<p class="content"><code>set skip on lo0</code></p>
<p class="content">Finally, add a <code>pass out inet</code> rule for the ICMP protocol, which allows you to use the ping(8) utility for troubleshooting</p>
<p class="content"><code>pass out inet proto icmp icmp-type { echoreq }</code></p>
<p class="content">The ruleset should now resemble the following: </p>
<pre><code>set skip on lo0
tcp_services = "{ ssh, smtp, domain, www, pop3, auth, pop3s }"
udp_services = "{ domain }"
block all</code><code>
pass out proto tcp to any port $tcp_services keep state
pass proto udp to any port $udp_services keep state
pass out inet proto icmp icmp-type { echoreq }</code></pre>
</div>
<div class="paragraph">
<p>After each edit, the ruleset needs to be loaded again:</p>
</div>
<div class="listingblock">
<div class="content">
<p class="rouge highlight"><code data-lang="shell"><span class="c"># pfctl -f /etc/pf.conf</span></code></p>
</div>
</div>
<div class="paragraph">
<p><code>pfctl</code> will not output any messages unless there are syntax errors that will need to be fixed. During the rule load, instead of loading the ruleset, a test can be run with:</p>
</div>
<div class="listingblock">
<div class="content">
<p class="rouge highlight"><code data-lang="shell"><span class="c"># pfctl -nf /etc/pf.conf</span></code></p>
<div class="copy-to-clipboard-wrapper">Including <code>-n</code> causes the rules to be interpreted only but not loaded. This provides an opportunity to correct any errors. The last valid ruleset loaded will be enforced until either PF is disabled or a new ruleset is loaded.</div>
</div>
</div>
<p>&nbsp;</p>
<h2>4. Testing Your Base Ruleset</h2>
<p>Testing your ruleset between major edits is crucial to ensure that PF functions properly. </p>
<p>First test for internet connectivity and DNS service:</p>
<p><code># ping -c 3 google.com</code></p>
<p>Check that the <code>pkgs</code> repository can be reached: </p>
<p><code># pkg upgrade</code></p>
<p>And finally, reboot:</p>
<p><code># reboot</code></p>
<p>Give your server a few minutes to reboot. Next, you will expand the ruleset with more advanced features to see some possible applications of the PF ruleset.</p>
<h2>5. Example Rulesets and Their Application</h2>
<p>Now that you have created a base ruleset, the base ruleset can be built upon for more advanced PF functions. While this guide won&#8217;t cover every possible function or customization, these basic rulesets may be helpful for your system, or offer insight into how PF may be used. After each example, make sure to test the base ruleset.</p>
<h3 style="padding-left: 40px;">5.1 Blocking Spoofed Packets</h3>
<p style="padding-left: 40px;">Address spoofing is a method where an outside user forges the source IP of sent packets to conceal the actual address, essentially impersonating another internet node. This opens the door for a network attack that does not disclose where it&#8217;s originating.</p>
<p style="padding-left: 40px;">The antispoof PF keyword can help protect against spoof packets:</p>
<p style="padding-left: 40px;"><code>antispoof [log] [quick] for interface [af]</code></p>
<p style="padding-left: 40px;"><code><strong>log</strong></code>: Specifies that packets matching the criteria should be reported by pflogd (8).<br />
<code><strong>quick</strong></code>: This ensured that if a packet meets this rules, examination of the ruleset will cease.<br />
<code><strong>interface</strong></code>: Specify the specific network where spoofing protection will be activated.<br />
<code><strong>af</strong></code>: Address family (i.e., inet or inet6 for IPv4 and IPv6)</p>
<p style="padding-left: 40px;">The most basic way to weed out spoofed traffic coming in from external sources, as well as any spoofed packets that originate in the local network:</p>
<p style="padding-left: 40px;"><code>antispoof for $ext_if</code><br />
<code>antispoof for $int_if</code></p>
<p style="padding-left: 40px;"> </p>
<h3 style="padding-left: 40px;">5.2 Protecting SSH Ports</h3>
<p style="padding-left: 40px;">A typical exploit is to target SSH ports, which are open to the public. This is often done with brute force attacks and can succeed if the server has weak passwords. PF has built-in features that help deal with brute-force attacks. PF can limit the simultaneous connection attempts a single host allows. Once a host exceeds this number, the connection will be dropped, and they will be banned from the server. PF&#8217;s overload mechanism has a table of banned IP addresses.</p>
<p style="padding-left: 40px;">Modify your previous base ruleset to limit simultaneous connections from a single host:</p>
<p style="padding-left: 40px;"><code>pass in on $vtnet0 proto tcp to port { 22 } \</code></p>
<p style="padding-left: 80px;"><code>keep state (max-src-conn 15, max-src-conn-rate 3/1, \</code></p>
<p style="padding-left: 120px;"><code>overload &lt;bruteforce&gt; flush global)</code></p>
<p style="padding-left: 40px;"><code><strong>keep state</strong></code>: Allows you to define the state criteria for the overload table. <br />
<code><strong>max-src-conn</strong>:</code> Specifies the number of simultaneous connections allowed from a single host per second.<br />
<code><strong>max-src-conn-rate</strong>:</code> Specifies the number of new connections allowed from a single host per second.</p>
<p style="padding-left: 40px;">If any host exceeds the specified limits, the PF overload mechanism will add the source IP to the <code>&lt;bruteforce&gt;</code> table. If a host exceeds these limits, the overload mechanism adds the source IP to the <code>&lt;bruteforce&gt;</code> table, which bans them from the server. The connection will immediately be dropped due to the flush global parameter. </p>
<p style="padding-left: 40px;">Before this ruleset can be loaded, the table you defined needs to be declared in the ruleset: </p>
<p style="padding-left: 40px;">Specify the <code>&lt;bruteforce&gt;</code> table underneath the previous <code>icmp_types</code> macro</p>
<p style="padding-left: 40px;"><code>icmp_types = "{ echoreq }"</code></p>
<p style="padding-left: 80px;"><code>table &lt;bruteforce&gt; persist</code></p>
<p style="padding-left: 40px;">The persist keyword allows an empty table to exist in the ruleset. Without it, PF will complain that there are no IP addresses in the table.</p>
<h3 style="padding-left: 40px;">5.3 Handling Non-Routable Addresses</h3>
<p style="padding-left: 40px;">As much as you can properly configure your system to be precise, some configuration may be needed to compensate for other people&#8217;s misconfigurations. One common mistake is to let traffic with non-routable addresses out to the Internet. Since non-routable addresses can be used in DoS attacks, consider blocking this traffic from entering the network.</p>
<p style="padding-left: 40px;">Define a macro containing non-routable addresses, then use it in blocking rules. Traffic to and from these addresses is dropped on the gateway’s external interface.</p>
<p style="padding-left: 40px;">
<code>external = "{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, \</code><br />
<code>      10.0.0.0/8, 169.254.0.0/16, 192.0.2.0/24, \</code><br />
<code>      0.0.0.0/8, 240.0.0.0/4 }"</code></p>
<p style="padding-left: 40px;"><code>block drop in quick on $ext_if from $external to any</code><br />
<code>block drop out quick on $ext_if from any to $external</code></p>
<p>
</p>
<h2>6. Viewing PF Logs</h2>
<p>To view PF logs:</p>
<p><code>tcpdump -n -e -ttt -r /var/log/pflog</code></p>
<p>To view logs in real-time from the pflog0 interface, run the following command:</p>
<p><code>tcpdump -n -e -ttt -i pflog0</code></p>
<p>The pftop utility is a tool for quickly viewing firewall activity in real-time; it can be installed and started with:</p>
<p><code>pkg install pftop</code></p>
<p><code>pftop</code></p>
</section><p>The post <a href="https://staging.freebsdfoundation.org/resource/an-introduction-to-packet-filter-pf/">An Introduction to Packet Filter (PF)</a> first appeared on <a href="https://staging.freebsdfoundation.org">FreeBSD Foundation</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Using FreeBSD as a Virtual Host &#8211; Quick Guide</title>
		<link>https://staging.freebsdfoundation.org/resource/using-freebsd-as-a-virtual-host-quick-guide/</link>
		
		<dc:creator><![CDATA[Anne Dickison]]></dc:creator>
		<pubDate>Tue, 30 May 2023 18:34:09 +0000</pubDate>
				<guid isPermaLink="false">https://freebsdfoundation.org/?post_type=resource&#038;p=12280</guid>

					<description><![CDATA[<p>Installing VirtualBox™ Note: To run VirtualBox™, an Xorg session is needed. Refer to the handbook&#8217;s section on the X Window System to install and configure Xorg. VirtualBox™ is available as a FreeBSD package or port in emulators/virtualbox-ose. To quickly install the package:  # pkg install virtualbox-ose The kernel module vboxdrv will need to be loaded before [&#8230;]</p>
<p>The post <a href="https://staging.freebsdfoundation.org/resource/using-freebsd-as-a-virtual-host-quick-guide/">Using FreeBSD as a Virtual Host – Quick Guide</a> first appeared on <a href="https://staging.freebsdfoundation.org">FreeBSD Foundation</a>.</p>]]></description>
										<content:encoded><![CDATA[<section class="block block-classic-editor">
<div class="sect2">
<h2><img loading="lazy" decoding="async" class=" wp-image-12411 aligncenter" src="https://staging.freebsdfoundation.org/wp-content/uploads/2023/05/Untitled-design-32-1024x256.png" alt="" width="1048" height="262" srcset="https://staging.freebsdfoundation.org/wp-content/uploads/2023/05/Untitled-design-32-1024x256.png 1024w, https://staging.freebsdfoundation.org/wp-content/uploads/2023/05/Untitled-design-32-300x75.png 300w, https://staging.freebsdfoundation.org/wp-content/uploads/2023/05/Untitled-design-32-1536x384.png 1536w, https://staging.freebsdfoundation.org/wp-content/uploads/2023/05/Untitled-design-32-2048x512.png 2048w, https://staging.freebsdfoundation.org/wp-content/uploads/2023/05/Untitled-design-32.png 1920w" sizes="(max-width: 1048px) 100vw, 1048px" /></h2>
<h2 id="virtualization-virtualbox-install">Installing VirtualBox<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /></h2>
</div>
<p><strong>Note: To run VirtualBox<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" />, an Xorg session is needed. Refer to the handbook&#8217;s section on <a href="https://docs.freebsd.org/en/books/handbook/x11/#x-install">the X Window System</a> to install and configure Xorg.</strong></p>
<div class="sect2">
<div class="paragraph">
<p>VirtualBox<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /> is available as a FreeBSD package or port in <a class="package" href="https://cgit.freebsd.org/ports/tree/emulators/virtualbox-ose/">emulators/virtualbox-ose</a>. To quickly install the package: </p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell"><span class="c"># pkg install virtualbox-ose</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>The kernel module <code>vboxdrv</code> will need to be loaded before VirtualBox<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /> is started for the first time: </p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell"><span class="c"># kldload vboxdrv</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>To ensure the module is always loaded after a reboot, add this line to <code><span class="filename">/boot/loader.conf</span>:</code></p>
</div>
<div class="literalblock programlisting">
<div class="content">
<pre>vboxdrv_load="YES"</pre>
</div>
</div>
<div class="paragraph">
<p>To use the kernel modules that allow bridged or host-only networking, add this line to <code><span class="filename">/etc/rc.conf</span></code> and reboot the computer:</p>
</div>
<div class="literalblock programlisting">
<div class="content">
<pre>vboxnet_enable="YES"</pre>
</div>
</div>
<div class="paragraph">
<p>The <code>vboxusers</code> group is created during installation of VirtualBox<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" />. All users that need access to VirtualBox<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /> will have to be added as members of this group. <code>pw</code> can be used to add new members:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell"><span class="c"># pw groupmod vboxusers -m yourusername</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>The default permissions for <span class="filename">/dev/vboxnetctl</span> are restrictive and need to be changed for bridged networking. To permanently change these permissions, add these lines to <code><span class="filename">/etc/devfs.conf</span></code>:</p>
</div>
<div class="literalblock programlisting">
<div class="content">
<pre>own     vboxnetctl root:vboxusers
perm    vboxnetctl 0660</pre>
</div>
</div>
<div class="paragraph">
<p>To launch VirtualBox<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" />, type from an Xorg session:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell"># VirtualBox</code></pre>
</div>
<div class="copy-to-clipboard-wrapper"> </div>
</div>
</div>
<div class="sect2">
<h2 id="virtualization-virtualbox-usb-support">VirtualBox<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /> USB Support</h2>
<div class="paragraph">
<p>Users will need to be members of the <code>operator</code> group For VirtualBox<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /> to be aware of USB devices.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell"><span class="c"># pw groupmod operator -m yourusername</span></code></pre>
<div class="copy-to-clipboard-wrapper">Then, add the following to <span class="filename">/etc/devfs.rules</span>, or create this file if it does not exist yet:</div>
</div>
</div>
<div class="literalblock programlisting">
<div class="content">
<pre>[system=10]
add path 'usb/*' mode 0660 group operator</pre>
</div>
</div>
<div class="paragraph">
<p>To load these new rules, add the following to <span class="filename">/etc/rc.conf</span>:</p>
</div>
<div class="literalblock programlisting">
<div class="content">
<pre>devfs_system_ruleset="system"</pre>
</div>
</div>
<div class="paragraph">
<p>Then, restart devfs:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell"><span class="c"># service devfs restart</span></code></pre>
<div class="copy-to-clipboard-wrapper">Both the login session and VirtualBox<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /> will need to be restarted for any changed to take effect.</div>
</div>
</div>
</div>
<div class="sect2">
<h2> </h2>
<h2 id="virtualization-virtualbox-host-dvd-cd-access">VirtualBox<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Host DVD/CD Access</h2>
<div class="paragraph">
<p>The HAL daemon needs to run for VirtualBox<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /> DVD/CD functions to work, so enable it in <code><span class="filename">/etc/rc.conf</span></code> and start it if it is not already running:</p>
</div>
<div class="literalblock programlisting">
<div class="content">
<pre>hald_enable="YES"</pre>
</div>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell"><span class="c"># service hald start</span></code></pre>
<div class="copy-to-clipboard-wrapper">A variety of user permissions will need to be edited in order to access<code><span class="filename">/dev/xpt0</span></code>, <code><span class="filename">/dev/cdN</span></code>, and <code><span class="filename">/dev/passN</span></code>. This is usually achieved by making the user a member of <code>operator</code>. Permissions to these devices have to be corrected by adding these lines to <code><span class="filename">/etc/devfs.conf</span></code>:</div>
</div>
</div>
<div class="literalblock programlisting">
<div class="content">
<pre>perm cd* 0660
perm xpt0 0660
perm pass* 0660</pre>
</div>
</div>
<div class="listingblock">
<div class="content">
<p class="rouge highlight"><code data-lang="shell"><span class="c"># service devfs restart</span></code></p>
<p>This quick guide is intended to get VirtualBox<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /> running on your FreeBSD device, however, the scope and scale of further configuration of your virtual machine would be unfit for a quick guide. The VirtualBox<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /> handbook offers a massive amount of information on how to best use and set up your FreeBSD machine. While VirtualBox<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /> can run on FreeBSD, it is not a supported host platform for the extension pack. Installation of the Pack will not extend the feature set</p>
</div>
</div>
</div>
</section><p>The post <a href="https://staging.freebsdfoundation.org/resource/using-freebsd-as-a-virtual-host-quick-guide/">Using FreeBSD as a Virtual Host – Quick Guide</a> first appeared on <a href="https://staging.freebsdfoundation.org">FreeBSD Foundation</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>An Introduction to ZFS</title>
		<link>https://staging.freebsdfoundation.org/resource/an-introduction-to-the-z-file-system/</link>
		
		<dc:creator><![CDATA[Anne Dickison]]></dc:creator>
		<pubDate>Sun, 22 Jan 2023 15:20:05 +0000</pubDate>
				<guid isPermaLink="false">https://freebsdfoundation.org/?post_type=resource&#038;p=11875</guid>

					<description><![CDATA[<p>ZFS combines the roles of volume manager and independent file system into one, giving multiple advantages over a stand-alone file system. It is renowned for speed, flexibility, and, most importantly, taking great care to prevent data loss.</p>
<p>The post <a href="https://staging.freebsdfoundation.org/resource/an-introduction-to-the-z-file-system/">An Introduction to ZFS</a> first appeared on <a href="https://staging.freebsdfoundation.org">FreeBSD Foundation</a>.</p>]]></description>
										<content:encoded><![CDATA[<section class="block block-classic-editor"><p></section><section class="block block-core-paragraph"></p>
<p>ZFS combines the roles of volume manager and independent file system into one, giving multiple advantages over a stand-alone file system. It is renowned for speed, flexibility, and, most importantly, taking great care to prevent data loss. While many traditional file systems had to exist on a single disk at a time, ZFS is aware of the underlying structure of the disks and creates a pool of available storage, even on multiple disks. The existing file system will grow automatically when extra disks are added to the pool, immediately becoming available to the file system.</p>
<p></section>
<div class="wp-block-image"><section class="block block-core-image"></p>
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" class="wp-image-11796 aligncenter" src="https://staging.freebsdfoundation.org/wp-content/uploads/2022/10/OpenZFS_logo.svg-1024x933.png" alt="" width="215" height="196" srcset="https://staging.freebsdfoundation.org/wp-content/uploads/2022/10/OpenZFS_logo.svg-1024x933.png 1024w, https://staging.freebsdfoundation.org/wp-content/uploads/2022/10/OpenZFS_logo.svg-300x273.png 300w, https://staging.freebsdfoundation.org/wp-content/uploads/2022/10/OpenZFS_logo.svg.png 1200w" sizes="(max-width: 215px) 100vw, 215px" /></figure>
<p></section></div>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading" id="zfs-quickstart">Getting Started</h2>
<p></section>
<section class="block block-core-paragraph"></p>
<p>FreeBSD can mount ZFS pools and datasets during system initialization. To enable it, add this line to /etc/rc.conf:</p>
<p></section>
<section class="block block-core-preformatted"></p>
<pre class="wp-block-preformatted">zfs_enable="YES"</pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Then start the service:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># service zfs start</code></pre>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="has-text-align-left wp-block-heading">Identify Hardware</h2>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Before setting up ZFS, identify the device names of the disk associated with the system. A quick way of doing this is with:</p>
<p></section>
<section class="block block-core-preformatted"></p>
<pre class="wp-block-preformatted"><code># egrep 'da[0-9]|cd[0-9]' /var/run/dmesg.boot</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>The output should identify the device names, examples throughout the rest of this guide will use the default SCSI names: da0, da1, and da2. If the hardware differs, make sure to use the correct device names instead.</p>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading" id="zfs-quickstart-single-disk-pool">Creating a Single Disk Pool</h2>
<p></section>
<section class="block block-core-paragraph"></p>
<p>To create a simple, non-redundant pool using a single disk device:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># zpool create example /dev/da0</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>To create files for users to browse within the pool:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># cd /example
# ls
# touch testfile</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>The new file can be viewed using <code>ls</code>:</p>
<p></section>
<section class="block block-core-preformatted"></p>
<pre class="wp-block-preformatted"><code># ls -al</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>We can already start using more advanced ZFS features and properties. To create a dataset within the pool with compression enabled:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># zfs create example/compressed
# zfs set compression=on example/compressed</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>The <code>example/compressed</code> dataset is now a ZFS compressed file system.</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Disable compression with:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># zfs set compression=off example/compressed</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>To unmount a file system, use <code>zfs umount</code> and then verify with <code>df</code>:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># zfs umount example/compressed
# df</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Verify that <code>example/compressed</code> is not included as a mounted file under the output.</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>The file system can be re-mounted with zfs:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># zfs mount example/compressed
# df</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>With the file system mounted, the output should include a line similar to the one below:</p>
<p></section>
<section class="block block-core-preformatted"></p>
<pre class="wp-block-preformatted"><code>example/compressed 17547008 0 17547008 0% /example/compressed</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>ZFS datasets are created just like any other file system, the following example creates a new file system called <code>data</code>:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># zfs create example/data</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Use <code>df</code> to see the data and space usage (some of the output has been removed for clarity)</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># df
                                 . . . 
example/compressed  17547008       0 17547008     0%    /example/compressed
example/data        17547008       0 17547008     0%    /example/data</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Because these file systems are built on ZFS, they draw from the same pool for storage. This eliminates the need for volumes and partitions that other file systems rely on.</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>To destroy the file systems and then the pool that is no longer needed:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># zfs destroy example/compressed
# zfs destroy example/data
# zpool destroy example</code></pre>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading" id="zfs-quickstart-raid-z">RAID-Z</h2>
<p></section>
<section class="block block-core-paragraph"></p>
<p>RAID-Z pools require three or more disks but offer protection from data loss if a disk were to fail. Because the ZFS pools can use multiple disks, support for RAID is inherent in the design of the file system</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>To create a RAID-Z pool, specifying the disks to add to the pool:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># zpool create storage raidz da0 da1 da2</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>With the zpool created, a new file system can be made in that pool:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># zfs create storage/home</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Enable compression and store an extra copy of directories and files:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># zfs set copies=2 storage/home
# zfs set compression=gzip storage/home</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>A RAID-Z pool is a great place to store crucial system files, such as the home directory for users. To make the file system the home new home directory :</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># cp -rp /home/* /storage/home
# rm -rf /home /usr/home
# ln -s /storage/home /home
# ln -s /storage/home /usr/home</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>File system snapshots can be created to roll back to later, the snapshot name is marked in red and can be whatever you want:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># zfs snapshot storage/home@<mark class="has-inline-color has-vivid-red-color">11-01-22</mark></code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>ZFS creates snapshots of a dataset, allowing users to back up a file system for roll backs or data recovery in the future.</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># zfs rollback storage/home@<mark class="has-inline-color has-vivid-red-color">11-01-22</mark></code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>To list all available snapshots, <code>zfs list</code> can be used:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># zfs list -t snapshot storage/home</code></pre>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading" id="zfs-quickstart-recovering-raid-z">Recovering RAID-Z</h2>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Every software RAID has a method of monitoring its <code>state</code>. View the status of RAID-Z devices using:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># zpool status -x</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>If all pools are Online and everything is normal, the message shows:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code>all pools are healthy</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>If there is a problem, perhaps a disk being in the Offline state, the pool state will look like this:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code>  pool: storage
 state: DEGRADED
status: One or more devices has been taken offline by the administrator.
	Sufficient replicas exist for the pool to continue functioning in a
	degraded state.
action: Online the device using 'zpool online' or replace the device with
	'zpool replace'.
 scrub: none requested
config:

	NAME        STATE     READ WRITE CKSUM
	storage     DEGRADED     0     0     0
	  raidz1    DEGRADED     0     0     0
	    da0     ONLINE       0     0     0
	    da1     OFFLINE      0     0     0
	    da2     ONLINE       0     0     0

errors: No known data errors</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>&#8220;OFFLINE&#8221; shows the administrator took da1 offline using:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># zpool offline storage da1</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Power down the computer now and replace da1. Power up the computer and return da1 to the pool:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># zpool replace storage da1</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Next, check the status again, this time without <code>-x</code> to display all pools:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># zpool status storage
 pool: storage
 state: ONLINE
 scrub: resilver completed with 0 errors on Fri Nov 4 11:12:03 2022
config:

	NAME        STATE     READ WRITE CKSUM
	storage     ONLINE       0     0     0
	  raidz1    ONLINE       0     0     0
	    da0     ONLINE       0     0     0
	    da1     ONLINE       0     0     0
	    da2     ONLINE       0     0     0

errors: No known data errors</code></pre>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading" id="zfs-quickstart-data-verification">Data Verification</h2>
<p></section>
<section class="block block-core-paragraph"></p>
<p>ZFS uses checksums to verify the integrity of stored data, these data checksums can be verified (which is called <em>scrubbing</em>) to ensure integrity of the storage pool:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># zpool scrub storage</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Only one scrub can be run at a time due to the heavy input/output requirements. The length of the scrub depends on how much data is store in the pool.After scrubbing completes, view the status with <code>zpool status</code>:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># zpool status storage
 pool: storage
 state: ONLINE
 scrub: scrub completed with 0 errors on Fri Nov 4 11:19:52 2022
config:

	NAME        STATE     READ WRITE CKSUM
	storage     ONLINE       0     0     0
	  raidz1    ONLINE       0     0     0
	    da0     ONLINE       0     0     0
	    da1     ONLINE       0     0     0
	    da2     ONLINE       0     0     0

errors: No known data errors</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Displaying the completion date of the last scrubbing helps decide when to start another. Routine scrubs help protect data from silent corruption and ensure the integrity of the pool.</p>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading">ZFS Administration</h2>
<p></section>
<section class="block block-core-paragraph"></p>
<p>ZFS has two main utilities for administration: The <code>zpool</code> utility controls the operation of the pool and allows adding, removing, replacing, and managing disks. The <a href="https://docs.freebsd.org/en/books/handbook/zfs/#zfs-zfs"><code>zfs</code></a> utility allows creating, destroying, and managing datasets, both file systems and volumes.</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>While this introductory guide won&#8217;t cover ZFS administration, you can refer to <a href="https://www.freebsd.org/cgi/man.cgi?query=zfs&amp;sektion=8&amp;format=html">zfs(8)</a> and <a href="https://www.freebsd.org/cgi/man.cgi?query=zpool&amp;sektion=8&amp;format=html">zpool(8)</a> for other ZFS options.</p>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading">Further Resources</h2>
<p></section>
<section class="block block-core-list"></p>
<ul class="wp-block-list">
	<li><a href="https://openzfs.org/">OpenZFS</a></li>
	<li><a href="https://wiki.freebsd.org/ZFSTuningGuide">FreeBSD Wiki &#8211; ZFS Tuning</a></li>
	<li><a href="https://calomel.org/zfs_raid_speed_capacity.html">Calomel Blog &#8211; ZFS Raidz Performance, Capacity and Integrity</a></li>
</ul>
<p></section><section class="block block-classic-editor"></p></section><p>The post <a href="https://staging.freebsdfoundation.org/resource/an-introduction-to-the-z-file-system/">An Introduction to ZFS</a> first appeared on <a href="https://staging.freebsdfoundation.org">FreeBSD Foundation</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Binary Package Management on FreeBSD</title>
		<link>https://staging.freebsdfoundation.org/resource/binary-package-management-on-freebsd/</link>
		
		<dc:creator><![CDATA[Anne Dickison]]></dc:creator>
		<pubDate>Thu, 12 Jan 2023 15:06:56 +0000</pubDate>
				<guid isPermaLink="false">https://freebsdfoundation.org/?post_type=resource&#038;p=11736</guid>

					<description><![CDATA[<p>The simplest way to install and manage applications and system tools on FreeBSD is through the pkg package management tool, which makes dealing with binary packages fast and easy. Binary packages are pre-compiled and require no in-depth understanding of compiling software on FreeBSD, making them the ideal method to install software for new users.</p>
<p>The post <a href="https://staging.freebsdfoundation.org/resource/binary-package-management-on-freebsd/">Binary Package Management on FreeBSD</a> first appeared on <a href="https://staging.freebsdfoundation.org">FreeBSD Foundation</a>.</p>]]></description>
										<content:encoded><![CDATA[<section class="block block-classic-editor">
<p id="pkgng-intro">The simplest way to install and manage applications and system tools on FreeBSD is through the <code>pkg</code> package management tool, which makes dealing with binary packages fast and easy. Binary packages are pre-compiled and require no in-depth understanding of compiling software on FreeBSD, making them the ideal method to install software for new users.</p>
<p><img loading="lazy" decoding="async" class="wp-image-11737 aligncenter" src="https://staging.freebsdfoundation.org/wp-content/uploads/2022/10/Untitled-design-26-1024x577.png" alt="" width="692" height="390" srcset="https://staging.freebsdfoundation.org/wp-content/uploads/2022/10/Untitled-design-26-1024x577.png 1024w, https://staging.freebsdfoundation.org/wp-content/uploads/2022/10/Untitled-design-26-300x169.png 300w, https://staging.freebsdfoundation.org/wp-content/uploads/2022/10/Untitled-design-26-1536x865.png 1536w, https://staging.freebsdfoundation.org/wp-content/uploads/2022/10/Untitled-design-26.png 1640w" sizes="(max-width: 692px) 100vw, 692px" /></p>
<div class="sectionbody">
<div class="sect2">
<h2 id="pkgng-initial-setup">1. Getting Started with pkg</h2>
<div class="paragraph">
<p>FreeBSD includes a bootstrap utility which can be used to download and install pkg and its manual pages. This process will require a working Internet connection.</p>
</div>
<div class="admonitionblock note">To bootstrap the system, run:</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell"><span class="c"># /usr/sbin/pkg</span></code></pre>
<div class="copy-to-clipboard-wrapper">Usage information for pkg is available in the <a href="https://www.freebsd.org/cgi/man.cgi?query=pkg&amp;sektion=8&amp;format=html">pkg(8)</a> manual page or by running <code>pkg</code> without additional arguments. To access the manual page run:</div>
</div>
<pre><code># man pkg</code></pre>
</div>
<div class="paragraph">
<p>Each pkg command argument is documented in a command-specific manual page. To read the manual page for <code>pkg install</code>, for example, run either of these commands:</p>
</div>
<div class="listingblock">
<div class="content">
<pre><code data-lang="shell"><span class="c"># pkg help install</span></code> <code><span class="c"># man pkg-install</span></code></pre>
</div>
</div>
<div class="listingblock">
<div class="content">
<div class="copy-to-clipboard-wrapper"> </div>
</div>
</div>
<h2 id="pkgng-installing-deinstalling">2. Installing and Removing Packages</h2>
<div class="paragraph">
<p>To install a binary package, use the following command, where <em>packagename</em> is the name of the package to install:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell"><span class="c"># pkg install packagename</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Before the installer proceeds, the system will ask to confirm and approve the changes, this can be done be either typing &#8220;y&#8221; or &#8220;n&#8221; to approve or cancel the process. Once complete, the new package and any additional packages that were installed as dependencies can be seen in the installed packages list:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell"><span class="c"># pkg info</span>
ca_root_nss-3.15.1_1	The root certificate bundle from the Mozilla Project
curl-7.31.0_1	Non-interactive tool to get files from FTP, GOPHER, HTTP<span class="o">(</span>S<span class="o">)</span> servers
pkg-1.1.4_6	New generation package manager</code></pre>
<div class="copy-to-clipboard-wrapper">Packages that are no longer needed can be removed with <code>pkg delete</code>. For example:</div>
</div>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell"><span class="c"># pkg delete curl</span>
</code></pre>
</div>
</div>
<h2 id="pkgng-upgrading">3. Upgrading Installed Packages</h2>
<div class="paragraph">
<p>Installed packages can be upgraded to their latest versions by running:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="shell"><span class="c"># pkg upgrade</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>This command will compare the installed versions with those available in the repository catalogue and upgrade them from the repository.</p>
</div>
</div>
</div>
</section><p>The post <a href="https://staging.freebsdfoundation.org/resource/binary-package-management-on-freebsd/">Binary Package Management on FreeBSD</a> first appeared on <a href="https://staging.freebsdfoundation.org">FreeBSD Foundation</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Video Playback on FreeBSD &#8211; Quick Guide</title>
		<link>https://staging.freebsdfoundation.org/resource/video-playback-on-freebsd-quick-guide/</link>
		
		<dc:creator><![CDATA[Anne Dickison]]></dc:creator>
		<pubDate>Thu, 01 Sep 2022 20:26:36 +0000</pubDate>
				<guid isPermaLink="false">https://freebsdfoundation.org/?post_type=resource&#038;p=11665</guid>

					<description><![CDATA[<p>In this guide, we&#8217;ll use the xine video player to set up basic video playback on a fresh FreeBSD install. The xine multimedia player relies on the XWindow system and the XVideo extension to provide a graphical video playback interface. System Requirements: Xorg supports a wide variety of video cards, but not all are supported [&#8230;]</p>
<p>The post <a href="https://staging.freebsdfoundation.org/resource/video-playback-on-freebsd-quick-guide/">Video Playback on FreeBSD – Quick Guide</a> first appeared on <a href="https://staging.freebsdfoundation.org">FreeBSD Foundation</a>.</p>]]></description>
										<content:encoded><![CDATA[<section class="block block-classic-editor"><p></section><section class="block block-core-paragraph"></p>
<p>In this guide, we&#8217;ll use the xine video player to set up basic video playback on a fresh FreeBSD install. The xine multimedia player relies on the XWindow system and the XVideo extension to provide a graphical video playback interface.</p>
<p></section>
<div class="wp-block-image"><section class="block block-core-image"></p>
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" class="wp-image-11627" src="https://staging.freebsdfoundation.org/wp-content/uploads/2022/08/Untitled-design-23-1024x576.png" alt="" width="840" height="472" srcset="https://staging.freebsdfoundation.org/wp-content/uploads/2022/08/Untitled-design-23-1024x576.png 1024w, https://staging.freebsdfoundation.org/wp-content/uploads/2022/08/Untitled-design-23-300x169.png 300w, https://staging.freebsdfoundation.org/wp-content/uploads/2022/08/Untitled-design-23-1536x864.png 1536w, https://staging.freebsdfoundation.org/wp-content/uploads/2022/08/Untitled-design-23.png 1920w" sizes="(max-width: 840px) 100vw, 840px" /></figure>
<p></section></div>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading">System Requirements:</h2>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Xorg supports a wide variety of video cards, but not all are supported or offer good video playback performance.</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>It is a good idea to have a short MPEG test file for evaluating various players and options. Since some <code>DVD</code> applications look for <code>DVD</code> media in /dev/dvd by default, or have this device name hardcoded in them, it might be useful to make a symbolic link to the proper device:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># ln -sf /dev/cd0 /dev/dvd</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Due to the nature of <a href="https://www.freebsd.org/cgi/man.cgi?query=devfs&amp;sektion=5&amp;format=html">devfs(5)</a>, manually created links will not persist after a system reboot. In order to recreate the symbolic link automatically when the system boots, add the following line to /etc/devfs.conf:</p>
<p></section>
<section class="block block-core-preformatted"></p>
<pre class="wp-block-preformatted">link cd0 dvd</pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>&nbsp;</p>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading" id="video-interface">Installing Xorg</h2>
<p></section>
<section class="block block-core-paragraph"></p>
<p>There are several possible ways to display video under Xorg and what works is largely hardware dependent. This guide will focus on the Xvideo extension which allows video to be directly displayed, even on low-end machines.</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Start by installing the X Window System:</p>
<p></section>
<section class="block block-core-preformatted"></p>
<pre class="wp-block-preformatted"># <code>pkg install -y xorg</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Once the package has been fully installed, the X Window System can be started with:</p>
<p></section>
<section class="block block-core-preformatted"></p>
<pre class="wp-block-preformatted"># <code>startx</code></pre>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading" id="video-interface-xvideo">XVideo Support</h2>
<p></section>
<section class="block block-core-paragraph"></p>
<p>To check whether the Xvideo extension is running, use <code>xvinfo</code>:</p>
<p></section>
<section class="block block-core-preformatted"></p>
<pre class="wp-block-preformatted"><code>xvinfo</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>If XVideo is supported, the result will look similar to the example below and may include screen and video card information.</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code>X-Video Extension version 2.2
  screen #0
  Adaptor #0: "Example Engine"
    number of ports: 1
    port base: 43
     
       .   .    .</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>&nbsp;</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>XVideo is likely unsupported by the video card if the result instead look like:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code>X-Video Extension version 2.2
screen #0
no adaptors present</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>The display may be unable to meet the demands of rendering video playback if XVideo is unsupported (though this is not always the case).</p>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading">The xine Video Player</h2>
<p></section>
<div class="wp-block-image"><section class="block block-core-image"></p>
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="618" height="235" class="wp-image-11650" src="https://staging.freebsdfoundation.org/wp-content/uploads/2022/09/Screenshot-2022-09-01-154324.png" alt="" srcset="https://staging.freebsdfoundation.org/wp-content/uploads/2022/09/Screenshot-2022-09-01-154324.png 618w, https://staging.freebsdfoundation.org/wp-content/uploads/2022/09/Screenshot-2022-09-01-154324-300x114.png 300w" sizes="(max-width: 618px) 100vw, 618px" /></figure>
<p></section></div>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-paragraph"></p>
<p>xine is a free multimedia player. It plays back CDs, DVDs, BluRays and VCDs. It also decodes multimedia files like AVI, MOV, WMV, and MP3 from local disk drives, and displays multimedia streamed over the Internet. Get started by installing the package:</p>
<p></section>
<section class="block block-core-preformatted"></p>
<pre class="wp-block-preformatted"><code># pkg install -y xine</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>In practice, xine requires either a fast CPU or support for the XVideo extension. The xine video player performs best on XVideo interfaces. If in the previous step, the Xvideo extension was unsupported, issues may occur.</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>The xine player starts a graphical user interface (GUI) and the menus can be used to navigate to multimedia files.</p>
<p></section>
<section class="block block-core-preformatted"></p>
<pre class="wp-block-preformatted"><code># xine</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Alternatively, xine may be directly invoked from the command line by specifying the name of the file to play:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># xine -g -p mymovie.avi</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>You now have a simple way to play a variety of multimedia files on your FreeBSD system! To find out more about the xine player, refer to the <a href="https://sourceforge.net/projects/xine/" target="_blank" rel="noreferrer noopener">SourceForge page</a>.</p>
<p></section><section class="block block-classic-editor"></p></section><p>The post <a href="https://staging.freebsdfoundation.org/resource/video-playback-on-freebsd-quick-guide/">Video Playback on FreeBSD – Quick Guide</a> first appeared on <a href="https://staging.freebsdfoundation.org">FreeBSD Foundation</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Guide to FreeBSD Desktop Distributions</title>
		<link>https://staging.freebsdfoundation.org/resource/guide-to-freebsd-desktop-distributions/</link>
		
		<dc:creator><![CDATA[Anne Dickison]]></dc:creator>
		<pubDate>Mon, 15 Aug 2022 19:04:18 +0000</pubDate>
				<guid isPermaLink="false">https://freebsdfoundation.org/?post_type=resource&#038;p=11572</guid>

					<description><![CDATA[<p>A collection of FreeBSD desktop distributions that have taken the FreeBSD operating system in a new direction while still relying on the incredibly powerful and stable base operating system of FreeBSD. From integrated desktop environments, portable USB-based systems, to data recovery tools, FreeBSD has been used by a wide variety of open-source projects. This page hopes to highlight just a few of these projects.</p>
<p>The post <a href="https://staging.freebsdfoundation.org/resource/guide-to-freebsd-desktop-distributions/">Guide to FreeBSD Desktop Distributions</a> first appeared on <a href="https://staging.freebsdfoundation.org">FreeBSD Foundation</a>.</p>]]></description>
										<content:encoded><![CDATA[<section class="block block-classic-editor"><p></section><section class="block block-core-paragraph"></p>
<p><strong>Updated: May 20, 2021</strong></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>A collection of FreeBSD desktop distributions that have taken the FreeBSD operating system in a new direction while still relying on the incredibly powerful and stable base operating system of FreeBSD. From integrated desktop environments, portable USB-based systems, to data recovery tools, FreeBSD has been used by a wide variety of open-source projects. This page hopes to highlight just a few of these projects:</p>
<p></section>
<section class="block block-core-heading"></p>
<h1 class="wp-block-heading">MidnightBSD:</h1>
<p></section>
<section class="block block-core-heading"></p>
<h4 class="has-text-align-center wp-block-heading"> </h4>
<p></section>
<div class="wp-block-image"><section class="block block-core-image"></p>
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" class="wp-image-9433" src="https://staging.freebsdfoundation.org/wp-content/uploads/2021/05/1200px-MidnightBSDLogo.svg_-1024x1024.png" alt="" width="245" height="245" srcset="https://staging.freebsdfoundation.org/wp-content/uploads/2021/05/1200px-MidnightBSDLogo.svg_-1024x1024.png 1024w, https://staging.freebsdfoundation.org/wp-content/uploads/2021/05/1200px-MidnightBSDLogo.svg_-300x300.png 300w, https://staging.freebsdfoundation.org/wp-content/uploads/2021/05/1200px-MidnightBSDLogo.svg_-150x150.png 150w, https://staging.freebsdfoundation.org/wp-content/uploads/2021/05/1200px-MidnightBSDLogo.svg_.png 1200w" sizes="(max-width: 245px) 100vw, 245px" /></figure>
<p></section></div>
<section class="block block-core-heading"></p>
<h4 class="wp-block-heading"><mark class="has-inline-color">Novice – Advanced Users</mark></h4>
<p></section>
<section class="block block-core-paragraph"></p>
<p class="has-text-align-center"><a href="https://www.midnightbsd.org/" target="_blank" rel="noreferrer noopener">Project Website</a></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>“MidnightBSD is a BSD-derived operating system developed with desktop users in mind. It includes all the software you’d expect for your daily tasks — email, web browsing, word processing, gaming, and much more.”</p>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h3 class="wp-block-heading"><strong>What Makes MidnightBSD Unique:</strong></h3>
<p></section>
<section class="block block-core-heading"></p>
<h4 class="wp-block-heading"><strong>System attributes:</strong></h4>
<p></section>
<section class="block block-core-list"></p>
<ul class="wp-block-list">
	<li>New window and login manager.</li>
	<li>Initially forked from FreeBSD 6.1 beta.

<ul>
	<li>In order to allow customization of ports and system configuration.</li>
	<li>Includes syncs from later FreeBSD versions.</li>
</ul>
</li>
	<li>Fully integrated environment with a focus on stability and optimization for desktop users.</li>
	<li>Scheduling, allocation, security, and app support are uniquely tailored for desktop users.</li>
	<li>Less emphasis on server optimization.</li>
	<li>Includes a range of tools and utilities, including:

<ul>
	<li>ZFS</li>
	<li>hast</li>
	<li>OpenSSH</li>
	<li>Perl</li>
</ul>
</li>
	<li>Imported features from DragonFlyBSD/OpenBSD/NetBSD</li>
	<li>Improved security with ipfw and sudo.</li>
</ul>
<p></section>
<section class="block block-core-heading"></p>
<h4 class="wp-block-heading"><strong>User-end attributes:</strong></h4>
<p></section>
<section class="block block-core-list"></p>
<ul class="wp-block-list">
	<li>New window and login manager.</li>
	<li>Centralized system preferences.</li>
	<li>Emphasis on easy to use graphical interfaces for new users.</li>
	<li>BSD styled command line.</li>
	<li>Graphical ports and package manager.</li>
	<li>Large user community, including <a href="https://www.midnightbsd.org/mailman/listinfo/">mailing lists</a> and <a href="http://forum.midnightbsd.org/">community forums</a>.</li>
	<li>Extensive <a href="https://www.midnightbsd.org/documentation/">documentation</a></li>
	<li>Bugzilla for troubleshooting.</li>
</ul>
<p></section>
<section class="block block-core-heading"></p>
<h4 class="wp-block-heading"><strong>Notable Future Plans:</strong></h4>
<p></section>
<section class="block block-core-list"></p>
<ul class="wp-block-list">
	<li>Expanded security capabilities.</li>
	<li>Rewriting the package cluster system.</li>
	<li>Maintaining and updating ports.</li>
</ul>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h1 class="wp-block-heading">GhostBSD:</h1>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<div class="wp-block-image"><section class="block block-core-image"></p>
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" class="wp-image-9435" src="https://staging.freebsdfoundation.org/wp-content/uploads/2021/05/ghostbsd.png" alt="" width="292" height="154" /></figure>
<p></section></div>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h4 class="wp-block-heading"><mark class="has-inline-color">Novice – Advanced Users</mark></h4>
<p></section>
<section class="block block-core-paragraph"></p>
<p class="has-text-align-center"><a href="https://ghostbsd.org/" target="_blank" rel="noreferrer noopener">Project Website</a></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>“GhostBSD is a simple, user-friendly operating system, based on the legendary security and stability of the FreeBSD operating system. GhostBSD provides all the benefits of the FreeBSD operating system combined with a focus on simplicity for newcomers.”</p>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h3 class="wp-block-heading"><strong>What Makes GhostBSD Unique:</strong></h3>
<p></section>
<section class="block block-core-heading"></p>
<h4 class="wp-block-heading"><strong>System attributes:</strong></h4>
<p></section>
<section class="block block-core-list"></p>
<ul class="wp-block-list">
	<li>Maintains the stability and security of FreeBSD</li>
	<li>Optimized for modern workstations, desktop setups.</li>
	<li>Massively simplified</li>
	<li>Free and Open with source code on GitHub</li>
	<li>Optimized codecs for multimedia files.</li>
	<li>Project release as well as community releases.</li>
	<li>A GhostBSD package repository with 30,000+ applications.</li>
	<li>Slow moving rolling release

<ul>
	<li>Can be updated by command line.</li>
</ul>
</li>
	<li>Switched to TrueOS in 2018

<ul>
	<li>Built from 12.0-STABLE</li>
	<li>TrueOS depreciated in 2020</li>
</ul>
</li>
</ul>
<p></section>
<section class="block block-core-heading"></p>
<h4 class="wp-block-heading"><strong>User-end attributes:</strong></h4>
<p></section>
<section class="block block-core-list"></p>
<ul class="wp-block-list">
	<li>Shipped with a simplified installer.</li>
	<li>Choice between desktop environments.</li>
	<li>Comes with pre-installed commonly used software.</li>
	<li>Robust <a href="https://wiki.ghostbsd.org/index.php/Main_Page">community controlled wiki</a>.</li>
	<li>Easy to contribute to the project/report bugs.</li>
	<li>Community has full control of the GhostBSD community releases.</li>
	<li><a href="https://forums.ghostbsd.org/index.php">Community forums</a> for GhostBSD and FreeBSD questions/discussion.</li>
</ul>
<p></section>
<section class="block block-core-heading"></p>
<h4 class="wp-block-heading"><strong>Notable Future Plans:</strong></h4>
<p></section>
<section class="block block-core-list"></p>
<ul class="wp-block-list">
	<li>Possibility of a community release around the plasma5 desktop.</li>
	<li>Movement towards a rolling release schedule.</li>
	<li>Post TrueOS development.</li>
</ul>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h1 class="wp-block-heading">NomadBSD:</h1>
<p></section>
<section class="block block-core-heading"></p>
<h4 class="has-text-align-center wp-block-heading"> </h4>
<p></section>
<div class="wp-block-image"><section class="block block-core-image"></p>
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" class="wp-image-9436" src="https://staging.freebsdfoundation.org/wp-content/uploads/2021/05/ADmWT8a_400x400.jpg" alt="" width="260" height="260" srcset="https://staging.freebsdfoundation.org/wp-content/uploads/2021/05/ADmWT8a_400x400.jpg 400w, https://staging.freebsdfoundation.org/wp-content/uploads/2021/05/ADmWT8a_400x400-300x300.jpg 300w, https://staging.freebsdfoundation.org/wp-content/uploads/2021/05/ADmWT8a_400x400-150x150.jpg 150w" sizes="(max-width: 260px) 100vw, 260px" /></figure>
<p></section></div>
<section class="block block-core-heading"></p>
<h4 class="wp-block-heading"><mark class="has-inline-color">Novice – Advanced Users</mark></h4>
<p></section>
<section class="block block-core-paragraph"></p>
<p class="has-text-align-center"><a href="https://nomadbsd.org/" target="_blank" rel="noreferrer noopener">Project Website</a></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>“NomadBSD is a persistent live system for USB flash drives, based on FreeBSD. Together with automatic hardware detection and setup, it is configured to be used as a desktop system that works out of the box, but can also be used for data recovery, for educational purposes, or to test FreeBSD’s hardware compatibility.”</p>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h3 class="wp-block-heading"><strong>What Makes NomadBSD Unique:</strong></h3>
<p></section>
<section class="block block-core-heading"></p>
<h4 class="wp-block-heading"><strong>System attributes:</strong></h4>
<p></section>
<section class="block block-core-list"></p>
<ul class="wp-block-list">
	<li>Extremely low system requirements.

<ul>
	<li>Can be run by computers with a 1.2GHz CPU and 1GB of RAM.</li>
</ul>
</li>
	<li>A fully integrated desktop environment optimized by the operating system.</li>
	<li>Further executable programs with some settings adjustments.</li>
	<li>Requires a more advanced USB, USB3 preferred.</li>
	<li>The desktop environment is curated specifically for the OS.</li>
	<li>Tons of support for using the OS as a test environment.</li>
	<li>Minimal size while including a curated collection of applications.</li>
	<li>Automatic hardware detection and setup.</li>
	<li>Because of the boot process, can be used for data recovery.</li>
	<li>Small development team, more unified vision.</li>
	<li>Uses a live USB, allowing changes to be saved to a portable system.</li>
</ul>
<p></section>
<section class="block block-core-heading"></p>
<h4 class="wp-block-heading"><strong>End-user attributes:</strong></h4>
<p></section>
<section class="block block-core-list"></p>
<ul class="wp-block-list">
	<li>Automated, simplified setup with limited device configuration.</li>
	<li>Can serve as a tool for FreeBSD developers. (testing/data recovery)</li>
	<li>Focus on easy to use, guided computing.</li>
	<li>Innovative desktop features</li>
	<li>New <a href="https://forum.nomadbsd.org/">community forum</a>s created in March 2020</li>
	<li>Extremely portable due to size/live USB setup</li>
</ul>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h1 class="wp-block-heading" id="block-39737e5f-0fa9-4e1e-a0c3-e252b28b6ca6">helloSystem:</h1>
<p></section>
<section class="block block-core-paragraph"></p>
<p id="block-a0b6f9b2-489a-4b7d-b1b9-6f08e1515c8a"> </p>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<div class="wp-block-image"><section class="block block-core-image"></p>
<figure class="aligncenter size-large"><img decoding="async" class="wp-image-9113" src="https://staging.freebsdfoundation.org/wp-content/uploads/2021/02/hello_variation.svg" alt="" /></figure>
<p></section></div>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h4 class="wp-block-heading" id="block-ff01ba75-a4f1-4018-a737-b550f094f1d3"><mark class="has-inline-color">Novice – Advanced Users</mark></h4>
<p></section>
<section class="block block-core-paragraph"></p>
<p id="block-9d8b934b-2c31-434f-81eb-1b3da9e50390" class="has-text-align-center"><a title="https://hellosystem.github.io/docs/" href="https://hellosystem.github.io/docs/" target="_blank" rel="noreferrer noopener">Project Website</a></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p id="block-38010e04-ec80-4dc1-a84a-bb3158563b27">“<strong>hello</strong> (also known as <strong>helloSystem</strong>) is a desktop system for creators with a focus on simplicity, elegance, and usability. Its design follows the “Less, but better” philosophy. It is intended as a system for “mere mortals”, welcoming to switchers from the Mac. <a href="https://www.freebsd.org/" target="_blank" rel="noreferrer noopener">FreeBSD</a> is used as the core operating system.”</p>
<p></section>
<section class="block block-core-heading"></p>
<h3 class="wp-block-heading" id="block-146a1e94-4cb4-432e-a1bc-c64db79f34ba"><strong>What Makes helloSystem Unique:</strong></h3>
<p></section>
<section class="block block-core-heading"></p>
<h4 class="wp-block-heading" id="block-ee8842da-194d-4f30-9145-adcc30eef3d2"><strong>System attributes:</strong></h4>
<p></section>
<section class="block block-core-list"></p>
<ul class="wp-block-list" id="block-698392da-86fd-4826-86c4-9f79fa1e8efc">
	<li>Live ISO Builder.</li>
	<li>Continuous builds with multiple experimental releases in addition to stable.</li>
	<li>Low system requirements.</li>
	<li>Bare-Metal operating system but virtual machine support.</li>
	<li>Falkon browser included.</li>
	<li>Minimal architecture, but each piece has improvements.</li>
	<li>Custom <code>launch:</code> command.</li>
</ul>
<p></section>
<section class="block block-core-heading"></p>
<h4 class="wp-block-heading" id="block-fca7bf51-a7e7-4389-935d-b058f9314b41"><strong>End-user attributes:</strong></h4>
<p></section>
<section class="block block-core-list"></p>
<ul class="wp-block-list" id="block-b5dc8046-94fe-4f94-8150-b35f673e2e8c">
	<li>Instantly boots into desktop environment.</li>
	<li>No required set-up, but broad optimization/configuration settings.</li>
	<li>Focused on an out-of-box FreeBSD experience.</li>
	<li>Intended for Mac users looking to try other operating systems.</li>
	<li>Global Menu bar for efficiency.</li>
</ul>
<p></section>
<section class="block block-core-heading"></p>
<h4 class="wp-block-heading" id="block-fca7bf51-a7e7-4389-935d-b058f9314b41"><strong>Notable Future Plans:</strong></h4>
<p></section>
<section class="block block-core-list"></p>
<ul class="wp-block-list" id="block-b5dc8046-94fe-4f94-8150-b35f673e2e8c">
	<li>Significantly lowering RAM requirements.</li>
	<li>More build builds for other processor architectures</li>
	<li>Release for general use.</li>
	<li>Intended for Mac users looking to try other operating systems.</li>
	<li>Global Menu bar for efficiency.</li>
</ul>
<p></section><section class="block block-classic-editor"></p></section><p>The post <a href="https://staging.freebsdfoundation.org/resource/guide-to-freebsd-desktop-distributions/">Guide to FreeBSD Desktop Distributions</a> first appeared on <a href="https://staging.freebsdfoundation.org">FreeBSD Foundation</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>InstallFest How-To Guide P2</title>
		<link>https://staging.freebsdfoundation.org/resource/installfest-how-to-guide-p2/</link>
		
		<dc:creator><![CDATA[Anne Dickison]]></dc:creator>
		<pubDate>Mon, 15 Aug 2022 18:47:47 +0000</pubDate>
				<guid isPermaLink="false">https://freebsdfoundation.org/?post_type=resource&#038;p=11570</guid>

					<description><![CDATA[<p>The second part of our in depth guide to running your own FreeBSD Installfest, this section covers installing packages, setting up a desktop environment, and using poudriere and jails to further customize your system.</p>
<p>The post <a href="https://staging.freebsdfoundation.org/resource/installfest-how-to-guide-p2/">InstallFest How-To Guide P2</a> first appeared on <a href="https://staging.freebsdfoundation.org">FreeBSD Foundation</a>.</p>]]></description>
										<content:encoded><![CDATA[<section class="block block-classic-editor"><p></section><section class="block block-core-heading"></p>
<h3 class="has-text-align-center wp-block-heading"><strong>This Walkthrough is a Continuation of Part 1 of the InstallFest How-To Guide</strong></h3>
<p></section>
<section class="block block-core-paragraph"></p>
<p class="has-text-align-center"><a href="https://staging.freebsdfoundation.org/freebsd-project/resources/installfest-how-to-guide/" target="_blank" rel="noreferrer noopener">Follow the link here for part 1</a></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><strong>Updated: August 14, 2020</strong></p>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading"><strong>Step 2.1: Package Installation</strong></h2>
<p></section>
<section class="block block-core-separator"></p>
<hr class="wp-block-separator has-css-opacity" />
<p></section>
<div class="wp-block-image"><section class="block block-core-image"></p>
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" class="wp-image-9495" src="https://staging.freebsdfoundation.org/wp-content/uploads/2021/06/Firefox_Logo_2017-992x1024.png" alt="" width="144" height="148" /></figure>
<p></section></div>
<section class="block block-core-paragraph"></p>
<p>Packages can be downloaded in bulk by adding them to the same command line. Try this by installing the GNOME desktop environment, sudo, the vim editor, and Firefox in one line:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ pkg install -y gnome3 vim-console firefox</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>The -y flag in the previous command assumes a pre-confirmation to the installation process, so installation will start instantly.</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Gnome requires <code>/proc</code> to be mounted, in order to do this, run</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ vim /etc/fstab</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>This time we use the vim editor, Vi iMproved, and to begin typing you need to be in “insert mode” and must press ‘<code>i</code>‘ to enter insert mode and begin typing in text. Type in the following one-line configuration:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>proc      /proc      procfs      rw      0      0</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Exit vim by pressing “<code>Esc</code>” on the keyboard, then type <code>ZZ</code> or <code>:wq</code> followed by Enter/Return. At this point the virtual machine desktop can be started with the following command:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Change to regular user by holding down “<code>control</code>” and pressing “<code>d</code>” on the keyboard which will log out the current user.  Log in again, this time as the regular user account that was created and type the following commands.</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ echo "exec /usr/local/bin/gnome-session" &gt; ~/.xinitrc</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ startx</code></em></p>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading"><strong>Step 2.2: Desktop Configuration</strong></h2>
<p></section>
<section class="block block-core-separator"></p>
<hr class="wp-block-separator has-css-opacity" />
<p></section>
<div class="wp-block-image"><section class="block block-core-image"></p>
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" class="wp-image-9496" src="https://staging.freebsdfoundation.org/wp-content/uploads/2021/06/download-9.png" alt="" width="160" height="160" srcset="https://staging.freebsdfoundation.org/wp-content/uploads/2021/06/download-9.png 225w, https://staging.freebsdfoundation.org/wp-content/uploads/2021/06/download-9-150x150.png 150w" sizes="(max-width: 160px) 100vw, 160px" /></figure>
<p></section></div>
<section class="block block-core-paragraph"></p>
<p>Here is how to open a local copy of the handbook we installed in the Final Configuration:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Right click on: Desktop &gt; Applications &gt; Firefox Web Browser</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Open Firefox and navigate to the following URL: file:///usr/local/share/doc/freebsd/handbook/index.html</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>This is a local copy of the FreeBSD Handbook, and it will always be available as it doesn’t require an active internet connection. That’s all it takes to install FreeBSD. The next recommended step is to choose a firewall and configure it. Also recommend you pick up a copy of the book “BSD Hacks” to get more familiar with the tcsh shell as well as to acquire several new skills.</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Navigate back to Applications and open the terminal.</p>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading"><strong>Step 2.3: FreeBSD Update and Package</strong></h2>
<p></section>
<section class="block block-core-separator"></p>
<hr class="wp-block-separator has-css-opacity" />
<p></section>
<section class="block block-core-paragraph"></p>
<p>In the open terminal, run:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ sudo -i</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ env PAGER=cat freebsd-update fetch install</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>We’re using <code>env PAGER=cat</code> to modify the value of the <code>PAGER</code> variable which is used by the freebsd-update shell script. If you open up the shell script you will see the default value of <code>PAGER</code> is set to less. You can find the location of the freebsd-update shell script by typing which freebsd-update. By setting the value of <code>PAGER</code> to <code>cat</code>, freebsd-update will not stop to display the list of file to be updated, instead the cat command will only display the list of files and won’t stop to wait for you to read. If you only type freebsd-update fetch install, you’ll need to use the following to get through the prompts</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>‘<code>Page Down</code>‘ &amp; ‘<code>q</code>‘ should get you through the prompts. If the screen shows END press ‘<code>q</code>‘, use ‘<code>Page Down</code>‘ for the other screens. You can also use ‘q’ for every screen.</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Now that FreeBSD itself is up to date, we should also update the packages.</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ pkg update</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ pkg upgrade -y</code></em></p>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading"><strong>Step 2.4: Setting up Jails</strong></h2>
<p></section>
<section class="block block-core-separator"></p>
<hr class="wp-block-separator has-css-opacity" />
<p></section>
<div class="wp-block-image"><section class="block block-core-image"></p>
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" class="wp-image-9497" src="https://staging.freebsdfoundation.org/wp-content/uploads/2021/06/download-10.png" alt="" width="144" height="152" /></figure>
<p></section></div>
<section class="block block-core-paragraph"></p>
<p>Set UTF-8 as the locale for this host:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ vim /etc/login.conf</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Change the line with :umask=022: to look like the following:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><code>:umask=022:\</code> <code>:charset=UTF-8:\</code> <code>:lang=en_US.UTF-8:</code></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Save and quit the editor then run the following:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ cap_mkdb /etc/login.conf</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ logout</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Log in as root and type the following to verify UTF-8 locale has been set</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ locale</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Install iocage</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ pkg install -y py37-iocage</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>The following command assumes your <code>zpool</code> is named <code>zroot</code> adjust as necessary. Type <code>zpool</code> status to see the current name of your <code>zpool.</code></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ iocage activate zroot</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ iocage list</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>We should now see an empty table as the output of <code>iocage</code> list, we’ll do some additional housekeeping below to improve performance of <code>iocage</code>. There are many things you can do to optimize performance of various applications. One way to learn several new tips and tricks is to read the supurb collection of FreeBSD Mastery books available at <a href="https://mwl.io/">https://MWL.io</a> (In fact, the following performance optimization trick was in the book FreeBSD Mastery: Jails)</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ mount -t fdescfs null /dev/fd</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ vi /etc/fstab</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Add the following line to the file and exit when finished. ‘<code>i</code>‘ for insert mode, ‘<code>ESC</code>‘ then ‘<code>ZZ</code>‘ to save and quit the file. Press ‘<code>TAB</code>‘ between each of the fields for the fstab file rather than using spaces to separate fields.</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>fdescfs /dev/fd fdescfs rw 0 0</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Download a Release branch of FreeBSD first</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ iocage fetch</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>We used [<code>Enter</code>] to fetch the default release <code>iocage</code> wants to provide. Verify the download with the following command</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ iocage list -r</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>View the help documentation</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ iocage --help</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Any sub-commands can also have the –help flag appended</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ iocage create --help</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Create a base jail</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ iocage create -T -n JAILNAME ip4_addr="10.0.2.16" -r 12.1-RELEASE</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>List current jails</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ iocage list</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Startup jail-one and jump into the console</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ iocage console JAILNAME</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>The console command will start the jail if it isn’t already started. To manually start a jail use this:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ iocage start JAILNAME</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Similarly to stop a jail issue</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ iocage stop JAILNAME</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Verify networking is working</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ pkg</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Say yes to the pkg bootstrap prompt. Exit the jail console with <code>ctrl + d</code>.</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>To delete a jail:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ iocage destroy JAILNAME</code></em></p>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading"><strong>Step 2.5: Poudriere</strong></h2>
<p></section>
<section class="block block-core-separator"></p>
<hr class="wp-block-separator has-css-opacity" />
<p></section>
<section class="block block-core-paragraph"></p>
<p>The following commands will work on the virtual machine we’ve been using so far, but it will take a long time to compile all the packages.</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><strong>We’re going to use the cloned virtual machine we created earlier to explore Poudriere.</strong></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Start up the cloned VM.</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Execute the following commands as the root user:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ pkg install -y poudriere vim-console</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ mkdir /usr/ports/distfiles</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ mkdir /usr/local/poudriere</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ vim /usr/local/etc/poudriere.conf</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><code>poudriere.conf</code> content to modify</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><code>ZPOOL=zroot</code> <code>FREEBSD_HOST=https://download.freebsd.org</code></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Continue executing:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ poudriere jail -c -j amd64-12-1 -v 12.1-RELEASE</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ poudriere jail -l</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ poudriere ports -cp head</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ poudriere ports -l</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Get together a list of packages to build. I ran <code>pkg query -e '%a=0' %o</code> on my laptop and a large list appeared. <code>pkg query</code> on my VM was much shorter. To learn more about <code>pkg query</code> issue the command <code>pkg help query</code> to see help text for the query subcommand. Most commands support some form of help (-h, –help, or simply reading the man page with <code>man PROGRAM</code>) For this tutorial we will just build a shorter list of packages. The command to export the current packages installed on the system to a file called pkglist is:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ pkg query -e ‘%a=0’ %o | tee pkglist</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ editors/vim-console</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ ports-mgmt/pkg</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ ports-mgmt/poudriere</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><strong>Note</strong>: tee writes output to a file and also to stdout. Also the following two bits of information are optional for this tutorial and are included to show you how to customize packages.</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Two ways to configure custom options for packages, manually and with the normal make config screen. FYI: Manually looks like this:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ vim /usr/local/etc/poudriere.d/amd64-12-1-make.conf</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ DEFAULT_VERSIONS += ssl=libressl</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>To customize a package one can use the normal package configuration screens, which will appear when issuing the following command</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ poudriere options -j amd64-12-1 -p head -f pkglist</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>For this tutorial we’ll just actually build the packages with the default options to get the hang of Poudriere by issuing the following:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ poudriere bulk -j amd64-12-1 -p head -f pkglist</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ cd /usr/local/poudriere</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>This directory contains logs related to Poudriere builds. There are even a few different website files generated at <code>/data/logs/bulk/.html/</code> with information about the builds. You can open the website in Firefox using the URL <code>file:///data/logs/bulk/.html/index.html</code> to check on the status of a current Poudriere build. You can also press <code>ctrl + t</code> on the command line where you issued the <code>poudriere bulk</code> command to issue a SIGINFO to Poudriere which is configured to print out the current status of the Poudriere build while the command is still processing. This trick works on many other commands as well to show you the status. For instance if you were using <code>scp</code> to download a large file and wanted to see how far along the download was SIGINFO would print out the status on the command line to show you. Another example is if you were decompressing a zip file and wanted to know the status of the extraction process.</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Once Poudriere has finished, the packages that were built are available at</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ /data/packages/amd64-12-1-head</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Create a pkg repository</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ mkdir -p /usr/local/etc/pkg/repos</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Disable the main FreeBSD repo by creating a file to override the default settings found in the default FreeBSD repository <code>file /etc/pkg/FreeBSD.conf</code></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ vim /usr/local/etc/pkg/repos/FreeBSD.conf</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Type in the following configuration with enabled set to no</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>FreeBSD: {  <br />
        enabled: no  <br />
}</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Create a new configuration file for your local Poudriere package repository similar to the FreeBSD.conf file to hold the repository configuration</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ vim /usr/local/etc/pkg/repos/amd64-12-1.conf</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Add the following configuration</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>amd64-12-1: { <br />
          url: “file:///data/packages/amd64-12-1-head”,  <br />
          enabled: yes,  <br />
}</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>To reinstall all packages using the new repo</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ pkg upgrade -fy</code></em></p>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading"><strong>Step 2.6: Updating Poudriere</strong></h2>
<p></section>
<section class="block block-core-separator"></p>
<hr class="wp-block-separator has-css-opacity" />
<p></section>
<section class="block block-core-paragraph"></p>
<p>NOTE: A good Systems Administration practice is to add comments to your configs to let the future you know what the config options do and why there were put there in the first place. That way when you revisit a config file after some time, you’ll have some context as to why those options were chosen.</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ vim /usr/local/etc/poudriere.conf</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p># by default Poudriere builds all packages in the pkglist by default, these two lines tell Poudriere to look at each package individually</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><code>CHECK_CHANGED_OPTIONS=verbose</code> <code>CHECK_CHANGED_DEPS=yes</code></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ poudriere jail -j amd64-12-1 -u</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ poudriere ports -p head -u</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ poudriere bulk -j amd64-12-1 -p head -f pkglist</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>You can now install the updated packages:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ pkg update</code></em></p>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading">Some Additional Useful Commands:</h2>
<p></section>
<section class="block block-core-separator"></p>
<hr class="wp-block-separator has-css-opacity" />
<p></section>
<section class="block block-core-paragraph"></p>
<p><strong>Avoiding Issues</strong></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Terminate current command:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ ^C (Ctrl-C)</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Clear to start of line:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ ^U (Ctrl-U)</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><strong>Finding Information:</strong></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Manual page for the “cmd” command, replace with any other command to access its manual page:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ man cmd</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><strong>Rebooting / Shutting Down</strong></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Power Down:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ sudo shutdown –p now</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Reboot:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ sudo shutdown –r now</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Log Out:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ exit</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ logout</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><strong>Directory Navigation</strong></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Display present work directory:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ pwd</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>List contents of current directory:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ ls</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><strong>Files</strong></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Create file if it does not exist:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ touch filename</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Delete file:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ rm filename</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Rename a file:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ mv oldname newname</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Search for a file: (full filename is not needed)</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ locate filename</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><strong>File editing</strong></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ vi filename</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ ee filename</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><strong>Change to your home directory</strong></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ cd</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ cd ~</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><strong>Change to parent directory</strong></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ cd ..</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><strong>Change to previous directory</strong></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ cd -</code></em></p>
<p></section>
<section class="block block-core-heading"></p>
<h3 class="wp-block-heading"> </h3>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h3 class="wp-block-heading">Additional Resources: </h3>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Website: <a href="http://www.freebsd.org" target="_blank" rel="noreferrer noopener">www.freebsd.org</a></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>FreeBSD Foundation: <a href="https://staging.freebsdfoundation.org/" target="_blank" rel="noreferrer noopener">archive.freebsdfoundation.org</a></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>GitHub: <a href="http://github.com/freebsd" target="_blank" rel="noreferrer noopener">github.com/freebsd </a> </p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Mailing Lists: <a href="https://lists.freebsd.org/mailman/listinfo" target="_blank" rel="noreferrer noopener">https://lists.freebsd.org/mailman/listinfo</a></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Forums: <a href="https://forums.freebsd.org" target="_blank" rel="noreferrer noopener">https://forums.freebsd.org</a></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>FreeBSD Handbook:<a href="https://www.freebsd.org/doc/handbook/" target="_blank" rel="noreferrer noopener"> https://www.freebsd.org/doc/handbook/</a></p>
<p></section><section class="block block-classic-editor"></p></section><p>The post <a href="https://staging.freebsdfoundation.org/resource/installfest-how-to-guide-p2/">InstallFest How-To Guide P2</a> first appeared on <a href="https://staging.freebsdfoundation.org">FreeBSD Foundation</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>InstallFest How-To Guide</title>
		<link>https://staging.freebsdfoundation.org/resource/installfest-how-to-guide/</link>
		
		<dc:creator><![CDATA[Anne Dickison]]></dc:creator>
		<pubDate>Mon, 15 Aug 2022 18:40:33 +0000</pubDate>
				<guid isPermaLink="false">https://freebsdfoundation.org/?post_type=resource&#038;p=11567</guid>

					<description><![CDATA[<p>The first part of our in depth guide to running your own FreeBSD Installfest, this section covers FreeBSD installation, system configuration, and GUI prep.</p>
<p>The post <a href="https://staging.freebsdfoundation.org/resource/installfest-how-to-guide/">InstallFest How-To Guide</a> first appeared on <a href="https://staging.freebsdfoundation.org">FreeBSD Foundation</a>.</p>]]></description>
										<content:encoded><![CDATA[<section class="block block-classic-editor"><p></section><section class="block block-core-paragraph"></p>
<p><strong>Updated: June 15, 2022</strong></p>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading"><strong>1.1 Identifying Your Computer:</strong></h2>
<p></section>
<section class="block block-core-separator"></p>
<hr class="wp-block-separator has-css-opacity" />
<p></section>
<section class="block block-core-heading"></p>
<h4 class="wp-block-heading">macOS:</h4>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Start by opening up the terminal, found under Applications &gt; Utilities &gt; Terminal. Then use the code:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>sysctl -n machdep.cpu.brand_string</code></em></p>
<p></section>
<div class="wp-block-image"><section class="block block-core-image"></p>
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" class="wp-image-7748" src="https://staging.freebsdfoundation.org/wp-content/uploads/2020/03/save3-1024x102-1.png" alt="" width="547" height="95" srcset="https://staging.freebsdfoundation.org/wp-content/uploads/2020/03/save3-1024x102-1.png 583w, https://staging.freebsdfoundation.org/wp-content/uploads/2020/03/save3-1024x102-1-300x52.png 300w" sizes="(max-width: 547px) 100vw, 547px" /></figure>
<p></section></div>
<section class="block block-core-paragraph"></p>
<p>This will return a string identifying the computer’s processor. Running a web search for this processor will take you to the manufacturers website, which should list the processor’s stats as well as whether it is 32-bit or 64-bit.</p>
<p></section>
<section class="block block-core-heading"></p>
<h4 class="wp-block-heading">Windows:</h4>
<p></section>
<div class="wp-block-image"><section class="block block-core-image"></p>
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" class="wp-image-5160" src="https://staging.freebsdfoundation.org/wp-content/uploads/2016/06/windows_system_info-e1584820042943-1024x606.png" alt="" width="635" height="376" srcset="https://staging.freebsdfoundation.org/wp-content/uploads/2016/06/windows_system_info-e1584820042943-1024x606.png 1024w, https://staging.freebsdfoundation.org/wp-content/uploads/2016/06/windows_system_info-e1584820042943-300x178.png 300w, https://staging.freebsdfoundation.org/wp-content/uploads/2016/06/windows_system_info-e1584820042943.png 1084w" sizes="(max-width: 635px) 100vw, 635px" /></figure>
<p></section></div>
<section class="block block-core-paragraph"></p>
<p>Navigate to “Control Panel → System and Security → System” and look for the highlighted information to determine whether your system is 32-bit or 64-bit.</p>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading">1.<strong>2 Installing VirtualBox</strong></h2>
<p></section>
<section class="block block-core-separator"></p>
<hr class="wp-block-separator has-css-opacity" />
<p></section>
<section class="block block-core-paragraph"></p>
<p>Visit the <a href="https://www.virtualbox.org/wiki/Downloads" target="_blank" rel="noreferrer noopener">VirtualBox downloads website</a>, and in the highlighted area, select the <em>platform package binary</em> that applies to your operating system. VirtualBox is available on <strong>Windows, macOS, Linux, and Solaris</strong>.</p>
<p></section>
<div class="wp-block-image"><section class="block block-core-image"></p>
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" class="wp-image-5158" src="https://staging.freebsdfoundation.org/wp-content/uploads/2016/06/virtual_box_download-e1584821388890.png" alt="" width="567" height="262" srcset="https://staging.freebsdfoundation.org/wp-content/uploads/2016/06/virtual_box_download-e1584821388890.png 943w, https://staging.freebsdfoundation.org/wp-content/uploads/2016/06/virtual_box_download-e1584821388890-300x139.png 300w" sizes="(max-width: 567px) 100vw, 567px" /></figure>
<p></section></div>
<section class="block block-core-paragraph"></p>
<p>Opening the downloaded file will start the installation walkthrough. Once it finishes, you’ll be able to launch the application.</p>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading"><strong>1.3 Getting the latest FreeBSD release:</strong></h2>
<p></section>
<section class="block block-core-separator"></p>
<hr class="wp-block-separator has-css-opacity" />
<p></section>
<section class="block block-core-heading"></p>
<h4 class="wp-block-heading">   </h4>
<p></section>
<section class="block block-core-heading"></p>
<h3 class="wp-block-heading">Downloading FreeBSD</h3>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Visit the official <a href="https://www.freebsd.org/where.html" target="_blank" rel="noreferrer noopener">FreeBSD releases page</a>. The disk images are listed <em>in order of release date</em>, so the most recent release can be found at the top of the page as highlighted.</p>
<p></section>
<section class="block block-core-list"></p>
<ul class="wp-block-list">
	<li>For <strong>32-bit</strong> machines, click on <strong>i386</strong></li>
	<li>For <strong>64-bit</strong> machines, click on <strong>amd64</strong></li>
</ul>
<p></section>
<div class="wp-block-image"><section class="block block-core-image"></p>
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="349" class="wp-image-11385" src="https://staging.freebsdfoundation.org/wp-content/uploads/2022/06/Screenshot-2022-06-15-112316-1024x349.png" alt="" srcset="https://staging.freebsdfoundation.org/wp-content/uploads/2022/06/Screenshot-2022-06-15-112316-1024x349.png 1024w, https://staging.freebsdfoundation.org/wp-content/uploads/2022/06/Screenshot-2022-06-15-112316-300x102.png 300w, https://staging.freebsdfoundation.org/wp-content/uploads/2022/06/Screenshot-2022-06-15-112316.png 1067w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
<p></section></div>
<section class="block block-core-paragraph"></p>
<p>After clicking the link, you will be redirected to a file directory containing multiple formats and versions of the FreeBSD installer.</p>
<p></section>
<section class="block block-core-heading"></p>
<h3 class="wp-block-heading">Identifying the Correct Disk Image</h3>
<p></section>
<div class="wp-block-image"><section class="block block-core-image"></p>
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="205" class="wp-image-11386" src="https://staging.freebsdfoundation.org/wp-content/uploads/2022/06/Screenshot-2022-06-15-112332-1024x205.png" alt="" srcset="https://staging.freebsdfoundation.org/wp-content/uploads/2022/06/Screenshot-2022-06-15-112332-1024x205.png 1024w, https://staging.freebsdfoundation.org/wp-content/uploads/2022/06/Screenshot-2022-06-15-112332-300x60.png 300w, https://staging.freebsdfoundation.org/wp-content/uploads/2022/06/Screenshot-2022-06-15-112332-1536x308.png 1536w, https://staging.freebsdfoundation.org/wp-content/uploads/2022/06/Screenshot-2022-06-15-112332-2048x411.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
<p></section></div>
<section class="block block-core-paragraph"></p>
<p>For Virtual Machines, the format you are looking for is the file ending in <strong>-disk.iso</strong> as shown above. Click this file and it will start downloading the installer.</p>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading">1.<strong>4 Configuring and Starting FreeBSD on VirtualBox:</strong></h2>
<p></section>
<section class="block block-core-separator"></p>
<hr class="wp-block-separator has-css-opacity" />
<p></section>
<section class="block block-core-paragraph"></p>
<p>Once the FreeBSD installer has been downloaded in the last step, run VirtualBox to start hard disk configuration. Select the “New” button on the top left of the window to open the configuration window. </p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Name your operating system as “FreeBSD”, then select FreeBSD from the dropdown menu as well as the version (32 or 64 bit).</p>
<p></section>
<div class="wp-block-image"><section class="block block-core-image"></p>
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" class="wp-image-6892" src="https://staging.freebsdfoundation.org/wp-content/uploads/2019/03/Screen-Shot-2019-02-28-at-6.12.28-PM-e1584821693321-1024x608.png" alt="" width="631" height="374" srcset="https://staging.freebsdfoundation.org/wp-content/uploads/2019/03/Screen-Shot-2019-02-28-at-6.12.28-PM-e1584821693321-1024x608.png 1024w, https://staging.freebsdfoundation.org/wp-content/uploads/2019/03/Screen-Shot-2019-02-28-at-6.12.28-PM-e1584821693321-300x178.png 300w, https://staging.freebsdfoundation.org/wp-content/uploads/2019/03/Screen-Shot-2019-02-28-at-6.12.28-PM-e1584821693321.png 1323w" sizes="(max-width: 631px) 100vw, 631px" /></figure>
<p></section></div>
<section class="block block-core-paragraph"></p>
<p>Choose the defaults options for disc setup until you reach the memory allocation section</p>
<p></section>
<section class="block block-core-list"></p>
<ul class="wp-block-list">
	<li>Pick 2-4GB memory (as long as the slider does not move into the red)</li>
	<li>Hardware drive Option – Recommend 100GB at least 20GB</li>
	<li>Give the VM some extra processors if your machine can handle it (stay in the green)</li>
</ul>
<p></section>
<section class="block block-core-paragraph"></p>
<p>After the hard disk has been configured, boot up the operating system with the “Start” button. VirtualBox will start up a virtual machine and ask for a <em>virtual optical disk file</em>. This will be the <strong>.iso</strong> file that you downloaded through the FreeBSD website. Navigate to this file by clicking the small file symbol next to the drop-down menu. Once selected, the booting process will continue and the FreeBSD installer will start.</p>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading">1.<strong>5 Installing FreeBSD:</strong></h2>
<p></section>
<section class="block block-core-separator"></p>
<hr class="wp-block-separator has-css-opacity" />
<p></section>
<div class="wp-block-image"><section class="block block-core-image"></p>
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" class="wp-image-5218" src="https://staging.freebsdfoundation.org/wp-content/uploads/2017/05/freebsd_bootscreen-e1585249387619.png" alt="" width="679" height="378" srcset="https://staging.freebsdfoundation.org/wp-content/uploads/2017/05/freebsd_bootscreen-e1585249387619.png 722w, https://staging.freebsdfoundation.org/wp-content/uploads/2017/05/freebsd_bootscreen-e1585249387619-300x167.png 300w" sizes="(max-width: 679px) 100vw, 679px" /></figure>
<p></section></div>
<section class="block block-core-paragraph"></p>
<p>The FreeBSD booting system will automatically start once VirtualBox starts the virtual machine. While this how-to will provide a detailed installation guide, the <a href="https://www.freebsd.org/doc/handbook/using-bsdinstall.html">FreeBSD handbook’s installation guide</a> can also be used. <em>When in doubt, use the default options provided</em>, as they can be reconfigured later if necessary.</p>
<p></section>
<section class="block block-core-list"></p>
<ol class="wp-block-list">
	<li>After the first boot, users will be directed to the welcome menu. <strong>Arrow </strong>keys can be used to navigate through the options while the <strong>Enter</strong> key will be used to save the selection and move onto the next menu. To begin installation, select the first [ Install ] option.</li>
	<li>This will enter bdsinstall, a program that allows users to install FreeBSD while offering multiple options for customization. For now, default options will be all that’s needed. The options are a great tool for more advanced users wanting a more personalized experience.</li>
	<li>First, the installer will display a menu for keymap selection. Highlight the option to continue with the default keymap and press <strong>Enter</strong> to use the default keyboard layout.</li>
	<li>The installer will then allow the user to set a hostname for the system. Type in a hostname that is unique for your network. Hit <strong>Enter</strong> again to save the new name.</li>
	<li>After a hostname is selected and saved, the installer will prompt the user to select components to install. Stick with the default options and hit <strong>Enter</strong> to continue.</li>
	<li>The installer will guide the user through the process of allocating disk space. This will allow FreeBSD to set up a partition scheme.

<ul>
	<li>Choose the Auto (UFS) Guided Disk Setup.</li>
	<li>Confirm your selection.</li>
	<li>Use the Entire disk (ada0), this will make sure that all allocation disk space will be utilized.</li>
	<li>Select GPT Partitions when prompted for a partition scheme. To navigate, use the <strong>arrow keys</strong> and <strong>Space </strong>to select the GPT option.</li>
</ul>
</li>
	<li>When prompted, complete the setup process and create the disk partition by selecting [ Finish ] and [ Commit ]. Once these changes have been saved and committed, bsdinstall will start the FreeBSD installation process. This may take a few minutes.</li>
</ol>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading">1.<strong>6 Post- Installation Setup</strong></h2>
<p></section>
<section class="block block-core-separator"></p>
<hr class="wp-block-separator has-css-opacity" />
<p></section>
<section class="block block-core-paragraph"></p>
<p>While the FreeBSD installation process has been completed, there a few more configuration options that need to be set before booting into the newly installed system.</p>
<p></section>
<section class="block block-core-list"></p>
<ol class="wp-block-list">
	<li>First, the <em>root </em>password must be set. The <em>root</em> account is a superuser that has access to all files and commands. Characters that are typed during this section will not be displayed on the screen. Type the new root password and then a second time when prompted.</li>
	<li>Next, FreeBSD will need to configure the network interfaces found on the computer. Select <strong>Enter</strong> to continue. The default options should be used.

<ul>
	<li>Select [ Yes ] to configure IPv4</li>
	<li>Select [ Yes ] to use DHCP to configure</li>
	<li>Select [ Yes ] to configure IPv6</li>
	<li>Select [ Yes ] to try SLAAC</li>
	<li>At this point you will be directed to a menu with Resolver Configuration values, hit <strong>Enter</strong> to continue to the next step.</li>
</ul>
</li>
	<li>The next menu is a large list of regions for time zone configuration. Use the arrow keys to navigate to the correct region and hit <strong>Enter</strong>. Next, navigate to the correct country or region. Finally, identify and choose the correct time zone. Select [ Yes] to confirm.</li>
	<li>A menu to set the correct date will be next, while you can navigate through the menu to set date, choose [ Skip ] if the displayed date is already correct. [ Skip ] the next menu as the time zone was set up in the previous configuration menu.</li>
	<li>The next two menus will be to configure what system services will be started when the system boots. All services are optional and for now select [ OK ] in both menus to continue with the default configuration.</li>
	<li>The next step will be to add a user besides <em>root</em>. Because <em>root </em>has no limits and protection, it is recommended to log in to the system using a user account to limit the damage if a mistake is made (even a typo could be catastrophic).</li>
	<li>When prompted to create a user account select [ Yes ]. Bsdinstall will follow with a series of prompts to customize the account. Below is a quick summary of the information to input. For clarity, text in bold notates when the user should input text and not just use the default option:

<ul>
	<li>Username – username used to log in. <strong>Username is case sensitive and should not contain spaces</strong></li>
	<li>Full name – <strong>The user’s full name</strong></li>
	<li>Uid – user ID (leave this blank)</li>
	<li>Login group – The user’s group (leave blank)</li>
	<li>Invite user into other groups? – Additional groups for the user. <strong>Type: <em>wheel operator video  </em></strong><strong>here, which will assign the user to the wheel (admin), operator, and video groups.</strong></li>
	<li>Login Class – (leave blank)</li>
	<li>Shell – (leave blank)</li>
	<li>Home directory – The user’s home directory (leave blank)</li>
	<li>Home directory permissions – Permissions on the user’s home directory (leave blank)</li>
	<li>Use password-based authentication? – Prompts user to input password at logic (leave blank)</li>
	<li>Use an empty password? – Option to use a blank password, though this is insecure (leave blank)</li>
	<li>Use a random password? – Option for a randomized password (leave blank)</li>
	<li>Enter password – The password for this user. <strong>Characters typed will not show on screen.</strong></li>
	<li>Enter password again – <strong>The password must be typed again for verification.</strong></li>
	<li>Lock out the account after creation? – Option to lock out use (leave blank)</li>
	<li>User will be prompted to review the summary. If a mistake was made enter <em>no</em> and try again. If everything is correct, enter <em>yes</em> to finalize and create the new user. The menu will then ask if the user wants to create further user accounts, for now enter <em>no.</em></li>
</ul>
</li>
	<li>Final configuration: Use the arrow keys to navigate to <em>Handbook </em>and press <strong>Enter</strong> to install the FreeBSD Handbook. Select [ Ok ] to begin installation.</li>
	<li>Navigate to <em>Exit </em>and hit <strong>Enter</strong> to finalize changes. Select [ No ] when asked if further manual configuration is required and [ Reboot ] to complete the FreeBSD installation process.</li>
</ol>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading"><strong>1.7 Saving Your Configuration:</strong></h2>
<p></section>
<section class="block block-core-separator"></p>
<hr class="wp-block-separator has-css-opacity" />
<p></section>
<section class="block block-core-paragraph"></p>
<p>Once FreeBSD has been properly configured, a window will appear asking to reboot. Select “yes” and wait until the FreeBSD booting page appears again. Once this happens, manually close the virtual machine window and select “Power off the machine”.</p>
<p></section>
<div class="wp-block-image"><section class="block block-core-image"></p>
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" class="wp-image-4091" src="https://staging.freebsdfoundation.org/wp-content/uploads/2016/06/ScreenShot2016-06-14at1.23.48PM-e1584822254802-1024x384.png" alt="" width="573" height="214" srcset="https://staging.freebsdfoundation.org/wp-content/uploads/2016/06/ScreenShot2016-06-14at1.23.48PM-e1584822254802-1024x384.png 1024w, https://staging.freebsdfoundation.org/wp-content/uploads/2016/06/ScreenShot2016-06-14at1.23.48PM-e1584822254802-300x113.png 300w, https://staging.freebsdfoundation.org/wp-content/uploads/2016/06/ScreenShot2016-06-14at1.23.48PM-e1584822254802.png 1280w" sizes="(max-width: 573px) 100vw, 573px" /></figure>
<p></section></div>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading">1.<strong>8 Removing the Installation Disk:</strong></h2>
<p></section>
<section class="block block-core-separator"></p>
<hr class="wp-block-separator has-css-opacity" />
<p></section>
<section class="block block-core-paragraph"></p>
<p>On the main VirtualBox application, click the the section (on the lower right side of the window) that says “Storage”. A new window should appear showing the storage options.</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Under the main “Controller: IDE” there will be two options. One will be the hard disk that VirtualBox created for the system (it will have a square blue hard drive icon) and the other is the original FreeBSD download (with a light blue disk icon). Right click the <em>sub-storage</em> with the disk icon and select “Remove” from the drop-down menu.</p>
<p></section>
<div class="wp-block-image"><section class="block block-core-image"></p>
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" class="wp-image-4092" src="https://staging.freebsdfoundation.org/wp-content/uploads/2016/06/ScreenShot2016-06-09at10.52.13AM-e1584822334646-1024x299.png" alt="" width="732" height="214" /></figure>
<p></section></div>
<section class="block block-core-paragraph"></p>
<p>Once it is removed, the window should resemble the one pictured above.</p>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading">1.<strong>9 Cloning a VirtualBox VM</strong></h2>
<p></section>
<section class="block block-core-separator"></p>
<hr class="wp-block-separator has-css-opacity" />
<p></section>
<section class="block block-core-paragraph"></p>
<p>Use the Snapshots menu in VirtualBox to Clone the VM. Check the box “Reinitialize the MAC address of all network cards”. We could choose either a Full clone or a Linked clone. We’ll use the Full clone option. Later on in the installfest we’ll use this cloned VM.</p>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading">1.<strong>10 Final Configurations:</strong></h2>
<p></section>
<section class="block block-core-separator"></p>
<hr class="wp-block-separator has-css-opacity" />
<p></section>
<section class="block block-core-paragraph"></p>
<p>Click “Start” with the original VM selected, and the FreeBSD virtual machine should now boot in its configured form. In order to download packages you need to be logged into, or emulate the root user. After logging into the previously created user, enter the following command in the terminal:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ su</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Install the VirtualBox guest addition packages, and configure the startup service configuration:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ pkg install emulators/virtualbox-ose-additions</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ sysrc vboxguest_enable=YES</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ sysrc vboxservice_enable=YES</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>sysrc is a pre-packaged command that allows rc.conf (system configuration to be read on boot) to be edited from the command line, without using a text editor.</p>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading">1.11 GUI (Desktop) Prep</h2>
<p></section>
<section class="block block-core-separator"></p>
<hr class="wp-block-separator has-css-opacity" />
<p></section>
<div class="wp-block-image"><section class="block block-core-image"></p>
<figure class="aligncenter"><img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/7/77/Xwin.png" alt="" /></figure>
<p></section></div>
<section class="block block-core-paragraph"></p>
<p>Before installing a desktop environment, a graphical user interface (GUI) is needed. The X Window System is an open source GUI that supports FreeBSD and offers a ton of customization and user tools.</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>To install the Xorg binary package and configure the X Window System:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ pkg install -y xorg</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ ee /boot/loader.conf</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><code>ee(1)</code> is the first text editor we will be using, the following line can be added simply by typing it:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>kern.vty=vt</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Escape and then hit Enter twice to save changes and exit the <code>ee(1)</code> editor:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ ee /usr/local/etc/X11/xorg.conf.d/driver-vboxvideo.conf</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Use the same method above and add the following content to the new file:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>Section “Device”</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>          Identifier "Card0"</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>          Driver "vboxvideo"</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>EndSection</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Enter the following commands:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ sysrc dbus_enable=YES </code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ sysrc hald_enable=YES</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ dbus-uuidgen &gt; /etc/machine-id </code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ pkg install -y sudo </code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ visudo</code></em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>(we will use another text editor, the vi editor, to edit sudo )</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Within the sudo config type <code>/wheel</code> press <code>Enter</code> and uncomment the line below to allow all members of the wheel group to use sudo (in vi you can type the following to accomplish this task: <code>j0xxZZ</code>) ( pressing j moves down, 0 moves to the beginning of a line, x deletes one character, ZZ is saves and quits)</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p><em><code>$ reboot</code></em></p>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="has-text-align-center wp-block-heading">The Guide Continues in Part II!</h2>
<p></section>
<section class="block block-core-paragraph"></p>
<p class="has-text-align-center"><a href="https://staging.freebsdfoundation.org/freebsd-project/resources/installfest-how-to-guide-p2/" target="_blank" rel="noreferrer noopener">Follow the link here</a></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p class="has-text-align-center">The next part will include installing a desktop environment, updating FreeBSD, setting up a FreeBSD jail, as well as using Ansible and Poudriere.</p>
<p></section><section class="block block-classic-editor"></p></section><p>The post <a href="https://staging.freebsdfoundation.org/resource/installfest-how-to-guide/">InstallFest How-To Guide</a> first appeared on <a href="https://staging.freebsdfoundation.org">FreeBSD Foundation</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Networking Basics: WiFi and Bluetooth</title>
		<link>https://staging.freebsdfoundation.org/resource/networking-basics-wifi-and-bluetooth/</link>
		
		<dc:creator><![CDATA[Anne Dickison]]></dc:creator>
		<pubDate>Mon, 15 Aug 2022 18:33:01 +0000</pubDate>
				<guid isPermaLink="false">https://freebsdfoundation.org/?post_type=resource&#038;p=11565</guid>

					<description><![CDATA[<p>Our latest how-to guide is all about networks, covering the basics of Wi-Fi and Bluetooth. Learn how to set up and configure Wi-Fi and Bluetooth on FreeBSD devices, even when the network is hidden. Further setup for USB tethering and using your FreeBSD device as an access point is also covered. This is intended to be an introductory level guide, with only limited required experience of the FreeBSD operating system.</p>
<p>The post <a href="https://staging.freebsdfoundation.org/resource/networking-basics-wifi-and-bluetooth/">Networking Basics: WiFi and Bluetooth</a> first appeared on <a href="https://staging.freebsdfoundation.org">FreeBSD Foundation</a>.</p>]]></description>
										<content:encoded><![CDATA[<section class="block block-classic-editor"><p></section><section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<div class="wp-block-image"><section class="block block-core-image"></p>
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="512" class="wp-image-11216" src="https://staging.freebsdfoundation.org/wp-content/uploads/2022/04/Untitled-design-8-1024x512.png" alt="" srcset="https://staging.freebsdfoundation.org/wp-content/uploads/2022/04/Untitled-design-8-1024x512.png 1024w, https://staging.freebsdfoundation.org/wp-content/uploads/2022/04/Untitled-design-8-300x150.png 300w, https://staging.freebsdfoundation.org/wp-content/uploads/2022/04/Untitled-design-8-1536x768.png 1536w, https://staging.freebsdfoundation.org/wp-content/uploads/2022/04/Untitled-design-8-2048x1024.png 2048w, https://staging.freebsdfoundation.org/wp-content/uploads/2022/04/Untitled-design-8.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
<p></section></div>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading" id="_kernel_configuration">Wireless Configuration/Set-up</h2>
<p></section>
<section class="block block-core-separator"></p>
<hr class="wp-block-separator has-css-opacity" />
<p></section>
<section class="block block-core-paragraph"></p>
<p>A wireless networking card is required to use a wireless network, FreeBSD will also need to be configured to the correct wireless network support. The correct module will need to be modified, depending on the type of networking card. The most commonly used wireless devices are those that use parts made by Atheros. These devices are supported by <a href="https://www.freebsd.org/cgi/man.cgi?query=ath&amp;sektion=4&amp;format=html" target="_blank" rel="noreferrer noopener">ath(4)</a> and require the following line to be added to <code>/boot/loader.conf</code>:</p>
<p></section>
<section class="block block-core-preformatted"></p>
<pre class="wp-block-preformatted"><code>if_ath_load="YES"</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>If unsure about the device, you can identify many common wireless adaptors through the use of the  <a href="https://www.freebsd.org/cgi/man.cgi?query=sysctl&amp;sektion=8&amp;format=html" target="_blank" rel="noreferrer noopener">sysctl(8)</a> <code>net.wlan.devices</code> variable:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code>% sysctl net.wlan.devices</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>To load support for a different type of wireless device, specify the module for that device. This example is for devices based on the Intersil Prism parts (<a href="https://www.freebsd.org/cgi/man.cgi?query=wi&amp;sektion=4&amp;format=html" target="_blank" rel="noreferrer noopener">wi(4)</a>) driver:</p>
<p></section>
<section class="block block-core-preformatted"></p>
<pre class="wp-block-preformatted"><code>if_wi_load="YES"</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p><strong>Note:</strong><em> A list of available wireless drivers and supported adapters can be found in the FreeBSD Hardware Notes, available on the <a href="https://www.freebsd.org/releases/" target="_blank" rel="noreferrer noopener">Release Information</a> page of the FreeBSD website. </em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>In addition, the modules that implement cryptographic support for the security protocols to use must be loaded. These are intended to be dynamically loaded on demand by the <a href="https://www.freebsd.org/cgi/man.cgi?query=wlan&amp;sektion=4&amp;format=html" target="_blank" rel="noreferrer noopener">wlan(4)</a> module. To load these modules at boot time, add the following lines to /boot/loader.conf:</p>
<p></section>
<section class="block block-core-preformatted"></p>
<pre class="wp-block-preformatted">wlan_wep_load="YES"
wlan_ccmp_load="YES"
wlan_tkip_load="YES"</pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Information about the wireless device should appear in the boot messages, like this:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code>ath0: &lt;Atheros 5212&gt; mem 0x88000000-0x8800ffff irq 11 at device 0.0 on cardbus1
ath0: [ITHREAD]
ath0: AR2413 mac 7.9 RF2413 phy 4.5</code></pre>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading">Connecting to a Network:</h2>
<p></section>
<section class="block block-core-separator"></p>
<hr class="wp-block-separator has-css-opacity" />
<p></section>
<section class="block block-core-heading"></p>
<h3 class="wp-block-heading">Open Networks</h3>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Directly connecting to an unsecure network, while not recommended, is extremely common. It&#8217;s also a very simple process on FreeBSD. In this example I&#8217;ll beconnecting to the John F Kennedy International Airport&#8217;s free WiFi.</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Start by finding the name of the network:</p>
<p></section>
<section class="block block-core-preformatted"></p>
<pre class="wp-block-preformatted">ifconfig wlan0 up scan</pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>This will look for available networks and return a list, In this case, we want to connect to the JFK free wifi so we&#8217;ll use:</p>
<p></section>
<section class="block block-core-preformatted"></p>
<pre class="wp-block-preformatted">ifconfig wlan0 ssid _Free JFK WiFi</pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Hopefully you will see that it&#8217;s joined, and running ifconfig ath0 will show that it&#8217;s associated. You can then get an address with:</p>
<p></section>
<section class="block block-core-preformatted"></p>
<pre class="wp-block-preformatted">dhclient wlan0</pre>
<p></section>
<section class="block block-core-heading"></p>
<h3 class="wp-block-heading"><strong>WPA/WPA2/Personal</strong></h3>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Most home/private networks will rely on these security protocols. Connecting a computer to an existing WPA/WPA2/Personal wireless network is a very common situation.</p>
<p></section>
<section class="block block-core-list"></p>
<ul class="wp-block-list">
	<li>Obtain the SSID (Service Set Identifier) and PSK (Pre-Shared Key) from the network administrator, these may also be listed on the router.</li>
	<li>Add an entry for this network to <code>/etc/wpa_supplicant.conf</code>. If the file does not exist, create it. Replace <em>myssid</em> and <em>mypsk</em> with the SSID and PSK provided by the network administrator.</li>
</ul>
<p></section>
<section class="block block-core-preformatted"></p>
<pre class="wp-block-preformatted">network={ 
        ssid="myssid" 
        psk="mypsk" 
}
</pre>
<p></section>
<section class="block block-core-list"></p>
<ul class="wp-block-list">
	<li><strong>Note</strong>: If the wireless network is <em>hidden</em>, add an additional line to indicate that the network is not publicly visible.</li>
</ul>
<p></section>
<section class="block block-core-preformatted"></p>
<pre class="wp-block-preformatted">network={
        scan_ssid=1
        ssid="mywpa"
        psk="1234"
}</pre>
<p></section>
<section class="block block-core-list"></p>
<ul class="wp-block-list">
	<li>Add entries to <code>/etc/rc.conf</code> to configure the network on startup. Make sure to use the correct wireless adapter as identified earlier (this example will use the Atheros <code>ath0</code> wireless adapter).</li>
</ul>
<p></section>
<section class="block block-core-preformatted"></p>
<pre class="wp-block-preformatted">wlans_ath0="wlan0" 
ifconfig_wlan0="WPA SYNCDHCP"</pre>
<p></section>
<section class="block block-core-list"></p>
<ul class="wp-block-list">
	<li>Restart the computer, or restart the network service to connect to the network:</li>
</ul>
<p></section>
<section class="block block-core-preformatted"></p>
<pre class="wp-block-preformatted"># service netif restart</pre>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading">FreeBSD as an Access Point:</h2>
<p></section>
<section class="block block-core-separator"></p>
<hr class="wp-block-separator has-css-opacity" />
<p></section>
<section class="block block-core-paragraph"></p>
<p>FreeBSD can act as an Access Point (AP) in order to act as a gateway or to eliminate the need to purchase AP hardware. Before an Access Point can be set up, the kernel must be configured with the appropriate networking support for the wireless card as well as the security protocols being used. This mode is only supported by native FreeBSD wireless drivers.</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>After setting up wireless networking, you can check if the device supports host-based access point mode:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># ifconfig wlan0 create wlandev ath0
# ifconfig wlan0 list caps
drivercaps=6f85edc1&lt;STA,FF,TURBOP,IBSS,<strong><span class="has-inline-color has-luminous-vivid-orange-color">HOSTAP</span></strong>,AHDEMO,TXPMGT,SHSLOT,SHPREAMBLE,MONITOR,MBSS,WPA1,WPA2,BURST,WME,WDS,BGSCAN,TXFRAG&gt;
cryptocaps=1f&lt;WEP,TKIP,AES,AES_CCM,TKIPMIC&gt;</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>This output displays the card’s capabilities. The <strong><span class="has-inline-color has-luminous-vivid-orange-color"><code>HOSTAP</code> </span></strong>word confirms that this wireless card can act as an AP.</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>The wireless device can only be put into hostap mode during the creation of the network pseudo-device, so a previously created device must be destroyed first:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># ifconfig wlan0 destroy</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>then regenerated with the correct option before setting the other parameters:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># ifconfig wlan0 create wlandev ath0 wlanmode hostap
# ifconfig wlan0 inet 192.168.0.1 netmask 255.255.255.0 ssid freebsdap mode 11g channel 1</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Use <a href="https://www.freebsd.org/cgi/man.cgi?query=ifconfig&amp;sektion=8&amp;format=html" target="_blank" rel="noreferrer noopener">ifconfig(8)</a> again to see the status of the wlan0 interface:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># ifconfig wlan0
  wlan0: flags=8843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; metric 0 mtu 1500
	  ether 00:11:95:c3:0d:ac
	  inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
	  media: IEEE 802.11 Wireless Ethernet autoselect mode 11g &lt;<span class="has-inline-color has-luminous-vivid-orange-color"><strong>hostap</strong></span>&gt;
	  status: running
	  ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac
	  country US ecm authmode OPEN privacy OFF txpower 21.5 scanvalid 60
	  protmode CTS wme burst dtimperiod 1 -dfs</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>The <strong><span class="has-inline-color has-luminous-vivid-orange-color"><code>hostap</code> </span></strong>parameter indicates the interface is running in the host-based access point mode.</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>The interface configuration can be done automatically at boot time by adding the following lines to <code>/etc/rc.conf</code>:</p>
<p></section>
<section class="block block-core-preformatted"></p>
<pre class="wp-block-preformatted">wlans_ath0="wlan0"
create_args_wlan0="wlanmode hostap"
ifconfig_wlan0="inet 192.168.0.1 netmask 255.255.255.0 ssid freebsdap mode 11g channel 1"</pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p id="block-f5bdf692-e2f3-4f0a-b7b1-71df80dba746">Once the AP is configured, initiate a scan from another wireless machine to find the AP.</p>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading">USB Tethering</h2>
<p></section>
<section class="block block-core-separator"></p>
<hr class="wp-block-separator has-css-opacity" />
<p></section>
<section class="block block-core-paragraph"></p>
<p>Many cellphones can share data connection over USB, FreeBSD provides support through a variety of protocols:</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Before attaching a device, load the appropriate driver into the kernel:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># kldload if_urndis                     # driver generally used by Android&#x2122; device
# kldload if_ipheth                     # driver used by Apple® devices
# kldload if_cdce                       # driver often used in older devices</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Once the device is attached <code>ue</code><em>0</em> will be available for use like a normal network device. Be sure that the &#8220;USB tethering&#8221; option is enabled on the mobile device.</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>To make this change permanent and load the driver as a module at boot time, place the appropriate line of the following in /boot/loader.conf:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code>if_urndis_load="YES"
if_cdce_load="YES"
if_ipheth_load="YES"</code></pre>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<div class="wp-block-image"><section class="block block-core-image"></p>
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="512" class="wp-image-11217" src="https://staging.freebsdfoundation.org/wp-content/uploads/2022/04/Untitled-design-9-1024x512.png" alt="" srcset="https://staging.freebsdfoundation.org/wp-content/uploads/2022/04/Untitled-design-9-1024x512.png 1024w, https://staging.freebsdfoundation.org/wp-content/uploads/2022/04/Untitled-design-9-300x150.png 300w, https://staging.freebsdfoundation.org/wp-content/uploads/2022/04/Untitled-design-9-1536x768.png 1536w, https://staging.freebsdfoundation.org/wp-content/uploads/2022/04/Untitled-design-9-2048x1024.png 2048w, https://staging.freebsdfoundation.org/wp-content/uploads/2022/04/Untitled-design-9.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
<p></section></div>
<section class="block block-core-heading"></p>
<h1 class="wp-block-heading">Bluetooth:</h1>
<p></section>
<section class="block block-core-paragraph"></p>
<p>&nbsp;</p>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading" id="_loading_bluetooth_support">Loading Bluetooth Support</h2>
<p></section>
<section class="block block-core-separator"></p>
<hr class="wp-block-separator has-css-opacity" />
<p></section>
<section class="block block-core-paragraph"></p>
<p>Before attaching a Bluetooth device, determine which Bluetooth driver it uses. A broad variety of Bluetooth USB dongles are supported by <a href="https://www.freebsd.org/cgi/man.cgi?query=ng_ubt&amp;sektion=4&amp;format=html">ng_ubt(4)</a>. Broadcom BCM2033 based Bluetooth devices are supported by the <a href="https://www.freebsd.org/cgi/man.cgi?query=ubtbcmfw&amp;sektion=4&amp;format=html">ubtbcmfw(4)</a> and <a href="https://www.freebsd.org/cgi/man.cgi?query=ng_ubt&amp;sektion=4&amp;format=html">ng_ubt(4)</a> drivers. The 3Com Bluetooth PC Card 3CRWB60-A is supported by the <a href="https://www.freebsd.org/cgi/man.cgi?query=ng_bt3c&amp;sektion=4&amp;format=html">ng_bt3c(4)</a> driver. Serial and UART based Bluetooth devices are supported by <a href="https://www.freebsd.org/cgi/man.cgi?query=sio&amp;sektion=4&amp;format=html">sio(4)</a>, <a href="https://www.freebsd.org/cgi/man.cgi?query=ng_h4&amp;sektion=4&amp;format=html">ng_h4(4)</a>, and <a href="https://www.freebsd.org/cgi/man.cgi?query=hcseriald&amp;sektion=8&amp;format=html">hcseriald(8)</a>. For example, if the device uses the <a href="https://www.freebsd.org/cgi/man.cgi?query=ng_ubt&amp;sektion=4&amp;format=html">ng_ubt(4)</a> driver:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># kldload ng_ubt</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>If the Bluetooth device will be attached to the system during system startup, the system can be configured to load the module at boot time by adding the driver to <code>/boot/loader.conf</code>:</p>
<p></section>
<section class="block block-core-preformatted"></p>
<pre class="wp-block-preformatted">ng_ubt_load="YES"</pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>Once the driver is loaded, plug in the USB dongle. If the driver load was successful, output similar to the following should appear on the console and in <code>/var/log/messages</code>:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code>ubt0: vendor 0x0a12 product 0x0001, rev 1.10/5.25, addr 2
ubt0: Interface 0 endpoints: interrupt=0x81, bulk-in=0x82, bulk-out=0x2
ubt0: Interface 1 (alt.config 5) endpoints: isoc-in=0x83, isoc-out=0x3,
      wMaxPacketSize=49, nframes=6, buffer size=294</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>To start and stop Bluetooth, use the driver&#8217;s startup script.</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code># service bluetooth start ubt0</code></pre>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading" id="_finding_other_bluetooth_devices">Finding Other Bluetooth Devices</h2>
<p></section>
<section class="block block-core-separator"></p>
<hr class="wp-block-separator has-css-opacity" />
<p></section>
<section class="block block-core-paragraph"></p>
<p>FreeBSD uses <a href="https://www.freebsd.org/cgi/man.cgi?query=hccontrol&amp;sektion=8&amp;format=html" target="_blank" rel="noreferrer noopener">hccontrol(8)</a> to find and identify Bluetooth devices within RF proximity.</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>One of the most common tasks is discovery of Bluetooth devices within RF proximity. This operation is called <em>inquiry</em>. Inquiry and other HCI related operations are done using <a href="https://www.freebsd.org/cgi/man.cgi?query=hccontrol&amp;sektion=8&amp;format=html">hccontrol(8)</a>. To display a list of devices that are in range use:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code>% hccontrol -n ubt0hci inquiry
Inquiry result, num_responses=1
Inquiry result #0
       <span class="has-inline-color has-luminous-vivid-orange-color"><strong>BD_ADDR</strong></span>: 00:80:37:29:19:a4
       Page Scan Rep. Mode: 0x1
       Page Scan Period Mode: 00
       Page Scan Mode: 00
       Class: 52:02:04
       Clock offset: 0x78ef
Inquiry complete. Status: No error [00]</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p><strong>Note</strong>: only devices that are set to discoverable mode will be li<em>sted.</em></p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>The <span class="has-inline-color has-luminous-vivid-orange-color"><strong><code>BD_ADDR</code> </strong></span>is the unique address of a Bluetooth device, similar to the MAC address of a network card. This address is needed for further communication with a device. To to obtain the human readable name that was assigned to the remote device:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code>% hccontrol -n ubt0hci remote_name_request 00:80:37:29:19:a4
BD_ADDR: 00:80:37:29:19:a4
Name: Pav's T39</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>The Bluetooth system provides a point-to-point connection between two Bluetooth units, or a point-to-multipoint connection which is shared among several Bluetooth devices. The following example shows how to create a connection to a remote device:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code>% hccontrol -n ubt0hci create_connection BT_ADDR</code></pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p><code>create_connection</code> accepts <code>BT_ADDR</code> as well as host aliases in /etc/bluetooth/hosts.</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>The following example shows how to obtain the list of active baseband connections for the local device:</p>
<p></section>
<section class="block block-core-code"></p>
<pre class="wp-block-code"><code>% hccontrol -n ubt0hci read_connection_list
Remote BD_ADDR    Handle Type Mode Role Encrypt Pending Queue State
00:80:37:29:19:a4     41  ACL    0 MAST    NONE       0     0 OPEN</code></pre>
<p></section>
<section class="block block-core-spacer"></p>
<div class="wp-block-spacer" aria-hidden="true"> </div>
<p></section>
<section class="block block-core-heading"></p>
<h2 class="wp-block-heading" id="_device_pairing">Bluetooth Device Pairing</h2>
<p></section>
<section class="block block-core-separator"></p>
<hr class="wp-block-separator has-css-opacity" />
<p></section>
<section class="block block-core-paragraph"></p>
<p>While a Bluetooth device can choose to require authentication, communication is normally not authenticated, so any Bluetooth device can talk to any other device. If the device requires authentication, the <em>PIN</em> code must be entered on both devices, the devices will then generate a <em>link key</em>. After that, the link key can be stored either in the devices or in a persistent storage. This procedure is called <em>pairing</em>.</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>The <a href="https://www.freebsd.org/cgi/man.cgi?query=hcsecd&amp;sektion=8&amp;format=html">hcsecd(8)</a> daemon is responsible for handling Bluetooth authentication requests. The default configuration file is <code>/etc/bluetooth/hcsecd.conf</code>. An example section for a cellular phone with the PIN code set to <code>1234</code> is shown below:</p>
<p></section>
<section class="block block-core-preformatted"></p>
<pre class="wp-block-preformatted">device {
        bdaddr  00:80:37:29:19:a4;
        name    "iPhone";
        key     nokey;
        pin     "1234";
      }</pre>
<p></section>
<section class="block block-core-paragraph"></p>
<p>The only limitation on PIN codes is length. Some devices, such as Bluetooth headsets, may have a fixed PIN code built in. The <code>-d</code> switch forces <a href="https://www.freebsd.org/cgi/man.cgi?query=hcsecd&amp;sektion=8&amp;format=html">hcsecd(8)</a> to stay in the foreground, so it is easy to see what is happening. Set the remote device to receive pairing and initiate the Bluetooth connection to the remote device. The remote device should indicate that pairing was accepted and request the PIN code. Enter the same PIN code listed in<code> hcsecd.conf</code>. Now the computer and the remote device are paired.</p>
<p></section>
<section class="block block-core-paragraph"></p>
<p>The following line can be added to /etc/rc.conf to configure <a href="https://www.freebsd.org/cgi/man.cgi?query=hcsecd&amp;sektion=8&amp;format=html">hcsecd(8)</a> to start automatically on system start:</p>
<p></section>
<section class="block block-core-preformatted"></p>
<pre class="wp-block-preformatted">hcsecd_enable="YES"</pre>
<p></section><section class="block block-classic-editor"></p></section><p>The post <a href="https://staging.freebsdfoundation.org/resource/networking-basics-wifi-and-bluetooth/">Networking Basics: WiFi and Bluetooth</a> first appeared on <a href="https://staging.freebsdfoundation.org">FreeBSD Foundation</a>.</p>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
