How to create a FreeBSD distro?

Status
Not open for further replies.
You weren't technically wrong: Mate` is a fork of Gnome 2.x The horrific marraige between some dev at Gnome and systemd has brought about the Gnome 3.x disaster, which I do not use at all. For that matter, I only use a window manager on FreeBSD - chiefly Fluxbox. I have been a GTK guy since the late 90's. Doesn't matter though - Plasma is a very capable and easy to use desktop, albeit I have never used it on FreeBSD. There is just something about the simplicity of FreeBSD and when I try to add a desktop environment or login manager, it feels wrong. That's just me though...
 
Well, yes. KDE suffers from featuritis somehow. It's great, but e.g. I can't get Kontact (KDE's Personal Information Management suite=mail, notes, contacts book, tasks & calendar, journal/log book, news) to show it's common INBOX correctly for my four INBOXes... that's not important, but nasty. KMail is great, Kontact and all it's componets are great, but the configs are splattered around at various places... s/o called that ClickyBunty. The principle of simplicity is not the highest ranked throughout KDE developers... ;)
 
Thank you so much for great advice and I'm sorry if I couldn't explain my goal.
I want to create something like FuryBSD.
I'm thankful if someone tell me step by step.
Thanks for your patience. Any steps of actually building something on your own are good steps, and I understand that you're asking "what the heck is the first step?"

First a simple answer (I thought my previous reply was simple, although the first paragraph was sarcasm ;)
1. Download and install what is probably the most well-developed and simplest of the ready-to-go FreeBSD desktop systems, https://nomadbsd.org/
2. It installs to and can run off a USB stick. You don't have to touch your hard drive yet. You can use it off the USB just like any bare-metal install -- add packages, change configs in /etc, whatever.
3. When you're comfortable with nomadbsd and have done some preliminary customization install your nomadbsd system to a fast hard drive / ssd so that your further experiments will have plenty of drive space and run faster. You install nomadbsd from any running nomadbsd. Start Openbox menu -> System -> NomadBSD Installer and follow the instructions.
4. Download the source code for the nomadbsd live iso build system.
5. Follow the instructions in the file build.hlp to build a new live iso. You now know how to make your own FreeBSD derivative.
6. Make some changes in which packages get installed, change some configs, add your own wallpapers, etc. Build your own iso and test it.

The longer answer:
I've built a couple of Linux From Scratch systems. LFS exists to document the tedious process of building a basic linux operating system from the pile of source tarballs for the base system. This is a challenge in linux, but not in bsd, because every part of linux is developed separately and released as a source package separately for the kernel, the C library, the compiler, the linker/loader, the core utilities, the shell. You need all of these pieces at once to build even one package of application software. And of course to even build the first piece you have to have a compiler running somewhere so it is assumed that you have some kind of operating system already running on your hardware with an appropriate compiler and then you start build your new LFS system in a chroot. The LFS book explains nicely what this bootstrap problem is and one way to work around it to get a complete system built at last from the big pile of independently developed source tarballs (at least a thousand such tarballs for a minimal base linux o.s.).

This is one part of the overall problem of bootstrapping a system. Unix got started by hand translating some assembly code into hexadecimal and getting that code into the computer via mechanical switches on the front panel of the machine, that got the machine into a state where more hexadecimal could be loaded via tape, which eventually got it able to translate B code, and so and so on for the next 50 years. I have twice brought up an operating system (that I had to write) on new, bare hardware and did a similar process of writing some assembler code, storing the resulting hexadecimal code directly into the boot ROM, and getting it to bring up my small virtual machine (Forth) that was then capable of translating more assembly code out of ROM, which eventually had enough functionality to compile higher-level code, which eventually loaded the network drivers, scsi driver, serial drivers, graphic drivers, machine control process, and on and on.

Once we have a complete running system we have holy grail, the answer to all computing problems, because you can build any kind of computer system if you have any kind of computer system to start from. Only a genius with a long life could build a system starting from logic gates and wires. The make any computer system, a Linux distro or BSD variant or embedded system for the Starship Enterprise, you must start with a computer system. So you first decide what system to start with, and then how to transform it into what you want.

So the next, less simple answer:
1. Download and install the most portable unix operating system, NetBSD.
2. Read the cross-building instructions at Crosscompiling with build.sh
3. Practice cross-building from x86 to x86, making small changes in the features of your system, until confidant in your process. Test each image you make to make sure it runs ok.
4. Now cross-build from x86 to some other architecture, say ARM or RISCV, and using everything you've learned get that image loaded onto and running an ARM development board -- now you know how to evolve a system onto new hardware.

Good journey. Pick something from our suggestions, do it, enjoy.
 
GhostBSD is GNOME, if you want that, it might be ok for you. They are mature (exist for years/decades?). I can not comment because I use KDE. FuryBSD is a one-man-show... bypasses the FBSD installer, junk left over from the live media in the fresh installation,... Maybe in a year FuryBSD is much better. For the time beeing, I can not recommend it. Better get a bloody nose early by getting FBSD up & running yourself, than to rely on others pre-configuration while what you're actually doing is to help them finding their bugs ;)
one-man-show == performed by one person only.
No developer team?
 
This is solely my personal impression, i.e. a guess based on some very limited experience & observations. Go there and ask yourself! Beeing a one-man-show does not mean it's going to fail, though. This guy has some background assembled from his participation at PC-BSD/TrueOS. It's just that at this early stage there are some essential issues, basically done wrong IMHO. I'd be happy if some day I can install BSD on my mother's tablet -- she's over 70. A grandmasBSD. But it's a long route leading there...
 
Thanks for your patience. Any steps of actually building something on your own are good steps, and I understand that you're asking "what the heck is the first step?"

First a simple answer (I thought my previous reply was simple, although the first paragraph was sarcasm ;)
1. Download and install what is probably the most well-developed and simplest of the ready-to-go FreeBSD desktop systems, https://nomadbsd.org/
2. It installs to and can run off a USB stick. You don't have to touch your hard drive yet. You can use it off the USB just like any bare-metal install -- add packages, change configs in /etc, whatever.
3. When you're comfortable with nomadbsd and have done some preliminary customization install your nomadbsd system to a fast hard drive / ssd so that your further experiments will have plenty of drive space and run faster. You install nomadbsd from any running nomadbsd. Start Openbox menu -> System -> NomadBSD Installer and follow the instructions.
4. Download the source code for the nomadbsd live iso build system.
5. Follow the instructions in the file build.hlp to build a new live iso. You now know how to make your own FreeBSD derivative.
6. Make some changes in which packages get installed, change some configs, add your own wallpapers, etc. Build your own iso and test it.

The longer answer:
I've built a couple of Linux From Scratch systems. LFS exists to document the tedious process of building a basic linux operating system from the pile of source tarballs for the base system. This is a challenge in linux, but not in bsd, because every part of linux is developed separately and released as a source package separately for the kernel, the C library, the compiler, the linker/loader, the core utilities, the shell. You need all of these pieces at once to build even one package of application software. And of course to even build the first piece you have to have a compiler running somewhere so it is assumed that you have some kind of operating system already running on your hardware with an appropriate compiler and then you start build your new LFS system in a chroot. The LFS book explains nicely what this bootstrap problem is and one way to work around it to get a complete system built at last from the big pile of independently developed source tarballs (at least a thousand such tarballs for a minimal base linux o.s.).

This is one part of the overall problem of bootstrapping a system. Unix got started by hand translating some assembly code into hexadecimal and getting that code into the computer via mechanical switches on the front panel of the machine, that got the machine into a state where more hexadecimal could be loaded via tape, which eventually got it able to translate B code, and so and so on for the next 50 years. I have twice brought up an operating system (that I had to write) on new, bare hardware and did a similar process of writing some assembler code, storing the resulting hexadecimal code directly into the boot ROM, and getting it to bring up my small virtual machine (Forth) that was then capable of translating more assembly code out of ROM, which eventually had enough functionality to compile higher-level code, which eventually loaded the network drivers, scsi driver, serial drivers, graphic drivers, machine control process, and on and on.

Once we have a complete running system we have holy grail, the answer to all computing problems, because you can build any kind of computer system if you have any kind of computer system to start from. Only a genius with a long life could build a system starting from logic gates and wires. The make any computer system, a Linux distro or BSD variant or embedded system for the Starship Enterprise, you must start with a computer system. So you first decide what system to start with, and then how to transform it into what you want.

So the next, less simple answer:
1. Download and install the most portable unix operating system, NetBSD.
2. Read the cross-building instructions at Crosscompiling with build.sh
3. Practice cross-building from x86 to x86, making small changes in the features of your system, until confidant in your process. Test each image you make to make sure it runs ok.
4. Now cross-build from x86 to some other architecture, say ARM or RISCV, and using everything you've learned get that image loaded onto and running an ARM development board -- now you know how to evolve a system onto new hardware.

Good journey. Pick something from our suggestions, do it, enjoy.

The best answer.
Sometimes trying to obtain a good solution is "complicated" but you got it. I was finding this before, until a guy created NomadBSD with iso creation method and now, i can create my own ISO ready to use and install, with my own configs, with custom dot files, window managers, and programs pre-installed, in a pure FreeBSD base with basic Desktop settings ready to use. Thanks. 👍
 
...There is just something about the simplicity of FreeBSD and when I try to add a desktop environment or login manager, it feels wrong. That's just me though...
I get the same feeling. I call it "Linux desktop PTSD". I've looked at trying to test Shkhln excellent work on Steam for Freebsd, and my PTSD kicks in. I'm so happy running xinit on a text console to bring up Openbox. I don't want to ruin that experience.
 
I had to "dd: PTSD" in my browser... and it reminded me there used to be small utilities on GNOME/Mate & KDE to prevent RSI. make -C /usr/ports search key=RSI | egrep '^(Port|Info):' | less search for RSI, pkg install rsibreak. There are more such utilities when you search for the term key=break and maybe key=pause or mouse. Thx for the indirect reminder!
 
First of all: I LOVE FREEBSD :D (having been an happy user since 4.1 ...)
Now, please let me "steal" this thread for asking what may seem a trivial question
but i think that it's somehow related to the argument of this thread.

I know that there are many ways (nano*, pico*, etc ...) to skin this cat but i would ask for some guru
(plenty of those people here ;) ...) if there is a "quick and dirty" way to:

Install FreeBSD (just plain command line os, no desktop ...)
Install your preferred tools, bells & whistles ...
Move the whole thing "as is" to a CD or better to an USB key ...

My humble konwledge of FreeBSD suggests ... "dd" or "dump/restore"
but i remember to have been very frustrated when trying this one, some years ago ...
(8.* releases)

Nowadays ( being "jailed" most of the time because of what you know ... )
i am trying to increase my intelligence (of al least my knowledge) please help :confused: ...

Kind best regards, all the best ...
Paolo
 
Remember FreeBSD is, unlike Linux, a complete OS. What you are referring to are third party applications, those are available as ports (and by extension packages). They are NOT part of the FreeBSD OS.
If they are not part of the FreeBSD system , then why are they available on FreeBSD and other BSD platforms? The operating system not only consists of the kernel but also the BSD Init tool and third party software to form a complete graphical environment system with desktop and also packages such as web apache for server.

Although Linux doesn't have its own Init tool, GNU/Hurd can be called a base system plus the third-party software that makes up a complete system.
 
For me, not worth the effort. It takes me literally 7 minutes to do the install. After that, just updates and whatever packages I need, done. I save all the configs I need to my NAS and copy them over.
Might be useful for some people but for me it’s so simple I just do it manually.
 
  • Like
Reactions: a6h
Because hundreds (thousands?) of volunteers have spent tens of thousands of hours porting them to Freebsd for many years.

That does not mean that it is not a part and available for FreeBSD, because a complete system consists of the kernel, plus the Init tool, plus third party software if available or compatible.

Looks like Freebsd init comes from Berkeley.
Also the Apple operating system has been opportunist from the best of FreeBSD to become closed code for the benefit of apple if I am not mistaken.
 
That does not mean that it is not a part and available for FreeBSD, because a complete system consists of the kernel, plus the Init tool, plus third party software if available or compatible.
What a system consists of depends on the user. For some people, in embedded applications, a "system" is just a microkernel, which is typically linked against the application, and hard installed. Both BSD and Linux are used in many areas where only the kernel runs. For many servers, you really need just the base system, and a very small number of extra packages. For desktop, one tends to need lots.

Please remember: A very large fraction of all computers are NOT user-facing machines. Even of the ones that run full general-purpose operating systems (such as Windows, Linux, MacOS, Android, iOS, ... and BSD), the majority are not in people's hands or in people's laps, but in data centers.

Also the Apple operating system has been opportunist from the best of FreeBSD to become closed code for the benefit of apple if I am not mistaken.
So? Is that a problem? BSD is so good that some people decided to use it. I think that's wonderful.
 
For many servers, you really need just the base system, and a very small number of extra packages.

Even if it is a half package, it is already part of the operating system even if it is on the server.

So? Is that a problem? BSD is so good that some people decided to use it. I think that's wonderful.
That is why I would like FreeBSD to be extended to the graphical desktop by default so that everyone can use BSD for free, and not as closed source Apple.
 
That is why I would like FreeBSD to be extended to the graphical desktop by default so that everyone can use BSD for free, and not as closed source Apple.
You can already do that, though not by default, so I don't understand what point you are trying to make. Many, MANY people install FreeBSD without a desktop and which desktop would you install by default? That would be forcing choice on users and I don't think we want to do that.
 
That is why I would like FreeBSD to be extended to the graphical desktop by default so that everyone can use BSD for free, and not as closed source Apple.

Try approaching it this way:

I would like macOS to be extended to a command line environment by default so that sysadmins can use macOS for a cost, and not as open-source as BSD.

Apple would tell me to sod off right? This is not the direction they want. Likewise the same is true with FreeBSD. A consumer operating system is not one of the goals.
 
[...] Likewise the same is true with FreeBSD. A consumer operating system is not one of the goals.
And IMHO that's the main reason why Linux is so widespread while FreeBSD is a niche product. If it were only about technical reasons, FreeBSD should be at least on par with Linux. E.g.: IIRC, the company TP-LINK bite their ass when they had to release the propietary changes they made to Linux on one of their WLAN-routers to the public (initiated by guys from OpenWRT). Had they take more care about these license issues, they would have choosen FreeBSD instead. But they didn't, because their engineers were Linux users. Spread the word:
  • FreeBSD on the desktop, easy to use for ordinary users -- while keeping full CLI access for advanced wizzards -- is the key to gain more market share, and thus more contributors.
 
they would have choosen FreeBSD instead. But they didn't, because their engineers were Linux users.

I doubt the PS3 and PS4 developers at Sony were FreeBSD users but that certainly didn't stop (a modified) FreeBSD become one of the most widely deployed consumer platforms in the world ;)

  • FreeBSD on the desktop, easy to use for ordinary users -- while keeping full CLI access for advanced wizzards -- is the key to gain more market share, and thus more contributors.

It is impossible. GUI tools can simply never hope to interact correctly with powerful CLI tools. Crippling the CLI tools is not an option.

You can even see this conflict happening in Linux. https://bugzilla.redhat.com/show_bug.cgi?id=1650342

RedHat (who invented systemd) is not actually using many parts of it for their own distro. They don't even officially provide systemd-networkd, instead opting for the GUI centric NetworkManager (and crippled nmcli tool).

We don't want FreeBSD to be a mess basically. And yes, FreeBSD is a niche OS because most users don't need a decent OS. They are fine with Windows and macOS. Just like Chlamydia is not a niche disease but that doesn't make it good ;).

And besides...

Anyone who is unable to just type pkg install xfce is not an ordinary user... they shouldn't be near a computer.
 
And IMHO that's the main reason why Linux is so widespread while FreeBSD is a niche product.
Widespread among common users. Of course, common users are often programmers and sysadmins or, eventually, become such things but, still, a large portion of Linux usage today is still among people who are just users only and not a target consumer of BSD.
 
I would like macOS to be extended to a command line environment by default so that sysadmins can use macOS for a cost, and not as open-source as BSD.

Apple would tell me to sod off right?
A Mac can perfectly well be used from the command line. Most of the graphical system administration actions have CLI equivalents. However, that's not the "natural" way to administer a Mac.

Matter-of-fact, Apples sells a server version of MacOS, intended for headless machines, and designed around remote GUI for management. It allows setting up a large number of Macs nearly identically, centralized change management, and setting up user accounts (profiles) on specific machines. The typical machine that one runs this on is either the Mac Mini for small servers, or the Mac Pro for large ones. Not all that uncommon for a small enterprise-scale deployment as a centralized set of servers.
 
You can already do that, though not by default, so I don't understand what point you are trying to make. Many, MANY people install FreeBSD without a desktop and which desktop would you install by default? That would be forcing choice on users and I don't think we want to do that.

I think that the FreeBSD installer should have two options, one for CLI (For professionals and advanced users) that the system would end up in terminal and then choose what it wants, and another for (GUI) for nobs and non-nobs users that don't have so much time to manually set up the system and install it from scratch by choosing the graphical option with desktop to choose either Xfce or Mate and why not if there was a lightweight window manager like JWM for the low-resource computers.

kpedersen said:
Try approaching it this way:

I would like macOS to be extended to a command line environment by default so that sysadmins can use macOS for a cost, and not as open-source as BSD.

Apple would tell me to sod off right? This is not the direction they want. Likewise the same is true with FreeBSD. A consumer operating system is not one of the goals.

This is not the of interes for Apple or his employees because they will spoil the party of keeping their giant fortune in the hands of a few, while those who have supplied the best of their code are about to disappear
 
Matter-of-fact, Apples sells a server version of MacOS, intended for headless machines, and designed around remote GUI for management.

I got to experience this whilst configuring a build server. The VNC did support multiple sessions (which was actually fairly unexpected) but the whole thing was a mess. I don't think it was even possible to accept security keychain things via the cli, so every so often when the build server stalled for a while, we would have to VNC in and press a stupid "accept" button.

This summarizes it well:

The solution being to use some UI automation script to simulate clicking of a button is... frankly absurd. We deserve better than that XD
macOS chroot support is also completely broken. It was not fit for purpose.

And people want to turn FreeBSD into this joke of a system?

while those who have supplied the best of their code are about to disappear

Agreed. macOS used bash as the default shell, vim as the editor and screen as the multiplexer. All from Linux which is indeed on life support.

Xfce or Mate and why not if there was a lightweight window manager like JWM

Code:
# pkg install mate
# pkg install xfce
# pkg install jwm

Done. Now stop faffing and get on with your life XD
 
An option in the FreeBSD installer to setup DRM/Mesa/X.org, then allow you to choose and install your DE or WM of choice would nice. ie. A separate step asking “would like to install a desktop?”, then follow up with options for a full DE meta-port or a simple WM. I really don’t want to remember and re-do every little step and command involved to setup a basic desktop.

Just give the user a way to get the infrastructure installed easily; then once our DE/WM is installed we’ll choose our own apps, codecs, etc.
 
Status
Not open for further replies.
Back
Top