xda-developers.com
forum.xda-developers.com
device database
wiki.xda-developers.com
Wiki HomePage
FAQ
|
Xanadux
RecentChanges
|
FindPage
|
|
LikePages
|
BackLinks
View Source:
HimalayaLinuxBooting
Booting can be done with HaRET or with this version of [Linexec|http://wiki.xda-developers.com/uploads/linexec.exe] 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: # Backup any data on your PocketPC environment. # 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|http://anymore.nl/ipaq/haret-0.3.6.exe] or here [HaRET-0.3.6-com1.exe|http://himalaya.lange.nom.fr/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|http://wiki.xda-developers.com/uploads/zImage-2.6.3] / [zImage-2.6.12|http://himalaya.lange.nom.fr/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|http://wiki.xda-developers.com/uploads/initrd-2.6.3.gz] / [initrd-2.6.12.gz|http://himalaya.lange.nom.fr/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: <pre> 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 </pre> (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, <big> No </big>Flow control ) # Connect your XDA with serial or USB cable to the host if you want to be able to log in. # Tap on <code>HaRET-0.3.6.exe</code> on your XDA and watch the screen or serial terminal. The thermometer should fill red and the eyes of the penguin should change. # If you used the initrd.gz based on familiar, log in with user <code>root</code> and password <code>rootme</code>%%% %%% %%% _The next steps only work with the large familiar based initrd:_ # on the root prompt in the XDA type: <code>modprobe g_ether</code> and check with <code>ifconfig</code> that you have a usb0 device:%%% <verbatim> ~ # 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) </verbatim> # Make sure the _usbnet.o_ module is loaded on your host PC, cradle your XDA and check with <code>/sbin/ifconfig -a</code> if you have an usb0 device:%%% %%% <verbatim> 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) </verbatim> # 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 <code>rootme</code>:%%% %%% <verbatim> # 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: ~ # </verbatim> When everything works you should see something like this on the console: <verbatim> 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 </verbatim> Instead of using an InitRD you can have the root filesystem in a directory on the host. See [HimalayaLinuxBootingViaRootNFS]. <br>You can try GPE too, by using a familiar/gpe image as root fs, or by following [HimalayaStandaloneGPEWithoutSD] instructions.<br> You can create your own GPE image as well, started from a SD card. http://himalaya.iclem.net./ (No sound support yet)