Monday, March 31, 2008

xournal - just what I wanted !!

I have had two independent requirements for wish I have long wished I had some applications.

One was for note taking.. I was trying to use notepad for note taking.. But then, unlike on a notebook, there was no quick way for drawing rough figures alongside my notes.. Paint wouldn't fit the bill either because, I can not go on taking notes endlessly.. And now that I'm moving on to linux (with bias for KDE) kate and krita are the analogues, and they wouldn't fit the bill either.

The second was regarding PDF files.. I was finding a major difficulty in getting accustomed to PDF files rather than printed matter because I could mark, highlight, underline etc; annotate in general, on printed matter, but not on pdf files.

One fine day, I was browsing through the kmenu on my opensuse virtual box, and bingo ! I came upon xournal. The claims were big, but the default version bundled with OpenSUSE 10.3 didn't work.

Somehow, I'm grateful that my lazybones didn't kick in, but instead I searched an located the sourceforge site for the xournal project:

From there, I got the latest version source+binary package, and installed that.. And yes! all my problems are solved. The software allows me to take notes, and draw on the same canvas; take notes on multiple A4 pages, bundled as a book; open a pdf and annotate the same; and export my notes/my annotated pdf back to pdf !

In sum, xournal is simply what I've been looking for !!!

--------- --------- --------- --------- --------- --------- --------- ---------
Monday 2008-03-31 12:14 UTC+5:30

On a further note; how to handle pdf encrypted files..
[Attribution] This I took from a post on the sourceforge xournal forum.
The pdftops command can be used to decrypt and convert a pdf to a ps file.
pdftops -upw {password} file.pdf
Thereafter, the ps2pdf command can be used to convert the ps back to an unencrypted pdf.
ps2pdf file.pdf 
Note that, xournal doesn't come into the picture here at all.


Sunday, March 30, 2008

Skype to the rescue ?

In my linux migration, one of the biggest obstacles I have been facing was the lack of a reliable, free messenger allowing voice and video.

Looks like skype will solve that problem for me.

Skype has versions for linux as well as windows. Just installed the linux version; voice works fine.. Can't check out video right now as I don't have a linux compatible webcam..

Anyways, if I can get my parents to use skype too, then one major issue gets sorted out..
And as a bonus, skype allows conference calls too !


Webmin for configuring linux

Had tried Debian Etch, and was wondering how to configure firewall etc using GUI.

Looks like Webmin is a good solution

However, for now I guess I'll stick with opensuse.
Somehow liked it more than any other distros so far.


Saturday, March 29, 2008

L4 microkernels

So much for the monolith that the linux kernel has become!
Stallman and team are working on speeding up hurd on top of the mach microkernel..

But then, mach is a first generation microkernel..
And subsequently, the L4 was designed to overcome the insufficiencies of mach.

Looked at this wikipedia page on l4 microkernels: L4 Microkernel Family
It took me to Fiasco (, a GPL variant of L4.
And know what !
- Fiasco's done in C++ !
- There's an ongoing GNU project for Hurd on L4 !

The TUDOS wiki page

Planning to learn more on L4..
Although I must confess, my learning ventures are not progressing the way I want them to,
this one being built on C++ should help I hope..

More links:
The home of the l4 community:

--------- --------- --------- --------- --------- --------- --------- ---------
Sunday 2008-03-30 22:53 UTC+5:30

Somehow I felt I should include this here as a tribute to the genius
Prof. Dr. Jochen Liedtke


Thursday, March 27, 2008

Encrypted filesystems

This one's further to my two previous posts concerning losetup
1. Virtual Drives on Linux
2. Playing with mount and loopback devices

Here we try to create encrypted file-systems using the dm_crypt modules.
These are the wikipedia links for cryptoloop and it's successor dm_crypt.

In the earlier cases, we have a file-resident filesystem. We interface it with a loopback device to access it as a device, and the mount it to access it.Now, we incorporate one more block; one which acts as our encryption layer.
Ok, that's enough of the theory; lets roll up our sleeves and get our hands dirty.
So first, we create a 100 mb file for our filesystem
dd if=/dev/zero of=testfile bs=512k count=200
Next, we attach that to a loopback device
losetup /dev/loop0 testfile
Now, we add our encryption layer
cryptsetup -c aes -y create secret /dev/loop0
Or you might use aes-cbc-essiv:sha256 for encryption layer.

Note that in the above, -y option will cause the passphrase to be asked twice for verification. The above command will result in /dev/loop0 being mapped post encryption to the device /dev/mapper/secret.

The command is the same each time you need to mount the loop device; only, the first time you give the passphrase, it becomes _the_ passphrase.

(Internally, cryptsetup doesn't seem to care if your passphrase matches what you used earlier. It just dumbly setups up the encryption layer with the passphrase you provde. So, if you give the correct passphrase second time and every subsequent times, you can access what you already have on the device. If you give a wrong passphrase, you can't. Eitherways, cryptsetup doesn't care! But then, if your passphrase is wrong on second and subsequent times, mount won't work as it can't make sense out of the superblock)

Also, to use a native partition as the encrypted filesystem, instead of a file-resident-filesystem, use the appropriate device name instead of /dev/loop0. In such a case, the previous steps can be omitted.

Next, you make a filesystem on the device; We'll use ext2. Note that you do this only the first time. Subsequent times, you can just skip this step as you already have the filesystem set up.
mkfs -t ext2 /dev/mapper/secret
Now, we mount the device
mount -t ext2 /dev/mapper/secret {mount-point}
Once mounted, you can use the device just like any other device. The encryption and decryption are transparent to you.

Once you are done, you need to clean up

Unmount the device secret
umount {mount-point}
Disassociate the crypto layer
cryptsetup remove secret
You need to atleast do the above cleanup steps to prevent the misuse of your encrypted filesystem, and to preserve its integrity. This next step of disassociating the loopback device is optional, unless you need to reuse the loopback device for something else.
losetup -d /dev/loop0
There are many other options other than "cbc" for the encryption algorithm. Please refer to the cryptsetup manpage and to various related online pages for the options and their advantages.

The dm_crypt wiki for further details:

Likewise, if you need to use a physical drive / partition rather than a flat file, you will need to know the device that linux maps it to. Use the command
dmesg | tail
to find the device corresponding to the removable drive you plugged in.

--------- --------- --------- --------- --------- --------- --------- ---------
Friday, 2008-03-28 22:59 UTC+5:30

Additional to that
1. My friend had to
modprobe dm_crypt
modprobe dm_mod
before this would work for him

2. to change password of the encrypted device (say /dev/loop0 )
# create a device mapping using the old password
# remember to use old password here
cryptsetup -c aes -y create secret-old /dev/loop0

# create another device mapping using the new password
# remember, this will be your password hereafter
cryptsetup -c aes -y create secret-new /dev/loop0

# now copy block-by-block from old mapping to new mapping
dd bs={block-size} if=/dev/mapper/secret-old of=/dev/mapper/secret-new

# cleanup
# Actually you can remove the old mapping and continue using the
# new mapping if you'd like
cryptsetup remove secret-old
cryptsetup remove secret-new


Monday, March 24, 2008

Virtualization and Virtual machine monitors

pages on this topic..

Hypervisors a.k.a. Virtual Machine Monitors

The XEN Hypervisor

x86 virtualization

Virtual Machine

VirtualBox (this one's GPL)

This also seems like a viable research area !


Sunday, March 23, 2008

Printing to pdf file on linux

The easiest way to do it is
1. Print whatever to file.. This produces a ps file (.ps extension preferred)
2. Convert the postscript to pdf with ps2pdf command
However, I also wanted to try setting up a pdf printer, primarily because I remember the redhat 9, which I used to use once a long long time ago, to have had one.
To do it this way on OpenSuSE 10.3
1. Download and install the cups-pdf package.. You can find an RPM if you search on OpenSuSE 10.3 doesn't seem to have an rpm for this.
2. If using kde, go to: kmenu > utilities > printing > manage printers. Gnome should have something similar.
3. There, choose to add a new printer..
4. In the step 1 there, choose the "Virtual PDF printer"in the detected list.
5. In the step 2 there, choose "Generic" for manufacturer, "postscript printer" or "PostScript color printer rev4" as model, and "Standard" as driver..
6. Apply.. Your new printer should now become listed
7. Right click on the new printer and choose properties. There, fiddle around and configure things as you want. Once you are done, click print test page.
8. The pdf generated is saved to your home folder.

Now on, you can use this printer to print to pdf file from any application. The generated pdf is saved in your home directory with the filename ".pdf"

A tab on linux preinstalled and NO-OS pcs

As it's not particularly helpful that the standard vendors etc keep their Linux preloaded laptop pages not properly linked to the main page, I've decided to make this collection

Do help me make it bigger :) Post a comment if you find other URLs

Lenovo thinkpad on Linux

Dell on Ubuntu

ASUS Eee PC (catch: this is a 7" screen, 2gb-8gb solid state hard drive)

Will be updated with more !


OS Support for Intel Wireless cards

Found this link upon a bit of googling..
Am thinking 4965 a/g/n card and was worried if that is supported on linux..

Posting it here to keep a tab on it..


Playing with mount and loopback devices

Here, I managed to mount some swap space through a file, which I mounted as a loopback device

# creating the file to setup the swap on.
varmathe@opensuse103-vm:~> dd bs=1024 if=/dev/zero of=./testfile count=102400
102400+0 records in
102400+0 records out
104857600 bytes (105 MB) copied, 4.25891 s, 24.6 MB/s

# for the rest, I need to be root
varmathe@opensuse103-vm:~> su

# mounting the file as a loopback block device.
opensuse103-vm:/home/varmathe # losetup /dev/loop0 testfile

# formatting the device as swap space
opensuse103-vm:/home/varmathe # mkswap /dev/loop0
Setting up swapspace version 1, size = 104853 kB
no label, UUID=853895fe-e4cf-4741-8106-cc7e88f89210

# asking linux to use that too for swap
opensuse103-vm:/home/varmathe # swapon /dev/loop0

Here is another example where I manage some more playing around with losetup

# Creating a 10 mb disk image. It's just a file of size 10mb full of zeros.
varmathe@opensuse103-vm:~> dd bs=1024 if=/dev/zero of=./testfile count=10240
10240+0 records in
10240+0 records out
10485760 bytes (10 MB) copied, 1.03734 s, 10.1 MB/s

# Now on, I'm root
varmathe@opensuse103-vm:~> su

# Setting up the loop device
opensuse103-vm:/home/varmathe # losetup /dev/loop0 ./testfile

# Creating an ext3 filesystem on the loop device.
opensuse103-vm:/home/varmathe # mkfs -t ext3 /dev/loop0
mke2fs 1.40.2 (12-Jul-2007)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
2560 inodes, 10240 blocks
512 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=10485760
2 block groups
8192 blocks per group, 8192 fragments per group
1280 inodes per group
Superblock backups stored on blocks:

Writing inode tables: done
Creating journal (1024 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 31 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

# creating a folder to mount the device on.
opensuse103-vm:/home/varmathe # mkdir test-point

# mounting..
opensuse103-vm:/home/varmathe # mount -t ext3 /dev/loop0 ./test-point/

# Dumping a file there..
opensuse103-vm:/home/varmathe # cd ./test-point/
opensuse103-vm:/home/varmathe/test-point # ls
opensuse103-vm:/home/varmathe/test-point # cat > testfile.txt << EOF
> this is a test file to check the making of
> the filesystem with loop devices thing
> hope this thingy will work
> if it does, this file will be reclaimable
> when I remount this filesystem
opensuse103-vm:/home/varmathe/test-point # ls
lost+found testfile.txt

# Unmounting the device..
opensuse103-vm:/home/varmathe/test-point # cd ..
opensuse103-vm:/home/varmathe # umount test-point/

# Disassociating the loopback..
opensuse103-vm:/home/varmathe # losetup -d /dev/loop0

# Reassociating..
opensuse103-vm:/home/varmathe # losetup /dev/loop0 ./testfile

# mounting again..
opensuse103-vm:/home/varmathe # mount -t ext3 /dev/loop0 ./test-point/

# Ah yes, it's all still there..
opensuse103-vm:/home/varmathe # cd test-point/
opensuse103-vm:/home/varmathe/test-point # ls
lost+found testfile.txt
opensuse103-vm:/home/varmathe/test-point # cat testfile.txt
this is a test file to check the making of
the filesystem with loop devices thing

hope this thingy will work
if it does, this file will be reclaimable
when I remount this filesystem

Thursday, March 20, 2008

Debian KDE

To install Debain Linux with KDE on your system, use the command

install tasks="kde-desktop, standard"

at the boot prompt.

If you would also like to make use of the graphical installer, you can try the command

installgui tasks="kde-desktop, standard"



Wednesday, March 12, 2008

Writing bootsector - The GNU "as" (aka gas) way

My friend Haynes pointed me to this quick hands on tutorial..

Simple, brief and neatly explained tutorial on how to write bootsectors with GNU tools for the x86 architecture.

Also, objcopy can be used to convert between binary formats.

--------- --------- --------- --------- --------- --------- --------- ---------
Sunday 2008-03-30 02:19 UTC+5:30

I used the snippet of code given at the above webpage
# Author: Susam Pal 
# To assemble and link this code, execute the following commands:-
# as -o char.o char.s
# ld --oformat binary -o char char.o
# To write this code into the boot sector of a device, say /dev/sdb:-
# dd if=char of=/dev/sdb
# echo -ne "\x55\xaa" | dd seek=510 bs=1 of=/dev/sdb

.section .text
.globl _start
mov $0xb800, %ax
mov %ax, %ds
movb $'A', 0
movb $0x1e, 1
jmp idle
Assembled and linked the same using the commands given in the comment part of the code.
Then, had the ".com" file pushed into a floppy image file. And it worked !

When I pushed the binary into a floppy image formatted as "mkfs -t vfat", the filesystem went corrupt
even though the booting was successful. When I tried formatting the floppy as ext3, everything worked
and the filesystem was also preserved. Wondering why writing the bootsector corrupted the vfat filesystem.

Used qemu to test the stuff !!


OpenSuSE 11.0 on Jun 19

Target release date for OpenSuSE 11 is jun 19th 2008 !!

Waiting for this !!


Tuesday, March 11, 2008

GNU as a.k.a. Gas

My first assembly program ..
Ah it sux, but demonstrating how to use Gas, gdb etc. with a program which is too simple, anyone would understand..
varmathe@opensuse103-vm:/temp/varmathe> cat test.S
* First gas assembly program by Varghese Mathew !
* simply to add two numbers on the x86
* Purpose: demonstrate the usage of gas, gdb etc

.global main /* define the main to be callable from libc */
.text /* text segment */
main: /* the prodigal main function */
movl $100, %eax # load 100 in eax
movl $200, %ebx # load 200 in ebc
addl %eax, %ebx # add the two and store in ebx

/* the end */

varmathe@opensuse103-vm:/temp/varmathe> gcc -g test.S
varmathe@opensuse103-vm:/temp/varmathe> gdb a.out
GNU gdb
Copyright (C) 2007 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i586-suse-linux"...
Using host libthread_db library "/lib/".
(gdb) break main
Breakpoint 1 at 0x8048394: file test.S, line 10.
(gdb) run
Starting program: /temp/varmathe/a.out

Breakpoint 1, main () at test.S:10
10 movl $100, %eax # load 100 in eax
Current language: auto; currently asm
(gdb) info registers
eax 0x1 1
ecx 0xbfa61264 -1079635356
edx 0xbfa61200 -1079635456
ebx 0xb7edbff4 -1209155596
esp 0xbfa611dc 0xbfa611dc
ebp 0xbfa61238 0xbfa61238
esi 0xb7f25ca0 -1208853344
edi 0x0 0
eip 0x8048394 0x8048394

eflags 0x200246 [ PF ZF IF ID ]
cs 0x73 115
ss 0x7b 123
ds 0x7b 123
es 0x7b 123
fs 0x0 0
gs 0x33 51
(gdb) info reg eax
eax 0x1 1
(gdb) info reg ebx
ebx 0xb7edbff4 -1209155596
(gdb) n
11 movl $200, %ebx # load 200 in ebc
(gdb) info reg eax
eax 0x64 100
(gdb) info reg ebx
ebx 0xb7edbff4 -1209155596
(gdb) n
12 addl %eax, %ebx # add the two and store in ebx
(gdb) info reg eax
eax 0x64 100
(gdb) info reg ebx
ebx 0xc8 200
(gdb) n
0x080483a0 in __libc_csu_fini ()
(gdb) info reg eax
eax 0x64 100
(gdb) info reg ebx
ebx 0x12c 300
(gdb) c

Program exited with code 0144.
(gdb) q


Sunday, March 9, 2008

Usenet newsgroups / NNTP

What do I say, a powerful but forgotten resource !

To all my friends who read this page, try the usenet newsgroups.

To try..
1. Download and Install mozilla thunderbird.
2. Click cancel when it initially asks you to set up an account (just to do it the "usual" way)
3. go to Tools > Account Settings, for windoze (maybe so named because it puts the brain to sleep)
or to Edit > Account Settings, for Linux (ah even she's not the best courtesan, waiting for hurd)
4. There, click on the Add account button.
5. choose newsgroup account, and next.
6. Enter the name you want displayed, and a syntactically valid email address; next.
7. NNTP server ""; next
Thank god, there's someone hosting a free server allowing posting..
If you know more, please add as a comment..
8. Give a name if you want to, or use the default; finish.
9. Now you have an entry on your left pane. Right click on it and choose subscribe.
10. Subscribe to "alt.test"
11. now, you have an alt.test entry under on the left pane. Click on it. It will ask you to download headers. Choose to download some 10 or so max.
12. Now, while having the alt.test folder selected, click on the write button on the top left. compose a test post and send it to alt.test.
13. After sometime / once you open and close thunderbird, your post should show up in alt.test.

Configure thunderbird further to check the news group for new messages on startup and every 10 minutes etc. I'm not detailing these.. Also download a larger number of headers if you want to browse archives

alt.test is a newsgroup for sending test posts etc.. it's not worth browsing the alt.test archive.. people use it to send test posts to verify connectivity. now that you have the newsgroups set up, you can unsubscribe from this group..

Check out the many wonderful groups ranging from comp.os.minix to comp.lang.c++ to alt.os.development to alt.hobbies.* to sci.math.* to to whatever you want !

You will be overwhelmed by the expanse of the resource which you never until now knew existed !


On further thoughts, the server "" might be a better choice for digging archives, but you can't post - it's read only.. or you can use the google groups thingy to dig deepest.. But posting the usenet way far surpasses the google groups experience.


A page on usenet

some paid news-servers (keeping a track, just in case i need later in life.) Uses a seemingly secure payment gateway. have to give credit card info directly - is this safe ? have to give credit card info directly - is this safe ? have to give credit card info directly - is this safe ?

This one's free but seems to be down often

A further list of servers


Linus vs. Tanenbaum

Found couple of links for the 1991 ish time mega debate between Linus Torvalds and Andy Tanenbaum on Microkernel vs. Monolithic kernel.


A hosted version

I really got to say, that guy Andrew Tanenbaum is a visionary !! But alas, the world is a non-pseudo random number generator !


Saturday, March 8, 2008


Hit upon this usenet newsgroup through some other osdev website. Seems like a hangout for hobbyist OSDevelopers.

And this is a compilation of various content, sites etc that came across through alt.os.development over time.. Looks good, looks huge.. :D

comp.os.minix is also a good hangout; though this one's specifically for minix, historically, it's where linux was born :D


The PC booting process

A certain mjvines had this explanation as a comment in his bootsector tutorial example. Thanks to him.. Just pasting it here lest I forget at a later point in time.

; Here's a quick summary of what the BIOS does when booting up.
; 1) Loads Sector 1, Track 0, Head 0 of the boot drive( A or C ) to
; absolute address 07C00h-07DFFh
; 2) Checks the 16 bit word at absolute address 07DFEh for AA55h. This is
; the boot signature and is used by the BIOS to ensure that the sector
; contains a value bootsector.
; If this signature isn't present, the BIOS will display a message like
; "Operating System Not Found"
; 4) Loads DL with
; 00h if the boot sector was loaded from drive A,
; 80h if the boot sector was loaded from drive C
; This way, the bootsector can determine which drive it was booted from.
; 5) Jumps to 0000:7C00h, which is the start of the bootsector


And on top of that, remember reading somewhere.. A CD boot is done by actually having a floppy image at the beginning of the cd.. This floppy image is loaded as a ramdisk and the ramdisk is used for the booting.. Can't remember the reference nor the exact details off the top of my head right now :(
Update: Found one reference now

While still on bootloaders, a good tutorial on using grub by Christopher Giese.


Friday, March 7, 2008

osdev/crossgcc first try

Started working on learning to build a custom OS. First step is the cross compiler. Went to the GCC Cross-Compiler page on osdev-wiki. That page lists the steps to get my cross compiler up and running.

Got the binutils, gcc-core and g++ sources.. Created a new login on my linux box and set it up as recommended in the LFS tutorial, to have minimal environment.. This was my pure whim :D.

Then went by the steps mentioned in the osdev page; made my binutils; made my gcc.. Then came the problem.. What libc to use?

Tried PDClib but found it lacking in cross compilation support etc.
Then got a newlib downloaded and built that.. It seems to have worked..

Then recompiled the gcc with headers.

And once all that was done, your's truly tried to compile a very simple .c file using the cross-compiler..

The linker failed saying no crt0.o !


hm.. vaguely remember something about crt0.o from my hardware classes at NITC.. or was it from some unix system programmer's reference I read back at college?

Anyways.. searched on the osdev wiki.. Hit a page on how to install "newlib" !! Now that could have helped me a little earlier :D.. I just broke my head figuring out what was already documented :D..
doesn't harm.. things learned the hard way stick longer :)

But coming back, somebody had cooked up a simple crt0.S on that page.. used that..

And know what! IT WORKED !!

Well, not exactly.. ld still cribs about missing syscall wrapper function definitions..
I need to take the newlib-libc-documentation, go to chapter 12 - Syscalls, and then either implement wrappers for each of those syscalls (thankfully not too many) aimed at my kernel (ah, but I still haven't even started thinking about it !! ) .. or I have to provide a set of stubs for those syscalls .. or maybe route those syscalls to my hosts syscalls ( possible in this case because my host is a Centrino processor, and my cross compiler target is i586 :D )

Anyways.. so far so good..

But there are some things which still worries me..
1. I still don't know shit about that newlib internal implementation and it's source is over 11 Megs !!
2. I did a "du -sh" on the final build environment I have (excluding all intermediate files) and it's a whopping 162 Megs.. Guess programmers really have lost the ability to make efficient code, as Andrew Tannenbaum puts it.
3. What if the present generation who maintains glibc, gcc, binutils, newlib etc dies out and it's the next generation's turn to maintain all of that.. my generation's turn.. Will there be anyone left who has a holistic understanding of all that code to maintain it ?

Ah, but I'm a small fry making too much noise; and staying up at 4:30 AM to set up a cross compiler.. no wonder I'm an oddity.. maybe that explains why I still don't have a girlfriend :D


A collection of free clip-art images on the web..


Links for Operating System Development

Sorry, this is a bit unorganized.. I'm just starting out on this arduous peregrination :D.. Hope to keep the momentum going.. If that happens, you can hope to see more detailed step by step, for the dummies instructions here.. But till then..

The Operating System Resource Center

Gareth Owen's OSDev site at sourceforge

Bran's Kernel Development

How to write your own OS: part 1, part 2.

Assembly Language: intel x86

The Art of Assembly Language

Linux assembly guide

Links for assembly programming


Wednesday, March 5, 2008

Full Screen issue with mplayer

I was having a small issue with mplayer.. When I full screen the video, the whole screen is occupied, as in the screen goes black, but the video is played still at the original resolution in a small rectangle in the center.

As always, google saved the day..

A "-zoom" parameter needs to be passed to mplayer, to zoom the video to the window size.

Alternatively, a config file can be set up for mplayer as

## MPlayer config file
## This file can be copied to /usr/local/etc/mplayer.conf and/or ~/.mplayer/config .
## If both exist, the ~/.mplayer/config's settings override the
## /usr/local/etc/mplayer.conf ones. And, of course command line overrides all.
## The options are the same as in the command line, but they can be specified
## more flexibly here. See below.

vo=xv # To specify default video driver (see -vo help for
# list)
ao=oss # To specify default audio driver (see -ao help for
# list)

fs=no # Enlarges movie window to your desktop's size.
# Used by drivers: all

vm=yes # Tries to change to a different videomode
# Used by drivers: dga2, x11, sdl

bpp=24 # Force changing display depth.
# Valid settings are: 0, 15, 16, 24, 32
# may need 'vm=yes' too.
# Used by drivers: fbdev, dga2, svga, vesa

zoom=yes # Enable software scaling (powerful CPU needed)
# Used by drivers: svga, x11, vesa

#double=yes # use double-buffering (recommended for xv with
# SUB/OSD usage)

# monitoraspect=4:3 # standard monitor size, with square pixels
# monitoraspect=16:9 # use this for widescreen monitor! non-square pixels

## Use GUI mode by default

gui = yes
The zoom=yes line is what we need to fix the issue.
And on that "Powerful CPU needed" line, a 640x480 DivX video zoomed to 1024x768 will probably require a 1.2 GHz processor at most.


Next Laptop.. Sager NP2092 ?

This post has been obsoleted by
--------- --------- --------- --------- --------- --------- --------- ---------

Had been thinking sometime about which laptop to buy when I go for higher studies. Had a fixation for the IBM Thinkpad. Was planning to buy it.. And the Lenovo T61 can be bought direct from Lenovo with Linux preloaded rather than the Microsoft Proprietory OS. Yet only flaw was, that does not have an integrated webcam.

Further hunting has led me to this laptop, Sager NP 2092

Sager, as wikipedia mentions it, is a retailer specializing in performance laptops for gaming purposes. And of-course, a performance laptop for gaming is a performance laptop for any conceivable purpose :D

The ODM of the specified laptop is Compal which is the world's second largest laptop maker. This particular Sager laptop is built on top of the Compal JFL 92..


Found this blog on installing linux on the immediate predecessor model of this laptop

Planning to buy the laptop from powernotebooks.. They seem to have a good reputation online.. And most importantly, they sell the "NO-OS" version of the laptop, so I won't need to pay microsoft for a license which I will not use anyway.

Further reading..
About "Brands" for laptops:
About the dead-pixel policy:

Also, Hum X ground loop eliminator, if I understand right, is a piece of circuitry integrated into the plug-point, and not into the notebook. Hence I guess, I'll not buy it right off, and buy it if I find a need for it later..


Monday, March 3, 2008

Ext2Fsd vs NTFS-3g

A tool to mount ntfs devices on linux. I have tried it out.. works fine both for reading and writing.

You might have to compile the thingy from source.. but it's rather simple.. and compiled without any issues on my OpenSuSE 10.3 installation.

But then, I've started thinking.. If I'm planning to keep a pure linux box (Yeah yeah, I caught Penguinitis ! ), then I might as well have my storage devices as ext3 and get an ext3 driver for windows..

Tried wikipedia on Ext3, and bingo! it had a link to the sourceforge project developing a windows driver for using ext3 devices.

Albeit the name it fully supports ext3 devices..

Once you install it, you need to go to it's "Ext2 volume manager".
From that
1. File -> Enable Ext2Mgr autostart
2. Tools -> Service Management : and start the service.

Once these are done.. plug in your ext3 devices and use them like any other storage media on windows.

I converted my 2GB usb pen drive to ext3 and am using that on windows with ext2fsd.. Call it "Proof of Concept" for myself in my tux migration drive.. :D


Sunday, March 2, 2008

Linux support matrix for webcams

This site gives support matrix and driver information about
using webcams with linux

Unfortunately for me, I have a
"046d:08c7 - Logitech Quickcam OEM Cisco VT Camera II"

--------- --------- --------- --------- --------- --------- --------- ---------
Sunday 2008-03-30 12:19 UTC+5:30

A link about setting up logitech webcam for OpenSuSE 10.3

Another link on logitech webcams