How to create a portable BSD-nomadBSD
Published: 2021-09-08 08:29:18

Hi, in this article, I am going to create a portable bsd operating system, nomadBSD. It's quite useful and have a simple usage. Let's dive the content.

BSD is a high dimensional system. FreeBSD uses about 40GB while noamdBSD needs about 5GB or more in workspace.This system is also based on FreeBSD,however, as a result of improvements and changes, nomadBSD, a portable "persistent" and low-size bsd distribution, has emerged. 

### BSD and derivatives

BSD, or Berkeley Software Distribution, is a plug-in chain created by the University of California for AT&T's unix. Derivatives such as FreeBSD, OpenBSD, NetBSD, DragonFlyBSD refer to unix-like operating systems. These systems are licensed systems and their license is referred to as a BSD license in the literature.These are complex operating systems  such as GNU/linux distributions.The most popular BSD distribution is FreeBSD, and many BSD distributions are based on this distribution. BSD operating systems are extremely powerful and are the operating systems that power many servers.It is stated that BSD operating systems are more performant and in most cases noticeably faster than GNU/Linux distributions. In addition, since it is much older than the Linux kernel, it offers a more stable user experience. Although the development speed is slower, the control of the code by a single architect at the top is the most important factor that ensures the stable operation of the code.In many GNU/linux distributions the code in the master branch is not controlled by one person and many people can change the code. BSD systems can also use linux packages or window managers familiar from GNU/linux distributions. For this reason, there may be many more software packages available on BSDs.

### installing & configuration nomadBSD 

nomadBSD is a minimal operating system that can be used as a live-system, "persistent" and ready to use directly with installation, automatically detecting hardware. 1.2GHz CPU speed and 1G of RAM are recommended as basic requirements. Although it is not very performance for usb-2.0, it can be used much more easily with usb-3.0 and above technologies. It was a very pale expectation to expect performance from an operating system that is already persistent and carried on usb. You can boot by selecting your own USB from the boot menu of any machine, and the operating system recognizes the hardware and initiates the system boot process.

You can download the system using the [link](https://nomadbsd.org/download.html).

Here, it is explained how to open the archive and how to write the image to the USB memory according to different operating systems. It can simply be written to a usb stick using the __dd__ tool on any operating system.

Then you can customize the system with the setup wizard and install it on the usb. Disk encryption feature can be activated optionally during installation. During boot, it waits for you to enter the password you set to connect the disk and continues the boot process after matching.The system is a persistent system. At the first startup, the installation takes place with the installation wizard, and when the system is restarted, many software that may be needed for daily use such as browser, text-editor, ftp client, a simple code editor, mail client will appear pre-installed.Since the system is based on freeBSD, the package manager is pkg. With this command, the system can be updated, the desired package can be installed and removed. The system uses Openbox as the window manager. The lightness and speed of this system is a chosen detail.In addition, as seen here, window managers or desktop environments used in linux systems can also work with BSD. When you want to install FreeBSD, you can install without a window manager, then you can install desktop environments such as xfce4, kde, gnome in the pkg repo.

### Installation and review on Oracle Virtualbox

If you want to use it by creating a virtual machine on Oracle VirtualBox, there is a dedicated section in the NomadBSD manual for this. img extension archive is converted into a virtual disk with vdi extension with __VBoxManager__.

```bash
$ VBoxManage convertfromraw nomadbsd-130R-20210508.amd64.img \ 
nomadbsd.vdi --format VDI
```
Then the disk size can be adjusted again with the same tool.
```bash
$ VBoxManage modifyhd nomadbsd.vdi --resize 10000
```

Then, after creating a new machine on VirtualBox and making the necessary system settings, this vdi virtual hard disk can be connected to the machine.
At the first startup, the installation wizard welcomes us. Nothing is visible except the wizard.Do not close the window. otherwise you may have to restart the system. 

![nomadBSD installer wizard](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7y9039papuxzh7r5qnuc.png)

Language and keyboard layout selection is made. It prompts again to add a second keyboard layout. You can skip adding.
After the timezone selection, the root password is determined. Username is preset as nomad.

![Geli disk encryption](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oyek3limwkctyf52r326.png)

You can encrypt the disk with the block encryption option with Geli. You need to set a password for this. This password is used before connecting the disk during boot.

Then the applications and shell to be used by default are selected. In summary, the actions to be taken are examined and the system setup is started by pressing the "Commit" button. The installation process is completed quickly. When we restart, boot is started by selecting multiple users.

![encryption passsword](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vzluf3h3byq8ye6r8ijg.png)

Geli password is entered for disk encryption and disk binding is performed.
If you are using a USB memory stick after the system is turned on, you can make the network connection from the icon in the upper right.

![nomadBSD desktop](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a739z14ojbidbgaadc9q.png)

Many packages that may be needed for daily use come preloaded. Many toolkits such as visual editor, office suite, mail client, a package manager with visual interface, firewall come pre-installed. You can install many packages with the pkg package manager. For example, __neofetch__ package was installed from __pkg__ package repositories below and __dangereous__ from __ohmyfish__ themes was used in fish shell.

![neofetch](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g6hf016x61r4fgcqjzmk.png)

Like all BSD systems, this is a very similar system to the GNU/Linux distributions that the average linux user can easily get used to. The system is especially configured so that even beginner users can use it easily. For example, you can perform package update, deletion and installation operations with OctoPkg graphical package manager. Here you can uninstall apps that come pre-installed but you think you won't be using.

![OctoPkg manager](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c56mng1yp7qhm3nnsfyu.png)

To install linux packages on NomadBSD,
```bash
$ sudo -i
$ sysrc linux_enable=YES
$ service linux start
```
You can use these commands on shell. Then you can install the linux packages in the pkg repository with the following command.

![linux-sublime](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qd01tcnfyxt2ye4l36yx.png)

Tools and databases such as Java, docker, vagrant, mongodb, elasticsearch are also available in freeBSD repositories. It can be easily installed using the pkg package manager. It is also possible to install this system on disk. But for me, a freeBSD installation would be much more convenient for a workstation or a personal desktop computer. This system is a stable and freeBSD-powered operating system designed as a lightweight alternative. For this reason, if heavy work needs to be done, a freeBSD desktop would be a more appropriate and less tiring choice.

For those who want to switch to the BSD side with this distribution, I recommend that they start with GhostBSD first. They can then switch to FreeBSD and OpenBSD which is famous security-oriented operating system. This sorting will greatly reduce the feeling of unfamiliarity in the transition process.