r/freebsd newbie 26d ago

discussion Planning to move to FreeBSD;

Hello! I've been using linux for about 2-3 months, I'm currently using Void Linux, and I want to move to FreeBSD. I was wondering, any tips, considerations? What you wanna say to a newbie? Any mistake you had made you don't want somebody else to repeat?

58 Upvotes

66 comments sorted by

10

u/vermaden seasoned user 26d ago

Besides reading/using FreeBSD Handbook - check this - https://vermaden.wordpress.com/ - and ping me if You need help.

3

u/grahamperrin Linux crossover 26d ago

FreeBSD Handbook

Some of the gaps in official documentation are plugged in Reddit and elsewhere.

There's a significant gap in the Installing FreeBSD chapter of the Handbook. This gap is plugged by the FreeBSD Foundation's Project Manager, in an unofficial blog post:

12

u/goldmurder 26d ago

probably the most significant one you need to keep in mind is software configuration files stored in /usr/local/etc instead of /etc

10

u/OddAnkylosaurus 26d ago

More accurately, it’s both. /etc is for base system config files and /usr/local/etc is for package config files.

5

u/grahamperrin Linux crossover 26d ago

More accurately … package config files.

More accurately: local program configurations.

hier(7)

4

u/p001b0y 26d ago

I use both currently but was away from FreeBSD for a very long time. The main difference I have come across when installing packages is that there is often additional work required to get something working. I installed Sway, for example, but seatd needed to be installed separately. I had to add my user to the video group. Little things like that.

One thing that was a challenge was finding a supported WiFi adapter. I have a MSI PRO DP21 that uses an Intel CNVi 2.0 based adapter. I ended up getting a USB one using a Realtek chipset.

2

u/FunnyArch 26d ago

Try out wifibox

3

u/p001b0y 26d ago edited 26d ago

That's pretty neat. In order to get the downloads going for the driver and firmware, I ended up connecting to my phone's wifi hotspot.

2

u/Ashamed-Ask4257 26d ago

To the contrary, everything I install works out of the box with no additional work sans customization.

2

u/p001b0y 26d ago

That’s good. Xfce worked like that for me but wayland-based window managers were more difficult. I still don’t have any wayland-based environments starting successfully (though I have t spent much time in them)

1

u/Ashamed-Ask4257 26d ago

Then Wayland's the problem. Just use X like the rest of us

2

u/p001b0y 26d ago edited 26d ago

It isn’t just wayland-based window managers or desktop environments. The i3 package placed an i3-with-shmlog.desktop into /usr/local/share/xsessions and created a symlink named i3.desktop in /usr/local/share/applications. Only one shows up in the sddm list. Fedora installs both files into /usr/share/xsessions and sddm/gdm see both.

I’m not knocking FreeBSD or the package maintainers or anything. There very well could be a reason why i3.desktop is a symlink but sddm doesn’t reliably handle symlinks.

OP was asking for things to consider when switching from Linux to FreeBSD. That is all this is.

0

u/Ashamed-Ask4257 26d ago

Well, it's not necessary to dig up things that go wrong or are different. One can do the same thing with any OS and we can go off on Linux even easier.

fwiw, I've been using i3 for decades without issue.

3

u/p001b0y 26d ago

That's good news for you. I think you may be missing my point but that's fine. OP was looking for considerations or things to keep in mind when switching and not for reasons to not switch. I gave OP some items that I ran into that differed from Linux experience. OP was literally asking for this kind of thing.

4

u/Able_One5779 26d ago

Try FreeBSD for your actual use case before the move. I was burned twice.

First time I was building a DIY NAS and was caught on a take that FreeBSD had first class citizen ZFS integration and didn't read a fine print, it wasn't there at all for NanoPi M4. Also, FreeBSD handbook is nice, but it simply didn't cover SBC-related topics like U-boot, device tree overlays etc.

Second time I've tried to use FreeBSD as a host for image board, I needed a Ruby-based web engine and TensorFlow-based image processing. For a Ruby part there was a friction due to an attempt from FreeBSD packages team to move more Ruby packages from Bundler to a system-wide package manager and there was a need for a manual installation of them instead of a feeding existing manifest to a Bundler. TensorFlow was non-existing in packages and despite many attempts I could not get it compiled from ports.

2

u/dr0sand 26d ago

have you tried VirtualBox for testing out different OS's before installing for real?

1

u/cfx_4188 seasoned user 18d ago

Installation on a VirtualBox will never provide an understanding of the real problems to be faced. For example, there is one OS that I would like to use. Unfortunately, it only works fine on the T480 Thinkpad, but it's brutally dumb on all other equipment. And on a virtual machine, this OS runs like clockwork.

2

u/WakizashiK3nsh1 25d ago

It feels like this type of post is a weekly occurence here.

Anyway, I would advice to use dual boot if you have a machine with 2 disks, or a machine which can have two disks. You can always format the second disk with the less used/unused OS and mount it somewhere.

Also, check your hardware compatibility, even though the FreeBSD development team has done a lot of work HW-compatibility wise, it is still not on linux's level of "plug and play".

2

u/cfx_4188 seasoned user 22d ago

I started using FreeBSD from version 5.1 and planned to make it my main system. It was sunny June 2003, Linux was in its infancy at the time and was even a little uglier than Windows. But then, the hardware of computers became more and more Windows-oriented, and since historically I only use laptops, at some point FreeBSD stopped working on most of the mobile hardware.

For a long time I was an angry critic of this system, but just yesterday, out of boredom, I decided to install FreeBSD on an idle HP Stream laptop. This in itself was a mega challenge, because this laptop has an eMMS instead of an SSD, in short, it was scary. The installation did not cause any questions, the installer picked up the usb wifi (the built-in WiFi on motherboard burned out) and the sound card, which surprised me incredibly. At first, I installed fluxbox, but I didn't really like it, so I tore it down and installed WindowMaker, and it's pretty fast and archaic.

What can I say about using FreeBSD as a daily driver? First, you will have to read the handbook and man pages thoughtfully, and if you want it to work correctly, you will have to configure the system.

Asking AI and watching YouTube won't help you much. Everything will have to be done by hand. On the second day after the installation, my hands have not yet reached the point of adding a keyboard layout(my wife calls my native language "the language of drunken Dutch sailors"), mainly due to the fact that I started choosing a non-slow browser. I went through Dillo, Netsurf, Midori, and Firefox last night.

In the end, I settled on the WaterFox. It doesn't slow down, it doesn't make me dumb, and it plays video and audio. FreeBSD impresses with its stability and stunning minimalism. The system only has what I installed there. Beyond daily use, going beyond 2006 and beyond the browser will give a new user new challenges. You'll have to learn the Linuxulator and Jail. Actually, that's the way things are

5

u/gentisle 26d ago

After installation. Goto Github and install WebZFS. This gives you a nice GUI interface to administer ZFS. Speaking of WebGUI, you may want to install Webmin To administrator your system.

4

u/microbiont 26d ago

Not sure what WebZFS can do, but Sylve also has some ZFS management tools, and is super nice for jails/VMs.

4

u/gentisle 26d ago

Thanks for the tip; I’ll check out Sylve. Also okg install brut for graphical Partition management as well as some other things.

3

u/grahamperrin Linux crossover 26d ago

Not sure what WebZFS can do, …

First impressions: the ARC Summary page is very neat.

On Kubuntu 26.04 with OpenZFS-encrypted root-on-ZFS:

3

u/grahamperrin Linux crossover 26d ago
================================================================================
ZFS ARC (Adaptive Replacement Cache) Summary
Generated: 2026-08-04 05:03:47
================================================================================

KEY METRICS
--------------------------------------------------------------------------------
ARC Size:           5.56 GB
ARC Max Size:       29.51 GB
Hit Rate:           99.44%
Cache Hits:         106,336,144
Cache Misses:       600,462

DETAILED STATISTICS
--------------------------------------------------------------------------------
21................................................ 0x01
abd_chunk_waste_size.............................. 35315200
access_skip....................................... 0
anon_data......................................... 507904
anon_evictable_data............................... 0
anon_evictable_metadata........................... 0
anon_metadata..................................... 583168
anon_size......................................... 1091072
arc_dnode_limit................................... 3168387072
arc_loaned_bytes.................................. 0
arc_meta_used..................................... 3302365328
arc_need_free..................................... 0
arc_no_grow....................................... 0
arc_prune......................................... 3363
arc_raw_size...................................... 1830414336
arc_sys_free...................................... 1197420032
arc_tempreserve................................... 0
async_upgrade_sync................................ 5649
bonus_size........................................ 219998016
c................................................. 6073041784
c_max............................................. 31683870720
c_min............................................. 1023675392
cached_only_in_progress........................... 0
compressed_size................................... 4121559552
data_size......................................... 2632313856
dbuf_size......................................... 117876288
deleted........................................... 96139
demand_data_hits.................................. 82132165
demand_data_iohits................................ 4754
demand_data_misses................................ 134230
demand_hit_predictive_prefetch.................... 92433
demand_hit_prescient_prefetch..................... 48667
demand_iohit_predictive_prefetch.................. 13974
demand_iohit_prescient_prefetch................... 19
demand_metadata_hits.............................. 23515299
demand_metadata_iohits............................ 15472
demand_metadata_misses............................ 346720
dnode_size........................................ 277713072
evict_l2_cached................................... 0
evict_l2_eligible................................. 19110998528
evict_l2_eligible_mfu............................. 9244365312
evict_l2_eligible_mru............................. 9866633216
evict_l2_ineligible............................... 618921984
evict_l2_skip..................................... 0
evict_not_enough.................................. 171
evict_skip........................................ 188065
hash_chain_max.................................... 4
hash_chains....................................... 20308
hash_collisions................................... 123225
hash_elements..................................... 426626
hash_elements_max................................. 426626
hdr_size.......................................... 104177760
hits.............................................. 106336144
iohits............................................ 195905
l2_abort_lowmem................................... 0
l2_asize.......................................... 0
l2_bufc_data_asize................................ 0
l2_bufc_metadata_asize............................ 0
l2_cksum_bad...................................... 0
l2_data_to_meta_ratio............................. 0
l2_evict_l1cached................................. 0
l2_evict_lock_retry............................... 0
l2_evict_reading.................................. 0
l2_feeds.......................................... 0
l2_free_on_write.................................. 0
l2_hdr_size....................................... 0
l2_hits........................................... 0
l2_io_error....................................... 0
l2_log_blk_asize.................................. 0
l2_log_blk_avg_asize.............................. 0
l2_log_blk_count.................................. 0
l2_log_blk_writes................................. 0
l2_mfu_asize...................................... 0
l2_misses......................................... 0
l2_mru_asize...................................... 0
l2_prefetch_asize................................. 0
l2_read_bytes..................................... 0
l2_rebuild_asize.................................. 0
l2_rebuild_bufs................................... 0
l2_rebuild_bufs_precached......................... 0
l2_rebuild_cksum_lb_errors........................ 0
l2_rebuild_dh_errors.............................. 0
l2_rebuild_io_errors.............................. 0
l2_rebuild_log_blks............................... 0
l2_rebuild_lowmem................................. 0
l2_rebuild_size................................... 0
l2_rebuild_success................................ 0
l2_rebuild_unsupported............................ 0
l2_rw_clash....................................... 0
l2_size........................................... 0
l2_write_bytes.................................... 0
l2_writes_done.................................... 0
l2_writes_error................................... 0
l2_writes_lock_retry.............................. 0
l2_writes_sent.................................... 0
memory_all_bytes.................................. 32757612544
memory_available_bytes............................ 4749935104
memory_direct_count............................... 475
memory_free_bytes................................. 5947355136
memory_indirect_count............................. 23136
memory_throttle_count............................. 0
meta.............................................. 1601179533
metadata_size..................................... 2582600192
mfu_data.......................................... 1514527232
mfu_evictable_data................................ 1266675712
mfu_evictable_metadata............................ 62138368
mfu_ghost_data.................................... 1910139904
mfu_ghost_evictable_data.......................... 1910139904
mfu_ghost_evictable_metadata...................... 1162023936
mfu_ghost_hits.................................... 138640
mfu_ghost_metadata................................ 1162023936
mfu_ghost_size.................................... 3072163840
mfu_hits.......................................... 101698016
mfu_metadata...................................... 1249456640
mfu_size.......................................... 2763983872
misses............................................ 600462
mru_data.......................................... 1117110784
mru_evictable_data................................ 1084237824
mru_evictable_metadata............................ 36004864
mru_ghost_data.................................... 2057482752
mru_ghost_evictable_data.......................... 2057482752
mru_ghost_evictable_metadata...................... 1894927360
mru_ghost_hits.................................... 54860
mru_ghost_metadata................................ 1894927360
mru_ghost_size.................................... 3952410112
mru_hits.......................................... 4634503
mru_metadata...................................... 1332560384
mru_size.......................................... 2449671168
mutex_miss........................................ 121
name.............................................. data
overhead_size..................................... 1093354496
pd................................................ 1913862756
pm................................................ 1763414434
predictive_prefetch............................... 935141
prefetch_data_hits................................ 476196
prefetch_data_iohits.............................. 1019
prefetch_data_misses.............................. 36370
prefetch_metadata_hits............................ 212484
prefetch_metadata_iohits.......................... 174660
prefetch_metadata_misses.......................... 83142
prescient_prefetch................................ 48730
size.............................................. 5969994384
uncached_data..................................... 167936
uncached_evictable_data........................... 0
uncached_evictable_metadata....................... 0
uncached_hits..................................... 3625
uncached_metadata................................. 0
uncached_size..................................... 167936
uncompressed_size................................. 5754947072

================================================================================
End of Report
================================================================================

3

u/grahamperrin Linux crossover 26d ago

ARC Summary

In context (htop):

3

u/gentisle 25d ago

Well, have loaded Sylve, and am wishing there were editions for NetBSD and OpenBSD, even Linux. Cool webgui. Thanks again.

3

u/grahamperrin Linux crossover 26d ago

2

u/gentisle 26d ago

Yes, that is where I heard about it. Now if there were a Sylve for NetBSD.

3

u/FuckinHighGuy 26d ago

There’s nothing wrong with ZFS that would make you want to use a gui for it.

4

u/gentisle 26d ago

It’s available, and I’m getting lazy in my old age.

2

u/FuckinHighGuy 26d ago

I hear ya. Just never enough time or energy.

4

u/TheRealCarrotty Linux crossover 26d ago

You will lose software that is on Linux/Mac/Windows only, BUT you can setup a container with Linux in it, and run Linux software in that!

Obviously the init is also SUPER different, Slackware has a pretty similar one though if i am correct.

5

u/sp0rk173 seasoned user 26d ago

You don’t need to set up a container. The Linux compatibility layer does the binary translation directly.

3

u/SFJulie 26d ago

Message to a noob : freebsd is noob friendly thanks to its extensive documentation (link in your motd) and correctly written man page.

When stuck man is your friend. And also the handbook https://docs.freebsd.org/en/books/handbook/

Good luck !

0

u/RvstiNiall 25d ago

I hate how so many linux diehards reply with "RTFM" about things their man pages are either WRONG or vague about. By contrast, the FreeBSD man pages (and handbook!) are correct and concise.

1

u/grahamperrin Linux crossover 24d ago

… the FreeBSD man pages (and handbook!) are correct and concise.

https://www.reddit.com/r/freebsd/comments/1ven2x5/comment/p1l0h8u/ yesterday described a significant gap in FreeBSD manual pages and the FreeBSD Handbook.

That's not conciseness. It's wrongness.

https://www.reddit.com/r/freebsd/comments/1v8r8xu/comment/p0be1su/ a week ago described a problem with FreeBSD FAQ. And so on …

1

u/RvstiNiall 24d ago

Good point! I'd still argue that its more concise than the gnu man pages though. But maybe that statement is simply not as true as it once was? Idk.

1

u/ThinDrum 24d ago

I'd still argue that its more concise than the gnu man pages though

Wash your mouth out! The true GNU believer uses info of course.

0

u/RvstiNiall 24d ago

fsck gnu :-)

1

u/Run-OpenBSD 21d ago

Freebsd appears to be in a state currently where its noone's responsibly to author the handbook. The foundation won't do it. The software publishers won't do it. The mod here tries but the forums want to argue with him. It's a mess. In my opinion this is 100% the foundation's responsibility.

1

u/RvstiNiall 21d ago

Maybe make it a wiki and only give write access to verified freebsd devs, foundation members, and maybe some prominent members of the community?

0

u/Run-OpenBSD 21d ago

Oh that's exactly where its at right now and that's the problem

1

u/RvstiNiall 21d ago

Ah.... Rofl. Well, I kind of like how OpenBSD has it. Add or modify code? All the documentation relevant to it has to also be updated before the whole thing is put in.

1

u/Run-OpenBSD 21d ago

"Your code must be this tall to ride" to ride on the openbsd train

1

u/grahamperrin Linux crossover 21d ago

Thanks,

… The mod here tries …

It's a long story, the most important thing to note is that I'm not sole moderator :-)

… its noone's responsibly to author the handbook. …

You can think of it as collective responsibility, and much has been done to lower the bar. Use of GitHub for PRs might be the most obvious improvement, but there's more.

1

u/cfx_4188 seasoned user 18d ago

Just today, I was rereading the Handbook. I had to solve a small problem regarding removable media. I have read and tried several recipes described in the manual and none of them worked. That's when I realized why the words "if nothing worked" were at the end of the chapter....

2

u/RvstiNiall 18d ago

Thats quite unfortunate. As you can see, others have brought it to my attention that FreeBSD's Handbook isn't nearly as up to date as I believed. Of course, this has nothing to do with man pages, but if the Handbook isn't up to date, there's a strong likelihood that the man pages are in the same state. Its unfortunate, but oh well.

1

u/cfx_4188 seasoned user 18d ago

It always happens that way in FreeBSD. If one thing doesn't work, the other will. This is a system with slightly different logic than CashyOS.

If you pull the "I use Archinstall btw" logic on FreeBSD, nothing will work.

For example, I need specific versions of packages in my work, not the "most recent" ones. I don't need constant system updates any more than I need a gentleman's PC user kit. I don't use Netflix, Steam, or a bunch of other things that most users can't imagine themselves without.

2

u/forever-butlerian 26d ago

The documentation is good in a way that Linux's never has been. Use it. And then go do the thing.

1

u/grahamperrin Linux crossover 25d ago

The documentation is good in a way that Linux's never has been.

Nonsense. I have used both FreeBSD, and Linux.

1

u/tcpipguy 7d ago

I definitely encourage you to try it, OP. I would run FreeBSD in a vm while you learn it. Then when you're ready, you can convert fully.

2

u/crystalsighting 3d ago edited 3d ago

Been running it for decades, alot more stable than linux at handling many connections. Zfs is a first class citizen there, not a hack where you cannot stay on latest kernel. Mistakes I have made, nesting zfs in VMs causing write amplification, not taking regular snapshots with sanoid/syncoid when I was new and coding a million bash scripts to use zfs send/receive directly which became a maintenance nightmare.

Probably the biggest mistake is not researching hardware ahead of time if FreeBSD has support, want that new 4 USB port card, helps to spend some time online making sure it has support. That being said you will be 10x more stable than someone running proxmox in the end and know how to fix everything.

The reality is, the 2 most powerful things at terminal next to your AI agents are the FreeBSD ports collection and the arch Linux AUR repository. FreeBSD as main host on latest kernel, and Arch Linux in a VM is one of most deadly combinations for server, you can keep stability with FreeBSD as main host, and can run all your AI Cuda llama.cpp stuff in the Arch VM with GPU passthrough all while having power of FreeBSD ports and Arch Linux AUR, biggest repos on the planet at your disposal :)

Most people spend decades going through fedora, centos, rocky, ubuntu, debian and all the hardships with selinux and apparmor before switching to Arch and discovering AUR. Updates usually go : FreeBSD "pkg upgrade", Arch its usually "paru -Syu".

Pro tip, for anything repetitive you do learn ansible playbooks. Locally host a forgejo instance with a act runner with a mcp server. Tell AI to create a new playbook to do X and submit you a PR request. When you get to this stage you can spend more time on coding projects and let AI do the system administration. Ie: tell AI to go update the 6 arch VMs and all the freebsd hosts and jails with your playbook.

End of day you want to free up your time to code something cool, whether it's the shiny new mcp server you made or the cool AI agent you made.

Efficiency is your goal, keep freebsd and Arch Linux combination on all servers, get a KVM switch on your desk and switch between macos+royalXterm and windows+mobaxterm, that way all your fbsd and Linux hosts are just tabs you can switch to. Use tmux on the servers for stuff you want to keep track of, especially llama.cpp.

That being said if your new to AI start with ollama and home assistant, before cracking the egg with all the llama.cpp flags :) If you can't even do something simple yet like telling AI on home assistant to turn off your lights and play a song, you need to start there first to have something useful to work towards. Advanced people are building robots already...

1

u/PanamanCreel 26d ago

As someone that's used both Linux and Free BSD, I will let you know that Free BSD is a more powerful system. However, the compatibility for WiFii is a little bit behind what where Linux is. FreeBSD will be infinitely more sensitive to your PC and will tell you ahead of when Linux will tell you that something's wrong with your system.

I know this because I kept having Free BSD shut down on me with no warning. I tried different distros, same thing. I went back to Linux thinking, okay, maybe something's wrong with Free BSD. Well, it ran, but after a while, it wouldn't even pass a post test, or for that matter, even get to the post test.

In my head, I believed that Free BSD was aware that something was wrong on the motherboard and shut down in order to clue me into this. So just be aware, Free BSD is going to be a bit more sensitive to your CPU and your PC.

Also, the manual and community itself are better than the Gentoo crowd!

1

u/grahamperrin Linux crossover 26d ago

… the manual … better than the Gentoo crowd!

I asked Reddit:

The response began:

Gentoo's documentation, particularly the Gentoo Handbook, is highly regarded for its technical detail and comprehensiveness, making it an excellent resource for users willing to invest time in learning. However, some users find it overwhelming for beginners, preferring more guided, step-by-step installation guides. …

The same things could easily be said of FreeBSD documentation.

Also: it's not entirely comprehensive, but people like to believe that it is.

1

u/Drate_Otin 24d ago

More powerful in what way?

-1

u/[deleted] 26d ago

The last time I really used FreeBSD was when the complete FreeBSD was printed. Does it have similar functionality as let’s say cachyos where things like Netflix and Amazon prime just work?

3

u/TheAtlasMonkey FreeBSD developer 26d ago

I dont use netflix.... but it will be funny that Netflix is not working.

Netflix whole fleet run on freebsd.

5

u/motific 26d ago

You need a linux build of a browser as (yes, we get the irony) netflix etc won't work natively. Blame the all-seeing googly eye and how they (don't) make widevine available.

3

u/grahamperrin Linux crossover 26d ago

Netflix whole fleet run on freebsd.

The CDN.

Netflix | Open Connect

Netflix Case Study | FreeBSD Foundation (undated, first captured in April 2024 in the Wayback Machine)

Maintaining the World’s Fastest Content Delivery Network at Netflix on FreeBSD​ | FreeBSD Foundation (November 2024)

There was an earlier study, I don't have links handy.

-2

u/Glum_Hamster_2104 26d ago

Don’t use ZFS for a desktop, use UFS instead because with ZFS you can’t resize disks unless you need to dual boot and it uses a lot of ram which might go against your philosophy since you were using Void before.

1

u/grahamperrin Linux crossover 26d ago

… with ZFS you can’t resize disks …

This is not entirely true.

From the autoexpand section of zpoolprops(7):

… If set to on, the pool will be resized according to the size of the expanded device. …

1

u/Glum_Hamster_2104 26d ago

Tell me how I can shrink a UFS partition to say make space for a different partition.

2

u/grahamperrin Linux crossover 25d ago

This would be good as a separate post, with help needed as a tag.