Friday, September 18, 2009

HowTo: Mount EXT2FS partitions with inode 256 on FreeBSD

Mounting ext2/ext3 slices (or "partitions" in the Linux world) is easy on FreeBSD... if the filesystem was NOT created with inode 256 that is!

If you are one of those unlucky bastards this post presents the required steps on how to patch the FreeBSD 7.2 kernel module that mounts ext2/ext3 filesystems.

First let's begin by installing the sysutils/e2fsprogs application that provides tune2fs which will allow us to confirm that the ext2/ext3 filesystem was in fact created with inode 256. Assuming that the target slice is in the /dev/ad4 disk:
  • % su
  • # cd /usr/ports/sysutils/e2fsprogs
  • # make install clean
  • # rehash
  • # fdisk /dev/ad4
******* Working on device /dev/ad4 *******
parameters extracted from in-core disklabel are:
cylinders=395136 heads=16 sectors/track=63 (1008 blks/cyl)

Figures below won't work with BIOS for partitions not in cyl 1
parameters to be used for BIOS calculations are:
cylinders=395136 heads=16 sectors/track=63 (1008 blks/cyl)

Media sector size is 512
Warning: BIOS sector numbering starts with sector 1
Information from DOS bootblock is:
The data for partition 1 is:
sysid 131 (0x83),(Linux native)
start 63, size 80262 (39 Meg), flag 80 (active)
beg: cyl 0/ head 1/ sector 1;
end: cyl 4/ head 254/ sector 63
The data for partition 2 is:
sysid 130 (0x82),(Linux swap or Solaris x86)
start 80325, size 1012095 (494 Meg), flag 0
beg: cyl 5/ head 0/ sector 1;
end: cyl 67/ head 254/ sector 63
The data for partition 3 is:
sysid 131 (0x83),(Linux native)
start 1092420, size 10008495 (4886 Meg), flag 0
beg: cyl 68/ head 0/ sector 1;
end: cyl 690/ head 254/ sector 63
The data for partition 4 is:
sysid 15 (0x0f),(Extended DOS (LBA))
start 11100915, size 350907795 (171341 Meg), flag 0
beg: cyl 691/ head 0/ sector 1;
end: cyl 1023/ head 254/ sector 63
  • # tune2fs -l /dev/ad4s1 | grep -i 'inode size'
fdisk is used to list the slices that exist on the disk. Sysid 131 means that a ext2/ext3 slice exists and this is target for tune2fs.

Next let's fetch the patch:
  • % wget http://pflog.net/~floyd/ext2fs.diff
In alternative, get the patch from here:
  • % wget http://pastebin.ca/raw/1280738
Now that we have the patch, let's proceed by applying it and build the patched module:
  • # cd /usr/src/sys/gnu/fs
  • # patch < /path/to/patch
  • # cd /usr/src/sys/modules/ext2fs
  • # make depend ; make obj ; make ; make ; make install ; make unload ; make load ; make clean
This way you'll build all dependencies for the module, build the module itself, install it, unload the current loaded module and finally load the new one.

Having the new module loaded you can now successfully mount your ext2/ext3 filesystem:
  • # mount -t -v ext2fs /dev/ad6s1 /mnt
That's it!

References:
kern/124621: [ext3] [patch] Cannot mount ext2fs partition
man mount
sysutils/e2fsprogs

Thursday, September 17, 2009

Tip: Introducing the PKGDIR environment variable on FreeBSD

Though I prefer using the ports tree to install applications on FreeBSD, the fact is that packages are way faster especially if your hardware is old or you just want to bring a test install online as fast as possible.

If you want to keep the downloaded packages, you need to set the PKGDIR environment variable pointing to the place where to store the downloaded .tbz files.

Here's how to set PKGDIR with the t/csh shell to /usr/ports/packages/All:
  • % su
  • # setenv PKGDIR /usr/ports/packages/All
  • # mkdir -p /usr/ports/packages/All
To download, store and install a package named foo:
  • # pkg_add -Kr foo
The -K switch informs pkg_add that you want to keep the downloaded package on the directory defined by PKGDIR.

Using packages is all fine and dandy, however not all applications in the ports tree are available as packages due to licensing issues.

I found out that after setting the PKGDIR, every single port that I tried to install failed with the same error: "Missing pkg-descr".

To fix the problem simply unset the PKGDIR environment variable like so:
  • # unsetenv PKGDIR
And voilá! You can now use the best of both worlds.

Tuesday, August 25, 2009

Tip: Fetch and password-protected web pages

In order to make fetch (the FreeBSD downloading tool) ask for username/password when it encounters a password-protected web page, you can set the environment variable HTTP_AUTH to 'basic:*'.

Users of t/csh shells can temporarily set the environment variable like so:
% setenv HTTP_AUTH='basic:*'
To set it permanetly we need to add it to .cshrc:
% vim ~/.cshrc
setenv HTTP_AUTH 'basic:*'
And that's it.

HowTo: Intel PRO/Wireless 3945ABG on Debian

I've recently dabbled with Debian Lenny on my Dell D620 and found myself needing to access my wireless network.

These are the required steps to activate the Intel PRO/Wireless 3945 ABG device on Debian GNU/Linux 5.0 Lenny:
  1. $ su
  2. # aptitude install firmware-iwlwifi
  3. # modprobe -r iwl3945 && modprobe iwl3945
  4. point to the Network Manager icon on Gnome's top panel and enter the details of your wireless network
Do notice that firmware-iwlwifi is a non-free firmware so you need to enable the non-free repositories. To do so point to System -> Administration -> Software Sources -> Debian Software and enable the non-free and contrib repositories.

I found the whole process of enabling and using 3945ABG on Debian very simple and straightforward which was a welcome change from the days of the old ipw driver ;)

Tip: FreshPorts search plugin for Firefox

There are several ways to find software available for FreeBSD.

The FreshPorts website tracks changes to the third party applications in the ports tree as they occur. Users of the Firefox web browser can install a search engine to be able to search through http://www.freshports.org/ and find software available for FreeBSD on a friendly manner.

To do so point to http://www.searchplugins.net/pluginlist.aspx?q=freshports&mode=title and click to install the search engine. After installing it go to Firefox's search box where Google's engine usually sits and choose the newly installed FreshPorts search engine.

By doing so you can search for applications to install on FreeBSD from the comfort of Firefox.

Sunday, August 9, 2009

Book Review: X Power Tools

Short and to the point books.

That's the trend you'll notice after reading stuff like The Book of PF, Building a Server with FreeBSD 7 and BSD Unix Toolbox. X Power Tools happily joins the mentioned groups... with distinction.

The book is divided in 15 sections which are further organized into articles going over subjects such as the history of the Xorg server, configuration (how to build a xorg.conf), advanced configuration (including multiple displays) and troubleshooting in the book's Part I.

Client oriented subjects are brought in with Part II, which covers many of the rather unknown applications that are part of Xorg, e.g. xmag, xset, xdpyinfo, xfontsel and many others.

Part III exposes the reader to color, fonts and keyboard configuration.

Using X remotely is covered to a reasonable extent in the book's Part III. Here X tunneling with SSH and VNC are discussed alongside XDMCP and xauth.

In a rather unexpected way, the author chose to wrap-up the book by going over the details of configuring X for a kiosk.

As a side note it was nice to see that the author didn't focus only on Linux but also took into account FreeBSD when writing the book (moused settings are analysed).

It should be pointed out that the book was printed in late 2007, so HAL device configuration of keyboard, mouse and displays aren't discussed. However, in my opinion anyone wanting to read this book has already dealt with the situation and is looking into expanding his knowledge of Xorg into less focused things such as fonts, raw X terminal, xinit, etc.

X Power Tools is very handy and well structured making it a good alternative to those that avoid reading Xorg's extensive man page (such as yours truly).

If the Xorg subject appeals to you buy the book. Though a bit expensive, the book is a must have if you want to dwell on Xorg from a very hands-on approach.

Wednesday, July 1, 2009

Tip: Fix portaudit database error

I use portaudit to check installed packages on my FreeBSD systems for knwon vulnerabilities. However the tool behaved quite ackwardy today.

By running:
  • # portaudit -Fda
It outputed:
auditfile.tbz 100% of 53 kB 56 kBps
portaudit: Database too old.
Old database restored.
portaudit: Download failed.
The workaround was posted on freebsd-questions mailing list and consists of editing portaudit's configuration file and changing the mirror address:
  • % su
  • # cp /usr/local/etc/portaudit.conf.sample /usr/local/etc/portaudit.conf
  • # vim /usr/local/etc/portaudit.conf
portaudit_sites="http://www.FreeBSD.org/ports/"
  • # portaudit -Fda
In a couple of days the mirror issues should be fixed so by then you can revert to the default portaudit_sites="http://portaudit.FreeBSD.org/".

For more info have a look at portaudit's man page and at http://docs.freebsd.org/cgi/getmsg.cgi?fetch=933878+0+current/freebsd-questions.