вівторок, 9 вересня 2008 р.

host lookup problems and hacky solutions

I got this really weird problem today: x apps couldn't connect XMing host saying "cannot connect to X server".
After some trials & errors - I defined that linux box can't resolve "localhost" host and its own local hostname "ninja"...
/etc/nsswitch.conf shows:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
(files go first)
/etc/hosts is all right too...

nslookup shows that it tries to resolve localhost and ninja using dsl isp nameservers
ping shows "unknown host 'localhost'" or something like that - why doesn't it use hosts file? I still don't know... after some time on linux community forums I've decided to fix it my way and here is how I did it:

1) first of all, I turned off some pppoe up and down scripts that rewrite /etc/resolv.conf:
# these must be chmoded to non-executables
# ip-up script uses run-parts that runs all the executable files
sudo chmod -x /etc/ppp/ip-up.d/0000usepeerdns
sudo chmod -x /etc/ppp/ip-up.d/0dns-up
sudo chmod -x /etc/ppp/ip-up.d/dns-totd
# I think these can be left executable, but just to be sure...
sudo chmod -x /etc/ppp/ip-down.d/0000usepeerdns
sudo chmod -x /etc/ppp/ip-down.d/0dns-up
sudo chmod -x /etc/ppp/ip-down.d/dns-totd
# after poff and pon dsl-provider resolv conf remains the same (see 2) so it worked

2) /etc/resolv.conf was looking this way before:
search local.lan
these values were set automatically on dsl link up
I changed it to this:
#search local.lan
I have to mention that I have bind9 up and running successfully as a local dns server for a few months (so I won't be describing bind9 setup here)

3) bind9 has a "localhost" zone already configured so at this point I could already ping localhost alright. I needed to be able to ping "ninja" hostname, so here's what I did:
- opened bind config file in editor
sudo nano /etc/bind/named.conf
- added "ninja" zone to it
zone "ninja" {
type master;
file "/etc/bind/db.ninja";
- added zone definition file /etc/bind/db.ninja mentioned above

sudo nano /etc/bind/db.ninja
; BIND data file for local loopback interface
$TTL 604800
@ IN SOA ninja. root.ninja. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
@ IN NS ninja.
@ IN A

and it pings.

P.S. XMing is alive again

понеділок, 8 вересня 2008 р.

"global" domain name with dynamic ip

Recently, I've started to want a globally-accessible, dedicated domain name for my linux box, instead of the one dyndns services give, e.g. yourhost.dyndnsservice.domain etc - so I've registered an .info domain for 2 bucks (there was some promotion so I got lucky) at godaddy and began to look for a way to bind it my linux box - it turned out that my current dyndns service wants about $25 for that (a bit too much I guess).
finally I've found http://www.dnsexit.com/ which does it for free. you need to sign up, add your domain, set their nameservers in domain control panel as registrar's website, setup dynamic ip client to update and that's it

понеділок, 18 серпня 2008 р.

Sending sound from Windows to Linux

After fighting with ALSA for some time to make sound from two sound cards work
1) built-in NVidia HDA
2) M-Audio Delta (Audiophile) 2496
I almost gave it all up and removed M2496 hoping that built-in will work fine - I was wrong.
As I can see it now - There is no "simple" solutions in Linux, like reboot and see what happens :)
So I've decided to setup and run system-wide pulseaudio daemon - after trying and reading forums it helped - I have sound from apps that use ALSA, I have volume control from pa applet and support for esd/pulseaudio network clients.

Next thing I've decided to try is passing sound from windows to linux - so I could walk around with my laptop and playing winamp or foobar or anything and the sound went from speakers plugged into my linux box.
First success was to run paplay on windows connected to pulseaudio server on linux - that was fun, but not useful.
Next, I've search for some kind of pa client audio output driver for Win, nothing of that kind yet exists (I will learn programming windows drivers some day, but until then I use google search ;) but there are ESD clients for windows:
1. WinESD 0.3 which is claimed to be a pre-ALPHA so be afraid :) I've installed it, but it requires reboot which I haven't done yet (I use hibernation in windows, because I don't like to start all those useful apps over and over again every day - so I guess I will reboot it later)
2. ESD output plugin for Winamp 2/3 - which I use right at this moment to stream music from my winamp on windows to pulseaudio server on linux - sounds nice and smooth, no glitches, no delays.

here are my pulse configuration files

#!/usr/bin/pulseaudio -nF
# NVidia
add-autoload-sink output module-alsa-sink sink_name=output device=hw:0
add-autoload-source input module-alsa-source source_name=input device=hw:0

# Load several protocols
load-module module-native-protocol-unix
load-module module-zeroconf-publish
#these two lines below allow ESD/PA clients to connect
# auth-anonymous=1 is not very safe,
# but firewall doesn't let strangers in

load-module module-esound-protocol-tcp auth-anonymous=1
load-module module-native-protocol-tcp auth-anonymous=1

# Make some devices default
set-default-sink output
set-default-source input

run: sudo pulseaudio --system=1 --high-priority=1 -D
to start pulseaudio as a system-wide daemon.

in winamp:
1) select esd out plugin
2) in esd out plugin options enter:
host: ninja.local (my linux box host)
port: 16001 (it was there by default)
password: (nothing, auth-anonymous, remember?)
3) ok, close, play

Look ma, no wires :)))

p.s. I am going to put m2496 back in

четвер, 14 серпня 2008 р.

How to open an URL in firefox running on another VT

I have a ubuntu linux box at home. It works as a router, firewall and a local server (web, dns, ntp, ssh)
But except that it's it has kde3.5 running - mostly, I listen music from it, while I work in windows xp. I use Xming to run kicker (kde3 "taskbar"). Sometimes I really need to open an URL in my linux box session (not in xming's session) and there's a funny way to do it.

I open konsole from kicker in windows and type:
me :0 2008-08-14 03:57
(which means my display in linux is :0)

export DISPLAY=:0

firefox http://whatever-url-i-need-to-open-in-linux/

and voila.

p.s. XMing's display is localhost:10.0 by default

Switching CLI input language in Ubuntu Linux

1. open ~/.bashrc for editing:
nano ~/.bashrc

2. add some aliases at the bottom of .bashrc file:
alias ua="setxkbmap ua"
alias сш="setxkbmap us"

3. save (Ctrl+o), exit nano (Ctrl+x) and reload .bashrc:
source ~/.bashrc