xda-developers.com
forum.xda-developers.com
device database
wiki.xda-developers.com Wiki HomePage
FAQ | Xanadux

RecentChanges | FindPage | | LikePages | BackLinks

Himalaya Linux Booting

Booting can be done with HaRET or with this version of Linexec It needs a params.txt as described on the LinExec page.

To get Linux booting on your XDA you need to follow the next steps. No hardware modification or flashing of the device is necessary and afterwards you can just continue using it with PocketPC. It will need a hard reset so all data will be lost (so backup if you need that data!). The steps are:

  1. Backup any data on your PocketPC environment.
  2. Install the following files on your PocketPC filesystem (if you put it on an SD card it will be preserved and you can start it directly from it):

    • The bootloader. You can use either LinExec or HaRET. Here we will use HaRET. You can find a copy here: HaRET-0.3.6.exe or here HaRET-0.3.6-com1.exe. Sometimes HaRET may hang during boot. Just soft reset and try again.
    • The Linux kernel image. A recent version can be downloaded directly as zImage-2.6.3 / zImage-2.6.12, or you can compile it yourself with a CrossCompilationToolChain from the sources at SourceForge.
    • An InitRD image. A matching version to the kernel image above is initrd-2.6.3.gz / initrd-2.6.12.gz
    • A startup.txt file. This should follow the format matching the description in the HaRET page. The program expects it in the directory it is running from. A simple version with the console redirected to the serial port and starting from the Storage Card is:
    set KERNEL "zImage-2.6.3"
    set MTYPE 448
    set INITRD "\Storage Card\initrd-2.6.3.gz"
    set CMDLINE "root=/dev/ram0 init=/linuxrc ramdisk_size=14336 keepinitrd"
    bootlinux

(Note1 : The name \Storage Card\ may be localized depending on your Windows version. In French, it's \Carte de stockage\).
(Note2 : if you want the boot sequence to be directed to serial port, add the following to CMDLINE : "console=ttyS1,115200")
(Note3 : if you try to get the serail protokoll under Windows -Hyperterminal teh parameters are: 115200 Baud, 8 data bits, No parity, 1 stopbit, No Flow control )

  1. Connect your XDA with serial or USB cable to the host if you want to be able to log in.
  2. Tap on HaRET-0.3.6.exe on your XDA and watch the screen or serial terminal. The thermometer should fill red and the eyes of the penguin should change.
  3. If you used the initrd.gz based on familiar, log in with user root and password rootme


    The next steps only work with the large familiar based initrd:
  4. on the root prompt in the XDA type: modprobe g_ether and check with ifconfig that you have a usb0 device:

    ~ # modprobe g_ether
    <6>pxa2xx_udc: version 14-Dec-2003
    _udc_control: disconnect
    <6>usb0: Ethernet Gadget, pxa2xx, version: Bastille Day 2003
    _udc_control: connect
    <6>udc: USB reset
    udc_is_connected: request returns 0
    ~ # ifconfig usb0
    usb0      Link encap:Ethernet  HWaddr AE:25:3F:02:BB:0B
              inet addr:192.168.0.206  Bcast:192.168.0.255  Mask:255.255.255.0
              UP BROADCAST MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
  5. Make sure the usbnet.o module is loaded on your host PC, cradle your XDA and check with /sbin/ifconfig -a if you have an usb0 device:


    usb0      Link encap:Ethernet  HWaddr EE:79:B8:2A:36:CB
              BROADCAST MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:100
              RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
  6. Configure the IP address 192.168.0.205 on usb0. The XDA will have IP address 192.168.0.206. Next ssh into your XDA with user root and password rootme:


    # ifconfig usb0 192.168.0.205
    # ssh 192.168.0.202
    The authenticity of host '192.168.0.206 (192.168.0.206)' can't be established.
    DSA key fingerprint is 69:fc:1d:63:7a:ab:89:37:83:b1:f2:c0:a2:4f:3e:94.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '192.168.0.206' (DSA) to the list of known hosts.
    root@192.168.0.206's password:
    ~ #

When everything works you should see something like this on the console:

Testing 123
Physical kernel address: a0008000
Preloader physical/virtual address: a7168000
Physical initrd address: a0408000
Goodbye cruel world ...
Linux version 2.6.3-rmk0-hh0-xda0 (w4xy@xanadux.org) (gcc version 3.3.2) #8 Wed Mar 3 20:46:13 CET 2004
CPU: XScale-PXA255 [69052d06] revision 6 (ARMv5TE)
CPU: D undefined 5 cache
CPU: I cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
CPU: D cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
Machine: HTC Himalaya
Memory policy: ECC disabled, Data cache writeback
<6>Memory clock: 99.53MHz (*27)
<6>Run Mode clock: 398.13MHz (*4)
<6>Turbo Mode clock: 398.13MHz (*1.0, inactive)
On node 0 totalpages: 32768
  DMA zone: 32768 pages, LIFO batch:8
  Normal zone: 0 pages, LIFO batch:1
  HighMem zone: 0 pages, LIFO batch:1
Built 1 zonelists
Kernel command line: root=/dev/ram0  init=/linuxrc ramdisk_size=14336  keepinitrd
<7>Relocating machine vectors to 0xffff0000
<7>IRQ27 (GPIO4): rising falling edges
PID hash table entries: 1024 (order 10: 8192 bytes)
Console: colour dummy device 80x30
<6>Memory: 128MB = 128MB total
<5>Memory: 124000KB available (1295K code, 366K data, 64K init)
Calibrating delay loop... 397.31 BogoMIPS
<6>Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
<6>checking if image is initramfs...it isn't (no cpio magic); looks like an initrd
<6>CPU: Testing write buffer coherency: ok
POSIX conformance testing by UNIFIX
<6>NET: Registered protocol family 16
himalayafb: register driver
pxafb: request mem region
pxafb: deferring startup
get_machine_info: didn't get himalayafb mach info
pxafb: deferring startup
Checking ASIC3 idstring: HTC-SDIO P/N:30H80028-00
---------- BEGIN ASIC3 GPIO0 DUMP
MASK: ffff
DIR : bfff
OUT : 406b
TTYP: 0000
ETRG: 0000
LTRG: 0000
SMSK: ffff
SOUT: 4001
BOUT: 4001
ISTT: 0000
AFR : 9800
SCNF: 000c
STAT: 506b
---------- END ASIC3 GPIO0 DUMP
---------- BEGIN ASIC3 GPIO1 DUMP
MASK: ffff
DIR : ffff
OUT : 0fb8
TTYP: 0000
ETRG: 0000
LTRG: 0000
SMSK: ffff
SOUT: 8220
BOUT: 0220
ISTT: 0000
AFR : 0000
SCNF: 000c
STAT: 0fb8
---------- END ASIC3 GPIO1 DUMP
---------- BEGIN ASIC3 GPIO2 DUMP
MASK: 01bf
DIR : 0187
OUT : fe04
TTYP: fe40
ETRG: 0000
LTRG: 0000
SMSK: ffff
SOUT: fe00
BOUT: fe00
ISTT: 0000
AFR : 0000
SCNF: 000c
STAT: fe64
---------- END ASIC3 GPIO2 DUMP
---------- BEGIN ASIC3 GPIO3 DUMP
MASK: 96e4
DIR : 10e0
OUT : 6907
TTYP: ffff
ETRG: 36ec
LTRG: 0000
SMSK: 0000
SOUT: 6927
BOUT: 6927
ISTT: 0000
AFR : 0000
SCNF: 000c
STAT: c917
---------- END ASIC3 GPIO3 DUMP
lcd_module_register: name=himalayafb
pxafb: deferring startup
get_machine_info: got himalayafb mach info
init_fbinfo
inf=c016d5bc inf->xres=240 inf->yres=320 inf->bpp=16
<6>himalayafb: framebuffer at 0x8100000, mapped to 0xc8803000, size 150k
<4>NetWinder Floating Point Emulator V0.97 (double precision)
<6>devfs: v1.22 (20021013) Richard Gooch (rgooch@atnf.csiro.au)
<6>devfs: devfs_debug: 0x0
<6>devfs: boot_options: 0x1
<6>Initializing Cryptographic API
Console: switching to colour frame buffer device 30x40
pty: 256 Unix98 ptys configured
ttyS0 at MMIO 0x40100000 (irq = 15) is a FFUART
ttyS1 at MMIO 0x40200000 (irq = 14) is a BTUART
ttyS2 at MMIO 0x40700000 (irq = 13) is a STUART
Console: switching to colour frame buffer device 30x40
Enabling LCD
MODULE: Power on!
himalaya LCD power on
RAMDISK driver initialized: 16 RAM disks of 14336K size 1024 blocksize
<6>mice: PS/2 mouse device common for all mice
<6>NET: Registered protocol family 2
<6>IP: routing cache hash table of 1024 buckets, 8Kbytes
<6>TCP: Hash tables configured (established 8192 bind 16384)
<6>NET: Registered protocol family 1
LCD enable
MODULE: Enable on!
himalaya_lcd_set_enable
<5>RAMDISK: Compressed image found at block 0
VFS: Mounted root (ext2 filesystem).
<6>Mounted devfs on /dev
<6>Freeing init memory: 64K

familiar login: root
Password: rootme

Instead of using an InitRD you can have the root filesystem in a directory on the host. See HimalayaLinuxBootingViaRootNFS.
You can try GPE too, by using a familiar/gpe image as root fs, or by following HimalayaStandaloneGPEWithoutSD instructions.
You can create your own GPE image as well, started from a SD card. http://himalaya.iclem.net./ (No sound support yet)


Last edited on February 12, 2006 9:24 pm.


Edit | PageHistory | Diff | PageInfo
Login
User Name: Password:
Remember Me?