User Tools

Site Tools


wiki:bsd:installfreebsd

Install KDE on FreeBSD

1.0 Introduction

Linux is a great desktop operating system, but not a perfect one. If I had a free hand in things, I think I'd prefer to run Solaris on the desktop -except that hardly any of the software I use daily is readily installable on it. Also, true Solaris costs big bucks and requires you to worship at the altar of Oracle, which is a place I'd rather not go back to in a hurry! I have previously attempted to use OpenIndiana as a genuinely freebie alternative to “proper” Solaris, and it excels as a server… but as a Desktop, it's a bit of a disaster area, since it lacks so much application software that a desktop user would consider essential.

So, my other free hand would be to get FreeBSD as my daily operating system. FreeBSD is lean and sharp: it is my principal choice of server operating system, as it runs ZFS natively and thus acts as an extremely tidy storage server… so long as you don't mind a command line-only environment in which to work!

The good news, however, is that FreeBSD can, with some difficulty, be turned into a familiar desktop environment, running proper KDE 5 or Gnome or pretty much any other graphical desktop environment of your choice. Most of my usual software applications can also be installed without too much effort, a fact by which I was most pleasantly surprised.

Anyway: the point of this article was to document how you might go about turning FreeBSD into a usable desktop operating system, including the installation of a set of applications I find invaluable. Compared with Windows or Linux, I think it's a bit of a bumpy ride -though, if you've any experience of getting Linux systems to work the way you want them to, there's not a lot here which is completely off the planet. It's just that there's a lot more manual fiddling to do with assorted configuration files, because the FreeBSD 'way' is to let you be in control of pretty much everything (which is a nicer way of saying: if you want it, you've got to make it happen, because it's not just going to be magicked into existence by automated wizards and the like!)

I should also mention up-front: the instructions that follow worked nicely on a Dell Lattitude laptop; they worked somewhat on a Toshiba P870 laptop, but with weird graphical glitches; and they didn't work at all on an ancient Compaq desktop (circa 2007) with Intel GMA graphics. Your mileage will therefore likely vary, depending on your hardware -and especially on your graphics and networking hardware. You can allegedly get FreeBSD working with NVidia and AMD graphics hardware, but I found integrated Intel graphics in recent i5 processors worked mostly fine. My Realtek network adapters were a real hit-or-miss affair, though, with some working out of the box, and others not at all!

It is, in short, a bit of bumpy ride, but strap yourself in and prepare to have some fun…

Note that in what follows, “hjr” is my non-root user (so replace that name with something more appropriate for your environment whenever it appears); “schubert” is my laptop's hostname (ditto); and “dizwell.home” is my internal network's domain name (ditto again).

2.0 Installing base FreeBSD

Start by downloading the FreeBSD-12.0-RELEASE-amd64-dvd1.iso (from, for example: here). You then boot your PC, laptop or virtual machine with that ISO.

I'm not going to produce a thousand different screenshots to document the installation procedure. For the most part, it is self-explanatory and in a lot of places, you just accept whatever default options are presented to you. A listing of the specifics, however, now follows:

  • Option 1 (Boot Multi user)
  • Install
  • Continue with default keymap
  • Supply hostname (“schubert”, for the purposes of this article, but you pick your own as you like)
  • On the 'optional system components' page, switch on the 32-bit libraries (if they aren't there already), the Ports Tree and the src System Source Tree. (The latter two allow the installation of applications via Ports, which means compiling source code, for which the system source files are often needed).
  • Accept default partition options (though you might care to choose Auto ZFS instead of Auto UFS: it depends on the system as to whether ZFS is desirable on the boot drive or not. ZFS on a single drive is of limited usefulness.)
  • Entire Disk
  • Accept default Partition Scheme (with DOS Partitions, probably. Depends on your system and disk size as to whether GUID partition table is appropriate or not)
  • Press Enter to choose the 'Finish' option and make partitioning take effect
  • [Commit] to confirm
  • Type in a usable root password (and repeat when prompted)
  • Select an appropriate network interface to configure
  • Yes to configuring IPv4
  • Yes to using DHCP (assuming your router etc is acting as a DHCP server)
  • No to using IPv6 (unless you really want to!)
  • Specify DNS Search domain “dizwell.home”, then DNS Servers. If you don't have one internally, use 1.1.1.1 or 8.8.8.8 or 8.8.4.4 as you prefer
  • Specify a time zone region (Europe, for example)
  • Specify a time zone country (United Kingdom, for example)
  • Confirm a time zone when prompted as to what looks reasonable
  • Set Date when prompted
  • Set Time when prompted
  • Switch on ntpd, and powerd, then [OK] (leave sshd and dumpdev on as they are by default)
  • [OK] when prompted to harden -no need for a desktop, I think
  • Add a non-root user to the system, so: Yes
  • Supply username ('hjr' for the purposes of the rest of this article), full name, press [Enter] to accept all other defaults, supply a password (twice), [Enter] and then [yes] followed by [no] for no other users
  • On the Final Configuration screen, select [Exit] then [OK]
  • On the Manual Configuration screen, select [Yes]

That last option lets you perform post-install configuration steps in a command line environment. Fortunately, you don't need to do too many things at this point, but I would suggest doing at least:

  • pkg (followed by 'y')
  • pkg install nano bash xorg sudo rsync (proceed with 'y' when prompted)

(about 215MB of software is now downloaded, so be prepared to be patient)

  • exit
  • reboot (and remove the boot medium, be it USB stick, DVD etc.)

The PC will now reboot into mult-user FreeBSD by default. When it comes back up, login as root. The first thing to do is make your non-default user capable of acting with root powers, by allowing him or her to issue 'sudo' commands:

  • setenv EDITOR nano
  • visudo
  • Find the 'User privilege specification' and add your non-root user there following the same template as already exists for 'root' ie, end up with “hjr ALL=(ALL) ALL”
  • Save and exit
  • Type exit to stop being root
  • log on as your non-root user
  • sudo -i (just to prove you can become root when needed)

3.0 Add KDE to the mix

Still logged on as root (or as the ordinary user, but having issued the 'sudo -i' command), issue the following commands:

  • pw groupmod video -m hjr
  • pw groupmod wheel -m hjr
  • nano /boot/loader.conf
  • Add the text “kern.vty=vt” to the new file (without quotes)
  • pkg install plasma5-plasma-desktop kde5 sddm

(Another 1GB of software is then fetched, so be very patient at this point!!)

There are now some configuration steps to take to make sure KDE can run automatically at each reboot. To begin with, type the command:

nano /etc/rc.conf 

…and then add the following lines to the file:

nisdomainname="dizwell.home" 
moused_enable="YES"
dbus_enable="YES"
hald_enable="YES"
sddm_enable="YES"   

Note that the first of these lines says my PC will belong to the domain 'dizwell.home', which is true for me, but unlikely to be true for you: add whatever domain name makes sense in your own environment.

Next, issue the command:

nano /etc/fstab

…and add the line:

proc     /proc   procfs  rw  0 0

This provides a file system which graphical desktop environments tend to want to see.

Next, issue the command:

nano /etc/hosts

Your PC's IP address and fully-qualified hostname, together with its abbreviated equivalent, now need to be added to this file. In my case:

192.168.137.100   schubert.dizwell.home   schubert   

Save the modified file when you're done.

Finally, type:

nano /etc/sysctl.conf

To this file, add the lines:

net.local.stream.recvspace=65536
net.local.stream.sendspace=65536

Save the modified file and then issue the command:

reboot

When the machine comes back from its reboot, it should automatically take you to the KDE graphical login page. You can then log in as usual and you'll see something which looks pretty much identical to what you'd get on most KDE-flavoured Linux distros:

(Screenshot)

4.0 Customising KDE

In this section, I'm going to add the various bits and pieces of application software I need to make a PC or laptop usable. The mix of applications is specific to me and my requirements, so there is no doubt you could add more and different software as you prefer (though whether everything you want is going to exist in the standard repositories is an open question: try to install something to find out, basically!)

It's perhaps an odd thing to begin with -and it's definitely a less-than-friendly way to start off the process of KDE customisation- but installing lame as your first KDE customisationis required because it's a dependency of a lot of the software we'll shortly go on to install in a much more friendly manner. Lame is an MP3 converter program, so if you want to do anything with MP3 audio, it's pretty much an essential in its own right, anyway!

So, to install “lame”, just type:

sudo -i
cd /usr/ports/audio/lame 
make install clean 
exit

Click twice enter to accept the prompts that appear: there's no point in worrying about what the prompts actually mean! Note that these instructions rely on you having added the Ports selection as one of the 'Optional System Components' during the initial installation. If you didn't, you will first need to do:

 sudo portsnap fetch update
 sudo portsnap extract
   

…and then you can do the earlier commands to compile/install lame.

So, once lame is in place, and assuming you're logged on as the normal, non-root user, the relevant command for me, issued in a Konsole (i.e., terminal) session, would be:

sudo pkg install vlc libreoffice firefox chromium keepassxc latte thunderbird homebank k3b handbrake krita digikam musescore stellarium cuetools shntool ffmpeg flac cdparanoia libdvdcss motion virtualbox-ose audacity yakuake wget abcde qbitorrent smartmontools dvdrip clementine-player hwstat smplayer stress easytagv linphone

That lot produces a massive 1GB software download which eventually consumes an even larger 3GB of disk space, so you need a good Internet connection and shares in a tea-making company.

That particular set of software packages is, of course, suited to me and my needs, so you should add to it or delete from it as you deem appropriate. As a quick run-down, though:

vlcMulti-codec video and music player.
libreofficeOffice suite, including Word Processor, Spreadsheet, Presentations and so on
firefoxA web browser which, uniquely these days, does NOT use the Chromium/Webkit browsing engine
chromiumAnother web browser which does use the Chromium/Webkit browsing engine
keeepassxcAn off-line password manager
latteAn attractive and highly functional dock for KDE, making it possible to launch programs with one mouse-click
thunderbirdAn email client
homebankA capable, native-KDE, home finance management package
k3bA CD/DVD burner program, native to KDE
handbrakeA video conversion program
kritaA KDE-native graphics editor/creator, similar to Gnome's Gimp
digikamA KDE-native photo and image organiser
musescoreA music notation (and score-playing) program
stellariumAn astronomy program, effectively making your PC a personal planetarium
cuetoolsA utility to split large audio files into separate tracks
shntoolA utility to apply metadata tags to audio files
ffmpegA Swiss Army Knife of audio and video conversion and manipulation tools
cdparanoiaA library to rip audio CDs securely and error-free
libdvdcssA library that makes possible the ripping of commercial DVDs
motionA utility that captures video from your webcam any time motion is detected
virtualbox-oseA Type-2 Hypervisor, making the running of Windows and Linux systems within FreeBSD a possibility
audacityAn audio file manipulator and editor
yakuakeA terminate-and-stay-resident, drop-down command prompt
wgetA program to fetch files from websites
abcdeA Better CD Encoder -a CD ripper and audio file converter program
qbittorrentA KDE-native Bittorrent client
smartmontoolsA tool to interrogate the SMART data your hard disks store about their health/condition
dvdripA simple DVD ripping program
clementine-playerA KDE-native audio manager and player, good for large music collections
hwstatA utility to display CPU temperatures and hard disk information
smplayerAnother video player, similar to VLC
stressA small utility to apply load to your CPU, allowing you to do burn-in and stress-tests
easytagAn audio metadata tagging utility
linphoneAn alternative to Skype

5.0 Getting VirtualBox to work

You've just installed VirtualBox, but to get it working properly you now need to do the following:

sudo nano /etc/sysctl.conf

Add the lines:

vfs.aio.max_buf_aio=8192
vfs.aio.max_aio_queue_per_proc=65536
vfs.aio.max_aio_per_proc=8192
vfs.aio.max_aio_queue=65536

Save the resulting file. The new settings will kick in after your next reboot, or you can make them take effect immediately with the commands:

sudo sysctl vfs.aio.max_buf_aio=8192
sudo sysctl vfs.aio.max_aio_queue_per_proc=65536
sudo sysctl vfs.aio.max_aio_per_proc=8192
sudo sysctl vfs.aio.max_aio_queue=65536

…which will helpfully show you the inadequate initial settings and what they've been changed to.

You now need to make VirtualBox usable by 'normal' (i.e., non-root) users, with the following set of commands. Note that my non-root user is called “hjr”; change that to whatever is appropriate in your environment!

  * sudo pw groupmod vboxusers -m hjr
  * sudo pw groupmod operator -m hjr
  * sudo nano /boot/loader.conf - add the line: vboxdrv_load="YES"
                                - add the line: atapicam_load="YES"
  * sudo nano /etc/rc.conf - add the line vboxnet_enable="YES"
                           - add the line devfs_system_ruleset="system"
                           - add the line hald_enable="YES" (should already be there, given what we did in Section 3 earlier to get KDE working in the first place)
  * sudo nano /etc/devfs.rules - (create the file if needed). Add the following to the file:
  
        [system=12]
        add path 'usb/*' mode 0660 group operator
  Now: sudo /etc/rc.d/devfs restart
       
  sudo nano /etc/devfs.conf         Add the lines:
  
  perm cd0 0660
  perm xpt0 0660
  perm pass0 0660
  
  Then: sudo reboot

6.0 Desktop Effects

When I installed FreeBSD on my Dell Latitude laptop, which runs an i7 with integrated Intel graphics and an AMD Radeon chip, I was disappointed to discover that I was not allowed to switch on the wobbly windows desktop effect. That's because FreeBSD's support for these sorts of accelerated graphics chips needs to be enabled manually. I decided not to try getting the Radeon working but, instead, to just get the integrated Intel graphics working properly. That means installing driver support for integrated graphics chips, which in the case of my fairly recent (2015-ish) laptop meant doing:

sudo pkg install drm-kmod

Then:

sudo nano /etc/rc.conf

Add the line:

kld_list="/boot/modules/i915kms.ko"

A reboot should get the drivers picked up correctly. After that, a visit to the Desktop Effects allowed me to switch on Wobbly Windows and Magic Lamp effects. You are free to choose more sedate (and boring!) options if you prefer, naturally!

That all worked for me, at any rate, but if your hardware is different, you may need to take different approaches, in which case the FreeBSD wiki is the place to look for assistance.

One word about switching between virtual desktops: in KDE on Linux, I can usually configure a keyboard shortcut to trigger moving left or right between virtual desktops (and thus rotating the desktop cube I use as the switching effect). On FreeBSD, however, no such option seems available. The best I could come up with instead was to click the Settings option for the Desktop Cube effect (not the Desktop Cube Animation item, but the Cube effect itself). In the bottom-half of the settings page, you'll find a KWin → Desktop Cube global shortcut (by default, it's Ctrl+F11). If you set that instead to Ctrl+Alt+right-arrow, you'll get almost the same effect as I'm used to on Linux. Pressing all three keys in sequence will trigger the presentation of the desktop cube; pressing right-arrow and left-arrow keys on their own will then let you rotate between the different desktops. Pressing Enter will select whichever desktop is currently displayed.

7.0 Other System Enhancements

7.1 CPU Temperature Measurement

It is sometimes helpful to know if your laptop is about to enter meltdown status, so to be able to monitor CPU core temperatures, issue this command:

sudo nano /boot/loader.conf

And then add the line:

coretemp_load="YES"

At your next reboot, the kernel module allowing you to do realtime monitoring of CPU temperatures will then be loaded. If you can't wait for the next reboot, just issue the command:

sudo kldload coretemp
  

(Note: for AMD CPUs, it's “amdtemp_load=“YES” for the configuration file, and “kldload amdtemp” for the instant result).

Once the kernel module is loaded, you can check your CPU and other system temperatures with the command:

sudo sysctl -a | grep temperature

7.2 Yakuake at Startup

You installed yakuake earlier. If you want that to auto-start at each reboot, you need to add it to KDE's autostart mechanism, which you'll find in Start → System → System Settings → Startup & Shutdown → Autostart. Click [Add Program], start typing 'yak' and select the program item when it's displayed.

7.3 Changing to the Bourne Again Shell

In FreeBSD, your default shell is ”/bin/sh“, which is functional but doesn't work as Bash shell afficionados will expect. To take just one example, whereas in Bash you say export EDITOR=nano, in sh, you just say setenv EDITOR nano. For a simpler life, long-time Bash users like me might prefer to do the following:

chsh -s /usr/local/bin/bash

…but don't alter the default shell for the root user, as a lot of base functionality expects to run scripts which Bash might choke at, where plain old 'sh' won't.

8.0 Some Performance Tuning Tweaks

Your mileage will vary as to whether the following tweaks and customisations are (a) useful or (b) applicable to your hardware and environment. But on my laptop, I make the following edits to certain configuration files:

sudo nano /boot/loader.conf

…and add the lines:

net.link.ifqmaxlen="2048"
aesni_load="YES"
cpuctl_load="YES"

Next:

sudo nano /etc/rc.conf

…and add the following lines:

clear_tmp_enable="YES"
ntpd_enable="YES"  (though you may find this one is already enabled as a result of your choice of installation options)
ntpd_flags="-g"

The -g flag when supplied to the ntp daemon allows the very first clock adjustment to be big -potentially useful when booting up after a long period of non-use, where the internal BIOS clock may well have experienced considerable drift from 'real' time.

Working with a lot of text like “Arvo Pärt” and “Götterdämmerüng”, I need UTF-8 to be the default system locale and characterset. Therefore:

sudo nano /etc/login.conf

At the end of the un-commented “default:\” section, first add a backslash to the end of the existing “umask” line, so that instead of reading ”:umask=022:“ it now reads ”:umask=022\“. Once that's done, add the following new lines:

  :charset=UTF-8:\
  :lang=en_GB.UTF-8:

Make them properly indented, so they line up with existing entries. I use “en_GB” there, because I'm British-English, but if you need some other locale, feel free to substitute it in. Note that the last line doesn't end with a backslash, but only with a colon.

Once the file is saved, issue this command:

sudo cap_mkdb /etc/login.conf

That 're-compiles' the modified values in the login.conf into a usable database that the operating system can read and apply when it is, eventually, rebooted.

9.0 Webcam

My laptop has a built-in webcam (as is fairly standard these days, I think!). Unfortunately, it didn't work out-of-the-box. But it was fairly easy to get working. First, install the viewer program:

sudo pkg install pwcview

To get things working, you first need to load the cuse4bsd kernel module:

sudo kldload cuse4bsd

You then need to start the 'webcam daemon', specifying the actual webcam device on your laptop. You won't know what that device is actually called at this point, so just issue this command to begin with:

webcamd

That should produce a message that lists all the devices with which webcamd might work. One of them should be an actual webcam! (It will probably pick up basic USB devices, too, but those should be ignored). In my case, for example, the command produced this output:

$ webcamd 
Available device(s):
webcamd [-d ugen0.1] -N 0x8086-XHCI-root-HUB -S unknown -M 0
webcamd [-d ugen0.2] -N SuYin-IntegratedWebcamHD -S HF1026-T838-HN01-2-REV4261 -M 0
webcamd [-d ugen0.3] -N Generic-USB2-0-CRW -S 20100201396000000 -M 0
Show webcamd usage:
webcamd -h

From that lot, I now know my webcam is the 'SuYin-IntegratedWebcamHD' device shown, properly referenced as “ugen0.2”.

Knowing that, I can then issue this command:

sudo webcamd -d ugen0.2

…which then shows that virtual devices /dev/video0 and /dev/video1 have been created. In another terminal, I can then do:

sudo chmod 666 /dev/video*

…followed by:

pwcview

…at which point, a small application window will appear with you looking back at yourself rather oddly (well, I always look a bit odd in a webcam, anyway!)

Which is all well and good, but everything then reverts to not working if you reboot your laptop! So how can we make this thing work automatically and without special permissions being required at every step? By editing some configuration files, of course!

First:

sudo nano /etc/rc.conf

Check that the line:

devfs_system_ruleset="system"

…is already there (we put it in as part of the VirtualBox installation), or add it if it's not. Then:

sudo nano /etc/devfs.rules

…and add the following content:

[system=12]
add path 'video*' mode 0666

Again, you may already have the starting line of this text because of the VirtualBox installation instructions, but the 'add path video' bit will definitely need to be added.

Next:

sudo nano /etc/rc.conf

Add the line:

webcamd_enable="YES"

Finally:

sudo nano /boot/loader.conf

Add the line:

cuse4bsd_load="YES"

…to get the relevant kernel module loaded automatically at every future reboot.

Now, if you reboot, you'll just be able to issue the command “pwcview” and see yourself in a video window as before: all those other steps we did manually before are now taking place automatically as part of the boot-up process.

If, like me, your webcam starts in a low-resolution display, you can force a higher one by altering the pwcview command slightly. For example:

pwcview -s svga

…which will give you 640×480, if your webcam can actually support that resolution, of course. You can also increase the framerate from the default 5 frames per second to a smoother 25 or 30 (again, depending on your webcam's native capabilities) with a -f switch:

pwcview -s svga -f 30

It's a bit clumsy, but things do work from that point onwards. I should note that the use of cuse4bsd and webcamd is only really intended for webcams that are not properly supported by the pwc driver. But the list of webcams supported by pwc is finite and I wasn't sure my laptop's was on it, so I took the cuse4bsd+webcamd route and things work sufficiently well that I'm disinclined to try anything else at this point!

Remember that aliases are your friend, too: if you alias “pwcview -s svga -f 30” to “webcam”, you can just type the short-form of the user-friendly command and get the larger size and smoother framerate of the long-form, without all the extra typing! Thus:

alias webcam="pwcview -s svga -f 30"

Stick that in your ~/.bashrc to make it a permanent alias!

10.0 Wine

It is conceivable you want to run a Windows program or two on top of FreeBSD: Wine is a compatibility layer that allows lots of Windows programs to run in assorted alien environments (usually thought to be Linux, but FreeBSD works as well). Here's how to install Wine to allow you to run (for example) Office 2010.

sudo pkg install i386-wine

Once the program is installed, as yourself (not as root), type the command:

winecfg

You will then be prompted to install some additional packages (such as mono and Gecko) which are needed to get Wine to a fully-working state: agree to install them both.

To then get Office 2010 working, assuming you have the 2010 ISO, you would first extract the ISO, resulting in a folder containing both x64 and x86 (64-bit and 32-bit) versions. Since the 32-bit version is the only one that reliably works on FreeBSD, you'd then do:

cd x86
wine setup.exe

Follow the prompts and before long, you'd have functioning Word 2010 or Excel 2010 on top of FreeBSD, as you can see:

{screenshot to come}

Wine can nevertheless be a bit of a hit-and-miss affair on FreeBSD. I've found, for example, that none of my Office 2010 program windows are re-sizeable or moveable after program launch, which makes using them somewhat less than a lovely experience! That they run at all, however, is a bit of a miracle as far as I'm concerned -and I'm grateful that they do.

11.0 A Replacement for Dropbox

There is no version of Dropbox available for FreeBSD, largely because Dropbox depends on Linux's 'inotify' capability to know when files have changed, and FreeBSD has no such functionality. However, the general consensus appears to be to install and configure rclone, which is a command line-only program that syncs files and directories to lots of different Dropbox-a-like cloudy storage services… including Dropbox!

So, to get a Dropbox-a-like functionality happening on FreeBSD, you just do:

sudo pkg instal rclone

Once the program is installed, you need to configure it, so that it knows how to connect to your Dropbox account (which, obviously, you need to have already created):

rclone config

The program then prompts you as to what to do. Your responses should be:

n -> for creating a 'new remote'
'dropbox' (without the quotes) as the name of the new remote
8 -> select the Dropbox type of storage
[Enter] for client_id
[Enter] for client_secret
n -> no advanced config
y -> auto-config

At this point, a browser will be opened with a prompt to log into Dropbox's website. Supply your credentials and click [Sign In]. When prompted, click [Allow] to permit rclone to access your files and folders. When done, return to your original terminal session, where you'll now see a prompt to type 'y' for 'Yes this is OK'.

Finally, type q to quit the config. (Incidentally, note that '8' to mean 'Dropbox type storage' is fairly new; earlier versions had that as option 4, not 8. Later versions may similarly change the numbering. '8' is only the correct answer at the time of writing, in other words! You should read the many options shown and select the appropriate number from the list actually presented to you).

To then use rclone as a Dropbox replacement, first create a directory on your FreeBSD computer to represent your local copy of your Dropbox 'store':

cd 
mkdir Dropbox

Then, whilst you're 'in' the local store directory, issue this command:

rclone copy dropbox: Dropbox/

That's a command to copy the entire contents of the 'dropbox:' remote we just created into the local 'Dropbox' directory. The command always mentions a source and destination directory or object. In this case “dropbox:” is the name of the “new remote” we created earlier, and thus represents “Dropbox Storage in the Cloud”; “Dropbox/” is the local, relative path to the local 'copy' of that cloud storage. Therefore, in this example command, the cloud is the source, and the local directory is the destination.

Give it some time to do its work and you should then be able to ls within the local /home/hjr/Dropbox directory and see the instantiated local versions of files stored in your cloud Dropbox.

To transfer files back from the local directory up to the cloud, the command to use would be the same thing, but with source and destination objects reversed:

rclone copy Dropbox/ dropbox:

Note that 'copy' is a safe option to use, in that it doesn't delete anything from the destination. Files which you've altered in the source will over-write the equivalent files in the destination, however. Rclone determines 'change' by reference to a file's size, modification time or its MD5SUM checksum.

You can also do:

cd  
rclone sync dropbox: Dropbox/

Here again, the cloud 'remote' is the source and the local Dropbox directory is the destination. Thus, the command pulls stuff down from the cloud to your local hard disk. However, if the cloud is missing a file which you have stored locally, the 'sync' operation will delete the local copy. A simple 'copy' would have left the local file alone. Sync operations can thus destory contents of the destination, where copy operations cannot.

To sync 'upwards' (that is, you want a new local file you've just created pushed up to the cloud), you need to reverse the order of 'remote' and directory. Thus:

cd
rclone sync Dropbox/ dropbox:

…will this time push your local files up to the cloud -over-writing anything already in the cloud if it's been changed locally. Again, if your cloud folder (being the destination) contains a file which your local directory (i.e., the source) doesn't have, this command will result in the cloud copy being deleted.

You obviously can add these commands (or variants on them!) into your crontab, to achieve periodic synchronisation of cloud-to-local directory contents.

Note that rclone has no 'run in the background all the time and automatically upload things when you spot changes' mode. You need to run rclone (or have cron run it for you) before anything actually happens. It is not, therefore, a complete replacement for Dropbox; on the other hand, it's good enough for me and my feeble use of 2GB of Dropbox freebie storage.

Meanwhile, you should also note that rclone is also able to connect to OneDrive accounts… which is handy, as I have all my music backed up there,

12.0 What you lack...

There are a number of applications which you will *not* get working on FreeBSD -and some are programs I've become rather used to having in a Linux environment, so their absence is rather obvious and regretted! Some of these might be show-stoppers, others are maybe just inconviences, but I thought I'd mention the main ones which bug me a bit:

The Dizwell Classical CD Ripper doesn't, as yet, work on FreeBSD -which is why, earlier, I got you to install 'abcde' (A Better CD Encoder). It will need to be configured to rip flac files properly, which I documented for Linux in this earlier article (the configuration described there will work unchanged on FreeBSD)

Opera: you can certainly issue the command sudo pkg install opera, but that will install ye ancient version 12 of said browser -the last version before it decided to adopt the Chromium rendering engine. It hasn't been updated in a long time and is practically unusable these days. Try visiting https://www.dizwell.com with it, for example, and it will all end in tears because Opera 12's encryption capabilities are no longer able to handle modern https encryption algorithms. The newer versions of Opera available for download from opera.com are only available for various Linux distros. Opera is a no-show, I'm afraid.

Vivaldi: unfortunately, this is another browser that lacks love for FreeBSD and is therefore not available in any version for it. This is a bit sad, as I use Vivaldi as my default browser on all my Linux installations.

Fortunately, since you've got Chromium itself, you've got the web page rendering engine that new Opera and Vivaldi would have used anyway, so you're not missing out on that sort of functionality. You also have Konqueror installed for free, which is a pretty decent browser in its own right (and from which the Chromium rendering engine was originally derived), so your browser options are quite reasonable. I can live with the absence of Vivaldi, anyway.

If you are truly desperate for more browser choice (and the unkind will say you'd have to be!), you can do:

sudo pkg install epiphany

…which easily gets you the GTK-based browser that is Gnome's default.

Puddletag: Puddletag is an audio tagging tool that is a Qt program (i.e., it's “native KDE”), whereas its nearest equivalent is Easytag, which is a GTK (i.e., Gnome) application. Easytag installs readily on FreeBSD, but Puddletag does not -because, sadly, Puddletag is not being developed at a great pace and accordingly depends on Qt4 libraries, whereas the rest of the KDE world has moved on to Qt5. FreeBSD has deprecated Qt4 applications, so Puddletag didn't make the cut and is not even installable from the Ports collection. The problem with this is that Puddletag properly handles Vorbis Tags (i.e., the sort which you should properly use in FLAC files) where EasyTag does not (converting everything to ID3v2 tags, which should only really be used with MP3 files). Easytag will “do”, but having to use it leaves me feeling I'm getting the raw end of a bad deal!

Dropbox: As mentioned above, there is no Dropbox available for FreeBSD and rclone, whilst providing an extremely effective and capable way of synchronising between cloud and local storage pools, doesn't do real-time synchronisation between them. Personally, this doesn't bother me -and if it did, a crontab which scheduled an rclone sync or copy every 5 minutes would provide enough equivalence to get me through the day. I can see, however, why this might not be an appropriate solution for everyone.

Strawberry: In the Land of Linux, it has been noted for quite some time that the Clementine music player/manager developers haven't been very active for a while and that the project therefore looks, perhaps, to be catatonic, if not actually dead. Accordingly, back in 2018, the project was forked and a clone-of-Clementine, called Strawberry, was created. It really is practically identical to Clementine, except for the (rather silly!) logo and branding. However, it's not in the FreeBSD respositories and therefore cannot be installed on FreeBSD. Fortunately, I do have the original clementine-player instead and that currently meets my music management needs, so I can cope!

MakeMKV: I tend not to rip many Blu-Rays or DVDs these days, so the fact that my favourite DVD/BluRay ripper isn't readily available on FreeBSD is not a disaster for me. It is nevertheless unfortunate. There is talk in various places about it being possible to get it running on FreeBSD, but I wasn't able to get it working and I'm not convinced it would be entirely functional even if I had!

Plex Media Player: The server probably works fine, though I haven't tried getting it working myself. But there's definitely no Plex Media Player on FreeBSD. I'm not sure if that's an issue for me or not. I rather suspect not, as the Home Theatre PC which would be doing the Plex playing is running Debian Linux anyway, for which a perfectly fine Plex Media Player application is readily available. Not having the server would perhaps be a show-stopper; not having the player probably isn't.

Oracle Database: A few years ago, this would have been a show-stopper for me, but happily, these days, as a gentleman of leisure, I have no need to run Oracle databases at all and still less natively. As it happens, there's no way to run Oracle's database product on FreeBSD natively: running inside a VirtualBox CentOS 7 virtual machine is probably your best bet. If you want a database running natively on FreeBSD, though, you can enjoy the delights of MySQL, which is installed automatically. Or even PostgreSQL, which can be installed with:

sudo pkg install postgresql96-server

(Note the version numbers will change over time: do a pkg search postgresql to find out the specific versions current at the time you're reading this, rather than the ones current at the time I'm writing it!)

Be warned, however: don't try to install MariaDB (which is the forked version of MySQL and is thus free from the clutches of Oracle). If you do pkg install mariadb it will install alright -but it will result in the automatic removal of the existing MySQL installation. That's a problem, because quite a few KDE applications and components depend on a MySQL back-end, so when MySQL gets removed, they do too. In short, you can have MySQL or MariaDB, but not both at the same time.

Skype: I don't use it a lot myself, but there's no version of Skype that runs on FreeBSD that I am aware of. However, you earlier installed linphone, and this may give you some equivalent functionality.

13.0 Conclusion

I had hoped that FreeBSD would be my new desktop operating system of choice, but it's not going to happen quite yet. The above instructions got me a long way towards it on a spare, modern-ish laptop I had laying around the place, but I had quite a lot of trouble repeating them reliably on several other laptops and PCs of assorted vintages and sources: KDE would usually work OK, but lock-ups were not unknown and other graphical glitches were far more common than I could comfortably live with. I am therefore not quite prepared to sacrifice my main desktop PC to the FreeBSD experiment, yet.

It is an excellent server operating system, though, and I think it shows great promise as a mainstream desktop operating system. As my skill-level with it goes up (hopefully!) and FreeBSD itself continues to evolve and develop (version 13 is in the works as I write), it may yet prove to be a reliable, desirable mainstream desktop OS.

Watch this space!

wiki/bsd/installfreebsd.txt · Last modified: 2019/05/21 08:45 by dizwell