Mar 1 2008, 08:51 AM
Post
#1
|
|
|
Group: Members Posts: 2,003 Joined: 16-April 04 From: the Netherlands && /dev/null Member No.: 2,882 |
20080416: Added updater.sh for C1000 and polished Cackohddfix installer script.
20080328: Updated with a Cacko HDD Fix scriptpack. 20080326: Updated with instructions for Sharp/Cacko. ======================================================== Setting up dualbooting Debian EABI & Sharp/Cacko/pdaXrom/Angstrom (internal disk/NAND) SUMMARY: The idea is to use the Debian rootfs on the internal disk/CF/SD as the MAIN SYSTEM, from there booting quickly (bypassing the bootloader stage) into different distros/ROMs as the SUB-SYSTEMS and loading the new kernels on the spot with kexec. The following is just a demonstration of how to set up a dualbooting environment in a fairly easily way. There are quite a few steps to do, but it is not difficult to understand if you are not an absolute *nix newbie. This howto starts from a working debian rootfs and proceeds to setting up a subsystem in NAND. If you already have a working system in NAND, you just need to make sure that a debian rootfs is put in a proper partition on the disk and then flash a kexec-friendly kernel (yonggun/angstrom/poky). In this case you can skip section 2. In principle you can do the same to set up a multibooting environment. This howto is based on 2or0's blog ( http://yonggun.tistory.com/67 ) 1. Prepare the main system (i.e. the Debian rootfs on internal disk/CF/SD) 1.1 Make sure that you have a working Debian EABI rootfs (I assume you have already done so or can do so as you are reading this). AND make sure that the rootfs is ext3 formatted; if not, do this: 1.1.1 It is very easy to convert your Debian rootfs from ext2 to ext3. Just do this: CODE tune2fs -c 0 -i 30 -j /dev/hda1 (This simply adds journaling support to the rootfs, and it is safe to perform this step whether the Debian rootfs is mounted or not) 1.2 Extract the new 2.6.24.3-yonggun kernel modules to the Debian rootfs. -- Get it from: http://yonggun.tistory.com/68 -- Extract to the root of the Debian rootfs: (while running the Debian main system) CODE tar xzf 2.6.24.3-yonggun.cpufreq.fastfpe.tar.gz -C /. 1.3 Make you use the kernel for Sharp Bootloader -- If your Debian rootfs boots with uboot, first you need to do a NAND Restore (in D+M mode) to make the flash area return to the factory state. -- If you have already set up Debian using the Sharp bootloader kernel (yonggun/angstrom/poky), proceed to 2. 2. Set up the subsystem on NAND 2.1 Sharp/Cacko rom 2.1.1 Install the subsystem on NAND (skip this if you already have a working system) Sharp rom: a. Get the NAND backup image from: http://trisoft.de (English version) or http://downloads.conics.net/pda/zaurus-sl-...iginal-backups/ ( original Japanse version) b. Copy the NAND backup image to a SD/CF c. Enter the D+M service menu (unplug AC and remove battery > wait 10 seconds > keep pressing [Fn] [D] [M] together > plug in AC) d. Do a NAND Flash Restore (page 3) e. Kernel update (highly recommended): after installation, reboot into the Flash Menu again. tetsu kernel: http://tetsu.homelinux.org/zaurus/kernel/ Remember to flash the new kernel with the appropriate updater.sh (can be found in the kernel download spots). Cacko rom: a. Get ver. 1.23 here: http://sharpromfeed.home.linuxtogo.org/dow.../cacko/rom1.23/ b. Reboot the machine into the Flash Menu (press [OK] then power on) c. Before flashing the rom, go to NAND flash utils to resize the root partition: 32MB (Cacko full) or 19MB (Cacko lite) d. Kernel update (highly recommended): after installation, reboot into the Flash Menu again. eviljazz kernel: http://www.katastrophos.net/zaurus/kernels/current/ (recommended: fastfpe-cachedfb ) Remember to flash the new kernel with the appropriate updater.sh (can be found in the kernel download spots). If you want to have Sharp/Cacko rom run WITHOUT the required partitioning on the internal disk (hdd1, hdd2, hdd3), please follow 2.1.2 If you want to have Sharp/Cacko rom run with the required partitioning on the internal disk (hdd1, hdd2, hdd3), please follow 2.1.3 2.1.2 Remove the required disk partitioning setting (the easy way) -- for C3100 & C3200 only (NEW & TESTED!) Step 1 Download this scriptpack v0.2 and extract it to a CF/SD. (Please read the "readme.txt" first) Step 2 Boot the Zaurus into the "Linux Emergency" console. a) Remove all power sources and flip the battery lock to the left, and then press the reset switch; c) Press and don't release the "D" and "B" keys; d) Put back the battery and flip the battery lock back to the right; e) Power on (with "D" and "B" still being pressed); f) When the prompt shows up, login in as "root". Step 3 Insert the card to the card slot and it will be mounted automatically. Step 4 Type "cd /mnt/card/cackofix" (SD) or "cd /mnt/cf/cackofix" (CF) and hit [Enter]. Step 5 Type "./install.sh" and hit [Enter]. Step 6 Wait until the process finishes. Then reboot. That's it! And ... good news: now the whole Debian filesystem is visible in Cacko. The partition can be mounted just like any media. 2.1.3 Repartition the internal disk to restore the original setting (the hard way) The basic idea: -- Sharp rom requires the internal disk have (at least) three primary partitions (hdd1, hdd2, hdd3) -- Assuming that the root partition is /dev/hda1 and the swap partition is /dev/hda2, the most straightforward way is to add two additional partitions (hda2 and hda3) after hda1. Using gparted you can freely resize and manipulate the existing partitions safely. Step 1 Boot into a DIFFERENT system that can use gparted, e.g. pdaXrom, Angstrom, another Debian rootfs on SD (I use this one) (It may be necessary to reflash the kernel of the corresponding system.) Step 2 IMPORTANT: umount ALL partitions on the internal disk (such as all /dev/hdaX and swap partition) before any partitioning operations!! Step 3 Launch gparted -- the GUI is of a very user-friendly WYSIWYG kind; -- TIP: do use the "Edit > Undo Last Operation" function to avoid unnecessary operations as all operations will be recorded and applied together. Step 4 First delete the swap partition to free /dev/hda2 Step 5 Next resize /dev/hda1. My suggestion: free least 525MB Step 6 After resizing /dev/hda1, create two new partitions following /dev/hda1 -- the 1st new partition (/dev/hda2): 16MB (NB: this is the smallest I can get in gparted, despite the fact that it only needs to be 9.5MB), ext3 format -- the 2nd new partition (/dev/hda3): around 512MB would be quite enough, fat32 format Step 7 Add a swap partition back (/dev/hda4) after the two new partitions using the remaining space (recommended: around 512MB if space allows) [An alternative which is more complicated is to create an extended partition for more partitions] [Yet another alternative is to move the Debian rootfs to some other partition. 2or0's latest yonggun kernel 2.6.24-3 comes in many flavors to boot from /dev/hda1~4 and mmcblk0p1~2 ! Just figure out how to allocate the partitions carefully.) Step 8 Apply all operations (Edit > Apply All Operations). It may take a few hours to resize the giant root partition, especially when your internal disk is a huge one (e.g. 16GB CF). DO NOT interrupt the process and just let gparted finish its job. Step 9 If things run fine, you will have (at least) four partitions in /dev/hda. Exit gparted. Step 10 Mount /dev/hda1 and /dev/hda2 Step 11 Create two directories "lost+found" and ".sys" on both partitions Step 12 Unzip these factory disk system files to the ".sys" directories -- hda1:
hdd1sys.zip ( 2.63K )
Number of downloads: 17-- hda2:
hdd2sys.zip ( 65.36K )
Number of downloads: 23Now your internal disk is ready for Sharp/Cacko rom! Issue: On C3000/C3100/C3200, if the Debian rootfs lives in either /dev/hda1 and /dev/hda2, then it will be mounted to read-only in Sharp/Cacko rom. 2.1.4 Other updates -- Fixes for SD card capacity limits: http://www.oesf.org/forum/index.php?showtopic=18523, http://www.oesf.org/forum/index.php?showtopic=20147 -- Japanese support: http://www.oesf.org/forum/index.php?showto...30&start=30 -- Meanies has created a lot of cool packages here: http://www.users.on.net/~hluc/myZaurus/ 2.2 pdaXrom (1.1.0 beta3, pdaXii) (skip this if you already have a working system) Step 1 Reboot the Zaurus into the [OK] flash menu with the pdaXrom installer files ready on a SD/CF. In the pdaXrom installation menu, choose "3" (NAND flash utils), resize the root partition to Step 2 Back in the pdaXrom installer, choose "1" to install. Step 3 After successful installation, choose "6" to reboot. Step 4 Log in as "root" (no password needed) Do whatever you feel like doing here. After that reboot into the [OK] flash menu. Step 5 Optional: Upgrade pdaXrom beta3 to Meanie's much improved and polished pdaXii -- Get the upgrade package from: http://www.tyrannozaurus.com/feed/pdaXii13...ii13-custom.tgz -- Extract the tarball (anywhere you like, EXCEPT the root partition in pdaXrom because of not enough space) CODE zcat pdaXii13-custom.tgz | tar xvf - -C /ANYWHERE/YOU/LIKE -- Change to the "custom" directory in the extracted path CODE /etc/rc.d/init.d/sd stop ./install-fix-beta3.sh / upgrade Issue: I bumped into an error related to the sd card module as the upgrade script doesn't seem to copy the kernel module (under /custom ) successfully. If this also happens to you, you will have to do it manually: CODE cp sharp_mmcsd.o /lib/module/2.4.20/kernel/drivers/block/ Step 6 Kernel update (recommended!) -- Reboot the system to the [OK] flash menu. -- Use pelrun's modified version of evilJazz's improved kernel (for C3100/C3200) so that you can run pdaXii using the whole 121MB NAND flash space. (Not sure how pelrun's kernel differ from evilJazz's in http://www.katastrophos.net/zaurus/kernels/current/ , where you can also find new kernels for C1000 and C3000) 2.3: Angstrom, Poky (?) (To be added later.) (Main question: Is it possible to install Angstrom and Poky to NAND on C3x00? If yes, then with altboot and kexec in Angstrom we can cycle between Angstrom and Debian easily and also runs Android off SD after booting into Angstrom! ) 3. Set up the dualbooting environment 3.1 Flash (again) the yonggun kernel 2.6.24-3 for Sharp bootloader -- Get the right kernel(s) here: http://yonggun.tistory.com/68 zImage.bin.hda1~4 (Debian rootfs on the internal microdrive/CF) zImage.bin.mmcblk0p1 (Debian rootfs on the first partition of SD, i.e. /dev/mmcblk0p1, which is the usual device node) zImage.bin.mmcblk0p2 (Question: I'm not sure when we need to boot from /dev/mmcblk0p2) -- Flash the appropriate kernel with this Angstrom's flashing tool (remove the .txt extension before use): for C3000/3100/3200 only
updater.sh.txt ( 5.74K )
Number of downloads: 392or for C1000 only
updater.sh.txt ( 11.46K )
Number of downloads: 216-- Upon successful flashing, the system will automatically reboot back into the Debian rootfs (the main system). 3.2 Install kexec -- kexec enables the Zaurus to multiboot different kernels (and so different distros or "ROMs") -- You can use either: The Angstrom package: http://www.angstrom-distribution.org/unsta...-r1_armv5te.ipk To install: CODE dpkg -i --force-architecture kexec-tools_1.101-r1_armv5te.ipk OR My .deb package
kexec_tools_20080227_1_armel.deb ( 44.92K )
Number of downloads: 140To install: CODE dpkg -i kexec-tools_20080227-1_armel.deb 3.3 Use kexec to boot up the subsystem in Debian pdaXrom -- Copy the kernel you use to flash in 2.2 to a desired path (the stock kernel can be find inside the "tools.tar" file) -- Rename the kernel image to avoid confusing different kernels. Let's say we change it to "pdax_zImage.bin". Copy this kernel to your home ( ~/ ) directory. -- Run this script outside X
boot_pdax.sh.txt ( 1.58K )
Number of downloads: 116(again, remove the .txt extension before use) (This script will first stop (most of) the running services/processes, then unmount the filesystems and remount the current root partition as read-only, before actually loading and booting into the new kernel.) Sharp/Cacko rom -- Copy the kernel you use to flash in 2.1 to a desired path -- Rename the kernel image to avoid confusing different kernels. Let's say we change it to "sharp_zImage.bin". Copy this kernel to your home ( ~/ ) directory. -- Run this script outside X
boot_sharp.sh.txt ( 1.58K )
Number of downloads: 143(again, remove the .txt extension before use) (This script will first stop (most of) the running services/processes, then unmount the filesystems and remount the current root partition as read-only, before actually loading and booting into the new kernel.) Note: A quick and dirty way is: CODE kexec -l /PATH/TO/KERNEL_FILENAME kexec -e (The catch here is kexec will start booting up the subsystem without first stopping the running services/processes and unmounting the filesystems, especially the root, which may cause filesystem issues and during later booting fsck may complain about this). To return to the main system (Debian), just reboot. 4. Access the Debian filesystem from the subsystem in NAND Sharp/Cacko rom: -- The partitions on the internal disk may not be mounted automatically. -- You can either mount them manually (mount /dev/hdaX /mnt/SOMETHING), or add new entries in /etc/fstab pdaXrom: -- The internal disk (/dev/hda1) is mounted to /mnt/ide by default; so the Debian filesystem is totally accessible in pdaXrom! -- Card in the CF slot: /dev/hdc1 -- SD: /dev/mmcda1 Note: How about accessing the content in flash? According to http://www.oesf.org/forum/index.php?showtopic=18104 using the kernel modules of 2.6 may destroy content in flash. I seem to run into this in my experiments. So I removed the section on this for safety. One workaround is to symlink/copy/move stuff, such as documents and even the whole home/ directory, from the flash area to some other media, such as a separate partition on the internal disk/SD. Then the things put there will be accessible from Debian. 5. Enable booting Debian on the SD card It's sometimes more convenient to play/experiment with the Debian rootf on a separate media (i.e. a kinda sandbox) without the risk of breaking the main system. In other words, now I have a tri-booting environment. 5.1 Prepare a Debian rootfs on the SD card (just a simple matter of extracting a rootfs tarball!) (= 1.1) 5.2 Extract the kernel 2.6.24 modules (= 1.2) 5.3 Grab the kernel image file. It is either zImage.bin.mmcblk0p1 or zImage.bin.mmcblk0p2. (The first one seems more common.) Rename it to something like "debian_sd_zImage.bin" to avoid confusing different kernels (zImage.bin). (= 3.1). Put it at the root of the SD card. 5.4 Load the Debian rootfs on SD like the way described in 3.3. You need to edit that attached booting script to boot the debian kernel. 5.5 Just do the adjustments accordingly to suit your purposes, such as installing kexec, copy the kernels (zImage.bin) for the other rootfs, etc., in the Debian rootfs on the SD. That means you can practically cycle thru different distros/ROMs by using the same procedure (running kexec). ======================================================== It would certainly be great if someone can provide the details of how to install other distros/ROMs (particularly Angstrom and Cacko) on SD. If successful, we can use our lovely Zaurus to boot up most (if not all) available systems. It would be even better if OpenBSD can be installed on SD... (at one time there was a dirty pdaXii/OpenBSD dualbooting setup, modifying mathemajikian's Cacko/OpenBSD dualbooting solution. But There ought to be a more straightforward and cleaner way.) One problem in 4.3: I cannot access several directories including /etc, /home, /mnt, /root, etc. Could this be a matter of mount options? Any input is much appreciated! Have FUNTM! This post has been edited by ZDevil: Apr 16 2008, 12:25 AM
Reason for edit: update
Attached File(s)
|
|
|
|
![]() |
Mar 26 2008, 02:06 PM
Post
#2
|
|
|
Group: Members Posts: 2,003 Joined: 16-April 04 From: the Netherlands && /dev/null Member No.: 2,882 |
Just updated the first post with instructions to setting up dualbooting Sharp/Cacko and Debian. Have fun!
|
|
|
|
Mar 26 2008, 02:29 PM
Post
#3
|
|
|
Group: Members Posts: 218 Joined: 12-February 06 From: Tokyo Member No.: 9,124 |
Thanks for the update!
2 Comments: - is there a way to avoid re-installing sharp/cacko for those already using it? - in the last section your explanation seems to mix cacko and pdaXrom together I can't wait to dualboot! |
|
|
|
Mar 26 2008, 02:57 PM
Post
#4
|
|
|
Group: Members Posts: 2,003 Joined: 16-April 04 From: the Netherlands && /dev/null Member No.: 2,882 |
2 Comments: - is there a way to avoid re-installing sharp/cacko for those already using it? - in the last section your explanation seems to mix cacko and pdaXrom together Actually you don't have to reinstall sharp/cacko in NAND if they are already working. Just make sure the Debian rootfs is placed properly on the internal disk, and then reflash a kexec-friendly kernel for Debian (yonggun, angstrom, poky). Reboot, and you have a dualbooting setup. btw what is mixed up and where? There are two separate sample scripts for booting pdaX and sharp/cacko. I've only updated the notes up to section 3. I am still having issues with accessing the NAND space in Debian (simply put, the mtd modules seem to handle NAND differently than then roms -- a partitioning issue? Also in Sharp/Cacko /dev/hda1 is mounted as read-only. Any solution?) QUOTE I can't wait to dualboot! Of course! With sharp bootloader and kexec, the Z is now capable of juggling different distros with great ease. |
|
|
|
ZDevil Dualbooting/multiplebooting With Kexec! Mar 1 2008, 08:51 AM
urkden Thank you very much for this HowTo. It's very ... Mar 1 2008, 10:02 AM
2or0 This is quite nice howto unlike mine. Mar 1 2008, 02:22 PM
pelrun You're essentially doing a "kexec -f... Mar 1 2008, 03:47 PM
matthis Thank you very much!
I tried this with Sharp ... Mar 1 2008, 04:49 PM

ZDevil QUOTE(matthis @ Mar 2 2008, 01:49 AM) Tha... Mar 1 2008, 05:06 PM

matthis Sharp rom expects hdc1 and hdc2 as ext3 and hdc3 h... Mar 1 2008, 09:19 PM

ZDevil QUOTE(matthis @ Mar 2 2008, 06:19 AM) Sha... Mar 5 2008, 01:32 AM
ZDevil QUOTE(pelrun @ Mar 2 2008, 12:47 AM) You... Mar 2 2008, 02:31 AM
gojira QUOTE(pelrun @ Mar 2 2008, 12:47 AM) You... Dec 12 2008, 11:55 PM
pasteur does updater.sh attached work on c1000 too? Mar 2 2008, 12:16 AM
ZDevil QUOTE(pasteur @ Mar 2 2008, 09:16 AM) doe... Mar 2 2008, 12:47 AM
pasteur QUOTE(ZDevil @ Mar 2 2008, 05:47 PM) QUOT... Mar 2 2008, 01:05 AM
Snappy QUOTE(pasteur @ Mar 2 2008, 05:05 PM) QUO... Mar 2 2008, 03:58 AM
pasteur QUOTE(Snappy @ Mar 2 2008, 08:58 PM) QUOT... Mar 5 2008, 07:06 AM
ZDevil @matthis:
Thanks for your post to remind me of the... Mar 2 2008, 01:05 AM
ZDevil I have corrected something in the pdaX boot script... Mar 2 2008, 03:31 AM
ZDevil I ran into a strange problem:
In the beginning of... Mar 7 2008, 02:49 PM
matthis I wanted to try to do the MAKEDEV console thing to... Mar 13 2008, 04:05 AM
ZDevil Another question about using the yonggun kernel (s... Mar 23 2008, 03:55 AM
2or0 QUOTE(ZDevil @ Mar 23 2008, 03:55 AM) Ano... Mar 23 2008, 07:06 AM
ZDevil So will there be new yonggun kernels for this?
B... Mar 23 2008, 07:36 AM
born2wonder QUOTE(ZDevil @ Mar 23 2008, 07:36 AM) BTW... Mar 23 2008, 09:37 AM
jocasmi It's an interesting site.
Thanks Mar 24 2008, 01:57 PM
adf Does anyone have cacko/debian dualbooting smoothly... Mar 26 2008, 06:01 PM
ZDevil Here is taken from my old notes on Sharp rom (hope... Mar 26 2008, 09:19 PM
adf QUOTE(ZDevil @ Mar 26 2008, 09:19 PM) Her... Mar 26 2008, 10:40 PM
ZDevil Actually it is pretty flexible to set up dualbooti... Mar 27 2008, 12:50 AM
matthis Woops sorry ZDevil, you hadn't mixed up anythi... Mar 27 2008, 01:13 AM
ZDevil No worry. I just fear the notes may make more toas... Mar 27 2008, 01:42 AM
matthis Alas, following your instructions with Sharp rom a... Mar 27 2008, 02:07 AM
speculatrix QUOTE(matthis @ Mar 27 2008, 11:07 AM) Al... Apr 10 2008, 02:51 PM
matthis Just out of curiosity and complete lack of knowled... Apr 11 2008, 08:41 PM
ZDevil In which system do you get the error? Sharp or Deb... Mar 27 2008, 02:17 AM
ZDevil Hey, I've found the way to boot Cacko without ... Mar 27 2008, 11:45 AM
speculatrix QUOTE(ZDevil @ Mar 27 2008, 07:45 PM) Hey... Mar 27 2008, 03:49 PM
pelrun Heh - triplebooting cacko/pdaxii/debian is on my l... Mar 27 2008, 05:41 PM
matthis QUOTE(pelrun @ Mar 27 2008, 05:41 PM) The... Mar 28 2008, 01:06 AM
ZDevil Just uploaded a new "Cacko HDD Fix" scri... Mar 28 2008, 08:26 AM
malik did i get it right? i can keep my cacko installati... Mar 28 2008, 02:10 PM
ZDevil QUOTE(malik @ Mar 28 2008, 11:10 PM) did ... Mar 28 2008, 02:39 PM
matthis I was interested in kexec from 2.4 as well, there ... Mar 28 2008, 04:21 PM
ZDevil QUOTE(matthis @ Mar 29 2008, 01:21 AM) I ... Mar 28 2008, 04:41 PM
matthis OK I wanted to try 2.4 kexec backport so I compile... Mar 28 2008, 06:07 PM
ecc_hy The updater.sh is not suitable for C1000. You may ... Mar 28 2008, 07:32 PM
ZDevil @ecc_hy:
This confirms my fear. I also got my flas... Mar 28 2008, 10:34 PM
malik @matthis> did you make any progresses on this s... Apr 5 2008, 01:24 AM
matthis About kexec for 2.4: no progress. This is how it w... Apr 5 2008, 06:05 AM
glac Hello all,
I have a "dualboot" configur... Apr 7 2008, 09:12 AM
speculatrix QUOTE(glac @ Apr 7 2008, 06:12 PM) I have... Apr 7 2008, 12:00 PM
glac Hello all,
No problems "kexecuting" Deb... Apr 7 2008, 07:00 PM
ZDevil QUOTE(glac @ Apr 8 2008, 05:00 AM) No pro... Apr 7 2008, 11:05 PM
speculatrix can any suggest anything I can try to stop cacko k... Apr 12 2008, 11:48 AM
ZDevil QUOTE(speculatrix @ Apr 12 2008, 09:48 PM... Apr 13 2008, 12:32 AM
ZDevil I'm still trying to figure out why from time t... Apr 13 2008, 12:34 AM
same the quick way to dual boot debian (SD) and pdaxrom... May 15 2008, 02:45 AM
pasteur In pdaxrom, Is it possible to allocate the whole 1... May 23 2008, 09:17 AM
Capn_Fish Which version? You can use the beta 3 flasher to r... May 23 2008, 09:24 AM
pasteur QUOTE(Capn_Fish @ May 24 2008, 02:24 AM) ... May 24 2008, 02:05 AM
matthis I just tried cackofix0.2 and can't reboot shar... May 24 2008, 07:30 PM
linx Hello there I just tried to get my dualbooting zau... May 28 2008, 02:16 PM
AltairTK Hello, i have a little problem with this procedure... Jun 12 2008, 06:54 AM
xamindar Anyone still do this?
I tried following "2.1... Jul 3 2008, 04:06 AM
nickk9 I have the same problem as linx has. But i have C... Jul 13 2008, 01:17 AM
xamindar Ok, I have a working debian system on my internal ... Jul 14 2008, 03:14 PM
pelrun The solution is exactly the same as for my pdaxrom... Jul 14 2008, 10:44 PM
matthis @Pelrun
Could you explain this in more detail ple... Jul 14 2008, 11:36 PM
xamindar QUOTE(pelrun @ Jul 14 2008, 11:44 PM) The... Jul 14 2008, 11:56 PM
matthis OK, I found the way to go! Thanks Pelrun for t... Jul 15 2008, 05:25 PM![]() ![]() |
|
Lo-Fi Version | Time is now: 18th May 2013 - 05:51 AM |