I have managed to get the Kindle 3.1 software to run on a Kindle 2. Unlike what I expected, the software runs fine with no slowdowns (it is slower then the K3, but on 2.5.8, it is also slower). I've tested the internet browser, pdf reader, audiobook reader, etc. Everything works just as it does on the Kindle 3.

There are TWO things you can do to help test.

Kindles
If you have a broken/unwanted Kindle that you can donate for science, PM me. I'm looking for K2i, DX, DXi, DXGs.

Beta Test
You can also help beta test the packages. Installation directions are found in README.txt. Recovery directions are also in there. With my custom kernel, you do not need TTL access to recover from most errors. This also makes your Kindle mostly brick-proof. Please post the logs found in the output folder after you use this even if everything went well.

YOU MUST PROVIDE ME WITH LOGS IF YOU WANT HELP/SUPPORT, OTHERWISE I HAVE NO IDEA WHAT'S WRONG!!! (sorry about the annoying text, but NOBODY seems to understand this fact.)

Confirmed Working
Kindle 2 US
Kindle 2 International
Kindle DX US
Kindle DXG

Boy, Yifanlu, I really wish I could help with this! I am afraid I lack the skills to be of assistance, but I am really excited about your work, and can't wait to give it a try on one of my 2 Kindle 2's. As I wrote elsewhere, I really like the Kindle 2 for its sturdy construction and full keyboard, so I bought a 2nd (reconditioned) one. This way, if I mess something up, I have a backup.

Progress report:
One of the things I want to do is allow the Kindle to create it's own update. So the Kindle 3 can generate the Kindle 2 update using its own files. (Otherwise, you have to copy all the files from the K3 to your computer and make an update with kindle_update_tool.py). The hard thing about creating a K3 update is Amazon's "encryption" method (left shift 4 OR right shift 4 & 0xff ^ 0x7a). Igor wrote the nice kindle_update_tool.py, but it would be stupid to port python to Kindle just for this one thing. So what I did was disassemble amazon's "dm" (decrypt update) and modified it to a new file "md" (encrypt update). Here's the changes

Another progress update. The installer is 2/3 complete. Currently, I am able to create a recovery package directly on the Kindle. The process currently is:

1) Copy "update_make_image.bin" to Kindle 2
2) Generates "output/update_recover_k2_os.bin" and "output/rootfs.img" and also installs recovery kernel. Copying "update_recover_k2_os.bin" to the root and you can restore your Kindle to whatever it was before.
4) Copy rootfs.img and update_make_image.bin to Kindle 3
5) Kindle 3 takes rootfs.img and generates "update_k2_os.bin" which will install Kindle 3.1 when you copy it back to the Kindle 2.

It's done! Well, sort of. It's done, but untested. I'm going to release the first alpha, but here are the current limitations:

-ONLY supports upgrading Kindle 2 US 2.5.8 to 3.1 using a Kindle 3 3G 3.1 (All conditions version, model, etc must be met)
However, you can easily change the code to support other versions/models, but I want to concentrate on getting one thing right at a time. I made sure no model/version specific code exists, so you can rename stuff to produce other packages, but if you are knowledged enough to do this, I don't need to give directions.
-Slow. It WILL take 2 hours. Luckly, you don't have to stare at it. Just keep it charged.
-You need 900MB of free space on the Kindle 2.
-You need 1.2GB of free space on the Kindle 3.
-Make sure to back up your Kindle 2!!!

DO NOT PROCEED UNLESS YOU KNOW HOW TO RECOVER! I TRY TO MAKE IT BRICK PROOF, BUT IT IS UNTESTED

To use:
1) Copy "update_k2_2.5.8_prepare_kindle.bin" to your Kindle 2 US. It must be version 2.5.8 (555370010)
2) Run the updater. The updater will create a rootfs image and a backup recovery package (for restoring beck to 2.5.8). It will also flash the patched recovery kernel for running unsigned recovery packages. This will take around 45 minutes to complete (the compression takes the most time).
3) After the updater completes, connect the kindle 2 to the computer and open up the folder "output" on the usb drive. You'll find two files: update_restore-k2-os.bin and rootfs.img. Keep update_restore-k2-os.bin safe, as you need that to restore 2.5.8.
4) Copy rootfs.img from the Kindle 2's output folder and "update_k3g_3.1_create_updater.bin" from the download to the root of the Kindle 3's usb partition.
5) Run the update. This will take about an hour. Do NOT interrupt!
6) After that completes, connect your Kindle 3 back to your computer and you'll find "update_k2-os.bin" and "tts-files.tar" in the output folder.
7) Copy those two files to the root of the Kindle 2 (you can delete the output folder from Kindle 2)
8) Restart your kindle 2 and it'll update.

NOTES:
-Check the log files in the output folder to see what steps completed (if it fails)
-The kindle will display progress and error messages on the lower right hand corner of the screen.
-If you do not want to flash the recovery kernel because you flashed it before (recovery kernel is REQUIRED for upgrading), create a file named "NO_KERNEL" on the root of the USB partition.
-If you want to skip file checks, create a file named "NO_VALIDITY_CHECKS" on the root of the USB partition to bypass the md5 checks.

2. How to uninstall or undo this thing on Kindle 2 (including remove the backup recovery package)? Because I afraid that if I feel doesn't like software v3.1 for what ever reason, I can't revert back my K2 to the original state.

3. After the upgrade K2 to run v3.1 software, what will happen if Amazon release an update of K3 software?