Thursday, July 26, 2018

Run Slackware 14.2 in GNOME Boxes on Fedora 28

For the next few months I will be studying for the CompTIA Linux+ certification exam at my local college.  I chose to install Fedora 28 on my laptop to immerse myself in the study material.  Online sources state that any Linux distribution can be used to study for the Linux+ certification exam.  The study material I am using is: "Linux+ Guide to Linux Certification, Third Edition" by Jason W. Eckert.  Within the book Fedora 13 is suggested as the accompanying Linux distribution.  Version 13 is a bit old and the latest version of Fedora is version 28.

While I study I plan to still do a bit of work on the SlackBuilds I maintain on  I installed the GNOME 3.28 spin of Fedora 28 which comes with GNOME Boxes for Virtualization.  Slackware installed just fine but I had a few problems:
  1. X would not start stating that no screens could be found
  2. Sound did not work in the X once I did get it to start
  3. Networking did not start by using rc.inet1.conf or with Network Manager
Slackware 14.2 with a failed startx execution in GNOME Boxes.
Other Linux distributions work out of the box using the default settings in GNOME Boxes.  I think this is due to the Express Installation option that sets up sane defaults on a distribution by distribution basis.  GNOME Boxes offers a number of distributions as an installation source for download.  There is not an option to install Slackware using any of the automated sources on Fedora 28.  I had to install using an ISO file I downloaded myself.  As a result I made a few changes to get Slackware working properly.  The easiest way to do this is to install the virt-manager GUI along side GNOME Boxes.  Boxes has very limited options available for customization.  You could also edit the XML for each virtual machine using the virsh edit command, but that can get confusing if you do not know the syntax.

The first thing I did was launch virt-manager and connect to the QEMU/KVM user session on my machine.  Go to File -> Add Connection:
Add virt-manger QEMU/KVM user session on Fedora 28.
After that select the virtual machine you want to edit and open it.  Then go to the virtual machine settings.  Set your Video Card to use the Model VGA.  Set  the Sound Device to use the Model ich6.  Set the Virtual Network Interface Device Model to be e1000.  Essentially what this does is tell the virtual machine to load the correct kernel modules for each virtual device that is not found or recognized by Slackware.  Here are some pictures to explain a bit better:

Set Slackware in virt-manager to use a VGA adaper.

Set Slackware in virt-manager to use the ich6 sound device.

Set Slackware in virt-manager to use e1000 NIC device model.

After that I closed virt-manager and opened up GNOME Boxes.  Slackware Linux 14.2, SalixOS, and Zenwalk Linux all work as expected at this point.  It might be good to get the QXL driver working for more graphics intensive applications within the Slackware virtual machines.  I will only be testing a few very basic GUI applications so the VGA (vesa I guess) video driver should be just fine.

Fedora 28 with Slackware 14.2 on Gnome Boxes machine menu.

Fedora 28 with Slackware 14.2 running in Gnome Boxes.
Thanks for reading and I hope this post was beneficial.  Leave a comment if you have any questions or corrections for this post.

Relevant Links:

Tuesday, March 20, 2018

Use a Raspberry Pi as a Slackware Mirror on your Local Area Network

A few weeks ago I began work on updating all the SlackBuilds I maintain on  It had been a while since I did any work.  My usual development environment involved a few virtual machines managed by VirtualBox.  I would use the snapshot feature in VirtualBox to freeze both my x86 and x86_64 installations of Slackware 14.2.  Then I would use git and clone my GitHub SlackBuild repository on each machine.  All SlackBuild changes on the virtual machines would be synchronized to GitHub and back to the host system.  This process used to work great even though it was a bit wasteful of bandwidth.

I've been forced to do things a bit differently now because I no longer have a very fast internet connection.  The 1Gbps connection is now a 100Mbps connection.  With several smart phones, smart televisions, laptops, and Raspberry Pi's, this connection can be a bit slow.  Just the videos streaming and software security updates can be an issue at times.  It is especially an issue if I am running 4-6 virtual machines all accessing the network on top of all the physical devices.  As a result, I've changed my development environment.

I now host a Slackware 14.2 and a Slackware-current (both x86 and x86_64) mirror on a Raspberry Pi 1 B+, which also doubles as a print server on my home network.  That particular Pi has a 10/100 Mbit/s Ethernet port, so it is fast enough for my needs.  Sadly this Pi is running Raspbian instead of Slackware.  On my Raspberry Pi 3 B, which is also my LAN gateway, I host all of my git repositories.  The Slackware mirrors are using the HTTP protocol, are hosted using Apache2, and physically sit on an external USB hard drive connected to the Pi 1 B+.

I took Eric Hameleers's (aka Alien BOB) old script and modified it for my needs, since the newer script does not work with Raspbian.  You can use the latter if your Pi is running Slackware-arm and you will achieve the same results using the below configuration  It is all synced and stored on the USB hard drive at /usb/Slackware-Mirror.  Here is my Apache2 configuration for the curious.  It is a very basic configuration, it could probably be improved, but it works fine for my needs.  See the links at the bottom of this post for information about configuring Apache2 on Slackware.

$ sudo cat  /etc/apache2/sites-available/slackware-mirror.conf
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /usb/Slackware-Mirror/
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <Directory "/usb/Slackware-Mirror">
        Options Indexes FollowSymLinks
        IndexOptions FancyIndexing VersionSort NameWidth=*
        AllowOverride All
        Order allow,deny
        Allow from all
        Require all granted

On each Slackware host I now just have to comment out everything in /etc/slackpkg/mirrors and add a URL pertaining the the Slackware release at the bottom of the file:

# Local Area Network Mirror

If you are following along, be sure the change slackware64-current/ to slackware-current/, or slackware64-14.2/, or slackware-14.2/ for your desired Slackware release.

Then I run the usual commands as root to update slackpkg:

$ slackpkg update gpg && slackpkg update

My router does have the ability to serve DNS on the LAN using dnsmasq.  I chose to opt out of that for the mirror because it adds latency to the process of downloading and installing packages.

The next pieces I added to this puzzle were the cron jobs that run that later email me about any updates to the Slackware tree.  I changed the MAILTO address for privacy reasons.

$ crontab -e
0 4 * * * /bin/sh /usb/Slackware-Mirror/
0 5 * * * ARCH=x86 /bin/sh /usb/Slackware-Mirror/
0 16 * * * REL=14.2 /bin/sh /usb/Slackware-Mirror/
0 17 * * * REL=14.2 ARCH=x86 /bin/sh /usb/Slackware-Mirror/

Finally I installed and configured Postfix for email delivery using a gmail account.  I used the following tutorial to do so:  Configure Postfix to use Gmail as a Mail Relay

Keep in mind that Slackware 14.2 uses the Sendmail service for email services.  Slackware-current uses Postfix.

Now I can provision virtual machines among other various devices on my LAN with Slackware.  The best part is that I am saving bandwidth for myself and for the Slackware mirrors I would otherwise be hammering with file transfers.

Relevant Links:

Thursday, May 25, 2017

An overdue update...

It's been a long while since I wrote anything here.  In part, I have been very busy with day to day responsibilities.  When I find free time, I devote it all to contributing to the Linux community.  As a result, blogging is not a top priority.  So what have I been up to?

I have been keeping the SlackBuilds I maintain well tested and updated when prudent.  I enjoy contributing to the Slackware community.  It is full of great people who are very helpful.  Let me also add that Slackware itself, as a distribution of Linux, is a lot of fun to work with.

Last week I received an inquiry to become an editor of the Slint English technical documentation.  Slint is a Linux distribution based on Slackware and Salix.  It aims to be accessible to Linux newbies and the visually impaired.  Slint is polyglot, or multilingual, meaning it supports many different languages.  The maintainer of Slint has done all the hard work of configuring the console and window managers to be translated.  Included languages are: Dutch, English, French, German, Greek, Italian, Norwegian, Polish, Portuguese, Russian, Spanish, Swedish, Turkish, and Ukrainian.  It is a great little distribution!

Earlier this year I built a home computer lab.  It is made up of an old laptop with virtual machines and several Raspberry Pis of different models.  The network is separate from public address space since most of the machines are running vulnerable software.  Among the operating systems are Windows Server 2012 and 2016, Windows 7 and 8, Slackware64 and Slackware ARM, Kali, Ubuntu, Raspbian, and Debian.  I created this lab because it is important to stay updated on security best practices.  I find it easier to learn security topics by first breaking and later on repairing.

I am always looking for Open Source projects of which I can contribute to.  I enjoy writing technical documentation because I often learn something I didn't know before.  I also enjoy testing and bug hunting.  I am, however, open to all inquiries.  Leave a comment below if you wish to contact me.

Thanks for reading.  That's all for now!

Thursday, July 28, 2016

Using Vidalia to control Tor on Slackware 14.2

I like to use Tor from time to time when I am away from home.  I like to maintain my privacy and security as best I can.  Slackware does not provide Tor in the official package tree and it can be a bit tricky to set up correctly.  Keep in mind that this tutorial is not meant to replace the Tor browser bundle or the Tails live CD.  Tails and the TBB correct a number of issues that cannot be easily fixed in a standard web browser or Slackware system.  There are, however, a number of applications that can benefit from from this tutorial.  You should use the Tails live CD if you require a high level of anonymity and privacy.

I like to be able to browse the Tor network map, create a new Tor identity, and have a kill switch for Tor as well.  Vidalia may be out dated but it can still be used to do what it was originally intended to do.  I am mostly writing this to document the process for myself and to share the information.  I am writing this tutorial for Slackware 14.2.  It may also apply to Slackware 14.1 and Slackware-current.

Installing Tor requires access to the repository.  To more easily make use of this site, you should install the sbopkg package manager.  Sbopkg 0.38.0 is the most recent version available at the time of writing this article.  Download it and install it as root.

The next step is to synchronize sbopkg with

Following that you should use sqg to generate a queue file for Tor, Vidalia, GeoIP, and install them.

Update: Vidalia has been removed from the Slackware 14.2 repository. You should instead use the Slackware 14.1 repository to download the Vidalia SlackBuild. It can be found here and should be manually installed on your Slackware 14.2 system.  If for some reason the source code for Vidalia becomes unavailable, I created a GitHub repository containing the unmodified source.  That can be found here.  Be sure to install GeoIP and Tor before (dependencies) manually building Vidalia on your system.

Note:  This tutorial should work "as is" on Slackware 14.1.

Everything should be installed now. If you ran into an error, please visit and read section #2 of the FAQ.

Here is the configuration file I like to use for Tor (/etc/tor/torrc):

Next you need to generate a hash for the control port. The control port is used by Vidalia to connect to the Tor daemon on your system. It is used to control the Tor process. Generate it with this next command, while replacing the place holder I added with a strong password for security reasons.

Be sure to read all the files in /usr/share/doc/vidalia-$VERSION for guidance on how to configure Vidalia. The relevant file I am referring to is the README.SBo provided by the maintainer. One configuration setting I like to add to Vidalia, enables Geo location for Tor nodes.

All that is left to do is make the tor init script executable, start the tor daemon, and launch Vidalia on a limited user account. If you followed along, did not make any mistakes, then you will be connected to the tor network. I am not going to walk through how to configure applications to use Tor because the list is endless. Please refer to the Torify page on the Tor Wiki.

I also encourage you to install Privoxy from and configure your system to use it with Tor. Without Privoxy, you are prone to protocol leaks if you are using Tor for HTTP/HTTPS. Another application that is useful with Tor and Privoxy is proxychains.

Relevant Links:

Tuesday, July 26, 2016

A year of Slackware, already?

Wow, its been over a year since I left Debian in the dust for Slackware.   The road was bumpy at first, but I learned a lot by following that road wherever it brought me.  I learned things about Linux and have expanded my skill set more in this last year than I ever did running Debian for the previous 10 years.  My main motivation when I left Debian behind was to rid myself of the dreadful systemd abomination.  At the time I was unaware of how blissfully ignorant and stale my computing life had become.   In fact, I am writing today partly out of frustration developed due to the uninformed opinion in this article.  The other reason is as a bit of a follow up to this archived article from last year.

When I first loaded Slackware up on my laptop, I found myself asking several questions.  Several of these questions were formed due to fundamentally flawed expectations.  Some of these questions were:

  • Where is the package manager?
  • How do I find the dependencies I need when installing software?
  • Why does Slackware use so much disk space?

I found myself in a position where I was being forced to learn or abandon the notion of using Slackware all together.  After considering my options, I realized that the Slackware installation media contains great documentation.  A quick search on Google for "Slackware documentation," yielded a complete wiki dedicated to Slackware.  There is even a whole book available geared specifically to the new Slackware user.  The Slackbook.

Anyway, over the last year I've been met with a very positive outcome while exclusively running Slackware on all my systems.  The thing about Slackware is you cannot expect to just sit down and roll your face on the keyboard to achieve desired results.  Slackware does not compare to Debian, Ubuntu, Fedora, Arch, or any other active Linux distribution.  Debian GNU/Linux is almost as old as Slackware.  However, the design and development philosophies couldn't be further apart in comparison.  Slackware does not hold your hand with a fancy graphical interface.  You are expected to read documentation, to research a little bit, and try things before asking for help.  A little bit of effort is required.

I have no ill will towards Jessie Smith.  However, I don't think he spent a lot of time researching Slackware before he wrote that article for Distro Watch.  In fact, I do not think he spent very much time actually using Slackware before sharing his experience.  You simply cannot turn on any system and expect to master it in a few hours or even a few days.  It takes time, which I guess Jessie Smith does not have a lot of, or his review would have been much different.  His lack of detail lead him to a lack of accuracy.  His experience would be much different If he read some of the introductory Slackware documentation.

The most frustrating part in his article for me was where he describes package management, depenencies, and functionality.  Slackware comes with all the software required to have a fully functional server or a desktop.  All dependencies are included on the installation disc, which is why a FULL installation is recommended.  The package manager, "slackpkg" doesn't need to provide dependency resolution because the Slackware developers provide everything you need to run every piece of software shipped on the installation medium.  For desktops, everything you need to browse the web, check email, write documents, compile code, listen to music, and watch videos, is already included.  For servers, everything needed to serve a web site, DNS, DHCP, E-mail, FIle sharing, printing, or what have you.  All included and very convenient.  Such functionality makes it difficult to develop because even small changes can have adverse effects on the package tree.

I do not mean to turn this post into a rant.  I find it very difficult to process a biased article that was written by someone who has used Slackware so little.  That article Mr. Smith wrote, lead me to lose respect for distro watch.  That type of bias and lack of experience has no place in the media.  That type of attitude is what causes rifts in the Linux community.  It would be refreshing if top Linux news sources made it a policy to hire writers that made a little bit more effort before publishing misleading articles.

Sunday, July 10, 2016

Web Application Security Scanner, w3af for Slackware

So what is w3af?  It is an open source security scanner that has a long list of features.  If you have never heard of it, take a tour on the w3af website.  I've used this valuable software in the past to secure web applications of all types.  I would like to make it available for Slackware users everywhere.

w3af is extremely out of date on  I have been working on updating w3af to version 1.6.49 from 1.0.  I had hoped for the update to occur for Slackware 14.2.  Unfortunately w3af will remain at version 1.0 due to a regression in a dependency that is shipped in official Slackware.  This is a minor set back that will probably result in a positive outcome.  Slackware is known for including only the most stable software available for Linux.

What should be expected next?  I plan to reorganize my w3af-sbo repository and begin preparing for the next stable Slackware.  I will be focusing on preparing w3af for Slackware-current and Slackware64-current.  I will heavily use slackrepo to build, rebuild, and install w3af and all of its dependencies.  After that I plan to make binary packages available for download on a Slackware mirror dedicated to this project.

I haven't decided on a timeline or a specific road map yet. Please contact me if you have suggestions about improvements, or if you wish to lend a hand.

Thanks for reading!