Android-X86 upon ThinkPad Series

83 views
Skip to first unread message

Samuel

unread,
Jan 12, 2009, 10:06:40 AM1/12/09
to android-porting
[Title]
Enabling android-x86 upon ThinkPad Series with miscellaneous functions


[Summary]
As you see the same as what above, here's this topic mainly involved
in personal experiences under a series of thinkpad laptop/pc with
android -x86 by google in the cupcake branch of android's source tree
by virtue of miscellaneous ways, such as a android-bootable usb/hd or
a virtualization software (e.g. virtalbox/vmware) or others!!
Meanwhile, several special and further topics are also discussed, most
likely relating to the android's distro for laptop/pc, the community
of laptop and mobile phone under android. Additionally, many thanks to
these members in the community, namely android-porting, especially
those members in the following threads,
1> Android x86?
http://groups.google.com/group/android-porting/browse_thread/thread/ab553116dbc960da

2> Howto build Android full source for X86 Architecture like EeePC
(ASUS)
http://groups.google.com/group/android-porting/browse_thread/thread/66862bdb52dac936

3> x86 AndroidのUSBブートイメージを作成
http://d.hatena.ne.jp/naka-3/20081229/1230541175

Finally, any discussions or tips or suggestions or appendixes are
really appreciated!! In the meantime, please correct me anywhere I
have taken mistakes!!

-- Enjoying "brainstorm"!!


[Table of Content]
0. Introduction
1. Android source tree considerations
2. Booting up android from usb/hd
3. Booting up android by virtualization software
4. Distributions of android
5. Combination of laptop/pc and phone, both wireless and mobile


[0. Introduction]
0.1. Hardware
ThinkPad series with x86 architecture. In the case here, it's mainly
focusing on ThinkPad R60.
CPU: Intel(R) Core(TM)2 1.66GHz
RAM: 512 MiB
ROM: 60 GiB
Audio:Intel 82801G (ICH7 Family) HDAC
Display/Video: ATI Mobility Radeon X1300
Wired Network: Broadcom NetXtreme BCM5751M Gigabit Ethernet PCI
Express (rev 21)
Wireless Network: Intel PRO/Wireless 3945ABG Network Connection (rev
02)

0.2. Software
You can select what you prefer as your os running on one ThinkPad. In
the case here, it's primarily concentrating on Ubuntu 8.04 (Hardy)
$ uname -a
Linux samuel-laptop 2.6.24-22-generic #1 SMP Mon Nov 24 18:32:42 UTC
2008 i686 GNU/Linux

$ gcc --version
gcc (GCC) 4.2.4 (Ubuntu 4.2.4-1ubuntu3)


[1. Android source tree considerations]
1.1.Prerequisites
In order to set up your local environment upon your os before getting
and compiling successfully android source tree with more details,
please refer to the following link,
https://sites.google.com/a/android.com/opensource/download

1.2. Synchronization
$ mkdir ~/project/cupcake && cd ~/project/cupcake
$ repo init-u git://android.git.kernel.org/platform/manifest.git-b
cupcake
$ repo sync
$ vi ./.repo/local_manifest.xml
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="platform/vendor/asus/eee_701" path="vendor/asus/
eee_701"/>
</manifest>
$ repo sync

1.3. Compiling android
$ TARGET_ARCH=x86 TARGET_PRODUCT=eee_701 DISABLE_DEXPREOPT=true make -
j2 installer_img


[2. Booting up android from usb/hd]
2.0. Hardware
Mobile Disk (with usb 2.0): sdb | sdb1 | sdb2 | sdb3

2.1. Creating image
$ sudo su
# mkdir /mnt/andusb
# mount -t ext3 /dev/sdb3 /mnt/andusb
# cp -fr ./out/target/product/eee_701/root/* /mnt/andusb/
# cp -fr ./out/target/product/eee_701/system/* /mnt/andusb/system/
# cp -fr ./out/target/product/eee_701/data/* /mnt/andusb/data/
# mkdir /mnt/andusb/boot
# mkinitramfs -o /mnt/andusb/boot/initrd.img-2.6.27-android 2.6.27-
android
# cp ./kernel/arch/x86/boot/bzImage /mnt/andusb/boot/vmlinuz-2.6.27-
android
# chmod 666 /mnt/andusb/system/usr/keylayout/*
# rm /mnt/usb/system/app/SoftKeyboard.apk
# wget http://junkyard.googlecode.com/files/init.rc
# cp init.rc /mnt/andusb/

2.2. Grub installation
# mkdir /mnt/andusb/boot/grub
# grub-install --root-directory=/mnt/andusb --no-floppy /dev/sdb
# wget http://junkyard.googlecode.com/files/menu.lst
# cp menu.lst /mnt/andusb/boot/grub/

2.3. Reboot
# reboot

2.4. Checking booting order
First, going into the setting of biso during the startup before
checking your boot priority order, and then selecting the suitable usb
(like +USB HDD) as your first booting option!!


(TO-BE-CONTINUING)


P.S. it seems that i can't boot up android from mobile disk with
usb2.0 according to the instructions above!! please help me out!!




Android Zaurus

unread,
Jan 13, 2009, 3:04:46 AM1/13/09
to android-porting
Hi,

Did you set a bootable flag to your target partition?
I'm not sure though, it sounds like your BIOS doesn't
recognize your USB HDD as a boot device.

Good luck.


On 1月13日, 午前12:06, Samuel <samuel.om...@gmail.com> wrote:
> [Title]
> Enabling android-x86 upon ThinkPad Series with miscellaneous functions
>
> [Summary]
> As you see the same as what above, here's this topic mainly involved
> in personal experiences under a series of thinkpad laptop/pc with
> android -x86 by google in the cupcake branch of android's source tree
> by virtue of miscellaneous ways, such as a android-bootable usb/hd or
> a virtualization software (e.g. virtalbox/vmware) or others!!
> Meanwhile, several special and further topics are also discussed, most
> likely relating to the android's distro for laptop/pc, the community
> of laptop and mobile phone under android. Additionally, many thanks to
> these members in the community, namely android-porting, especially
> those members in the following threads,
> 1> Android x86?http://groups.google.com/group/android-porting/browse_thread/thread/a...
>
> 2> Howto build Android full source for X86 Architecture like EeePC
> (ASUS)http://groups.google.com/group/android-porting/browse_thread/thread/6...
>
> 3> x86 AndroidのUSBブートイメージを作成http://d.hatena.ne.jp/naka-3/20081229/1230541175
> please refer to the following link,https://sites.google.com/a/android.com/opensource/download
> # wgethttp://junkyard.googlecode.com/files/init.rc
> # cp init.rc /mnt/andusb/
>
> 2.2. Grub installation
> # mkdir /mnt/andusb/boot/grub
> # grub-install --root-directory=/mnt/andusb --no-floppy /dev/sdb
> # wgethttp://junkyard.googlecode.com/files/menu.lst

Samuel

unread,
Jan 13, 2009, 6:32:45 AM1/13/09
to android-porting
Hi, Android Zaurus,

as you supported, I never have set a bootable flag for this bootable
partition, namely /deb/sdb3, in the sdb as showed as below,
$ sudo fdisk -l
Device Boot Start End Blocks Id System
/dev/sdb1 1 2550 20482843+ c W95 FAT32
(LBA)
/dev/sdb2 2551 5100 20482875 c W95 FAT32
(LBA)
/dev/sdb3 5101 9729 37182442+ 83 Linux

In order to do a mark with a boot flag upon /dev/sdb3, typing in the
following instructions,
$ sudo umount /dev/sdb1
$ sudo umount /dev/sdb2
$ sudo umount /dev/sdb3

$ sudo fdisk /dev/sdb
After typing in the command of "sudo fdisk /dev/sdb", you will be
presented with the FDISK command prompt, as seen below,
Command (m for help):
And then press "A" to make this partition (i.e. /deb/sdb) active and
hit the key of "enter", you will be again showed that the following
command prompt,
Partition number (1-4):
According to my own conditions, "3" will be pressed to set a boot flag
into the selected partition, that is /deb/sdb3, and next hit the key
of "enter", in the long run you will be once more presented with the
command prompt below,
Command (m for help):
In the final step, press "W" on the keyboard and hit the key of
"enter" to write a new partition table with the just changed features
and exit FDISK command prompt back to terminal prompt!!

After successfully completing the above steps to set a bootable flag
for a selected partition, you should see the following outcome with an
asterisk "*" in the column of "boot" under the just selected partition
after typing in "sudo fdisk -l" and pressing the key of "enter" in the
terminal prompt,
$ sudo fdisk -l
Device Boot Start End Blocks Id System
/dev/sdb1 1 2550 20482843+ c W95 FAT32
(LBA)
/dev/sdb2 2551 5100 20482875 c W95 FAT32
(LBA)
/dev/sdb3 * 5101 9729 37182442+ 83 Linux


Note that it seems that i can't yet boot up android from a bootable hd
(perhaps likely it's bootable), please help me out!!

Chen Yang

unread,
Jan 13, 2009, 10:23:50 AM1/13/09
to android...@googlegroups.com
Hi Samuel:
It seems that you need to modify the menu.lst to reflect the
correct root device, in your case:
root (hd0,0) -> change to (hd0,2)
kernel /boot/vmlinuz-2.6.27-android root=/dev/sda1 init=/init rw
selinux=0 vga=788 quiet -> change the rppt=/dev/sda1-> /dev/sdb3 ,and
add one option: rootwait or rootdelay=6
initrd /boot/initrd.img-2.6.27-android
See whether it helps or not.
--
Chen

Samuel

unread,
Jan 13, 2009, 12:32:23 PM1/13/09
to android-porting
Hi, Chen,

At first, thank you for your helping!! I consider that your helps are
so helpful to me, though i can't t still boot up android from external
mobile hard disk so far!! But all mistakes are due to me!!

Under the helps of you, i have modified some places in the menu.lst
for android where as you mentioned, as showed below,
(default)
title Android
root (hd0,0)
kernel /boot/vmlinuz-2.6.27-android root=/dev/sda1 init=/init rw
selinux=0 vga=788 quiet
initrd /boot/initrd.img-2.6.27-android

(updated)
title Android
root (hd0,2)
kernel /boot/vmlinuz-2.6.27-android root=/dev/sdb3 rootdelay=10 init=/
init rw selinux=0 vga=788 quiet
initrd /boot/initrd.img-2.6.27-android

After that above, reboot my laptop!! However, there is not fortunate
enough that I'm rejected the door of android during startup!!
Additionally, I'm presented with only an error information from the
prompt, as seen bellow, and then always stuck at the prompt!!
error loading operation system

For further troubleshooting, I list all directories and files,
necessary and available, under the mount-point, namely /mnt/andusb
(the counterpart of /dev/sdb3),
drwxr-xr-x 12 root root 4096 2009-01-06 13:22 system
drwx------ 2 root root 16384 2009-01-06 13:11 lost+found
-rw-r--r-- 1 root root 7579 2009-01-06 13:37 init.rc
drwxr-xr-x 4 root root 4096 2009-01-06 13:25 data
drwxr-xr-x 3 root root 4096 2009-01-06 13:37 boot

/mnt/andusb/boot
drwxr-xr-x 2 root root 4.0K 2009-01-14 00:12 grub
-rw-r--r-- 1 root root 3.7M 2009-01-06 13:29 initrd.img-2.6.27-android
-rw-r--r-- 1 root root 2.2M 2009-01-06 13:32 vmlinuz-2.6.27-android

/mnt/andusb/boot/grub:
-rw-r--r-- 1 root root 3.9K 2009-01-14 00:12 menu.lst
-rw-r--r-- 1 root root 3.9K 2009-01-14 00:11 menu.lst~

According to the above result, It seems that there is lack of files in
the directory of "grub", right?


As of now, I can't yet boot up android from external mobile hard
disk!! Most likely, I should review from the starting the entire
processes of enabling android by virtue of the external mobile hard
disk with usb 2.0!! If possible, please help me do a double-check for
that!!


On Jan 13, 11:23 pm, "Chen Yang" <sunsety...@gmail.com> wrote:
> Hi Samuel:
> It seems that you need to modify the menu.lst to reflect the
> correct root device, in your case:
> root (hd0,0) -> change to (hd0,2)
> kernel /boot/vmlinuz-2.6.27-android root=/dev/sda1 init=/init rw
> selinux=0 vga=788 quiet -> change the rppt=/dev/sda1-> /dev/sdb3 ,and
> add one option: rootwait or rootdelay=6
> initrd /boot/initrd.img-2.6.27-android
> See whether it helps or not.
> --
> Chen
>
On Jan 13, 11:23 pm, "Chen Yang" <sunsety...@gmail.com> wrote:
> Hi Samuel:
> It seems that you need to modify the menu.lst to reflect the
> correct root device, in your case:
> root (hd0,0) -> change to (hd0,2)
> kernel /boot/vmlinuz-2.6.27-android root=/dev/sda1 init=/init rw
> selinux=0 vga=788 quiet -> change the rppt=/dev/sda1-> /dev/sdb3 ,and
> add one option: rootwait or rootdelay=6
> initrd /boot/initrd.img-2.6.27-android
> See whether it helps or not.
> --
> Chen
>

Chen Yang

unread,
Jan 13, 2009, 1:46:53 PM1/13/09
to android...@googlegroups.com
Hi Samuel:
It seems that grub cannot access the blocks beyond 1024 directly,
that may be the reason of your failure. Your linux partition starts
beyond that limit. You can find one usb thumb drive to have a test
Be sure to add rootwait or rootdelay=6 in kernel commans line.
Hope it helps!
--
Chen
>> >> > P.S. it seems that i can't boot up android from mhobile disk with

Samuel

unread,
Jan 14, 2009, 6:19:46 AM1/14/09
to android-porting
Hi, Chen,

For the restriction you mentioned that a partition over 1024 blocks
can't be accessed by grub, I have more confusion about that after
comparing with this partition upon which local grub is resided in the
internal hard disk (i.e. /dev/sda) that has been running ubuntu 8.04.
For more information, you can see below,
$ sudo fdisk -l
Disk /dev/sda: 60.0 GB, 60011642880 bytes
255 heads, 63 sectors/track, 7296 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x131294fa

Device Boot Start End Blocks Id System
/dev/sda1 * 1 1824 14651248+ 83 Linux
/dev/sda2 7048 7296 2000092+ 82 Linux swap /
Solaris
/dev/sda3 1825 7047 41953747+ 5 Extended
/dev/sda5 1825 7047 41953716 83 Linux

Partition table entries are not in disk order

Disk /dev/sdb: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x63e16945

Device Boot Start End Blocks Id System
/dev/sdb1 1 2550 20482843+ c W95 FAT32
(LBA)
/dev/sdb2 2551 5100 20482875 c W95 FAT32
(LBA)
/dev/sdb3 * 5101 9729 37182442+ 83 Linux

Furthermore, what root-causes and which phase will cause that error
information, "error loading operating system"?

Finally, I really expect that I can start up android from the external
hard disk with usb 2.0!! So, please give me a hand for that!!



On Jan 14, 2:46 am, "Chen Yang" <sunsety...@gmail.com> wrote:
> Hi Samuel:
> It seems that grub cannot access the blocks beyond 1024 directly,
> that may be the reason of your failure. Your linux partition starts
> beyond that limit. You can find one usb thumb drive to have a test
> Be sure to add rootwait or rootdelay=6 in kernel commans line.
> Hope it helps!
> --
> Chen
> ...
>
> read more >>

Chen Yang

unread,
Jan 14, 2009, 8:20:21 AM1/14/09
to android...@googlegroups.com
oh my fault. This 1024 limit was solved long time ago. :)

From what I have seen, the 2.2 seems problematic, you haven't
installed those boot stuff to the target partition as I can see your
steps:
2.2. Grub installation
# mkdir /mnt/andusb/boot/grub
# grub-install --root-directory=/mnt/andusb --no-floppy /dev/sdb
# wget http://junkyard.googlecode.com/files/menu.lst
# cp menu.lst /mnt/andusb/boot/grub/

Firstly try to mount your /dev/sdb3 to some directory:
#mkdir /mnt/sdb3
#mount /dev/sdb3 /mnt/sdb3
#cd /mnt/andusb
#cp -raf boot /mnt/sdb3
#umount /mnt/sdb3

Then try to reboot to see whether it works or not.
--
Chen
Reply all
Reply to author
Forward
0 new messages