Showing posts with label Linux. Show all posts
Showing posts with label Linux. Show all posts

Saturday, October 13, 2007

History of Linux

History of Linux
version 2.2.0 byRagib Hasan
Department of Computer Science University of Illinois at Urbana-Champaign (pdf version)-->This article is hosted at http://netfiles.uiuc.edu/rhasan/linux
Translations: [Hebrew] [Bulgarian] [Japanese] [Chinese] [Romanian] [Portuguese]

Table of Contents
a. In The Beginning
b. New Baby in the horizon
c. Confrontation and development
d. A Decade of Linux
e. Tux: The Spirit of Linux
f. Some Linux Cookies
g. Timeline
h. Links
i. Acknowledgments

a. In The Beginning
It was 1991, and the ruthless agonies of the cold war were gradually coming to an end. There was an air of peace and tranquility that prevailed in the horizon. In the field of computing, a great future seemed to be in the offing, as powerful hardware pushed the limits of the computers beyond what anyone expected.

But still, something was missing.

And it was the none other than the Operating Systems, where a great void seemed to have appeared.

For one thing, DOS was still reigning supreme in its vast empire of personal computers. Bought by Bill Gates from a Seattle hacker for $50,000, the bare bones operating system had sneaked into every corner of the world by virtue of a clever marketing strategy. PC users had no other choice. Apple Macs were better, but with astronomical prices that nobody could afford, they remained a horizon away from the eager millions.

The other dedicated camp of computing was the Unix world. But Unix itself was far more expensive. In quest of big money, the Unix vendors priced it high enough to ensure small PC users stayed away from it. The source code of Unix, once taught in universities courtesy of Bell Labs, was now cautiously guarded and not published publicly. To add to the frustration of PC users worldwide, the big players in the software market failed to provide an efficient solution to this problem.

A solution seemed to appear in form of MINIX. It was written from scratch by Andrew S. Tanenbaum, a US-born Dutch professor who wanted to teach his students the inner workings of a real operating system. It was designed to run on the Intel 8086 microprocessors that had flooded the world market.

As an operating system, MINIX was not a superb one. But it had the advantage that the source code was available. Anyone who happened to get the book 'Operating Systems: Design and Implementation' by Tanenbaum could get hold of the 12,000 lines of code, written in C and assembly language. For the first time, an aspiring programmer or hacker could read the source codes of the operating system, which to that time the software vendors had guarded vigorously.

A superb author, Tanenbaum captivated the brightest minds of computer science with the elaborate and immaculately lively discussion of the art of creating a working operating system. Students of Computer Science all over the world pored over the book, reading through the codes to understand the very system that runs their computer.
And one of them was Linus Torvalds.

Installing ORACLE 9i on Linux

Installing Oracle9i on RedHat Linux (or Similar)

This document describes how to install Oracle9i (9.0.1) on Redhat Linux ( or similar).
by Mark Kirkwood
(July 29th, 2001)

Introduction
This version of Oracle is easier to install than many of the previous ones. However there are still some traps and issues to get around. if you just need a database with transaction support, get Postgresql (www.postgresql.org) - it is very easy to install.
Before You Get Oracle
This release recommends 512 Mb of RAM, 1 GB of swap and 3 GB of disk ! You can get away with 320 MB, 750 Mb and 2.5 Gb respectively - provided you do not attempt to create a database at install time (wait until later !)
Do not attempt to install at all if you have less than 200 Mb of RAM as the installer will crash at link time ! (If you are an Oracle install pro then you can link manually to complete the process, but its a bit of a pest).

This release requires a 2.4.4 Kernel and Glibc 2.2.2. However you can install with 2.4.2 (Redhat 7.1) or 2.4.3 (Mandrake 8.0) Kernels.

There is an undocumented dependency on Binutils. The version that comes with Redhat 7.1 causes Oracle to be unlinkable. The solution is to use the version that comes with Redhat 7.0 (binutils-2.10.0.18) or Mandrake 8.0 (binutils-2.10.1.0.2).

The tested combinations were :

Redhat 7.0 with binutils-2.10.0.18
Mandrake 8.0 with binutils-2.10.1.0.2.
Getting Oracle
Visit www.oracle.com and click on "Oracle technology Network". The current URL for downloads is here. Select "9i Database" and then pick the "Linux" entry. You must then agree to the license before the actual download page appears.
There are three big files :

Linux9i_Disk1.cpio.gz (400Mb)
Linux9i_Disk2.cpio.gz (620 Mb)
Linux9i_Disk3.cpio.gz (80 Mb)
They are actually cpio archives ( not gzipped cpio archives ! ). You need fast internet access...or a friend with fast internet access.
Once downloaded then expand the archives somewhere where you have 2 GB of space :

# cd /var/bigspace
# cpio -idmv Linux9i_Disk1.cpio.gz
# cpio -idmv Linux9i_Disk2.cpio.gz
# cpio -idmv Linux9i_Disk3.cpio.gzThese expanded archives can be burned to three CDs to provide a convenient and professional looking installation.
Preparation
Decide where you want Oracle to be installed and create a directory for it ( I use /usr/oracle/[version] but its up to you). In addition create a group and user for Oracle (login as root for this) :
# groupadd dba
# useradd oracle
# mkdir /usr/oracle
# mkdir /usr/oracle/9.0
# chown -R oracle:dba /usr/oracleRemember you need 3 GB or so !
In addition I usually create the file /etc/oratab used to record databases :

# touch /etc/oratab
# chown oracle:dba /etc/oratabThere is some folklore about setting a plethora of environment variables and a thing called "Optimal Flexible Architecture". This business is best summed up by saying : The procedure is neither optimal, flexible nor an architecture... but a way of laying out files that some Oracle folk like.
Ensure that you have installed X on your machine, as there is no longer a character mode installer.

Oracle, like most databases, needs to use IPC to create shared memory. Typically the default amount configured on most Linux distributions is minimal. To sort this out : ( as root here )

# sysctl -w kernel.shmmax=100000000
# echo "kernel.shmmax = 100000000" >> /etc/sysctl.confThis enables a shared memory segment to be 100 Mb ( probably enough to start you off...)
Installation
Login as oracle and proceed to install :
$ cd /var/bigspace
$ cd Disk1
$ export ORACLE_HOME=/usr/oracle/9.0
$ ./runInstallerThe Java Gui installer will start and guide you through the process.
This part is now fairly easy - just pick "9i Database", then either of "Enterprise" or "Standard Edition" depending whether you want all the fancy bits or not ( bitmap indexes, partitions, transportable tablespaces etc require Enterprise Edition).

The next step asks about what database you want, I usually say "Software Only" and do the database later.

You will be asked where JDK is... if you don't have a JDK it does not matter ( unless you wish to do Java development of course).

Then click on install and wait for a while.

At some point you will be asked about the "other locations" for the remaining software archives.. its fairly straightforward what to be there ( if you have cut CDs, ensure your terminal window is not still cd'ed into the cdrom mount directory... )

Post Installation
Now comes creating a database. There is a reasonable Gui tool for this :
$ export PATH=$PATH:$ORACLE_HOME/bin
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
$ dbca &Additionally there is a network configuration tool with a similar UI :
$ netca &However I will detail a command line creation and configuration of a database so that some understanding of what is happening can be gained:
Set up configuration for a database called db1 :

$ cat "db1:/usr/oracle/9.0:Y >> /etc/oratab"
$ cd $ORACLE_HOME/dbs
$ cat initdw.ora sed s/"#db_name = MY_DB_NAME"/"db_name = db1"/sed s/#control_files/control_files/ > initdb1.oraStart and create database :
$ export PATH=$PATH:$ORACLE_HOME/bin
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
$ export ORACLE_SID=db1
$ sqlplus /nolog < $ORACLE_HOME/network/admin/listener.ora $ lnsrctl start $ echo "DB1 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = <>)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = db1)))" > $ORACLE_HOME/network/admin/tnsnames.oraThese two commands tell the network listener where to listen, and clients were to send connection requests to. This can be tested by :
$ tnsping db1 1This should return (ok) [number]
Housekeeping
It is easy to make Oracle start automatically. Create a script called oracle in /etc/init.d that is like : ( you need to be root here )
#!/bin/sh
#
# oracle This shell script takes care of starting and stopping
# the oracle services.
#
# chkconfig: 345 90 10
# description: Oracle server
#
# probe: true

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
if [ ! -f /etc/sysconfig/network ]; then
exit 0
fi

# Check for echo -n vs echo \c
if echo '\c' grep -s c > /dev/null 2 > &1 ; then
ECHO_N="echo -n"
ECHO_C=""
else
ECHO_N="echo"
ECHO_C='\c'
fi



# See how we were called.
case "$1" in
start)
# Start server.
$ECHO_N "Starting Oracle: "$ECHO_C
su -l oracle -c sqlplus /nolog >/dev/null < ;; stop) # Stop server. $ECHO_N "Stopping Oracle: "$ECHO_C su -l oracle -c sqlplus /nolog > /dev/null < ;; *) echo $"Usage: $0 {startstop}" exit 1 ;; esac exit 0Then tell the system to run it : ( as root again ) # chkconfig --add oracleIt is nice to set up the Oracle .bash_profile to get ORACLE_SID and PATH working by default : # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi export BASH_ENV=$HOME/.bashrc export ORAENV_ASK=NO export ORACLE_SID=db1 if [ -f /usr/local/bin/oraenv ];then . /usr/local/bin/oraenv fi ORAENV_ASK=YES export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/libFinally a more sophisticated script to create a database in /var/oradata ( for example ) : ( as oracle ) #!/bin/bash # --------------------------------------------------------------------------- # file : createdb1.sql # --------------------------------------------------------------------------- DB=db1 DBPATH=/var/oradata ORACLE_SID=$DB mkinit() { export ORACLE_SID=$DB export ORAENV_ASK=NO . /usr/local/bin/oraenv cp init$DB.ora $ORACLE_HOME/dbs } mkdb() { sqlplus /nolog <> $ORACLE_HOME/dbs/init$DB.ora
}

resp=n
echo -n "Create initial files ?"
read resp
case $resp in
y) echo "Creating initialization files"
mkinit
;;
esac


resp=n
echo -n "Create database ?"
read resp
case $resp in
y) echo "Creating $DB"
mkdb
;;
esac


resp=n
echo -n "Run database scripts ?"
read resp
case $resp in
y) echo "Running scripts for $DB"
scdb
;;
esac


resp=n
echo -n "Create tablespaces ?"
read resp
case $resp in
y) echo "Creating tablespaces for $DB"
mktb
;;
esac


resp=n
echo -n "Create objects ?"
read resp
case $resp in
y) echo "Creating some objects for $DB"
mkoj
;;
esac

Help
Oracle Technology Network is a good source of help and documentation

Linux MOST Frequent Problems: Their Cause and Solutions

Linux problems with solutions

These are some various linux/unix problems I've encountered over the years, but which I was not able to find a solution for online. Hopefully this will save you the trouble I had.
by Vidar Holen Homepage

Problem:Network interface (or anything else on the pci bus) says "SIOCSIFFLAGS: Resource temporarily unavailable"
Cause: No IRQ assigned to the device, check /proc/pci (irq says 0)
Solution: Enter the bios setup (F1 or Del on boot), disable the option 'Plug n Play OS'. Reason: This will make your bios set up IRQs for you.

Problem:USB mouse using /dev/psaux, the ps/2 mouse device.
Cause: Bios usb legacy support in action, probably because Linux didn't probe for USB devices (which causes the bios to release control of them).
Solution: Compile the kernel with USB support, Input Core and USB HID. Reason: Duh.

Problem:USB mouse still doesn't work on /dev/input/mice, but /dev/psaux, even when USB support is compiled in.
Cause: Legacy USB support again. You might not have compiled in support for your USB chipset (the UHCI parts in USB support).
Solution: Compile UHCI. If not working, try the alternate drivers. Reason: Duh.

Problem:Accidentally cat'ing a binary file causes the all the characters you type next to show up as odd symbols.
Cause:The binary file contained a 016 (so, Shift Out) character.
Solution:Print a 017 (Shift In) character. You can use echo -ne "\\017" to do this. Even better, make it a shell script called 'fix' for easy access.
Reason:Shift Out is canceled by a Shift In.

Problem:You scanned an ext3 file system with fsck.ext2/e2fsck, and now you can't boot. Cause:fsck.ext2 deleted the journaling inode, essentially making it an ext2 fs.
Solution:Either use tune2fs -j device to add the journal node again, or use [c]fdisk to set the partition type to ext2 instead of ext3.
Reason:tune2fs -j will fix the fs back to ext3 journaling mode, cfdisk will have the system use it as unjournaled ext2.

Problem:Some program (especially older ones like RealPlayer, and other multimedia tools/players) hangs when loading, or give a message like "Can't open audio device /dev/dsp: Resource temporarily unavailable." or "No Sound"
Cause:Trying to open /dev/dsp (the sound device), but it's busy already taken so the program waits or fails.
Solution:Kill whatever might be hogging it, like artsd. You can find the specific PID using fuser /dev/dsp.
Reason:The app will now have exclusive sound access, and will load without waiting for the device to be free.

Problem:Lilo doesn't boot your new kernel, giving you odd boot signature messages.
Cause:It can't find the 0xAA55 byte at the end of the boot sector, probably because you didn't run 'lilo' after updating lilo.conf or replacing the kernel file.
Solution:Run lilo. Get a rescue floppy if needed. Reason:Lilo will now store the correct abs disk location for the kernels.

Problem:The localhost loopback address 127.0.0.1 doesn't work, and so some servers stop functioning and you can only connect to yourself through your lan address.
Cause:The lo interface might not be configured right.
Solution:Run "ifconfig lo up 127.0.0.1"
Reason:The loopback interface should now be up and configured with the standard loopback address.

Problem:CUPS printer claim to be ready, but is turned off when you start a job, and deletes the job when you start the printer.
Cause:You've upset the manual gods. Solution:Curse, read the manual, delete all the cups files, read the manual, download and compile cups, read the manual, try again.
Reason:The manual gods will be happy with your sacrifice and will allow you to print (worked for me atleast :)

Problem:When using the disk kupdated hogs the cpu, making the system slow to a crawl. The mouse stops responding for several seconds at a time. Serial comm gives errors like "/dev/ttyS0: 1 input overrun(s)".
Cause:Slow IDE throughput due to unsupported chipset. Run 'hdparm -t /dev/hda' to make sure (it will be really low, around 2-6mb/s) Solution:Compile a kernel that supports your IDE chipset (just enable them all).
Reason: koala_man: Btw, the 'reason' part for the 'kupdated hogs CPU because of disk usage' thing is because the system runs in PIO mode, meaning the main CPU have to manage all reading and writing, rather than letting the chipset use busmastering.

Problem:Konqueror doesn't show gif images.
Cause:No gif support in QT Solution:Edit $QTDIR/src/kernel/qgif.h, define QT_BUILTIN_GIF_READER as 1 (tiny file, plenty of comments). configure with -qt-gif. No need to recompile konqueror.
Reason:The QT library now supports gif, and konqueror can use it.

Problem:GTK apps like gimp and xchat suddenly got disgusting fonts.
Cause:Something changed the settings, possibly an install of another gtk version.
Solution:Make a ~/.gtkrc file: style "user-font"
{
font="-misc-fixed-medium-r-normal-*-14-*-*-*-c-*-iso8859-1"
}
widget_class "*" style "user-font"
Replace the font if that doesn't suit you. Reason:A new default font is now set, instead of the ugly previous one.

Problem:Konqueror is slow when browsing FTP sites.
Cause:The icon preview feature occupies the connection, forcing a relogin when changing directories.
Solution:Uncheck 'ftp' in the KDE Control Center under Previews in File Manager. Reason:Konqueror will now use the connection it made for browsing, rather than showing icon previews.

Problem:When starting Half-Life in Wine, a message comes up saying "Could not open MCI file for playback: 279: Cannot use 'all' as the device name with the specified command" Cause:Dunno. Solution:Run as "wine hl.exe -- -console"
Reason:No clue.

Problem:Half-Life in Wine has no sound.
Cause:DirectSound errors?
Solution:Try setting voice_enable "0" in config.cfg Reason:No clue, but it worked for me.

Problem:When running Half-Life in Wine, pressing Tab causes the screen to go black (but displays "Half-Life" in the left corners).
Cause:Locked up Alt key perhaps
Solution:Click somewhere, then click the top left corner. Press Escape then Resume Game. Then hit Alt.
Reason:I guess the game didn't get the alt-release keycode.

Problem:Sendmail ignores aliases in /etc/mail/aliases, even after sighups.
Cause:Sendmail reads from a database, not that file.
Solution:Use the -bi option (or even better, run newaliases).
Reason:It'll update the database (/etc/mail/aliases.db).

Problem:KMail's menu bar is missing.
Cause:I dunno, messing with styles and themes possibly.
Solution:Set MenuBar=Disabled in ~/.kde/share/config/kmailrc to, yes, Enabled.
Reason:I didn't see any way of turning it through the gui, so I did it manually.

Problem:Mounting of NFS shares is slow, taking exactly five minutes.
Cause:Not quite sure.
Solution:Install Portmap on both client and server. Reason:I don't know.

Problem:Apache's mod_proxy won't allow CONNECTs on vhosts.
Cause:I think the manual lies. Mod_proxy doesn't seem to like vhosts.
Solution:Make it server wide.
Reason:Cow.

Problem:Can't figure out how to whitelist sites using Apache proxies (but can blacklist with ProxyBlock) Cause:Not pondering long enough. Solution:
Order Deny,Allow
Deny from all


Order Allow,Deny
Allow from all

Reason:That's just the way it is.

Problem:nvtv only gives black/white output (on an old TV using an s-video to scart converter). Cause:Cheap converter Solution:Set the Connector to Convert.
Reason:Quoth the faq, "You have a SVideo (S-VHS) to Composite connector that uses only the luminance (Y) line of the SVideo connection."

Problem:Quick access to the konqueror options for changing browser identification and enabling/disabling Java/plugins/javascript not present in the Tools menu.
Cause:These are additional plugins not present in all default installs.
Solution:Install konq-plugins in debian, or the kde addons module from the source tree. Reason:Duh.

Problem:Can't make KDE display an html web page as desktop background wallpaper. (Redundant wording for google's pleasure)
Solution:kwebdesktop

Problem:Neverwinter Nights crashes [on debian], giving only "Error" as a message. Cause:Running in 16bit mode.
Solution:Run X in 24bit mode.
Reason:I don't know, gdb indicates a libGLU issue.

Problem:Irssi or anything else just hangs, and Ctrl+Q doesn't fix it. And you're using screen. Cause:Screen has an [ES]TX feature too. Perhaps you managed to trigger it.
Solution:Ctrl-A Q
Reason:Makes screen write stuff again.

Problem:The Cisco vpnclient says "Could not attach to driver. Is kernel module loaded?", and yes, the module's loaded.
Cause:Nowhere to route packets.
Solution:Check that your nic is listed in ifconfig (if it's not and it's usb, try [re]loading usb-ohci or ohci-hcd). And up it with dhcpcd or something.
Reason:Now it can connect.

Problem:atitvout says "VBE call failed", esp on Radeon Mobility 7500 (M7 LW). Cause:Something about the card not detecting tv-out by itself.
Solution:Turn the box off. Plug in TV-out. Boot. Start X, and put it in 640x480 (or 800x600). atitvout auto pal; atitvout -f t Reason:The card will sense the TV and allow you to turn on tv output.

Problem:DVD playing using mplayer and TV-out sucks. With mplayer -vo xv, only the top half of the image is shown. With x11 it only occupies a small area, and with -zoom it runs crap slow and the interlacing is just awful.
Cause:Dunno Solution:Set X to 640x480, mplayer -noframedrop -vo x11 -fs file
Reason:Dunno, but it looks really great.

Problem:UXterm doesn't show bold fonts (or xterm with wideChars (-wc))
Solution:Set a wideFont ala "xterm*VT100*wideFont: -efont-biwidth-medium-r-*-*-14-*-*-*-*-*-*-*"

Problem:Compiling irssi says "/bin/sh: 0: not found" (OpenBSD).
Solution:Does your locale exist? Try unsetting all the LC_* variables, configure and make again.

Problem:IMAP (imaps) hangs in kmail.
Cause:kdelibs built without SSL, the imaps kioslave is built but just hangs. Solution:Recompile with ssl.

Problem:Gentoo says "* error scanning /etc" whenever emerge does something. Cause:'find /etc' said modules.conf was there, but wasn't there. An xfs corruption, obviously. Solution:I booted from a rescue cd and did xfs_repair. Everything worked smoothly after that.

Problem:(ok, so this isn't linux) On Solaris on a sun-ray thin client, xlocks locks the screen when you pull out the smart card and I want to change or disable this.
Solution:Kill your existing utaction process, and/or start a new one with the desired action in -d. (/opt/SUNWut/lib/utaction -d command). Also note the -e if you want the action to only run once.

Problem:(Solaris again) While compiling OpenGL applications using GLU on solaris, linking failes with Undefined symbol: __1cG__CrunKpure_error6F_v_ __1cG__CrunMex_rethrow_q6F_v_ c::c(N6, (int0_t)) c::c(N6, (int0_t)), ld: fatal: Symbol referencing errors. No output written to fluffy Cause:GLU requires libCrun which in turn requires libstdc++.
Solution:Link with both these libs, -lCrun -lstdc++

Problem:Cinelerra just hangs with a blank window titled "x".
Solution:Try it in another wm. Or for Ion, use a FloatWS.

Problem:Getting accelerated X-video output on a UniChrome Pro CN700 on Ubuntu 7.04 (Feisty Fawn) on an EPIA EN12000EG for TV-out playback.
Solution:As of 2007-05-11, OpenChrome supports the CN700 in svn (but not in the stable release). Get and compile the driver (requires automake1.9, not the fancy new stuff), replace via_drv.so in /usr/lib/xorg/modules/drivers with the OpenChrome one. Optionally load the 'drm' and 'via' kernel modules. Then configure X to use the 'via' driver. Here's my xorg.conf, for a widescreen PAL TV. Hope you have an easier time than I did.

Problem:irrecord fails on lirc 0.8.2, with kernel 2.6.22.1. It when a button is pressed, it exits immediately but claims "irrecord: no data for 10 secs, aborting, irrecord: gap not found, can't continue"
Solution:lirc 0.8.2 doesn't support this kernel (it's probably fixed in the latest version by the time you read this). Downgrade to 2.6.20 and it works like a charm.