The
Android platform is a software stack for mobile devices including an operating system, middleware and key applications. Developers can create applications for the platform using the Android SDK. Applications are written using the Java programming language and run on Dalvik, a custom virtual machine designed for embedded use which runs on top of a Linux kernel.
Google provides Android SDK for three platforms: Windows, Mac OS X (intel), Linux (i386). There is Android emulator included in the SDK package. So first find a Android SDK for your platform:
Download the Android SDK from Google.
Next, extract the Android SDK package into your system, let's say the root folder is $ANDROID_SDK.
Open a command window (shell window), change the working directory to $ANDROID_SDK/tools/. You will see tens of executable files, one is emulator. Simply start it with the following command:
# emulatorIf you want to see the emulator kernel boot up detail information, start it with the following command:
# emulator -debug-kernelWhen the Android started up, the following window is shown.

You can open a Android shell by the command:
# adb shellIt is a Linux kernel 2.6.23 (Android is linux kenel based) shell, play with it in the same way as linux.
Here is the Android kernel boot up log fyi:
Uncompressing Linux................................................................................. done, booting the kernel.Linux version 2.6.23-gcc3bc3b4 (arve@arvelnx.corp.google.com) (gcc version 4.2.1) #3 Tue Oct 30 16:28:18 PDT 2007CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00003137Machine: GoldfishMemory policy: ECC disabled, Data cache writebackCPU0: D VIVT write-through cacheCPU0: I cache: 4096 bytes, associativity 4, 32 byte lines, 32 setsCPU0: D cache: 65536 bytes, associativity 4, 32 byte lines, 512 setsBuilt 1 zonelists in Zone order. Total pages: 24384Kernel command line: qemu=1 console=ttyS0 android.checkjni=1 keycharmap=qwerty2android.ril=ttyS1Unknown boot option `android.checkjni=1': ignoringUnknown boot option `android.ril=ttyS1': ignoringPID hash table entries: 512 (order: 9, 2048 bytes)Console: colour dummy device 80x30Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)Memory: 96MB = 96MB totalMemory: 94280KB available (2268K code, 458K data, 96K init)Mount-cache hash table entries: 512CPU: Testing write buffer coherency: okandroid_power_initandroid_power_init doneNET: Registered protocol family 16NET: Registered protocol family 2IP route cache hash table entries: 1024 (order: 0, 4096 bytes)TCP established hash table entries: 4096 (order: 3, 32768 bytes)TCP bind hash table entries: 4096 (order: 2, 16384 bytes)TCP: Hash tables configured (established 4096 bind 4096)TCP reno registeredchecking if image is initramfs... it isFreeing initrd memory: 228Kgoldfish_new_pdev goldfish_interrupt_controller at ff000000 irq -1goldfish_new_pdev goldfish_device_bus at ff001000 irq 1goldfish_new_pdev goldfish_timer at ff003000 irq 3goldfish_new_pdev goldfish_rtc at ff010000 irq 10goldfish_new_pdev goldfish_tty at ff002000 irq 4goldfish_new_pdev goldfish_tty at ff011000 irq 11goldfish_new_pdev smc91x at ff012000 irq 12goldfish_new_pdev goldfish_fb at ff013000 irq 13goldfish_new_pdev goldfish_audio at ff004000 irq 14goldfish_new_pdev goldfish_events at ff014000 irq 15goldfish_new_pdev goldfish_nand at ff015000 irq -1goldfish_new_pdev goldfish-switch at ff016000 irq 16goldfish_new_pdev goldfish-switch at ff017000 irq 17goldfish_pdev_worker registered goldfish-switchgoldfish_pdev_worker registered goldfish-switchgoldfish_pdev_worker registered goldfish_nandgoldfish_pdev_worker registered goldfish_eventsgoldfish_pdev_worker registered goldfish_audiogoldfish_pdev_worker registered goldfish_fbgoldfish_pdev_worker registered smc91xgoldfish_pdev_worker registered goldfish_ttygoldfish_pdev_worker registered goldfish_ttygoldfish_pdev_worker registered goldfish_rtcgoldfish_pdev_worker registered goldfish_timergoldfish_pdev_worker registered goldfish_device_busgoldfish_pdev_worker registered goldfish_interrupt_controllergoldfish_audio_probeInstalling knfsd (copyright (C) 1996 okir@monad.swb.de).yaffs Oct 30 2007 16:24:34 Installing.io scheduler noop registeredio scheduler anticipatory registered (default)io scheduler deadline registeredio scheduler cfq registeredallocating frame buffer 320 * 480, got ffc10000Console: switching to colour frame buffer device 40x30console [ttyS0] enabledRAMDISK driver initialized: 16 RAM disks of 8192K size 1024 blocksizeloop: module loadednbd: registered device at major 43smc91x.c: v1.1, sep 22 2004 by Nicolas Pitre No IRQF_TRIGGER set_type function for IRQ 12 (goldfish)eth0: SMC91C11xFD (rev 1) at c6800000 IRQ 12 [nowait]eth0: Ethernet addr: 52:54:00:12:34:56goldfish nand dev0: size 4000000, page 2048, extra 64, erase 131072goldfish nand dev1: size 4000000, page 2048, extra 64, erase 131072mice: PS/2 mouse device common for all mice*** events probe ***events_probe() addr=0xc6804000 irq=15input: goldfish-events-keyboard as /class/input/input0goldfish_rtc goldfish_rtc: rtc core: registered goldfish_rtc as rtc0logger: created 64K log 'log_main'logger: created 64K log 'log_events'logger: created 64K log 'log_radio'IPv4 over IPv4 tunneling driverGRE over IPv4 tunneling driverTCP cubic registeredNET: Registered protocol family 1NET: Registered protocol family 17802.1Q VLAN Support v1.8 Ben Greear All bugs added by David S. Miller VFP support v0.3: implementor 41 architecture 1 part 10 variant 9 rev 0goldfish_rtc goldfish_rtc: setting the system clock to 2008-01-12 02:48:13 (1200106093)Freeing init memory: 96Kinit: HOW ARE YOU GENTLEMENinit: reading config fileinit: device initinit: mtd partition -1,init: mtd partition 0, "system"yaffs: dev is 32505856 name is "mtdblock0"yaffs: passed flags ""yaffs: Attempting MTD mount on 31.0, "mtdblock0"init: mtd partition 1, "userdata"yaffs: dev is 32505857 name is "mtdblock1"yaffs: passed flags ""yaffs: Attempting MTD mount on 31.1, "mtdblock1"eth0: link upsh: can't access tty; job control turned off# binder_open(c0833428 c0a0a4a0) (pid 468) got c5f13000binder_open(c0833428 c5a6b9e0) (pid 460) got c5bbf000binder_open(c0833428 c5a6b2e0) (pid 474) got c4716000android_power: auto off timeout set to 604800 secondsDescriptor2Node failed secondary: desc=4, max=32, node=c5bc0350, weak=0binder_open(c0833428 c4f533a0) (pid 510) got c4754000binder_open(c0833428 c4f53920) (pid 511) got c3a30000binder_open(c0833428 c3421860) (pid 527) got c3428000