Name: Chen Cao
Contact/Email: dongmu AT freenode/oftc
Background: I am a Ph.D Student of University of Chinese Academy of Sciences. My major is information security and now my research focus is on Mobile/Android security. I used to work on a project called "Memory Forensic". My job is to extract information from Linux memory dump. When the project was finished, I had a comprehensive understanding about Linux memory manager and some other things about Linux system. Besides, I became a Linux enthusiast that I recommended Linux to my friends and classmates. I have worked on Android security for about one year and have read more than 100 papers on Android and its security. What's more, I have read and modified some components of Android system to have a better understanding. These components include Dalvik, Zygote, installd and so on. So, I am very familiar with Android system and have a solid foundation of knowledge of this project. I am also up on Android Application Development. I used to develop an Android app for my friend's startup company. In addition, I have three Android devices to hack on, including Google Nexus 7, Samsung Note II and Samsung Galaxy SIII.
Project title: Integrate Debian with Android
Project details: This project focuses on providing a good experience for Android users based on an existing project -- "Lil'Debi". Lil'Debi is an easy Debian chroot running on Android designed to do trusted installs. It builds up a whole Debian chroot on your phone entirely using debootstrap. The user chooses the release, mirror, and size of the disk image, and clicks install. It validates every package using the official Debian repository keys, which are included in the app. It will also check and update a SHA1 checksum to make sure your debian install has not be tampered with. Then it has a simple chroot manager that fscks your disk, mounts/unmounts things, starts/stops sshd if you have it installed, etc. Lil' Debi works with as few modifications to the Android system as possible. Currently, it only adds a /bin symlink, and a /debian mount directory. It does not touch /system at all.
At present, Lil'Debi's urgent improvement or the key aspect of this project is figuring out how to make the Debian choort automatically and transparently start and stop when Android starts and stops. As now Debian is started by Android init process, when Debian called rc script to stop the system, Android is stopped also which is not appropriate. In addition to this improvement, some other improvement would be done in this project such as: "install onto an ext4 partition on the sdcard", "wifi autostart pref - start debian when wifi starts", "check supported filesystems and offer them as options", "install onto USB OTG thumb driver (optional)".
Synopsis: This project would provide a transparent and tightly integrated Debian installed on Android device.
Benefits to Debian:
- make Debian more easy to be installed on Android device
- allow user to use Debian to do their jobs on Android device
- a new passionate member into Debian community who starts his contribution from this project
- Final release builds, a new version of Lil'Debi (including source code and binary), which make Debian chroot automatically and transparently start and stop when Android starts and stops. Furthermore, some other integration includes: install onto an ext4 partition on the sdcard", "wifi autostart pref - start debian when wifi starts", check supported filesystems and offer them as options", "install onto USB OTG thumb driver (optional)"
- All complete wiki pages including install instructions, architecture documents, diagrams, etc.
- Bug reports
- Test builds
- Patches to debootstrap or cdebootstrap (optional)
Project schedule: I already started to get familiar with this project in late February.
Work Period 1 (April 1 - May 1)
- Get to know the community
- read the source code and document of Lil'Debi in detail
- read the buglist of Lil'Debi
- review some knowledge of Debian bootstrap mechanism and chroot
Work Period 2 (May 2 - June 15)
- (May 2 - May 9): Find out how many methods that could make the Debian chroot automatically and transparently start and stop when Android starts and stops
- (May 10 - June 8): Try these methods and write down the process
- (June 9 - June 15): Test the successful methods and Prepare for the next work period
Work Period 3 (June 16 - August 1)
- (June 16 - Jun 30) figure out "check supported filesystems and offer them as options" and do the test
- (July 1 - July 15): figure out "install onto an ext4 partition on the sdcard" and do the test
- (July 16 - July 24): figure out "wifi autostart pref" and do the test
- (July 25 - August 1): figure out "install onto USB OTG thumb driver (optional)" and do the test
Work Period 4 (August 2 - August 22)
- (August 2 - August 11): Test the whole app and figure out the bugs
- (August 12 - August 18): Write and improve the documentation
- (August 19 - August 21): Prepare for the final evaluations
Other summer plans: I will have a 3-day vocation in July.
Why Debian?: I've been a user of Debian, Ubuntu and Arch (mostly Debian on the server and Ubuntu on the PC). But I chose Debian in the end. Except the common reason that Debian is more stable and has a huge number of packages, etc. I want to tell two stories here. The first one occured several months ago. When thinking about a dual-system on my laptop, I chose Ubuntu + Windows first. But I can't install private graphic card driver in Ubuntu. After googling this problem for 3 days, I tried each method that I met and reset many times. In the end, I can't figure out this problem and even didn't know why the problem happened (I knew the reason after a while and that's another story). However, I found that Debian had a complete document about how to install the private graphic card. Besides, I really didn't like the Unity desktop environment and I am a completist. So I changed to Debian and enjoyed it in Xfce desktop environment. The second story happened after an upgrade of the system. One night, After I upgraded the system with apt-get, I found that chromium can't start properly and could only start without sandbox enabled. Then I saw someone asked the same question in Debian mail list and was answered soon by another person (sorry, I can't find the exact email now). It was the new kernel that didn't work well with chromium. After just one day, a new version of kernel had been there for being updated. I was amazed at the reaction speed of the Debian community and this event confirm my choice of Debian. In summary, It would be my honor to be a member of this community.
Are you applying for other projects in SoC?: No.