Archive for the ‘FreeBSD’ Category.

Dual-booting Windows 7 and PC-BSD

Hey all,

I was going to write an article on this, but it was so easy, there is no need for one.

Windows 7 doesn’t know how to deal with PC-BSD, but PC-BSD knows how to deal with Windows 7.

So all I had to do was install Windows 7 first (I chose a 50 GB partition) and then I installed PC-BSD on the remaining space. I did click to install the PC-BSD boot manager as it is not selected by default, and now I can dual boot Windows 7 and PC-BSD.  Which is a must for a guy who’s job is writing C# on windows.

Project ideas for FreeBSD

There is a lot of work to do in this world, and there are plenty of open source projects. However, there are still plenty of projects that need help. There are still plenty of projects that haven’t even been started yet.

I just read this post and I am quite in agreement with it: FreeBSD needs fresh Blood!

Here are a list of projects ideas or projects that need contributors that could really help FreeBSD go to the next level.

Possible new projects

  • FreeBSD Mentoring Project – The primary goal is to get FreeBSD developers developing immediately and maybe have a VirtualBox VM that is ready to download and dev on immediately.
  • A Windows driver for FreeBSD’s UFS, maybe using the Installable File Systems (IFS) Kit
  • A Windows driver for ZFS, maybe using the Installable File Systems (IFS) Kit.
  • A GNOME based FreeBSD Desktop distribution (Note: PC-BSD and/or GhostBSD might fill these need in the future.)
  • Contributors to DesktopBSD.
  • A FreeBSD phone operating system to compete with Android, Windows Phone 7, etc… I think a clever name for phone OS based on FreeBSD would be Angel.
  • A new desktop that isn’t GNOME or KDE but is written using Mono (C#).
  • VirtualBox BootCamp for FreeBSD – Ability to boot to a VirtualBox image, similar to BootCamp on a MAC. So you can boot to a different OS, or while running FreeBSD you can load the OS as a virtual machine.

Projects that could use more Contributors

  • FreeBSD Advocacy and FreeBSD Marketing – We need actual advertising and marketing people here, not coders or techies.
  • FreeBSD ACPI - I would recommend a focus on improving ACPI support for laptops running FreeBSD.  The Sleep and hibernate ability are important.
  • Mono on FreeBSD or BSD#
  • Ports on FreeBSD – There are a lot of unmaintained ports, such as K-3d and you could adopt a port.
  • KDE on FreeBSD – The KDE support is in need of help.  The network manager hasn’t worked in years.
  • GNOME on FreeBSD – There is not an installable FreeBSD desktop distribution that focuses on GNOME.  GhostBSD, a live-CD, is based on GNOME.
  • GhostBSD – They could use some help being not just a live-CD but an installable distribution.

Business ideas based on FreeBSD

While free contributions from the community is nice, for FreeBSD to really thrive, it needs more full-time developers. There is not substitute for actual paid employees who spend their days working on FreeBSD.  The only way get those type of employees is to get some companies out there making money. For this reason, I would recommend that the FreeBSD Foundation looks at helping start new businesses based on FreeBSD.

  • BSD Appliances – Maintain appliances, both hardware and virtual appliances, for all the common server types. This is a hardware and support model, the software is of course free.
    • A complete suite of BSD appliances from Web Servers to Firewalls, to NAS, to backup, to networking, etc…I own the URL and thought about starting this project, but never really had the bandwidth.
    • Also, outsource appliance maintenance so other companies can have their proprietary appliance maintained by this company.  I know my company, LANDesk, has considered outsourcing our Management Gateway appliance. I heard a rumor KACE was too, though that rumor remains unverified.
  • BSD Business – A software company that makes a server and applications for common businesses. This is a hardware and support model, the software is of course free.
    • A Business Server (three version Small Business, Medium Business, Enterprise) that has everything a business needs. (Maybe this server is an appliance maintained by BSD Appliances :-)
    • Common businesses means businesses that exist in every city, law offices, dental offices, eye-doctors, chiropractors, restaurants, hotels, mechanics, gas stations, etc… There are some applications that are ubiquitous to their fields. To use an example local to me, think of what Dentrix is to the dental field. I have always thought of an ultra-secure desktop for lawyers running an very secure version of FreeBSD.
  • Point of Sale system based on FreeBSD. This is a hardware and support model, the software is of course free. Why let Red Hat and CentOS have this who market.
  • Gaming on FreeBSD – A gaming console based on FreeBSD to compete with XBox, Playstation, etc…Gaming has an amazing power to drive improvement.
  • A support center where companies can get enterprise FreeBSD support, development, etc…
  • Animation on FreeBSD – A film studio that makes animated movies and runs everything on FreeBSD.
  • Feature4Hire – A web site that maintains a list of enhancement requests and people or companies can submit how much they are willing to pay for the feature. Then as soon as the dollar amount is worth it to someone in the world, they develop the feature and get paid, with something like 3% going to Feature4Hire. Even if $10 is attributed to a feature, some one in a 3rd world country might find some small dollar amounts worth it.  Ok, this site might be for all open source projects, but it could run on FreeBSD.

There are a lot more ideas out there and anybody can be a part of them.

GhostBSD 2.0 Released!

I recently posted about the GhostBSD 2.0 beta.

Review: GhostBSD 2.0 Beta 2 – A FreeBSD LiveCD

Well, the product is no longer beta as they just released GhostBSD 2.0.

If you didn’t take a look when I posted about the beta, take a moment to take a look now!

New Laptop Hard Drive!

I just got a new 250 GB 7200 RPM laptop hard drive for $45 bucks from NewEgg.

I plan on installing Windows 7 SP1, FreeBSD 8.2, and PC-BSD 8.2.

You know what would be interesting is to link /usr/home on FreeBSD 8.2 and the PC-BSD 8.2 OSs so that my /usr/home/jared is the same directory on both.

Asp.Net web services on FreeBSD and Apache using Mono

Asp.Net is cross platform using mono. Novell SUSE and Microsoft and others companies are dedicated to making .NET Framework a cross platform solution. Asp.Net web services are limited to running on windows, but can also run on other platforms, such as FreeBSD.

FreeBSD has ports for mono and mod_mono and can easily run web services build with Asp.Net. Here is a tutorial to make this happen.

Preparing a FreeBSD system for Asp.Net on Apache using Mono

Information

A good place to start reading is the getting started page on the mono project’s web site.:
http://mono-project.com/Start

This has the resources you need for most things, however, the documentation is designed mostly for SUSE Linux, so be prepared for slight differences on FreeBSD.

Step 1 – Install Apache

Install Apache on FreeBSD as follows.

  1. Change to the ports directory for Apache and run make install.
    #
    #
    cd /usr/ports/www/apache22
    make install
  2. Configure Apache to load on start up.
    # echo ‘apache22_enable=”YES”‘ >> /etc/rc.conf
  3. Leave Apache stopped. We will start it later.

Step 2 – Install mod_mono

Installing mod_mono will also install mono and xsp. Install mod_mono as follows.

  1. Change to the ports directory for Apache and run make install.
    #
    #
    cd /usr/ports/mod_mono
    make install
  2. Because on FreeBSD these packages work a little differently, you don’t need to do some of the steps listed on the mono website because they are done for you. Here are some key paths and differences in the packages on FreeBSD that you should know about.
    • The mod_mono port installs a mod_mono.conf file to /usr/local/etc/apache22/Includes which is automatically includes in the httpd.conf, so you don’t have to add an include manually.
    • The xsp port adds sample ASP.NET web services to /usr/local/lib/xsp.
    • The apache root directory is /usr/local/www/apache22/data
  3. Here are the contents of the mod_mono.conf file. Notice that this Apache include file loads a couple modules, adds a bunch of types, and adds a few files as DirectoryIndex options.
    # mod_mono.conf
    
    # Achtung! This file may be overwritten
    # Use 'include mod_mono.conf' from other configuration file
    # to load mod_mono module.
    
    <IfModule !mod_mono.c>
        LoadModule mono_module /usr/local/libexec/apache22/mod_mono.so
    </IfModule>
    
    <IfModule mod_headers.c>
        Header set X-Powered-By "Mono"
    </IfModule>
    
    AddType application/x-asp-net .aspx
    AddType application/x-asp-net .asmx
    AddType application/x-asp-net .ashx
    AddType application/x-asp-net .asax
    AddType application/x-asp-net .ascx
    AddType application/x-asp-net .soap
    AddType application/x-asp-net .rem
    AddType application/x-asp-net .axd
    AddType application/x-asp-net .cs
    AddType application/x-asp-net .vb
    AddType application/x-asp-net .master
    AddType application/x-asp-net .sitemap
    AddType application/x-asp-net .resources
    AddType application/x-asp-net .skin
    AddType application/x-asp-net .browser
    AddType application/x-asp-net .webinfo
    AddType application/x-asp-net .resx
    AddType application/x-asp-net .licx
    AddType application/x-asp-net .csproj
    AddType application/x-asp-net .vbproj
    AddType application/x-asp-net .config
    AddType application/x-asp-net .Config
    AddType application/x-asp-net .dll
    DirectoryIndex index.aspx
    DirectoryIndex Default.aspx
    DirectoryIndex default.aspx
    

Step 3 – Add the “test” web service to the Apache root directory

In /usr/local/lib/xsp, added by the mod_mono port, is a “test” folder that contains sample web services. Ther

  1. Copy /usr/local/lib/xsp/test to /usr/local/www/apache22/data.
    # cp -fR /usr/local/lib/xsp/test /usr/local/www/apache22/data/

Step 4 – Start Apache

  1. Start Apache with this command:
    # service apache22 start

You should now have Apache configured to run Asp.net.

Step 5 – Open the “test” folder in a browser

  1. Open your favorite browser on a workstation that has access to the server you just finished installing.
  2. Go to the URL of your server. For example, the url for my test server is this:

    http://192.168.0.43/test

  3. Browse around and test the web services.

Step 6 – Install Libraries as needed

    1. Determine if you need additional libraries.

With the bare minimum installed, you can almost guarantee that a web service is going to require a library you do not have installed. In fact, clicking on the second link in the “test” site, code-render.aspx, shows us this error.

Server Error in '/test' Application

gdiplus.dll

Description: HTTP 500. Error processing request.

Stack Trace:

System.DllNotFoundException: gdiplus.dll
  at (wrapper managed-to-native) System.Drawing.GDIPlus:GdiplusStartup (ulong&,System.Drawing.GdiplusStartupInput&,System.Drawing.GdiplusStartupOutput&)
  at System.Drawing.GDIPlus..cctor () [0x00000] in <filename unknown>:0

Version information: Mono Runtime Version: 2.6.7 (tarball Tue Mar 1 06:10:28 MST 2011); ASP.NET Version: 2.0.50727.1433

This library can be found and installed.

  1. Go to the directory for the port and run make install.
    #
    #
    cd /usr/ports/x11-toolkits/libgdiplus
    make BATCH=yes install

    This has some Xorg dependencies so compiling it could take a while. Notice the BATCH=yes parameter passed to make above. This will prevent any prompts and accept the defaults for every port this command compiles.

Released: FreeBSD 8.2-RELEASE and 7.4-RELEASE

BSD Licenses good, GPL bad: Microsoft Bans Some Open Source Licenses from WP7 Marketplace

Microsoft is not going to allow GPL onto their phones.
Microsoft Bans Some Open Source Licenses from WP7 Marketplace

Microsoft has stated that its Windows Phone 7 marketplace will reject any apps that use the GPL (GNU General Public License) and similar licenses.

“The Windows Phone Marketplace supports several open source licenses, including BSD, MIT, Apache Software License 2.0, MS-PL and other similar permissive licenses.  We revise our Application Provider Agreement from time to time based on customer and developer feedback, and we are exploring the possibility of modifying it to accommodate additional open source-based applications in upcoming revisions.”

Microsoft is doing the right thing and cannot be blamed in the slightest. The GPL is often termed a viral license and for good reason. Once you use it in your code everything is infected by it. Others say it is a spiderweb license, that once you are in the spider’s web, you can’t get out. The BSD license instead of the GPL is probably the single biggest reason to use FreeBSD over Linux, especially for enterprise business such as Microsoft, Apple, and others.

I don’t like the entrapment of the GPL. Students often first encounter the GPL in college, where they hear that the GPL is free and start using it. Only later do they realize they are trapped. Some don’t mind, wish they would have understood the license better.

Here is a simple rhyme to remember which license to use:

If you want your software to really be free,
    license it with BSD.
If you want your software to be in license hell,
    use the GPL.

This post shows that Microsoft feels the same as many of us who are anti-GPL.

Obviously they don’t want to have those who write their apps ever accidental depend on another app, only to find out the app they depended on is GPL, so their entire work must be GPL as well. They are doing what humanity tries to do with any virus, eradicating it and prevent infection by eliminating the virus, just as we have done with small pox, from the world.

For more information on the differences between the BSD License and the GPL, read this post.
Differences between the BSD/FreeBSD Copyrights and the GNU Public License (GPL)

Backing up PostgreSQL databases nightly on FreeBSD

I didn’t write this post, a blogger named Keith did, but I am definitely going to link to his work on his blog.

Backing up PostgreSQL databases nightly on FreeBSD

He did a good job editing this script to backup postgresql on FreeBSD. While he does say he got some of it from another site he found on using Google…

…Using Google I found a generic script, after some custom tweaks for FreeBSD I had the script I wanted.

…so some of the work should be attributed elsewhere. I want to thank him for the work he did. This was something that was on my to do list and now it is pretty much done for me.

Here is the script he posted.

#!/bin/sh
# Location of binaries
bin="/usr/local/bin"
# Location of the backup logfile.
logfile="/data/backup/postgres/postgres.log"
# Location to place backups.
backup_dir="/data/backup/postgres"
username="pgsql"
database="template1"
touch $logfile
timeslot=`date +%H-%M`
databases=`$bin/psql -h localhost -d $database -U $username -q -c "\l" | sed -n 4,/\eof/p | grep -v rows\) | awk {'print $1'}`

for i in $databases; do
        echo "Backup and Vacuum complete at $timeinfo for time slot $timeslot on database: $i " >> $logfile
        $bin/vacuumdb -z -h localhost -U $username $i >/dev/null 2>&1
        j="60"
        while [ $j -ge 0 ]
        do
                temp0=`expr $j - 1`
                temp1=$j
                j=`expr $j - 1`
                if [ $temp0 -lt 0 ]
                then
                        suffix0=""
                        suffix1=".0"
                else
                        suffix0=".$temp0"
                        suffix1=".$temp1"
                fi
                if [ -f $backup_dir/postgresql-$i-database.gz$suffix0 ]
                then
                        echo "Renaming postgresql-$i-database.gz$suffix0 to postgresql-$i-database.gz$suffix1"
                        mv $backup_dir/postgresql-$i-database.gz$suffix0 $backup_dir/postgresql-$i-database.gz$suffix1
                fi
        done
        if [ $i != 'template0' ]
        then
                $bin/pg_dump -U $username $i -h 127.0.0.1 | gzip > "$backup_dir/postgresql-$i-database.gz"
        fi
done

Here is what I like about his script:

  1. Variables are used at the top of the script that are easily modifiable.
  2. It backs up all databases without having to list the databases, so you don’t have to update the list with every new database.
  3. It does compress using gzip the databases, so uses as little space as possible.

Here are some ideas for future enhancements to the script

  1. The gzip compression level as a variable up top. The default gzip compression level is 6 and 9 could make the file significantly smaller with large databases, while 1 would be faster for machines with weaker processors.
  2. Database to exclude from the backup.  I like the idea to get them all by default, but sometimes you have a test database you just don’t care about and you don’t want a nightly backup of it.
  3. I don’t see the password in the script, and I am not sure how it is authenticating without it, maybe a password feature needs to be added.

BSD Magazine February Issue is out: ZFS and FreeBSD

BSD Magazine February Issue released.

Download it here:

http://bsdmag.org/magazine/1638-zfs-and-freebsd

Review: GhostBSD 2.0 Beta 2 – A FreeBSD LiveCD

GhostBSD 2.0 – Beta 2 Review

Today I downloaded GhostBSD 2.0.  GhostBSD 2.0 is a live CD that you boot off and your operating system loads to a desktop environment from the CD itself.

It is a CD not a DVD. It was 645.3 MB.  That fits one a single CD.  So it is still small and downloaded rather quickly compared to multi-gigabyte DVD images.

The Good

It didn’t take long to find some good features.

  1. VMWare resolution wasn’t too bad 1280×720.
  2. Decent backgrounds
  3. Thunderbird setup to take your account immediately and the autodetect is cool.
  4. Firefox worked first time.
  5. Has AbiWord and Gnumeric Spreadshet installed.
  6. Has burning software
  7. As a CD ISO, it is still small and downloaded rather quickly compared to multi-gigabyte DVD images.

What Needs works

The first thing that needs work is this review.  I didn’t test much.  I booted, and looked at features, but as I only use a Live CD when something goes terribly wrong and nothing has, I didn’t really do anything too geeky.  So let me just say there is much more to review.  But here are some things I noticed in just my short time clicking away at this.

There wasn’t much bad to speak of that was bad. I had to get nit picky.

  1. There was a problem that delays boot related to the hostname.
  2. No Flash 10 in Firefox, though the linux kernel was there.
  3. Thunderbird is not configured to open links with Firefox by default.
  4. pkg_info shows the pages but says that the package info is corrupt for every package installed.

Other FreeBSD Live CDs

  • Frenzy – A much smaller CD. Here is a quote from the home page: Frenzy is a “portable system administrator toolkit,” LiveCD based on FreeBSD. It generally contains software for hardware tests, file system check, security check and network setup and analysis. Size of ISO-image is 200 MBytes (3″ CD)
  • FreeSBIE – No longer maintained

I didn’t install Frenzy and I have never used it, so I cannot compare it.  However, it is supposedly only 200 MB, which leaves me wondering what it has.

FreeSBIE has been useful in the past, but is no longer maintained.

The Conclusion

GhostBSD 2.0 is the FreeBSD live CD that I currently recommend. I first came across it when it was 1.5, and 2.0 shows it moving forward quite nicely.

Hopes for the future

I do believe there is a place for them to hook into pc-sysinstall and create an installer.  There is not a GNOME-based FreeBSD distribution that I know about, though PC-BSD might add GNOME as an option, but many of the GNOME users would probably jump on this if an installer was built. They may even convert me from KDE to GNOME.