Hacking Android III

Dalším krokem je vytvoření "virtualního harddisku", na který budu postupně přesouvat jednotlivé Androidí komponenty. Jedná se o soubor, ve kterém jsou "čtyři partišny" naformátované souborovým systémem ext3. V tomto kroku využívám virtuálního stroje v podobě v qemu běžícího Damn Small Linuxu, který jako disk využívá právě onen "virtuální disk". Ale popořádku.

Dalším krokem je vytvoření "virtualního harddisku", na který budu postupně přesouvat jednotlivé Androidí komponenty. Jedná se o soubor, ve kterém jsou "čtyři partišny" naformátované souborovým systémem ext3. V tomto kroku využívám virtuálního stroje v podobě v qemu běžícího Damn Small Linuxu, který jako disk využívá právě onen "virtuální disk". Ale popořádku.

Nejprve vytvořím prázdný soubor o velikosti cca 5*128MB, konkrétní rozpis bude následovat.

 1. $ dd if=/dev/zero of=disk ibs=1024 count=655360

 Potom s tímto diskem nabootuju DSL pomocí qemu

 2. $ qemu -hda disk -cdrom dsl.iso -boot d

V tomto virtuálním stroji potom fdiskem rozdělím tento disk, abych měl na první oblasti sloužící jako root bylo 128M, na druhé, která bude sloužit jako swap/cache bylo taky 128M, na třetí se bude nacházet samotný systém a mělo by postačovat 256M a zbytek bude pro uložení uživatelských dat.

Teď je nutné oblasti naformátova a přidat jurnal (taky uvnitř DSL)

3. $ mkfs.ext2 /dev/hda{1 | 2 | 3 | 4}

4. $ tune2fs -C 1 -L {root | cache | system | user} -j /dev/hda{1 | 2 | 3 | 4}

Dalším krokem je instalace boot loaderu – GRUBu. Na této jednoduchosti jsem zůstal docela dlouho "viset", protože jsem neprováděl dostatečně "RTFM" :-D. Aneb jednoduše řečeno, používal jsem grub-install nacházející se v DSL, ovšem jedná se o verzi 0.91, takže jsem pokaždé končil s hláškou "No setup signature found…". Až jsem si opravdu přečetl jediný thread, bylo jasno a do boot/grub putovaly soubory z verze 0.97. A najednou, všechno v pořádku! Ale pěkně popořadě: první oblast, označenou jako root, využiju i pro umístění adresáře se soubory potřebnými pro zavedení systému – boot. Pro zjednodušení použiju grub-install (musí se jednat o onu verzi 0.97 a vyšší, pokud je použito distribuční jádro dodávané s Androidem – 2.6.27) uvnitř DSL, hda1 je připojeno na /mnt/hda1.

5. $ grub-install –root-directory=/mnt/hda1 –recheck /dev/hda

Teď je potřeba upravit menu.lst a nahrát soubory s jádrem a ramdisk. Obsah mého souboru menu.lst je na následujícím výpisu.

default 0
timeout 10
title Android
root (hd0,0)
kernel /boot/kernel
initrd /boot/ramdisk.img

 Tyto soubory však mám zatím pouze uvnitř mého installer.img, případně v adresáři mydroid/out/target/product/eee_701. Pro jejich přenesení používám namountování mého virtuálního disku pomocí offsetu. Nejprve musím zjistit, kde jednotlivé oddíly začínají. K tomu použiju fdisk uvnitř DSL:

Image Hosted by ImageShack.us

 Offset vypočítám, když vynásobím počáteční sektor 512. Offset prvního oddílu je tedy 63*512=32.256. Tento oddíl teď můžu připojitjako loopback zařízení a zkopírovat do adresáře boot soubory  kernel a ramdisk.

6. $ mount -t ext3 -oloop,offset=32256 disk /mnt/hda1
7. $ cp  ~/mydroid/out/target/product/eee_701/kernel /mnt/hda1/boot
8. $ cp ~/mydroid/out/target/product/eee_701/ramdisk.img /mnt/hda1/boot

Teď je možné disk odpojit a nabootovat jádro pomocí qemu. Nedostaneme ovšem shell, protože tu zatím nejsou nahrané žádné soubory.

9. $ umount /mnt/hda1
10. $ flush
11.  $ qemu -hda disk

Image Hosted by ImageShack.us

 

 

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *