When I tried to upgrade my FreeBSD system today, I received a last minute Christmas gift from the FreeBSD team. 🙂

#sudo freebsd-update fetch
Looking up update.FreeBSD.org mirrors... 4 mirrors found.
Fetching metadata signature for 8.2-RELEASE from update4.FreeBSD.org... done.
Fetching metadata index... done.
Inspecting system... done.
Preparing to download files... done.

The following files will be added as part of updating to 8.2-RELEASE-p5:
/usr/src/lib/libc/gen/libc_dlopen.c

I got the following error:

#sudo freebsd-update install
Installing updates...install: ///usr/src/lib/libc/gen/libc_dlopen.c: No such file or directory
 done.

Initially, I thought the problem was a typo in the freebsd-update profile, so I gave this a try:

sudo cat /var/db/freebsd-update/* | grep libc_dlopen.c

Unfortunately, I couldn’t find anything. So I investigated the problem, and I found that it was caused by the missing source. In a nut shell, if you did not install the FreeBSD with the source (i.e., /usr/src is empty), this problem will show up.

To fix this problem, simply create a dummy directory:

sudo mkdir -p /usr/src/lib/libc/gen

and re-run everything once again, i.e.,

#sudo freebsd-update fetch
#sudo freebsd-update install
#sudo reboot

After the computer finishes rebooting, verify that the upgrade is done:

# sudo freebsd-update fetch
Looking up update.FreeBSD.org mirrors... 4 mirrors found.
Fetching metadata signature for 8.2-RELEASE from update2.FreeBSD.org... done.
Fetching metadata index... done.
Inspecting system... done.
Preparing to download files... done.

No updates needed to update system to 8.2-RELEASE-p5.

That’s it!

Enjoy this last minute Christmas gift from the FreeBSD team. Merry Christmas! 🙂

–Derrick

Our sponsors:

When I checked my FreeBSD system mail box today, I found that there were 8000 system mails sitting my mail box:

mail
Mail version 8.1 6/6/93.  Type ? for help.
"/var/mail/root": 8182 messages 8182 new
>N  1 root@localhost.my.do  Fri Sep 30 03:02  44/1330  "x.com output"
 N  2 root@localhost.my.do  Fri Sep 30 03:02  72/2464  "x.com output"
 N  3 root@localhost.my.do  Sat Oct  1 03:01  35/1075  "x.com output"
...
Another 8000 lines go here

There are several ways you can do. Either you can go through them one by one and delete them one at a time, i.e.,

d
[Hit the ENTER Key]

Or specify which mails you like to delete by ID, e.g.,

d x-y
[Hit the ENTER Key]

where x and y are the start and end of the mail ID, respectively.

For example, if you want to empty your FreeBSD mail box, you can do the following:

d 1-8182
[Hit the ENTER Key]

where 8182 is the number of mails I have.

You can find the number of your emails when you open your mail box:

"/var/mail/root": 8182 messages 8182 new

Hit the enter key again to confirm that the mail box is empty:

At EOF

And leave the mail box.

q

Now, try to access your mail box again, and the system should tell you that you have no system mail.

# mail
No mail for root

That’s it.

How to stop generating the system mails

Whenever the system run a background job, it will store the output of the program and email to the system mail box for auditing purposes. However, you can disable this feature if you don’t care the output.

Normally, we run a script this way:

start.sh

To avoid any output, we do the following instead:

start.sh > /dev/null 2>&1

For example, if you run many cron jobs, you need to go over your cron job list and add this to every single script, i.e.,

sudo nano /etc/crontab
or
crontab -e

and add /dev/null 2>&1 to every command.

Hope it helps.

–Derrick

Our sponsors:

After upgrading my Samba servers (One is Ubuntu Linux, and the other one on Fedora Linux), I found that I can no longer access the symbolic links / soft links from Windows. It keeps returning “permission error”, “You don’t have permission to access this folder” etc. I am pretty sure that it has nothing to do with my user permission settings because it was working just fine before the upgrade. After trying several solutions, here is what I come up:

Edit your samba configuration file:

sudo nano /etc/samba/smb.conf

Add the following into the global section, i.e.,

[global]
...
follow symlinks = yes
wide links = yes
unix extensions = no
...

Save your file and restart Samba:

sudo /etc/init.d/samba restart

It should work now.

Our sponsors:

Since Ubuntu 10.04 is out officially, I like to give it a try on my media server.

FYI, here is the specification of my media server:

Athlon 64 X2 4600
Chipset: GeForce 6150 LE
Motherboard: Asus A8M2N-LA
Harddrive format: IDE

Note that this is a 2006 model and the system was installed on an IDE drive. That may be the reason why the new Ubuntu 10.04 doesn’t like. Anyway, I tried to install Ubuntu 10.04 using three different methods. Here is the detail:

Trial 1 – Fresh install with Ubuntu 64-bit Desktop installation

Won’t even get into the installation menu.
After selecting to boot from CD, the system was stuck in the blank screen. It couldn’t even go further to the installation welcome menu. So I moved to the the next option.

Trial 2 – Fresh install with Ubuntu 64-bit Alternate installation

Better – But can’t reboot.
The installation went very smooth without a single problem. However, after the installation was completed, it couldn’t boot to the Ubuntu system.

Trial 3 – Upgrade from Ubuntu 9.10 64-bit Desktop installation

Works!
This time, I performed a fresh install using Ubuntu 9.10 64-bit Desktop first. The installation went very smooth. After the installation, I did the following in order:

  1. Updated the hardware driver such as graphic and audio.
  2. Updated the the package information:

    sudo apt-get update -y
  3. Upgraded the system to the latest kernel:
    sudo apt-get dist-upgrade -y
  4. Reboot
  5. Now the Ubuntu 9.10 should be ready to move on the next version.

Next, go to System -> Admin -> Software Update

It will give prompt you that a new version of Ubuntu is available. Click that, follow the instructions and you are done!

Note: I’ve tried upgrading the Ubuntu from command line but it failed. Probably there are some differences between the GUI upgrade and the command line upgrade tool.

Enjoy your new Ubuntu, it is really cool!

What about upgrading from Ubuntu 9.04?

I haven’t tried upgrading from Ubuntu 9.04 to Ubuntu 10.04 before, so I cannot comment. However – I tried upgrading from 9.04 to 9.10 and it failed (from command line and GUI). The system could not boot after the upgrade. FYI, here is the specification of my machine:

Mac G3 400MHz
Harddrive format: IDE

It could be the reason of a different architecture (It is a Power PC instead of i386/amd64). Since it is a 10 yrs old machine, I didn’t spend too much effort to investigate.
By the way, I also tried to install Fedora 12 on this machine and it gives the same problem, i.e., Installation goes fine but the system could not boot.

Our sponsors:


After upgrading my PHP to 5.3.2, I received the following error when accessing MediaWiki (1.6.12):

Parse error: syntax error, unexpected T_NAMESPACE, expecting T_STRING in /usr/local/www/apache22/data/wiki/includes/Namespace.php  on line 46

There are three solutions:

  1. Downgrade your PHP from 5.3 back to 5.2
  2. Upgrade your MediaWiki to a newer version.
  3. Fix the codes.

In my case, the first couple solutions do not work for me, and therefore I choose 3.

  1. Backup your wiki file first.
  2. Access your webserver and go to the MediaWiki/includes directory.
    For example:

    cd /usr/local/www/apache22/data/wiki/includes
  3. Edit Namespace.php
    nano Namespace.php
  4. Go to line 46, change the following from:
    class Namespace {

    to:

    class MWNamespace {

    Save the file.

  5. Now, let’s create a script:
    nano wikifix.sh

    Copy and paste the following:

    for fl in *.php; do
    mv $fl $fl.old
    sed 's/Namespace::/MWNamespace::/g' $fl.old > $fl
    done

    Save the file.

  6. Change the file to executable by:
    chmod u+x wikifix.sh
  7. Search the keyword Namespace:: and replace it by MWNamespace:::
    ./wikifix.sh

    Warning: Don’t run the script twice!

  8. Delete the script.
    rm wikifix.sh

Try to access the MediaWiki again and the problem should be gone.

Enjoy Wiki.

–Derrick

Our sponsors:

Today I imported the MySQL database and I got the following error:

# mysql -u root -p db_test < test.db
Enter password:
ERROR 2006 (HY000) at line XX: MySQL server has gone away

It is because the data (SQL query) is too large to imported. To solve this problem, simply edit the MySQL configuration files: /etc/my.cnf

Replace the following from:

max_allowed_packet = 1M

To:

max_allowed_packet = 16M

Or something higher.

Restart the MySQL server again and the problem will be gone.

/usr/local/share/mysql/mysql.server restart

–Derrick

Our sponsors:

After upgrading to Snow Leopard (OS X) 10.6.2 from 10.6.1, I found that my system could not boot, no matter what option I chose at the boot prompt (-x, -v, -s etc). After trying for nearly half an hour, I was about to give up. Finally, I tried replacing the kernel and it rocked! I think I should share my solution here because I couldn’t find something like that on Google.

What I did:
Replacing the kernel of OS X 10.6.2 by OS X 10.6. You can find the old kernel from your backup (if you have), or from the Snow Leopard installation disk.

Steps:

  1. Grab your OS X 10.6 installation disk.
  2. Boot the system using the external DVD-Rom or USB Flash Drive.
  3. After booting to the installation screen, select your language and continue.
  4. Open Terminal
  5. Type the following:
cp /mach_kernel /Volumes/XXX/

where XXX is the name of your system directory. If you are not sure how to find it, you can try to run:

df

Warning(Side Effect):
When the system upgrades to OS X 10.6.2, it upgrades both the kernel (the brain) and the apps (the body) to 10.6.2. Now, we are downgrading the brain back to 10.6. It may cause unexpected behavior because the brain and the body are speaking different languages. You can think about the problem this way: The brain is speaking an old language while the body understands the new language only. Will they get along together? May be. Only Apple knows the answer.

So do it at your own risk.

Our sponsors:

When I tried to mount a windows share from FreeBSD:

sudo mount_smbfs -I WindowsBoxIPaddress //username@WindowsBoxIPaddress/WindowsShare /mnt

I always got this error:

mount_smbfs: kldload(smbfs): Operation not permitted

After searching this error message on Google, I found that all suggested solutions were related to running this command using sudo, which I already did. Today morning, I tried a different way and the problem is solved!

In /etc/rc.conf, I disable the following configurations:

#kern_securelevel="1"
#kern_securelevel_enable="YES"

After I rebooted the machine, and mounted the Windows share again, it worked! That’s simple, isn’t it?

Note: These two lines are for making the FreeBSD box more secure, and I highly recommend to put these in a public accessible server. I don’t think it is safe to make a public accessible server to access to any Windows box because there are not many protections you can do on a Windows box. In case the public server got hacked, the connections to other internal servers should be blocked, i.e., other internal servers can always access the public server, but not vice versa.

–Derrick

Our sponsors: