2007 Meeting Minutes

Live forum: /viewtopic.php?t=217

waveclaw

05-01-2007 10:30:01

Linux SIG 4 January 2007

Expecting a small group due to the holidays.

'Newbie' discussion
- Your desktop is really a directory in your home directory: /home/username/Desktop
- fvwm, Gnome, KDE, WindowMaker, etc are window managers. Window managers != distro, just the desktop. They determine how your desktop looks and are available on almost all distributions of Linux.
- Installing software under Linux is different than in windows (adobe, Java / jre, and apt-get / synaptic)
- usb wireless networking under Linux is 'often fun,' especially for drivers.
- http://linux-wless.passys.nl/
- There are Gigafast drivers, but they are independently packaged source-code only modules

Topic proposal: 'stunt' config next month to put the zd1211 driver on a guests new Linux system if he doesn't get the Gigafast drivers working before then.

Intro Topic: X|K|Ubuntu

Kubuntu
Logged in as the 'admin' user.
- KDE desktop. Most applications' names start with a k
- Default theme is very blue
- Large panel at bottom of the screen with the Application menu
- Menu editing is easy.
Control panel (all tied to your login)
- KDE can style Gnome apps via the control panel
- Hardware setting
- Networking and filesharing settings
- Users, groups, loging, etc managed from here
File Browser
- Knoqueror, also the default web browser
- /home/admin/Desktop holds everything kept or put on the desktop
- Put an xeyes application shortcut on the desktop, can run from desktop
- Sample download of a driver file (.tar.gz) to the /home directory

Ubuntu
Logged in as 'eric'
- Gnome Desktop
- Everything is very brown colored
- Screenshot tools
Applications, Places, and System menus instead of 1 catch-all menu
- Alacarte menu editor vs. shortcuts in /usr/share/applications
- Top and bottom panels, control panel in the System menu
File Browser
- Nautilus
- Uses Firefox as the default web browser
- Put an xeyes application shortcut on the desktop, when run it's window has decorations (window border, max/min/close buttons, titlebar) unlike when under KDE
- Demonstration of KDE applications running under Gnome (katomic)
- Themes: changing folders, window decorations, icons

Xubuntu
Logged in as 'elliot'
- Very lightweight (this is a small 128Mb RAM laptop system)
- xfce Desktop with a blue theme
- looks like a low-resolution Gnome Desktop with few / no icons or artwork
- The system was pre-installed via a network kickstart-type install
File Browser
- Thundar
- Uses firefox as the default web browser
- Demonstration of how slow KDE applications start
- Demonstration of xfmedia for playing videos, music

RedHat 7.2 WindowMaker
Logged in as the presenter on his old workstation
- WindowMaker is very different
- Based on the NetStep environment
- Floating 'dock' instead of panels
- Docks is called a 'Warf' and small applets can be docked to it
- Menu is on the desktop (right click to pop up) and filled with many things
- Windows resize differently, including animated indicators of window dimensions
- Demonstration of window shading when the titlebar is double-clicked


Advanced Topic: Eric Teaches Perl, Part 5

Note that due to copy errors, Part 4 was not labeled as such.

Advanced modules, as demonstrated on an Ubuntu 6.06 system with Perl 5.8

LWP: Lib for Www and Perl, is a package of web browsing utilities for Perl. It is one of the most popular and widely used packages. In general, lwp is better when you need to part the html from a connection to a web server (e.g. when dealing with frontpage extensions causing server crashes by writing an automated apache restart script in Perl). Many screen scrapers are Perl scripts that automate a live human session with a web browser.

Install on Ubuntu is easy:
1. apt-cache search lwp
2. find relevant package (libwww-perl)
3. apt-get install libwww-perl

man lwp
- the manual pages are very helpful
- however, read the examples first, then look at the rest of the manpage for reference


Example of LWP

#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request::COmmon;
.
.
.
my $useragent = LWP:: UserAgent->new();
$useragent->timetout(10); # in seconds
my $request = $useragent('GET url-to-get');
.
.
.
if ( $request->is_success() ) { # some code to run on success (e.g. http code 200) }
if ( $request->content =~ /some regex/ ) { # some code to run when content matches }
if ( $request->is_not_success() ) { # code to run on fail (http codes 404, 305, etc) }



Syslog is another popular Module available on UNIX platforms.

Example of Syslog

#!/usr/bin/perl
use sys::Syslog;
openlog('application', 'pid','user); # replace application with relevant app
syslog('warning','message');
syslog('warning_level','messages format with %s or %d or other','string','123456');


POSIX library is available on UNIX platforms

Gets you access to the standard UNIX system utilities.

Example of POSIX
#!/usr/bin/perl
use POSIX gw/uname/; # note: only getting the uname command from the POSIX library
my (undef, $hostname) = uname; # many parts are output, only wanted 2nd (hostname)


Lazy Mail sending.

There are many different type of mail libraries with many more-or-less useful interfaces. Mime::Tools and Net::SNMP can be combined to build messages with complex payloads (multi-part, MIME encoded attachments, etc) and be sent directly without access to mail or sendmail commands. Usually the libraries are complex and not more effective than lazy system() commands. System() is very slow and generally indicates lack of programmer awareness of the available modules. In this case, it's par for the course to use it for mail handling.

Example of lazy mailing

#!/usr/bin/perl
open(MAIL, '| mail -s topic user@host.domain.com'); # note the use of the pipe (|) char
print(MAIL "my email message which can be really long.\n");
# ^^^ note lack of a comma, just a space here (inconsistent, but important)
close(MAIL);


All these modules are combined into a simple script that checks for an apache result and starts apache if needed:

#!/usr/bin/perl -w
use strict;
use LWP::UserAgent;
use HTTP::Request::Common;
use POSIX qw/uname/;
use sys::Syslog;

openlog('apache_restart', 'pid','user);

my $useragent = LWP:: UserAgent->new();
$useragent->timetout(10);
my $request = $useragent('GET http://localhost/testfile.html');
unless ($request->is_success() && $request->content =~ /some regex/) {
system('/etc/init.d/httpd stop');
sleep(20);
system('/etc/init.d/httpd start');
syslog('warning','Apache was restarted because it failed to return the webpage testfile.html');
my (undef, $hostname) = uname;
open(MAIL, '| mail -sapache_restart user@host.domain.com');
print(MAIL "Apache server on $hostname was restarted.\n");
close(MAIL);
};



A longer and more complex example was given about automating upload of certain files to a certain government website. Due to security considerations for the (horribly designed and poorly implemented) website in question, that discussion is omitted.

waveclaw

09-02-2007 16:14:02

Linux Sig 1 February 2007

'Newbie' Discussion
The man from last month brought his system, so it will be the entry level topic.
Several new people (one who brought his system) plus Eric, Robert, the regulars.

The Patient - beginning Ubuntu
The goal is to get his USB wireless adapter working and install some plug ins to enable plug ins for web browsing
This is the same system from last month's discussion.
  1. Step 1 If you want root access (w/o having to type sudo all the time.)

    In a terminal: sudo passwd
    Respond to the Password prompt with YOUR password.
    Respond to the 'Enter new UNIX password' prompt with the new password you want for root.
    You will be asked to type it again, just to make sure you can type it correctly.

    Step 2: Now you can use 'su -' to become root

    In your terminal, type su -
    At the prompt, type the password you set earlier.

    Step 3: List the usb devices on the system.
    In that terminal type: 'lsusb'
    (ZyDAS was returned for the demo system)

    Step 4: Install the usb utility usbview. In that terminal
    type: 'apt-get install usbview'
    (note that the connection at the SIG is partially broken and will
    kill downloads above 1Mb in size or so.)

    Step 5: Since we used 'su -' above, the envrionment for our graphics is broken. Running graphical applications from that terminal won't work until this is fixed.
    Step 5a: Export your display
    Open a new terminal and type 'echo $DISPLAY; echo $XAUTHORITY'
    This gives you the values you need.
    Type 'export DISPLAY=the_value_from_the_other_window'
    and 'export XAUTHORITY=the_other_value' in your terminal with the 'su -' session.

    Step 6: See if your usb wireless card is available (yes it is int he demo.)

    In a terminal run usbview.

    Step 7: Check to see of a driver has loaded.

    In the terminal type 'ifconfig'
    See if your card is there (the demo has it setup as eth0)

    Step 8: restart the network device to see if it is coming up.

    In your first terminal, type 'ifdown eth0' and then 'ifup eth0'


    Step 9: Now that we know the card is working we need to connect to a wireless network.

    In the terminal type 'iwlist scanning'
    You should see someone.
    (The demo can't see any open networks nearby, so we can't really connect.)

    [/list:u]

    Note that applications such as 'network-admin' still needs you to use your password. If you are not connected as root you will get prompted for it.
    network-admin is the pretty graphical tool for doing steps 3-9. It's in the Application -> system menu. Plus, you can set your ESSID
    for your wireless network. (Without a network nearby we cannot properly set that up.)

    Demonstration of package installation.

    On the System -> Sources menu entry, you can change your Software Sources to include things like Java, Flash.

    On the System -> Administrations menu, there is a tool called Add/Remove Applications.

    Within the application 'Add/Remove Applications' search for sun-java (or search for jre.) Select that package and the Java plug-in packages. Most of the rest of Java packages listed are for writing and programming in Java . The plug-in and Java jre are used for running Java, such as in your browser.

    (Due to the network connection, the installation was aborted. You can follow the directions to install them again. See http://www.ubuntu.com for more details.)

    Likewise, acroread for adobe and flashplugin-nonfree for Flash. This can be done because the sources were changed above to allow installing these non-free types of packages.

    In this case, helix-player and mozilla-helix-player will enable listening to online radio stations like http://www.npr.org/dmg/dmg.php?getNewsCast=true&NPRMediaPref=RM

    Note on updates
    People want stability. So, the versions are fixed and a snapshot will be done. No new features would be added, but patches and fixes will be released for security and major bugs.

    For example: see http://www.ubuntuguide.org which tells you about Ubuntu 6.06 vs. 6.10. Also, this site will tell you how to find media support for commercial formats, how to install and find many packages. How to install OpenCobol, etc for those RPG programmers in the house (Eric.)


    Intro Topic: automated install CD with kickstart.
    Network installs using PXE (F12 on many laptops) to boot ubuntu server.

    The CD-of-death version:

    1. 1. A special CD containing Ubunutu server (no gui)
      2. 30 minutes of your time
      [/list:u]

      The contents of the CD look normal except:

      1. 1. /cdrom/isolinux/isolinux.cfg has been modified to only have 1 section
        1.1 The PROMPT value has been set to 0
        1.2 The pressed/file has been set to /cdrom/preseed/eric.seed (the file eric wrote.)
        1.3 debian-installer/locale=en_US and other settings are used to deal with autodetect of keyboards, locales, etc.
        2. /cdrom/preseed/eric.seed contains the Install source information

        The example file is set to use one of Eric's internal proxy machines.
        The http::Pipeline in the example seed file is an early running command breaks that breaks with squid proxy caching of files
        # starting a line comments that line out
        d-i on a line starts a command, such as the commands below

        2.1 archive-copier copies stuff and installs them, several entries exist
        2.2 netcfg can be used to setup boot early on the CD install (netowkr install does not need this)
        2.3 partman-auto is used to setup the disk and uses 'recipes' to describe howto partiiton
        2.4 time/zone, clock-setyp/utc commands setup time
        2.5 pkgsel/install-pattern strings

        ~t^ubunutu-standard$|~n^openssh-server$
        This is a pattern to select an Ubuntu package and it's task.
        This is for a meta-like package which only installs other packages.
        (apt-cache show unbuntu-desktop will show any package that has a task like this)
        base-config starts lines that configure the system (MD5 hash of password,

        2.6 The preaccepting section
        [/list:u]

        The depconf-get-selections program will reveal the options used to set features such as:

        sun-java5-jre share/accepted-sun-dlj-v1-1 boolean true

        Which preinstalls Sun java (and auto-accepts the license.)

        Note that these files are very very specific to the installer, and each Debian Linux uses a unique installer.
        Ubuntu is based on Edgy Efft version of Debian and this file is specific to Ubuntu but may be a good basis for an Etch version kickstart file.

        Netboot preseed files (using tftp) are available online (check google.com) for those wishing to do this with a netboot CD.

        Using qemu (the quick HW emulator from fabrice.bellard.free.fr/qemu/) under linux will help you debug this as you might burn a few coasters before you are done.

        Install demonstrated at this point. Note that a network cable needed to be plugged in which made the installer unhappy.

        Advanced topic: Asterisk, Part 1
        http://www.asterisk.org/
        Facsimile (FAX) will be covered, but it is very flaky and ugly on VoIP.
        Phone selection will be shown.
        A demo system will be shown.

        In Asterisk,
        1. User - makes calls to you
          Peer - someone you call outgoing
          Friend - someone that is both a User and Peer
          [/list:u]
          and you must configure these. Proper configuration of friends is important to voice mail and NAT functionality.

          To get Asterisk on Debian, you only need a few packages
          1. asterisk (a dummy package
            asterisk-classic (unless you have ISDN BRI, you want this)
            asterisk-config
            asterisk-doc (comes with -classic)
            asterisk-sounds (comes with -classic)[/list:u]
            And of course your hardware (an ISDN BRI or PRI line such as the zaptel in the example server)

            Conceptually, Asterisk is a PBX. It has some additional functionality. IP Phones don't need a PBX to talk to each other, but features like presents, voicemail. Asterisk doesn't need IP Phones to work. Modems works fine for normal phones.

            Asterisk supports a lot of phone types.
            1. POTS phones are supported (POTS handsets and phone systems)
              FXS (Forgien eXchange Station, e.g. a handset) and FXO (FX Office, the PSTN)
              SIP Phones use SIP to start the call, but use RTSP/RTP - Realtime Steaming Protocol is used to carry the voice.[/list:u]
              FXS cost a LOT. But you will be able to use plain phone form anywhere. Somthing like $100 a pop per 4 connections compared with $80 per IP phone.
              FX100 clone cards (super cheap winmodems) work at a low level (FXO only) gets you the up side. FXS must be able to ring a phone, so must be more expensive.
              You need one FXS system to handle POTS for 911, etc. There are configurations to handle 911, etc. setups
              These are PCI cards, so you could load these things up on a server. Note that PCI-x are not available. Legacy devices will be involved.

              IAXs /eeks/ trunking (Inter-Asterisk eXchange) version 2 is like SIP + RTP that is NAT friendly.

              Granstream's are the 'Wall-Mart' of IP phones at $80. Polycomms are the Cadillacs at $150 plus per, but configuration is more complex. The Granstream ATA is a FXS box. It plugs into Asterisk and your normal phone.

              An aside on STUN:

              +-----------+
              |STUN SERVER|
              +-----------+
              |
              +--------+ +--------+ +-------+
              |phone A |---|Firewall|---|Internet|---|Firewall|---|phone B|
              +--------+ +--------+ +-------+

              Phone A is NAT'd by a firewall, Phone B is NAT'd by a firewall. They may even have the same local IP addresses. Normally, they cannot connect to each other.

              The STUN server is on the Internet and everybody connects (via UDP) to the STUN server. Since this UDP, I connect to the STUN server to figure out what MY IP address is and what port to expect the UDP packets on.

              Phone A and phone B send two different connections offers to each other. As this is UDP, one of them is likely to never make it. However, one offer form each should work.Once a phone gets a packet from the other phone, it sets up the translations and goes forward with the exchange.

              This takes a while, but tricks the Firewalls into preserving the end-2-end connection. And since the phones have initialized via the STUN SERVER, and some packets occasionally get sent, the connection works and does a real time exchange without needing th STUN server again.

              Configuration files
              /etc/asterisk

              1. The sample files are numerous (>30), but you only need the basics.
                The files are heavily commented.
                modules.conf is very important. Asterisk is a simple core + many modules.
                modules can be autoloaded, with some noload rules to prevent unwanted ones
                modules can be set to not autoload and you can specify only those you want
                modules that try to load without a configuration WILL TAKE DOWN THE WHOLE SERVER or prevent it from starting.
                protocols like skinny (old CISCO), phone (linphone) and sound cards (alsa, oss) probably won't be needed
                extensions.conf defines your phones.
                [/list:u]
                extensions.conf

                1. Looks like an INI files, but it's a Context based system
                  All of this is written in AEL - Asterisk Extension Language or this evil [syntax]
                  The [globals] section defines the phone (e.g. ERIC=SIP/101 means ERIC is the phone at SIP address 101)
                  The [incoming] section controls dispatching incoming calls
                  The [internal] sections controls dispatching features and calls available to the internal phones
                  Macro sections (e.g.[macro-desk]) setup a macro to be run, including gotos, Hangup(), etc.
                  s is the magic start number.
                  _NXXX is a pattern number that can be used to setup local dialing, etc.
                  Macro()'s are available to extend the system. They act like trees of choices.
                  The @default lets you setup Contexts for multiple lines or organizations (e.g. law offices sharing 1 secretary and a PBX. See the example file, it's ugly.)
                  exten entries are ordered numerically by phone number.

                  Patterns,
                  Ordinal,
                  Some actions intercom for auto answer,
                  desk for a phone definition,
                  Dial to setup and extension,
                  Set to, well set something.

                  [/list:u]
                  Note that the Dial macro will bridge your connections as the Asterisk system sits in the middle and listens for control codes, etc.

                  Asterisk bridging is resource expensive. Asterisk does not scale because of this. 1,000+ SIP sessions doing transcoding, etc will make the hardware feel the pain. SIP accelerators (dedicated servers) can increase this to many (10k) connections, etc.

                  example.ael

                  1. tree-like ({-braced) language with heavy use of cases, jumps (gotos), setting of states and extensions numbers
                    When you fall off a dial-plan sequence (e.g. and ael program) you get hung up on.
                    Fall through is carefully considered in AEL programs.

                    Phones usually have a fixed IP address. You can set them up with DHCP, and Asterisk can handle them but prefers fixed.
                    The ATT devices (call *9) will get you the IP address.
                    Note that these phones are routers, too. You can goto the webpage of the Grandstream phone. You can use them as the PPoE client for your cable modem and hook your computer to the available network port on the phone.

                    Notes on Skype
                    Skype-2-Skype is free, but you must pay (year plan, per minute plan, etc) to go off the network to the PSTN. Ekiga has a default configuration for Skype.


                    Demo
                    A live Asterisk server is booted on an IBM eServer 1u rack mount server called subetha. (The Asterisk server started automatically on boot, Eric restarted it anyway.)

                    The demo system uses Zaptel hardware. Note that Zaptel cannot redistribute a binary, but ships source. You must build it. The directions are included (m-a a-i zaptel) The PRI is just a RJ-45 T-1 plug with IDSN PRI signaling running over it. The demo box was attached to the equivalent of a big FXS box ($800 dual T-1s lines connected to a breakout box.)

                    Demonstration of attaching a phone. Demonstration of editing an extensions and reloading the extensions. The Asterisk SLI is very feature full, help is available, [TAB] to complete, show to display settings.


                    Note that the actress that spoke the gsm files that ship with Asterisk is available for hire, google her web page (she is Dignum's Allison Smith at http://www.theivrvoice.com/) There are many sound file extras available, see the wiki (http://www.voip-info.org/wiki/index.php?page=Asterisk).

                    Demonstration of attaching another phone, pointing to the DaVinci phone system over the internet.
                    (COX connection so was very low latency, good quality sound.)

                    Demonstration of a soft phone. USB headset attached to the demo console PC. Ekiga is a gnome soft phone that comes by default on Ubuntu. It will not provide you with much feedback, and like a good GNOME application, there is no way to get debug information when SIP is failing.

waveclaw

05-03-2007 19:14:24

Linux SIG 1 March 2007

Intro Topic
Canceled on account of the Advanced Topic.

Intermediary Topic
Canceled on account of the Advanced Topic.

Advanced Topic
Asterisk, pt. II - VoIP Demo

Q&A during startup.

Q: How do regular phone calls connect to the VoIP phone, and vice versa?

Vontage - they have a couple of ways to make a phone call.

  1. Vontage 2 Vontage goes through Vontage's network. They have all registered to Vontage server even if you use AEXs
    Vontage 2 landline uses the phone switches at their office to bridge to the PSTN
    Tellica, an AT&T brand of equipment, for routing VoIP to the PSTN via local ISDN interfaces
    [/list:u]

    Media Gateway - the piece that connects the PSTN to the VoIP network. There are dedicated boxes that can be purchased for this, but Asterisk is a common solution.

    Asterisk is a software PBX. What many solutions use hardware to solve, Asterisk uses software.

    FXS ports - connects your normal phone to the Asterisk system.

    FXO port - an office port, the phone line from your phone company.

    Dignum has an SDK that you can get to work with Asterisk. Dignum is primarily a hardware vendor.

    Know that IP phones are plugged into a regular network. You have to register with a server. Once setup, you can relocate the phone anywhere in the building and the extension on the phone will follow the phone.

    Polycomm phones will tag the packets for QoS, but it is unknown at this time what they do when bridging to a PC out the other side.

    ATA - analog Telephone adapter, from Grandstream. Acts like the digital phone, but you plug a normal phone into it and the ATA will ring it (e.g. if you have a nice cordless business phone.)

    Q: What is the analog to Asterisk quality with the ATA?

    Depends more on the quality of the handset.

    Q: Can Asterisk do phone takeover? I.E. let me use my feature set on another phone just by logging in?

    Don't know at this time. Haven't needed to investigate that feature.
    TODO: look up.

    Q: Is everything command line with Asterisk?

    There used to be Asterisk@home, now it's called Trixbox. It is a Linux distro with a graphical, web-based configuration tool.

    Q: Is there a book for this?

    O'Rielly has 3 books
    1. Switching to VoIP
      VoIP Hacks
      An Asterisk-specific book Asterisk: The Future of Telephony
      [/list:u]

      Note that are other companies (Adtran) that make hardware for Asterisk. The Adtran sits between a traditional PBX and the incomming PSTN line. This harware will do internet and phone at one time.

      |---- Linux SIG----| |-------------- Fullnet --------------||--- AT&T
      +-------+
      | Phone |
      +-------+
      | POTS (SIP) +------------------------+ (SIP)
      | FXS (RTP) | | (RTP) +------------+
      | +-----+ ether | The Internet | ether | Vega | ISDN +---------+
      +-| 908 |--------+ +-------| |------| Tellica |----PSTN
      +-----+ | SIG<->COX<->Fullnet | | (Asterisk) | +---------+
      | ISDN PRI +------------------------+ +------------+
      +------------+
      | subetha |
      | |
      | (Asterisk) |
      +------------+
      |
      ------------------
      | | | |
      +-+ +-+ +-+ +-+
      |S| |S| |S| |S| } IP Phones, aka stations
      +-+ +-+ +-+ +-+


      Side Note:

      Nobody buys ISDN BRI (Basic Rate Interface, 2 channels + a control channel) anymore, but everyone runs ISDN everywhere. Usually ISDN PRI (23 channels) due to BRI procing itself out of the market. The 908 box is the Atran, it brings VoIP and data into the router and has 8 analog interfaces. The 908 is a big ATA, but also does ISDN (a digital protocol) and an Ethernet for the media gateway interface for SIP.

      SIP rings the phone. But RTP (looks like data in http in UDP packets) handles the communications. It's a full duplex, only care about now, throw duped packets away, protocol. RTP goes on another port, so SIP can go through but RTP might get eaten by a firewall.

      The Internet is not really well designed to handle real-time, verses the PSTN which guarantees certain latency (<100ms) and poor bandwidth (28.8k). A guy on a bike with a bag of tapes has a huge amount of bandwidth (gbps) same as a wagon load (tbps, pbps) but the latency is stupid long (5 days, etc.) Voice data is latency sensitive more than bandwidth. Don't need above 64kpbs for an uncompressed uLaw call. Since we don't care about lost packets as much as late packets, use lossy codecs to compress/decompress (e.g. Cellphone GSM 64kbps -> 13kbps)

      Voice calls have a really great error corrector on either end, the human brain. Facsimile machines do not have so good a corrector at either end. Modem dial out and latency compression imply terrible fax performance. Fax + VoIP = pain. Going digital from 908 to the Asterisk is used when possible ( t.38 codec ) but gets screwed up more often than not. SIP isn't the problem, compression and RTP are.

      Doing this with SIP and RTP and compression, you can use up all your phones yet not hit the provisioned capacity on the PSTN side. Normally you provision X lines and when you get to that X'th call, you max your bandwidth just to make the call.

      Note that in this setup, dial tones are completely fake. Early dial features, pauses and patterns are used to make the connection via SIP. The Adtran can be setup to 'dial' once it detects a pause long enough to say you finished dialing. (Yes, this can make for interesting errors.) Phones with send buttons, like cellphones and nice IP phones, work much better in this situation.

      Typically have 3 patterns: office, local and national/international calls. Traditionally you split it into inside and outside lines (e.g. 'dial 9 to get out') then let the PSTN deal with it. The IP phone can be told what to use and so can Asterisk. Patterns in the dial pattern like 9 followed by 1 followed by 10 digits or 9 followed by 2 followed by 7 digits can be collated by the system and sent as a single SIP request. Even the 9 can be thrown away when sending the call.

      911 will be well known to the system as a pattern. Know that the 911 people know where you are located, but the Stations (S = IP Phones in the figure) complicate this. They can appear to be at a PSTN location 100s of miles from the phone.

      Q: What about the relocatable IP phone?

      It uses DHCP to get an IP address and knows only what the SIP server's IP address is. If you move from one location to anther, the server doesn't know where you are. The IP phone gets the address from DHCP, a gateway and a route. When th IP phone logs into the SIP server the setup happens and calls can be made via that SIP gateway again.

      /etc/asterisk/sip.conf

      [general]
      ...

      [101] ; some extension number
      type=friend ; you can setup 'half-duplex' dail-in only or dial-out only
      ; user = make calls, peer = receive calls, friend = both
      username=101
      secret=the_password_for_your_phone
      qualify=yes ; keep up the connection, use fast-beep waiting when unavailable
      nat=no ; don't expect anyting to be NAT'd
      ;phones are in the same network as Asterisk
      host=dynamic ; what we talked about above
      canreinvite=no
      mailbox=101
      callerid=somephonenumber ; once you get away from POTS, these get to be less usefull
      ; but a 908 box would need this to setup this and it is easy
      ; to do here compared with in the dial plan


      Setting up for the Demo

      Favorite way to configure Polycomm phones, like the demo phone, is to pull configuration from the server.

      On a Grandstream IP phone, the website GUI is also usable. The MAC address is used to uniquely determine the device in this situation Default password on a Grandstream[/ur] is 'admin' and it has a nice little web server on it. Looks like a router setup. Most settings don't need to be setup, the MAC address clone can be used to copy the MAC of your cable modem or cable company's router if needed.

      BLF - busy lamp field - can be abused when setting up keys to show people on hook, etc. This is very typical with key systems like in grocery stores ('Johnny you have a call on line 3, line 3 please.' Johnny picks up any phone can presses 3 to connect to the call.) Asterisk can do line presence and dial parking ('Johnny you have a call, dial 700, dial 700 please.' johnny picks up a random phone and dials 700 to connect to the call.)

      MWI - Message Waiting Indicator - can be setup to connect your mailbox extension to the phone and show a pretty little light when voice mail exists.

      Note about DMTF - via RFC2833 RTP is how people are using things now, SIP INFO is how this has been described above and last month.

      404 Response at the server is needed for Early Dial. Note that HTTP codes are used (302 = extension moved, 200 = dial okay.)

      SIP understands up to 3 'phone numbers' on a normal number. These are not real lines, but what is handled by the Account Ring Tones.

      [i]Demo[/i]

      [code]
      subetha# rasterisk -vvv
      sip reload
      (Got an UNREACHABLE message)
      sip show peers
      [/code]
      Phone was provisioned during this time as IP 192.168.1.15.
      The Adtran box did not like being subjected to NAT (normally he wants to do NAT.) Note that the console commands in Adtrans are very similar, but not the same as ISO from CISCO. be prepared to be flustered.

      Demo of an analog phone to a cellphone in the audience.

      Demo of a call into the analog phone, but getting registration errors. Plus the public network failures at the SIG.

      Demo of T-Mobile cellphone calling the IP Phone (T-Mobile -> PSTN -> Vega -> 'net -> 908 -> subetha -> IP Phone)

      [i]Aside on Configuration[/i]

      Asterisk has a concept of a context - a numeric patterning in which things may happen at each new number. Playback of sounds, dial to send a phone number, background for accepting dial while playing sounds, etc. The context in internal and flows upwards. In [i]sip.conf[/i], you have your extension and the general context. In the provided file, the context is 'internal' In the [i]extensions.conf[/i], the 'internal' context has been defined with a call tree that ends in dial (to dial the phone.) This is the complex file from last month.

      Demo of dialing extension 500

      Extension 500 is defined as a No-OP (prints debug info on the console as a side effect) an answer (to start billing for the call) and finally a wait with the play 'demo-instruct' sound.

      [i]About Alice[/i]

      Note that Alice from dignum is [i]The Voice[/i] of Asterisk. While she is quite famous in Asterisk circles. There is an interview with her which is quite surreal for her and anyone using Asterisk. Her autograph is acquirable at Asterisk conventions at which she frequently appears.

      The presentation delves deeply into the custom setup in the DVNS [i]extensions.conf[/i] file.

      Zap appears in the channel name (Zapata the Mexican revolutionary was well liked at Zaptel.) SIP is possible. Skinny, CAPI, etc are alternatives.

      Demo of another call failed, so some Asterisk debugging was called for. Another explanation of the difference between SIP and a real connection. Note that NAT has made the connection very confused.

      An interesting angle: why can't Eric just pick up the analog phone and dial extension 101?

      Because the phone will connect through to Vega in the diagram, not the local Asterisk system (subetha.) One solution is to setup odd dial plans and extensions that cause the call to go out to the internet and back to the local Asterisk. Generally, the analog phones in an Asterisk system are not used to dial local extensions because of this.

      [b]Proposals for next week[/b]
      [list]
      A simple home setup without the Adtran.
      A dual headed Linux with dual users (two independent keyboards, logins, etc.)
      [/list:u]

waveclaw

13-04-2007 13:34:02

LinuxSIG 2007-04-05

Q&A
Miscellaneous discussion of Playstation 3, nVidia and multi-cpu systems.

Note that with Ubuntu you get bundled drivers for Graphics, odd hardware, and wireless drivers.

While this is available in vanilla Debian via the restricted modules, Ubuntu (and KDE version Kubuntu) is fairly forgiving about including such proprietary parts. Ubuntu is based on Debian and Debian is a Open Source Community that feels it should avoid shipping proprietary parts.

Robert works for da Vinci Network Services, which is co-located with Fullnet who makes extensive use of da Vinci's services. Fullnet is a local web hosting and other service provider in Oklahoma City.

201 Robert S Curr, ste 210
Bank of Oklahoma Building


Note that Webguy (a local Oklahoma City web host and designer) hosts his equipment with Fullnet here in Oklahoma City.

Topic

TrixBox - a popular Asterix -based distribution for quickly setting up a voive-over IP phone system. http://www.trixbox.org. Formerly Asterisk@Home.

Based on CentOS (RedHat white box version 4.4) plus Asterisk and some other applications. It's main goal is to be a stand-alone (not distributed) PBX: iVR, Voice Mail, web-based conference calling, help-desk applications, some ERP applications (SugarCRM). Not a key system, but more like a cheap PBX.

Similar to Asterisk, but with a web-based interface wrapped around the system.

Hardware
Example Hardware: Digium 100P modem card (well supported by Zaptel drivers) connected to some normal phones. 4u rack mount case with mid-range Intel hardware running TrixBox. Robert's laptop connected to the network management interface. Version 2 is setup on the system. A borrowed phone line emulator (~$300 on the open market) is attached to the head-end of the Asterisk server.

Any hardware that speaks SIP will talk to it. Software Phones (soft phones) like Ekiga, linphone and any IAX protocol supporting software can be used as a desktop agent. Cards like the Sangoma or a T1 interface to a channel bank (for analog lines to your office) are supported.

Training
There is a conference for Voice Over IP that talks only about Asterisk. The actual developers for the part of the software lecture and take meetings on this software. Note that there is no formal training available at this time. Asterisk is still very new from the point of view of the phone Industry. Although it is not new from the Linux world, most people are learning by doing, down in the trenches making the software work.

Misc
TrixBox has trunk support so that you can connect directly to you phone provider if they have Voice Over IP in their network. Check http://www.viop-info.org/wiki for providers in your dialing area.

Demo of UI
Standard UI comes in two flavors: User mode and Admin Mode. (Don't forget your passwords. Stunt Configuration goes here. User:maint, Password: password. It is strongly suggested to change the password.)

freePBX
The configuration UI for the phone system. This is Release Canidate 1 for the 2.0 version, not quite the final version of 2.0. Example of configuring an extension. All the options, etc from the sip.conf file, are available from the attractive UI.

ZAP Trunk
Robert's only trunk. Shows the 'Apply Configuration' confirmation button: you must confirm any changes you want to apply or they will not go live. Ring Groups are available to setup extensions like key systems.

Digital Receptionist
The IVR module, which adds limited voice recognition ability (not trusted) and the normal Interactive-Voice-Response system. Has the normal actress playing the part of the voice. Configured via the website interface.

Attempt to Dial
This is using a normal phone plugged into the Digium card. The upstream connections to the 4u server that has been configured to accept the phone as an extension. A Digital Assistant has been configured on another extension with an IVR menu. Using the speaker phone on the normal phone, Robert is (trying to stun config) setup and dial the Assistant's extension.

Gabcast
Many plugins are available for Asterisk and Gabcast is one in the Third Party Addon features menu of Trixbox's configuration GUI. This allows you to use the phone as a recording device for a podcast or to listen to podcasts via the gabcast service. This is similar to Icecast on your Asterisk server.

Cellphones
Cell-to-cell systems can be setup with your Asterisk PBX. This allows you to IAX2 to your cellphone, etc. Use the C2C minutes instead of your normal minutes.

This is where the telephony market is getting shaken up by Asterisk and easy-configuration systems like TrixBox. See http://www.voip-info.org and http://www.digium.com for more information. Note that Digium actually sells an Asterisk appliance for your network.

waveclaw

07-06-2007 23:47:14

LinuxSIG 2007-05-01

Sorry, I missed this meeting. If anybody has detail, please post them.

waveclaw

08-06-2007 00:02:28

LinuxSIG 2007-06-08

Today's topics: Software Raid and OpenWRT on a wireless router.

Software RAID
Hardware RAID is expensive. Linux can do RAID in software.

RAID - Redundant Array of (In)expensive Disks
Many Types:
0 - striping, no redundancy, gain in performance by splitting between drives.
1 - mirroring, slow writes some faster reads but mainly for reliability
... see http://en.wikipedia.org/wiki/Standard_RAID_levels ...
4 - like 5 but all the parity information is on 1 drive
5 - 3 or more disks with interleaved disk i/o and parity information kept on disk, often 1 parity disk is used, with the parity information you can recover up to block level corruption.
Most people use RAID for the redundancy.

Note: rebuilds of an array take a lot of time.

Linux supports an LVM-like RAID configuration, Linear, which can be expanded in size.

The documentation at LTDP is quite old and talks about raid tools. Today you use mdadm and it's process. Ubuntu installs RAID support by installing mdadm and it's tools. Note that Ubuntu uses udev so the /dev devices for RAID (md or Meta-devices) are not often available. You can either manually create the devices or edit /etc/udev configuration.

This demonstration will show using a data disk in RAID, not booting or root on RAID. Note that if you use mirroring and grub to boot you will want to duplicate the grub partition to the other disk(s) in the RAID mirror. Look for the many configurations available.

Warning: many newer BOIS, motherboards (SATA in particular) will try to 'help' you with their RAID features. They may not be incompatible with Linux software RAID.

Hardware RAID need almost exactly identical disks. Linux software RAID can use very different sized disks, but the partitions on the disks should be approximately the same size.

Creating the devices:
mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/hdi1 /dev/hdk1
where
--create --verbose create a device be verose about it.
--level this is linear, or 0-5 for the RAID types
--raid-devices the number of devices to expect
/dev/hdi1 /dev/hdk1 the partitions (plain Linux type 83)

Now that you have the 'meta device' it will act like any other block device:

mkfs -t ext2 /dev/md0

And you can query the health of the RAID:

cat /proc/mdstat
personalities: [raid1]
md0: active raid1 hdi1[0] dk1[1]
8225152 blocks [22] [UU]
unused devices: <none>

Note that the meta device works across many architectures: PATA, SATA, USB, IDE. You can have something quite heterogeneous.

Drive Failure: let's make /de/hdi1 fail

mdadm --manage /dev/md0 --fail /dev/hdi1
where
--manage we are editing the array
/dev/md0 which arrary to edit
--fail /dev/hdi1 which disk to mark failed


cat /proc/mdstat
personalities: [raid1]
md0: active raid1 hdi1[2](F) hdk1[1]
8225152 blocks [2/1] [_U]
unused devices: <none>

You can then remove the drive from the array

mdadm --manage /dev/md0 --remove /dev/hdi1

Now, pretending that you have replace the "defective" drive:

Re-create the underlying device:

sfdisk -r /dev/hdi1
sfdisk -d /dev/hdk1 | sdisk /dev/hdi1 # trick to copy 'stats' of one of the paritions to force geometry match for the RAID
fdisk -l /dev/hdi
<get output of drive stats>

Re-add the device:

mdadm --manage /dev/md0 --add /dev/hdi1

cat'ing /proc/mdstat will give you a progress bar:

md0: active raid1 hdi1[0] hdk1[1]
8225152 blocks [21] [_U]
[=>..................] recover = 9.1% (1818496/8225152) finish=72.mins succeed=17070K/sec

Note that you can use the device during this process. However, performance is much reduced.

Killing and restarting this process will reset the process, but not cause it to fail.
Note that PATA cabling will be a mess with many drives. SATA looks nice. SCSI and SCS will be much faster for rebuilds and do nicer dis/connections due to its support and architectures.


Advanced topic: OpenWT on a wireless router
A bit of history
Long ago wireless vendors realized that they could avoid paying lots of money for their wireless routers. Lynksys did a little work on Linux and made it the OS for their routers. But people noticed, asked to get the source (per the GPL) and threatened to sue if they didn't get it. The WRTg v1 became the first version.

Note that WRT is a Lynksys model number, but the OpenWRT project uses it anyway. As of Lynksys' model WRT v4, a whole other hardware is in it. The WTG54L v4 does support Linux still, with larger flash and RAM. Some newer hardware from Lynksys and Netgear are too small, so you have to use a tiny OpenWRT image. The Buffalo wireless router has 8mb of RAM and lots of flash space. As a consequence, the Buffalo with OpenWRT can run Asterisk + VPN + tons of other stuff.

Since the 24GHz wireless Lynksys has a USB port, you can expand it. Samba server for an attached USB harddrive. Print server. Asterisk server attached to an 8 port phone replicator.

Two important releases: White Russian (2.4 Linux kernel with lots of stuff supported.) Kamikaze (2.6 kernel, but not a lot of software.)

These are MIPS systems with 2-8Mb ram and 266MHz. No floating point on this server, but who cares when you are slinging packets? Note that 'back in the day' people used to retire 486's and Pentium 1s with about this level of performance.

Note that Kamikaze is 1.5Mb and the system at the Lug cannot support more than 4 seconds at a time. Since ipsec in NAT transversal mode uses UDP. TCP is affected but UDP is not, but a very fancy encapsulation was used. This was discovered due to the UDP only IP phones working fine during the Asterisk demo last month. Kamikaze is at http://kamikaze.openwrt.org/

You need to know the chipset, since the distros are organized by which device. Most days, you can just go to documentation for the release and find you hardware in the supported/unsupported list. In the table of hardware you will be able to find your exact model number. When buying, it is sometimes hard to find. You can buy the WRTG54L, which Lynksys sells particularly to put Linux (OpenWRT) on it. You will have to mail order it, probably spend around $110 with shipping. Otherwise be prepared to do you homework.

If your hardware is supported, and have a .bin file that matches your model
#s, then you can use that one and use the firmware upgrade. If not, you will have to get the .trx (a boot image) and use a TFTP server on your desktop to put the file on the router.

In the case of a buffalo, you have a TFTP server in the bootloader that you can hit ONLY when the Buffalo is cold booting. The Buffalo will never replace that bootloader, so if you brick the router, just TFTP up the old firmware (assuming you can get it.)

Demo

Note that the image is 1.5Mb, so during the flashing of a Lynksys router, the bar will only fill p 1/4 of the way and then succeed. The router defaults to a 192.168.1.0/24 network with 192.168.1.1 package. You can telnet to it, no password and no user. You much ssh to it afterward and it reminds you set the password. Root is of course the account. Note that the telnet MOTD will tell you how to make the drink the release is named after.

Eric, who is running the demo, is using `slogin -l root 192.168.1.1` and you can setup your keys for public key logins. The public keys, aka Certificates, are very hard to crack. Some environments, such as diVinic.net uses Certificates ONLY. Telnet is an unsecured, plain-text protocol that anyone can break into and watch your work. OpenSSH, from the OpenBSD project, gives you security and a lot more features. To install a Certificate into dropbear, add your public keys into /etc/config/dropbear/authorized_keys.

Many of the bin utils are available via Busybox. You can install the web GUI, but some people (Eric in particular) like to keep the text mode user interface. In /etc/config is all the files. All text files. Very Debian oriented but also oriented to being edited via the Web GUI. By default, dropbear (the ssh login service) and firewall and dhpc service is installed.

logread gives you your logs.

vi is the default editor tool.

Editing /etc/config/firewall.user contains firewall configuration. The default firewall has some pretty stout rules by default, including some traffic shaping.

The internal network part is a switch with a tagged VLAN, using kernel bridging on the ports, so that all 4 or so internal lan ports could be reconfigured. You can split out a DMZ on 1 port, 3 vlans with 3 separate ports. On the demo system, there is a 5th spot, but there is no wire for it. This is different that tne WRTG54L which uses pseudo-devices on the eth0 LAN side. For the demo system, port 5 actually refers to the whole router. All this is important to editing /etc/config/networks.

reboot will reboot your system. While the Buffalo will use a red light to indicate a reboot, Lynksys like this demo system uses many funny flashing light patterns.

ipkg is a dpkg-like installer to get the other packages you want. Also, the screen is colored for a black-background environment. 'ipkg update' will get things brought up to date.`ipkg list` will get you the list of available stuff. This list changes as support improved.

Things like ZABBIX, a distributed monitoring system, is available. updatedd and updatedd-mod-XX for various dynamic databases. ulogd and ulogd-mod-XX for remote logging. Many small servers (including postgresql) and mini versions of Perl, python, ruby. Several protocol tunneling systems exist, many for tunneling over DNS. The serial console is probably available, but you'd have to soldier the headers and connectors onto the board.

waveclaw

05-07-2007 23:39:38

LinuxSIG 2007-07-05

Future Opportunities
  1. Install-fest in August.
    1. need people to show up
    2. show off deluxe system
    3. bring some parts to help people
    4. do the cheap PC challenge
    5. normal meeting time
    6. vendors
      1. Dell (maybe a pre-configured system)
      2. Novell reps like last time
      3. RedHat people
        [/list:u]
        [/list:u]
      4. A vendor from the Saturday Computer Sale wants to promote the PC User's group. They can let us setup a table with stuff. 4th Saturday (8am-2pm, OKC Fairgrounds - normally August, 28th of July.)
        1. need a flier designed and printed out
        2. challenge: get the cheapest PC you can find and install Linux on it
        3. Knoppix CDs, Ubuntu CDs, etc
        4. specific details to follow on the forums
          [/list:u]
        5. Notes about the forum from Wolfe:
          1. If you sign someone up for the site, please inform him or other admins.
          2. Up to about 300 bogus sign-ups a week now and we are using captchas
          3. The forum and LinuxSIG site are configured to not help with Google Pagerank
            1. accounts are hidden by default
            2. a real, live admin must authorize new accounts to post
              [/list:u]
              [/list:u]
              [/list:u]

              Advanced Topic - SNMP
              The "Simple" Network Management Protocol
              1. several versions: 1, 2, 2.1, 2c, 3
              2. UDP
              3. MIB - management information base (hierarchical DB) to store vendor-specific information
              4. version 3 standard published in 2004, still being adopted
                [/list:u]
                Cons
                1. huge query strings: .1.3.6.1.2.1.1.1.0 = hostname
                2. much of the string (.1.3.6.1.) is just to get specific enough to talk about 'things on the Internet' like computers
                  1. you probably only care about things on the Internet
                  2. requires vendor-specific schemas to understand anything else
                  3. most other organizations do not use their ODI namespace[/list:u]
                  4. traditionally SPAMed the network with probes
                  5. plain text until version 3
                  6. no security (version 2 introduced community strings: public, private)
                  7. only counts 'time since boot' ignoring things like network standard time
                    [/list:u]
                    Pros
                    1. version 2 introduced traps - events sent from a device
                    2. great in heterogeneous networks with routers, different vendors, etc.
                    3. many applications use it.
                      [/list:u]

                      Net-SNMP: and open source implementation. Originally supported all versions, pushing to eliminate insecure and legacy junk.
                      1. newer protocols like SNMP with Inform (3-way handshake)
                      2. large community-provided set of ODI schemas
                      3. available at sourceforge[/list:u]

                        MRTG - Multi-router Traffic Grapher
                        1. easiest way to get network information into it is via SNMP
                        2. if you know the vendor's MIB and the link, you can create a query about your network
                          [/list:u]

                          Demo of DVNS network traffic. Lots of pretty graphs.

                          Reference to the wikipedia article
                          1. notion of a manager system and a managed system
                          2. NET-SNMP on a Linux server gives you the power to do both.
                          3. ODIs (Object Identifiers - the long strings of numbers and their names which are used in the MIB)
                          4. keeps it's engine ID in /var/lib/snmp/snmp*conf files and does somewhat complex integration with /etc/snmp/* files
                            [/list:u]

                            Demo of snmpwalk, snmpget, snmptanslate
                            1. for example: .1.3.6.1 = (top->)iso->org->dod->internet
                            2. snmpget -c public localhost .1.3.6.1.2.1.1.1.0 returns your hostname
                            3. snmpget -c public localhost .iso.org.dod.internet.mgt.system.sysdescr also returns your hostname
                              [/list:u]

                              There is a relatively full-features Perl module (libsnmp) that can be installed with NET-SNMP.

                              You'd generally need to install a schema for the MIB you want. The largest problem is finding where things are and what number (OID) or name to use when querying the server.

                              Traps - or really, informs - can be used to replace the query/pull system with a notify/push system.
                              For example:
                              traphandle default traptoemail -f someone@your.site.com someone@my.site.com
                              sets up a script, traptoemail -f ..., whenever the trap, default, is detected and sent.
                              Traps require authentication at the source. Informs use credentials on the management server (destination) and the engine ID, etc.

                              The trap daemon runs on the management server, the normal snmp daemon sends the trap from the managed system.

                              Demo of the ADTRAN system
                              1. limited appliance that uses SNMP to report information
                              2. used SNMP version 3
                              3. many raw IP addresses are present in the configuration
                              4. both the user and group specified exist on the management system
                              5. shown a link down message caused by an administrator action[/list:u]

waveclaw

10-09-2007 19:48:10

Linus install-fest. Many people showed up. Lots of Ubuntu installation.

I showed off Beryl with a video playing in the background.

A large number of desktop backgrounds were traded back and forth.

A small group tried to get bluetooth working on a laptop with minimal documentation on support.

waveclaw

10-09-2007 20:03:48

Intro to Linux and ZoneMinder

ZoneMinder - the Linux Camera Server.
Commercial Closed-Circuit Camera software is typically $1500 for licensing +4 cameras and $80/additional camera. ZoneMinder is written in Perl and PHP. ZoneMinder is Free. A fully configured setup can be bought for under $600 with equipment from one of the LinuxSIG members. He does this on the side.

Typical Frames-per-second (fps) on a camera is 7.5. Most are Linux-compatible. PPoE cameras are supported as are many X10 cameras. (DI/DO cards could be used to be 100% compatible with X10.)

You can stream the images over the network using MPEG and Cambozola, a Java tool.

One ZoneMinder installation is in the subway on 2nd Street in Edmond.

http://zoneminder.com
zoneminder_1.22.3_8_i386.deb
Rather large number of dependencies.
sudo apt-get install *.deb
# shows us the deps are missing
sudo apt-get install -f
# picks up the deps


(This takes a while.)

Intro Presentation
Intro presentation on what is Linux. Linux as an OS vs. Microsoft Windows as an OS. What is a distribution and what varies the most between distributions (artwork, default software and shipped libraries.) Shell presentation. Focus on understanding the command line and some commands.

More ZoneMinder
Zoneminder does DVR - motion tracking, etc.
  1. Uses MySQL as the backing store
    limit of 398 cameras for 1 servers.
    IP cameras, CCTV via COAX to a video card (/dev/video)
    250Gb Hard drive usually lasts 4 months with 640x480 at 7fps (3fps kept)[/list:u]

    Requires some post-setup. However, ZoneMinder has a package that does this for you on Ubuntu
    zoneadm can use apache's config:
    sudo ln -s /etc/zm/apache.conf /etc/apache2/conf.d/zoneminder.conf
    sudo /etc/init.d/apache2 reload


    When just installed, ZoneMinder does not have the permissions to see the video device. Simple to fix:
    sudo chmod 4766 /usr/bin/zmfixd
    sudo ls /dev/video0


    Can be seen via lynx, a text browser at http://127.0.0.1/zm/
    While you cannot see pictures in lynx, you can administer the system.
    This includes adding a camera via the CGI form on the ZoneMinder internal website on 127.0.0.1. Also, ZoneMinder does not have a password set when installed (default is admin/admin if set.) That can be setup from lynx.

waveclaw

05-10-2007 23:49:29

LinuxSIG 2007-10-03

Eric discusses: What it takes to explore a PC under Linux. As he says, sometimes it is easier to check the hardware using Linux than Microsoft's Operating Systems. Microsoft tends to filter as much as possible or hide important details. While sometimes ugly, Linux gives you lots or raw information.

The demo system is under Ubuntu, but the commands show will work under most Unix (not OpenSolaris) and anything running a Linux kernel.

There is a bunch of stuff in proc. It is not a real filesystem, it is a way for the Linux kernel to communicate with programs.

/bin/ls /proc

Returns:

1 205 3002 3624 3894 4027 827 execdomains mounts
1035 206 3022 3647 3898 4029 828 fb mtrr
13 207 3050 3649 3903 4041 829 filesystems net
14 2283 3069 3651 3905 4048 841 fs partitions
15 2285 3299 3652 3912 4059 842 interrupts scsi
155 2287 3303 3728 3924 4068 9 iomem self
156 2289 3351 3729 3929 4122 991 ioports slabinfo
157 2291 3353 3759 3931 4206 acpi irq stat
16 2293 3383 3760 3933 4252 asound kallsyms swaps
1781 2800 3419 3780 3939 4327 buddyinfo kcore sys
1971 2804 3426 3781 3974 4330 bus keys sysrq-trigger
1981 2808 3472 3788 3977 4331 cmdline key-users sysvipc
1997 2842 3474 3789 3980 4427 config.gz kmsg tty
1998 2844 3498 3791 3983 4429 cpuinfo loadavg uptime
1999 2924 3515 3792 3985 457 crypto locks version
2 2925 3525 3834 3986 5 devices mdstat vmnet
2000 2931 3534 3835 4 6 diskstats meminfo vmstat
203 2934 3568 3853 4011 7 dma misc zoneinfo
204 3 3614 3890 4016 8 driver modules

The numbers are process IDs. The files you find here can be looked at to get many interesting facts about the Linux kernel and the system in which it is run. Well, not the kcore or kmem files which just give you binary junk.

For instance:

cat /proc/cpuinfo

gets you the CPU information.

processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 14
model name : Genuine Intel(R) CPU T2600 @ 2.16GHz
stepping : 8
cpu MHz : 1000.000
cache size : 2048 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx constant_tsc pni monitor vmx est tm2 xtpr
bogomips : 4331.95

The real system type will be shown.
Some systems show BogoMIPS = clock speed. Some show BogoMIPS = multiples of MHz.

You can see the way the Plug-n-play system allocates the hardware interrupts. In the 'old days' you needed to check this to make Plug-n-play hardware work.

/bin/cat /proc/interrupts

Returns:

CPU0 CPU1
0: 414554 0 IO-APIC-edge timer
1: 9937 0 IO-APIC-edge i8042
8: 39 0 IO-APIC-edge rtc
9: 2 0 IO-APIC-level acpi
12: 41454 0 IO-APIC-edge i8042
14: 36287 0 IO-APIC-edge libata
15: 17568 0 IO-APIC-edge libata
50: 0 0 IO-APIC-level uhci_hcd:usb3
58: 0 0 IO-APIC-level uhci_hcd:usb4
66: 1 0 PCI-MSI eth0
177: 0 0 IO-APIC-level ipw3945
185: 7 0 IO-APIC-level yenta
225: 206 0 IO-APIC-level uhci_hcd:usb1, ehci_hcd:usb5
233: 536 0 IO-APIC-level uhci_hcd:usb2, HDA Intel
NMI: 0 0
LOC: 414429 414428
ERR: 0
MIS: 0

The ‌interrupts above 15 are because of the more recent BIOS which supports such high numbers.

You can see the devices loaded into the system

/bin/cat /proc/devices

Returns:

Character devices:
1 mem
2 pty
3 ttyp
4 /dev/vc/0
4 tty
4 ttyS
5 /dev/tty
5 /dev/console
5 /dev/ptmx
6 lp
7 vcs
10 misc
13 input
14 sound
21 sg
29 fb
116 alsa
119 vmnet
128 ptm
136 pts
180 usb
189 usb_device
254 pcmcia

Block devices:
1 ramdisk
7 loop
8 sd
9 md
11 sr

This is a very high level overview of the devices. It does not tell you what is actually plugged in.

There are two types of devices: block (disk-like) devices and character devices (serial-port-like)

/bin/ls -l /dev/tty1

Shows you the properties on the device file:

crw-rw---- 1 root tty 4, 1 2007-10-04 18:46 /dev/tty1

The two characters after tty are the major and minor number. These correspond to the driver and some part of it.

For example:

/bin/ls -l /dev/sda*

Returns:

brw-r----- 1 root disk 8, 0 2007-10-04 18:46 /dev/sda
brw-r----- 1 root disk 8, 1 2007-10-04 18:46 /dev/sda1
brw-r----- 1 root disk 8, 2 2007-10-04 18:46 /dev/sda2

Where 8 is the driver (sd for a SCSI disk) and the minor number is partition (nothing = whole drive, 1 = partition 1, etc)

There is nothing magical about these files. The take up 0 space because they are only a filename entry. Any file system can hold them.

To see the real devices on them:

/sbin/lspci

Provides a long list:

00:00.0 Host bridge: Intel Corporation Mobile 945GM/PM/GMS/940GML and 945GT Express Memory Controller Hub (rev 03)
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics Controller (rev 03)
00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics Controller (rev 03)
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 01)
00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 01)
00:1c.1 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 2 (rev 01)
00:1c.2 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 3 (rev 01)
00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #1 (rev 01)
09:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5752 Gigabit Ethernet PCI Express (rev 02)
0c:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02)

The numbering is 0000:PCI bus:Device.sub-device. Systems with multiple buses include separate PCI buses like on-board devices mixed with PCI expansion cards. Systems with AGP and/or PCI-X graphics card will contain more buses.

Note that devices for network devices do not show up in /proc/devices or in /dev since the BSD people decided back in the day to expose them to the user through a whole different system.

The verbose version has much more detail.

/sbin/lspci -v

Returns (for just 1 thing on my Laptop)

0c:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02)
Subsystem: Intel Corporation Unknown device 1020
Flags: bus master, fast devsel, latency 0, IRQ 177
Memory at efdff000 (32-bit, non-prefetchable) [size=4K]
Capabilities: [c8] Power Management version 2
Capabilities: [d0] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable-
Capabilities: [e0] Express Legacy Endpoint IRQ 0
Capabilities: [100] Advanced Error Reporting
Capabilities: [140] Device Serial Number c5-5b-82-ff-ff-02-13-00

The Capabilities can be important if you need to find a device on a laptop that is keeping the system from going to sleep or hibernating.

Without interpreting the numbers:

/sbin/lspci -v -n

Returns

0c:00.0 Class 0280: 8086:4222 (rev 02)
Subsystem: 8086:1020
Flags: bus master, fast devsel, latency 0, IRQ 177
Memory at efdff000 (32-bit, non-prefetchable) [size=4K]
Capabilities: [c8] Power Management version 2
Capabilities: [d0] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable-
Capabilities: [e0] Express Legacy Endpoint IRQ 0
Capabilities: [100] Advanced Error Reporting
Capabilities: [140] Device Serial Number c5-5b-82-ff-ff-02-13-0

Sometimes very odd hardware manufacturers will request this information. This information is tracked by standards organizations (vendor:device) and you can use this to lookup information about the device even if the hardware is more recent than the kernel you are running (or if you have no drivers.)

Checking the USB bus. You will always have 1 USB device - the "virtual" hub or root.

/usr/sbin/lsusb

Will print a very long list on a modern system:

Bus 005 Device 001: ID 0000:0000
Bus 001 Device 007: ID 0b97:7762 O2 Micro, Inc. Oz776 SmartCard Reader
Bus 001 Device 006: ID 0483:2016 SGS Thomson Microelectronics Fingerprint Reader
Bus 001 Device 005: ID 0b97:7761 O2 Micro, Inc.
Bus 001 Device 004: ID 413c:a005 Dell Computer Corp.
Bus 001 Device 001: ID 0000:0000
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000

As usual, there is a verbose option:

/usr/sbin/lsusb -v

The detail for just 1 such entry is:

Bus 001 Device 006: ID 0483:2016 SGS Thomson Microelectronics Fingerprint Reader
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x0483 SGS Thomson Microelectronics
idProduct 0x2016 Fingerprint Reader
bcdDevice 0.01
iManufacturer 1 STMicroelectronics
iProduct 2 Biometric Coprocessor
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 39
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xa0
(Bus Powered)
Remote Wakeup
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0004 1x 4 bytes
bInterval 20
Device Status: 0x0000
(Bus Powered)

This is a hierarchical list since hubs can be powered and USB forms a tree spreading out from the root hub. Each device can declare multiple interfaces which can declare multiple endpoints: the real device and possibly another. There is flow control - bandwidth negotiation - such as high priority + low bandwidth + constant serial data like a speaker.

There are other ways to look at your usb system

/usr/bin/usbview

This is a pretty GUI application that dynamically tracks the information on the USB devices connected to your system. It depends on reading /proc/bus/usb/devices. USB 1.0 devices end up on a virtual HCI controller when plugged into a USB 2.0 (EHCI) controller so extra 'hubs' will show up in the view.

Running Processes
Top shows you running programs and can let you filter, kill and view processes.

/usr/bin/top

gets you:

top - 19:01:32 up 15 min, 2 users, load average: 0.14, 0.22, 0.24
Tasks: 121 total, 1 running, 120 sleeping, 0 stopped, 0 zombie
Cpu(s): 2.5%us, 0.7%sy, 0.1%ni, 89.0%id, 7.5%wa, 0.2%hi, 0.0%si, 0.0%st
Mem: 2066636k total, 506288k used, 1560348k free, 40360k buffers
Swap: 2097144k total, 0k used, 2097144k free, 256760k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 15 0 740 288 240 S 0 0.0 0:01.07 init
2 root RT 0 0 0 0 S 0 0.0 0:00.00 migration/0
3 root 34 19 0 0 0 S 0 0.0 0:00.00 ksoftirqd/0
4 root RT 0 0 0 0 S 0 0.0 0:00.00 migration/1
5 root 34 19 0 0 0 S 0 0.0 0:00.00 ksoftirqd/1
6 root 10 -5 0 0 0 S 0 0.0 0:00.03 events/0
7 root 10 -5 0 0 0 S 0 0.0 0:00.00 events/1
8 root 10 -5 0 0 0 S 0 0.0 0:00.00 khelper
9 root 10 -5 0 0 0 S 0 0.0 0:00.00 kthread
13 root 10 -5 0 0 0 S 0 0.0 0:00.00 kblockd/0
14 root 10 -5 0 0 0 S 0 0.0 0:00.00 kblockd/1
15 root 10 -5 0 0 0 S 0 0.0 0:00.00 kacpid
16 root 11 -5 0 0 0 S 0 0.0 0:00.00 kacpi_notify
155 root 12 -5 0 0 0 S 0 0.0 0:00.00 cqueue/0

The load average is a good average of the current, 5 second and 10 second load on the system. The system will probably not be overloaded until running tasks exceed your number of CPUs by 4 or so.

The 'h' key in top will return a page of ways to change top's output. A popular task is to checkup on the X Windows memory leak by

The 'k' key lets you kill process.

Memory under a Linux system will fill with disk buffers over time. Unused memory is wasted and Linux does not like to waste resources. Buffers and cache will be removed from memory as you need to run programs. So, until the memory is needed for new or old processes, the cache will fill up memory. Eventually, unused parts of the memory will get paged to disk.

Paging is not equal to swapping. Swapping is using virtual memory by moving whole running programs out to disk. This is incredibly slow. Paging is moving old, stale and underused chunks of stuff in memory to the disk.

There is a version of doom that is pretty much the graphical version of this. Note that topDoom would get monsters to fight. Since the monsters represent processes, this would lead to processes killing other
processes and other unpleasantness.

To quickly check the running programs use ps.

ps -ef

Returns (much more than shown here):

UID PID PPID C STIME TTY TIME CMD
root 1 0 0 18:46 ? 00:00:01 init [5]
root 2 1 0 18:46 ? 00:00:00 [migration/0]
root 3 1 0 18:46 ? 00:00:00 [ksoftirqd/0]

Or the extended information format of ps:

ps -x

Returns:

4122 ? S 0:10 gedit file:///export/home/powellj/Documents/Log/linux
4206 ? Sl 0:00 /opt/gnome/lib/evolution-data-server-1.2/evolution-da
4252 ? Sl 0:01 beagled-helper /usr/lib/beagle/IndexHelper.exe
4327 ? Sl 0:01 gnome-terminal
4330 ? S 0:00 gnome-pty-helper
4331 pts/0 Ss 0:00 ksh
4531 ? S 0:00 sleep 5
4532 pts/0 R+ 0:00 ps -x


Q&A Session

Q: So, what is /dev/null?

A: An excellent place to store the bad stuff:

ls -l /dev/null

shows you:

crw-rw-rw- 1 root root 1, 3 2006-11-25 06:17 /dev/null

A little work based on today's topic pays of with much detail about the software behind that file:

cat /proc/devices | grep ' 1 '
1 mem

Show us that the mem driver (driver 1) is the 'thing' or driver behind /dev/null.

Q: What is /dev/rtc?

A: The real-time clock:

/bin/ls -l /dev/rtc
crw------- 1 root root 10, 135 2006-11-25 06:17 /dev/rtc


Q: How about /dev/zero?

A: A source of infinite zeros:

/bin/ls -l /dev/zero
crw-rw-rw- 1 root root 1, 5 2006-11-25 06:17 /dev/zero


Q: Then what is /dev/full?

A: An always full 'disk' that returns nulls (/dev/null returns 1 null immediately.) This is pretty usefull and the manpage (man full) is rather complete.

ls -l /dev/full
crw--w--w- 1 root root 1, 7 2007-10-04 18:46 /dev/full

As you can see /dev/full has great performance.

sudo /bin/dd if=/dev/full of=/dev/null
powellj's password:
5893619+0 records in
5893618+0 records out
3017532416 bytes (3.0 GB) copied, 4.54102 s, 665 MB/s

waveclaw

01-11-2007 23:46:00

LinuxSIG 2007-11-01

Happy All Saint's Day!

Eric leading the group since the normal guy is teaching a Linux class at the local college.

While Eric updates his laptop to try an LDAP presentation it will be Q&A.

Asking for problems from the floor.

Q: Trying to add/remove a program in Ubuntu. When he applies the change it says that something is already using the program. Tried to install something and tried to uninstall something. Tried to add something one day and quit. Them came back the next day. I've tried this after each boot and after waiting a long time. I've had this problem with previous installations. I've reinstalled and had the problem return. I've installed 64-bit Ubuntu on another system and had the same problem.

A: It was probably gnome-apt-install which is written in Python. For example, using the Synaptic package manager at the same time as another package tool like gnome-apt-install, the underlying package management system A.P.T. is locked by one of the applications and you will get such an error.

Note this is a good criticism of Linux and all other OSes. Programmers are lazy, so they didn't write programs that tell you when they have problems. When some things fail they don't give errors to the user. For example. the Linux printing system, CUPS. The printing tool that is failing is not returning an error. When Linux printing fails, nothing happens. At all. Boiling programmers in oil could be a good solution for this. Perhaps just one programmer, as an example. Nobody at Microsoft would get boiled, but just a few open source developers could be made example with. And this is why Open Source had higher quality! We occasionally fry developers because of their mistakes.

Another example: gksudo returns nothing when it fails on Ubuntu when it is run from the GUI. From the command line, running

gksudo echo hi

returns an somewhat better error: unable to lookup towel via gethostbyname(). In this case, gethostbyname() is returning nothing for Eric. Because there is no name for this computer in /etc/hosts, things like nslookup on the name returned from the hostname command. Also, because sudo is a loud tattle-tail, there is an error from sendmail about the same

Note that after editing /etc/hosts to include the hostname, towel, gksudo pops up a nice dialog box warning that 'echo hi' is a program that can seriously damage your computer.

Python is the Visual Basic of Linux. Anybody can write programs in Visual Basic and the programs tend to suck. Anybody can also write programs in Python and the programs also tend to suck. This is what happens when you take programs that should be written by senior developers and let junior developers write them, in Visual Basic or Python.

While Eric has run in a terminal

apt-get update

then tried to start the Synaptic package manager tool, he got a pop-up error about 'Another version of this application is already running.'

This is due to the in-ability to capture the lock:

E: Unable to lock the administration directory (/var/lib/dpkg/) is another process using it?

Checking the user that is using the lock:

fuser /var/lib/dpkg/lock
/var/lib/dpk/lock: 9002

and checking what process is 9002:

ps -ef | grep 9002

shows that 9002 is the program '/usr/bin/python /usr/bin/update-manager' which Eric can close. Now that Eric has messed up his package management, he goes to /var/lib/apt/lists and deletes everything in it. Then

apt-get update

to get all these files again.

The recommendation for helping with the problem in the question is to try 'apt-get update' at the command line and checking the errors.

Q: I've had problems like this and I've always done a reinstall.

A: You can use the 'clean' option to remove a lot of these problems.

Q: Options about RedHat vs. Ubuntu?

A: Eric used to be a RedHat customer. Then Fedora Core 4 happened. Extras took so long to appear that all of his servers went over to Ubuntu. Also, while dpkg sucks vs. rpm A.P.T. is far better than Yum. And apt4rpm on RedHat is very slow. This might have something to do with most rpm meta-tools being written in Python. The quality would probably improve if some programmer(s) were boiled in oil. Redhat churns Fedora Core a lot and is unsupported quickly (~1.5 years.) For an admin who is not making money when he is working on his servers, this is bad. Even though every once and a while Redhat polishes Fedora and puts Redhat, Inc. logs and compiles it and cuts a new version of Redhat Enterprise Linux. CentOS takes all the parts, minus the logs, and distributes the same thing as CentOS. Ubuntu does the same thing to Debian.

Q: What is the thing on the desktop that shows your CPU load.

A: Multi-monitor applet. Right-click on the bar in the Gnome desktop and add the System Monitor. This is not the same monitor that pops up when you double-click on the applet, but is still very handy.

This‎ is a lot like the command line tool top. This was the featured application from last month.

top - 19:59:43 up 1:09, 2 users, load average: 0.44, 0.30, 0.25
Tasks: 136 total, 1 running, 135 sleeping, 0 stopped, 0 zombie
Cpu0 : 0.9%us, 0.9%sy, 0.0%ni, 98.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu1 : 2.7%us, 2.2%sy, 0.0%ni, 86.9%id, 0.8%wa, 0.8%hi, 6.6%si, 0.0%st
Mem: 2066688k total, 1306372k used, 760316k free, 127244k buffers
Swap: 2097144k total, 0k used, 2097144k free, 741472k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4643 root 15 0 172m 70m 9028 S 3 3.5 1:44.17 /usr/bin/X :0 -audi
4805 powellj 15 0 206m 61m 15m S 0 3.0 0:12.25 /export/home/powell
4757 powellj 22 7 69136 27m 10m S 0 1.4 1:14.48 beagled /usr/lib/be
4843 powellj 18 0 115m 26m 15m S 0 1.3 0:00.89 mono /usr/lib/tombo
4737 powellj 16 0 105m 26m 15m S 0 1.3 0:17.26 gnome-panel --sm-cl
5153 powellj 39 19 50228 22m 9588 S 0 1.1 1:42.11 beagled-helper /usr
5097 powellj 19 4 98096 19m 13m S 0 1.0 0:32.77 gedit linuxsig20071
4745 powellj 18 0 131m 18m 14m S 0 0.9 0:00.82 nautilus --no-defau
5064 powellj 15 0 40104 16m 11m S 0 0.8 0:00.92 gnome-terminal
4836 powellj 18 0 95772 15m 9544 S 0 0.8 0:00.22 /usr/bin/python /us
4767 powellj 15 0 106m 14m 11m S 0 0.7 0:01.99 nm-applet
4634 powellj 30 7 17120 14m 1812 S 0 0.7 0:01.12 /usr/lib/GConf/2/gc
4885 powellj 18 0 110m 13m 10m S 0 0.7 0:00.30 /usr/lib/gnome-pane
4880 powellj 15 0 99.8m 13m 10m S 0 0.7 0:00.48 /usr/lib/gnome-pane
4755 powellj 15 0 28068 13m 10m S 0 0.7 0:00.17 opensuse-updater-gn
5447 powellj 19 4 93732 13m 9.9m S 0 0.7 0:01.92 /usr/bin/avant-wind

'M' to sort by ram. 'c' to see command lines. 'k PID' to kill the program with ID of PID. '1' to toddle seeing all the CPUs (cores) on your system.

Q: I need to setup a laptop for a lady who just need basic web surfing and email access.

A: Ubuntu is good. But for a turnkey solution, an Ubuntu clone with all the proprietary stuff like Linux Mint is preferred. At 3.1 Celena version is based on 3.4 Ubuntu. This is flying under the legal radar with all these codecs and copyrighted fonts pre-loaded.

Q: What about a network card? I think the card on-board is bad. I tried Redhat 9 and SuSE 9.

A: These version 9 disks are far to old. Manufacturers change their products without changing their product names. Manufacturers don't provide drivers for Linux as a rule, open source developer write them by and for themselves. Newer distros support much more hardware and supports it better.

Look at distrowatch and you can see reviews of the different distros of Linux. For instance, Xandros is a $30 distro with a $80 pro version that includes CrossOver Office ($40 if bought by itself) that lets you use a lot of Microsoft or Windows only software. Plus there are equivalents for most applications: Firefox for IE and Evolution or Thunderbird for Outlook and many others.

Q: I have problems partitioning my hard drive.

A: You may have a corrupt partition table. Zero it before you fdisk it. Put a live CD in the drive and start that up. As root, type:

dd if=/dev/zero of=/dev/hda count=10

Note that this will wipe the WHOLE disk, not just parts of it.

Q: What is with the names in Ubuntu?

A: The releases of Ubuntu are named after some animal and an alliterative adjective:
  1. Edgy Eft
    Feisty Fawn
    Dapper Drake[/list:u]
    and many more...
    main is the title for the collection of packages that IS the distribution. With dapper-updates, dapper-security and main you have the core of the Dapper Drake release of Ubuntu. The main repository will never change. Only the updates gets bugfixes and security gets the backported security bugfixes. You can see all this in your /etc/apt/sources.list file. The restricted packages are not GPL or non-OSS programs. Codecs are an example. Fonts are another. Once upon a time Microsoft gave away a set of very good high quality fonts for use on the web. After Microsoft 'won' the battle for the Internet, they stopped giving them away. Ubuntu gives you a restricted package with nothing but the instructions on how to get the fonts from somewhere on the Internet.

    The universe and multiverse contain a lot of other software which you might want, but is not recommended if you connect directly to the Internet with no protection. The security team is not maintaining these. You depend on the developers to keep them up to date.

    Q: What is this Debian thing?

    A: A community project to make a PC operating system using Gnu Public Licensed software. The community and the OS product is called Debian. For a very long time, there was no proper distribution of Debian. Then, and now every few years, the people in the project move everything in the extremely unstable collection of community contributed software into a 'stable' version and call it a distribution or release.

    A lot of companies took the unstable version and built on top of the Debian core. Many did it for money (Xandros and Ubuntu) and polish it up a lot. Mark Shuttleworth, 2nd space tourist, sold Thawte at the right time to Versign and made a lot of money. Mark founded Canonical to make Ubuntu Linux. Oo'boon'too is a word that means 'humanity to others.' Ubuntu makes no money except from consulting around Ubuntu. The company passes its work back to the Debian developers. Recall that the Debian developers don't actually write the software. They compile software, run severs that publish it, and write a few installers.

    Look up Debian Hurd and the GNU project (GCC) and Richard Stallman. Then realize that GNU/Linux is not crappy. GCC, the GNU Compiler Collection, is an example of how one peice of software when given away free can radically change an industry.

    Q: Why release every 6 months?

    A: There are two camps: Long-term-support and desktop. Long-term-support is about having working, tested software. Desktops change so frequently that if you don't push software out a frequently, then you cannot get it in front of users to test it to make the Long-term-support version. The developers of the 6 month version are looking for early adopters. This is exactly the model used by Microsoft: making your users be the final testers.

    Since you often want to impress your friends or want certain features not found in the current versions, you would want the latest version hot off the press. If you want to be on the Internet, you really want to keep up to date with the security features. Otherwise, there is no reason to go and upgrade every 6 months.

    Q: Is there a place to help with Ubuntu?

    A: Ubuntu Guide will tell you how to do a lot of things that you might want to do once you have 'just' the system working.

    Q:I have Kubuntu and tried to use kppp. It didn't work to get to my modem. I used the GUI thing and it worked. This was with AT&T.

    A: You have to use something to get the dialing to happen. Depending on your modem some people may need to customize the chat scripts used to talk to the modem. You might have to set lower speeds than default, might have to add login (RAS) and et cetera. I use WuDial and pppd through the GUI. Eric administers servers on a regular basis and is used to the command line for it. For the desktop, the the GUI tools like Network Tools is fine.

    And with that it is almost 9pm. So, we are out of time.

waveclaw

09-12-2007 15:46:58

LinugSIG 2007-12-06

Notice: FullNet is looking for an entry level UNIX postion.

Advanced Topic of the day: help Eric with a Linux question.

Eric the Linux admin has jury duty. Jury duty pay will not pay the bills.
Can Eric do billable work while waiting in line for jury selection?

Eris has:
  1. Bluetooth enabled laptop
    Bluetooth enabled cellphone
    Data plan for his cellphone
    Ubuntu 6.8 Linux
    BlueZ tools for gnome[/list:u]

    First reference:
    http://howtoforge.com/linux_internet_access_gprs_edge_via_bluetooth_gsm_phone

    1. Make sure the device is visible
    modprobe
    dmesg

    2. Scan for local bluetooth devices

    hcitool scan
    (reports it is scanning local items)

    3. confirm options from website
    vi /etc/bluetooth/hcid.conf
    4. create a pin
    cat /etc/bluetooth/pin
    5. create rfcomm0 config
    vi /etc/bluethooth/rfcomm0.conf
    6. PPP configuration
    vi /etc/pppp/peers/plus
    ( this is a script that does the connection chat process)


    This did not work.

    Quit this process and going with the first google result for "bluetooth + ubuntu"

    1. Search for devices
    sdptool search DUN
    ( take note of the channel number, in this case 1)

    2. set as before /etc/bluetooth/pin (any 4 digit number will work)
    3. start rfcomm
    sudo rfcomm bind ...
    4. test the rfcomm connection with minicom
    5. create a chat script for ppp, much like the one from howtoforge, but without a lot of the other settings.

    Partial success.

    Take 3: now going to http://help.ubuntu.com/community/BluetoothDialup

    Note that this has a whole section on TMobile, which is Eric's cellphone provider.

    1. An attempt is made to setup minicom 2.1 to talk to the device.
    This worked per the ubuntuforums.org posts.
    (i.e. AT in the minicom window returns OK)
    2. One PPP chat later, and there is a ppp0 with a default route.

    ifconfig eth0 down
    ifconfig ppp0
    (to check ppp0
    ip route show

    3. note that the chat script in minicom told you that the default route was not replaced, so replace it manually

    ip route add default via <IP address from the modem connection>

    4. test

    ping <ip address>


    Not fast, but google.com is there now in firefox.
    Final (most important) test is ssh back to Eric's office, through the phone. This works very well.

    Intro Topics: audience questions.

    Q: What is a good utility for recovering?

    A: test-disk package contains the photorec tool. This can recover a lot of files from damaged disks, formatted disks.

    dd_recover (dd_rescue on ubuntu) will pull files off a disk, errors and all (dd will collapse the errors in a bad way) and use dynamic block sizes to get really precise on what is broken.

    These are not installed by default.

    Q: My LVM parition is not mountable. Why?

    A: Check pvscan and then pvdisplay to report the physical space the LVM occupies.A boot CD will do a vgscan and find your volumes and load their 'metadata' but will not activate these dynamic paritions.
    Use lvchange -A y will activate them.

    Q: Why use LVM at all if it is so much hassle?

    A: Da Vinici, Eric's company, uses LVM to support offsite and onsite backups. LVM supports snapshots. LVM also lets you combine, dynamically, more space and, not so dynamically, remove space. rdiff backup used at Da Vinci, so that on-site and off-site backups out of sync. If the on-site dies, these differential backups can recover many old files. If the off-site dies, the on-site is somewhat ahead of it so that is still good. Most systems are mirroring systems. The older files are very useful. One downside is that deleting a file consumes more space instead of freeing it.

    Next month: January 3th. A meeting is unlikely. Keep a look out on the forums and site.

    Upcoming topic: Richard planning on bringing a Gentoo box that is broken for group diagnostic and repair.