Difference between revisions of "OS: Android - Flash Device"
Onnowpurbo (talk | contribs) |
Onnowpurbo (talk | contribs) |
||
Line 59: | Line 59: | ||
$ emulator | $ emulator | ||
+ | |||
+ | |||
+ | Fastboot is a command line tool used to directly flash the filesystem in Android devices from a host via USB. It allows flashing of unsigned partition images. It is disabled in production devices since USB support has been disabled in the bootloader. You must have an Engineering SPL, or an SPL that is S-OFF. | ||
+ | |||
+ | After installing the [[Howto: Install the Android SDK|Android SDK]] or [[ADB|ADB Standalone]] you can use 'fastboot' in addition to the more common [[ADB]]. | ||
+ | |||
+ | ==Verify SPL S-OFF== | ||
+ | With the exception of the Google Nexus One (which has an OEM unlock), when you boot the device into the bootloader, you should see '''S-OFF''' (security off) on the top line. If you see S-ON, or you see a four-color rainbow background, the SPL does not support fastboot. You will need to install a fastboot compatable SPL, such as HardSPL or any of the Engineering SPLs for various devices. See the [[Main Page|device specific page]] for further instructions. | ||
+ | |||
+ | ==Access bootloader== | ||
+ | #Make sure you have [[ADB]] or the [[Howto: Install the Android SDK|SDK]] installed. | ||
+ | #Download [http://koushikdutta.blurryfox.com/G1 fastboot] for the appropriate operating system for your computer. | ||
+ | #Place the executable in the proper place, usually: | ||
+ | #*Linux: <tt>~/android_sdk/tools/</tt> or <tt>~/bin/</tt> | ||
+ | #*OS X: <tt>~/android-sdk-macosx/platform-tools/</tt> | ||
+ | #*Windows: <tt>C:\android-sdk-windows\tools</tt> | ||
+ | #Turn off the device. | ||
+ | #Boot device into bootloader | ||
+ | #Make sure the device is in <tt>FASTBOOT</tt> and not <tt>HBOOT</tt> | ||
+ | #Connect the device to the computer via USB. | ||
+ | #On your computer, open terminal and run (you may need elevated privileges for this): | ||
+ | #: <code>fastboot devices</code> | ||
+ | :You should see something similar to: | ||
+ | <pre> | ||
+ | List of devices attached | ||
+ | HTXXXXXXXXXX device | ||
+ | </pre> | ||
+ | |||
+ | ==fastboot --help== | ||
+ | <div style="border-left: 0.2em solid #3CABB2; margin-left: 0.5em; padding-left: 0.5em;"> | ||
+ | <pre>usage: fastboot [ <option> ] <command> | ||
+ | |||
+ | commands: | ||
+ | update <filename> reflash device from update.zip | ||
+ | flashall flash boot + recovery + system | ||
+ | flash <partition> [ <filename> ] write a file to a flash partition | ||
+ | erase <partition> erase a flash partition | ||
+ | getvar <variable> display a bootloader variable | ||
+ | boot <kernel> [ <ramdisk> ] download and boot kernel | ||
+ | flash:raw boot <kernel> [ <ramdisk> ] create bootimage and flash it | ||
+ | devices list all connected devices | ||
+ | reboot reboot device normally | ||
+ | reboot-bootloader reboot device into bootloader | ||
+ | setserial <serial> set the device serial number | ||
+ | setrev <rev> set the device hardware revision | ||
+ | |||
+ | options: | ||
+ | -w erase userdata and cache | ||
+ | -s <serial number> specify device serial number | ||
+ | -p <product> specify product name | ||
+ | -c <cmdline> override kernel commandline | ||
+ | -i <vendor id> specify a custom USB vendor id | ||
+ | -b <base_addr> specify a custom kernel base address | ||
+ | -n <page size> specify the nand page size. default: 2048</pre> | ||
+ | </div> | ||
+ | |||
+ | ==Typical Partition Layout== | ||
+ | '''For Reference when flashing partitions''' | ||
+ | {|class=wikitable | ||
+ | !Name!!Nandroid .img!!Information Contained!!Mount Point!!Notes | ||
+ | |- | ||
+ | |'''splash1'''||N/A||Boot image ("T-mobile G1" image)||mtdblock0?||size: 320x480x2. Different from bootanimation.zip. | ||
+ | |- | ||
+ | |'''recovery'''||N/A||A 'backup' kernel, initrd, and OS <br />for system recovery / maintenance||mtdblock1||Can flash custom recovery.img (Amon_Ra, ClockworkMod, etc). <br />Accessed by holding [home] while booting. | ||
+ | |- | ||
+ | |'''boot'''||boot.img||The main kernel and initrd||mtdblock2||Can flash custom boot.img | ||
+ | |- | ||
+ | ||'''system'''||system.img||The main OS||mtdblock3||This is the /system partition | ||
+ | |- | ||
+ | ||'''cache'''||cache.img||Temp storage||mtdblock4||Unused. [http://forum.xda-developers.com/showthread.php?p=7061471 Can be re-partitioned]. | ||
+ | |- | ||
+ | ||'''userdata'''||data.img||User data and settings||mtdblock5||This is the /data partition | ||
+ | |} | ||
+ | |||
+ | ==Examples== | ||
+ | ===Manual Nandroid restore=== | ||
+ | Make a Nandroid backup, and copy the folder off your SD card to your desktop. | ||
+ | :<code>cd ~/Desktop/path/to/backup/</code> | ||
+ | :<code>fastboot flash userdata data.img</code> | ||
+ | :<code>fastboot flash system system.img</code> | ||
+ | :<code>fastboot flash boot boot.img</code> | ||
+ | :<code>fastboot reboot</code> | ||
+ | |||
+ | ===Flash Custom Recovery.img=== | ||
+ | :<code>fastboot flash recovery /path/to/<recovery>.img</code> | ||
+ | :<code>fastboot reboot</code> | ||
+ | |||
+ | ===Flash Custom boot.img=== | ||
+ | You should make a Nandroid backup first, in case you need to recover your boot.img | ||
+ | :<code>fastboot flash boot /path/to/<boot>.img</code> | ||
+ | :<code>fastboot reboot</code> | ||
+ | |||
+ | ===Development=== | ||
+ | If you are developing a kernel, you may find it helpful to delete your boot.img and recovery.img to force booting into fastboot: | ||
+ | :<code>fastboot erase boot</code> | ||
+ | :<code>fastboot erase recovery</code> | ||
+ | You can then manually boot from your custom kernel and a ramdisk: | ||
+ | :<code>fastboot boot <kernel> <ramdisk></code> | ||
+ | Once you have a working kernel and ramdisk, you can automagically combine them within fastboot: | ||
+ | :<code>fastboot flash:raw boot <kernel> <ramdisk></code> | ||
+ | |||
+ | [[Category:Tools]] | ||
Line 64: | Line 166: | ||
* http://linuxicle.blogspot.com/2013/06/how-to-run-android-emulator-on-ubuntu.html | * http://linuxicle.blogspot.com/2013/06/how-to-run-android-emulator-on-ubuntu.html | ||
+ | * http://oldwiki.cyanogenmod.org/wiki/Fastboot |
Revision as of 18:27, 15 May 2014
Run It!
Kita dapat menjalankan image yang kita buat menggunakan emulator atau flash ke device. Perlu kita ketahui bahwa kita harus menentukan target build menggunakan lunch, biasanya akan sangat sukar di jalankan kalau image tersebut di jalankan ke target yang tidak di tujukan sebelumnya.
Cek Device
Gunakan
adb devices
Hasilnya
List of devices attached LG-F240S-55cef322 device
Flash ke Device
Untuk flash ke device, kita butuh menggunakan fastboot yang biasanya sudah termasuk dalam path setelah kita telah sukses build. Buat device agar masuk dalam fastboot mode baik secara manual dengan cara menekan tombol yang benar saat booting, atau melalui shell menggunakan perintah
adb reboot bootloader
Tampaknya untuk mem-flash device harus dilakukan dari folder .zip dari product yang kita buat
cd ~/android-cyanogenmod/out/target/product/e980/
Cek fastboot mengenali device
fastboot devices
Jika device sudah dalam mode fastboot, jalankan
fastboot flashall -w
opsi -w akan menghapus partisi /data di device. Ini berguna jika kita melakukan flashing untuk pertama kali ke sebuah device, jika tidak maka cara ini tidak berguna.
Beberapa perintah fastboot lainnya
fastboot erase boot fastboot erase cache fastboot erase recovery fastboot erase system fastboot erase userdata fastboot flash bootloader bootloader.img fastboot reboot-bootloader fastboot -w update namaimage.zip
Emulate sebuah Android Device
emulator di tambahkan ke path kita secara automatis saat proses build. Untuk menjalankan emulator, ketik,
$ emulator
Fastboot is a command line tool used to directly flash the filesystem in Android devices from a host via USB. It allows flashing of unsigned partition images. It is disabled in production devices since USB support has been disabled in the bootloader. You must have an Engineering SPL, or an SPL that is S-OFF.
After installing the Android SDK or ADB Standalone you can use 'fastboot' in addition to the more common ADB.
Verify SPL S-OFF
With the exception of the Google Nexus One (which has an OEM unlock), when you boot the device into the bootloader, you should see S-OFF (security off) on the top line. If you see S-ON, or you see a four-color rainbow background, the SPL does not support fastboot. You will need to install a fastboot compatable SPL, such as HardSPL or any of the Engineering SPLs for various devices. See the device specific page for further instructions.
Access bootloader
- Make sure you have ADB or the SDK installed.
- Download fastboot for the appropriate operating system for your computer.
- Place the executable in the proper place, usually:
- Linux: ~/android_sdk/tools/ or ~/bin/
- OS X: ~/android-sdk-macosx/platform-tools/
- Windows: C:\android-sdk-windows\tools
- Turn off the device.
- Boot device into bootloader
- Make sure the device is in FASTBOOT and not HBOOT
- Connect the device to the computer via USB.
- On your computer, open terminal and run (you may need elevated privileges for this):
fastboot devices
- You should see something similar to:
List of devices attached HTXXXXXXXXXX device
fastboot --help
usage: fastboot [ <option> ] <command> commands: update <filename> reflash device from update.zip flashall flash boot + recovery + system flash <partition> [ <filename> ] write a file to a flash partition erase <partition> erase a flash partition getvar <variable> display a bootloader variable boot <kernel> [ <ramdisk> ] download and boot kernel flash:raw boot <kernel> [ <ramdisk> ] create bootimage and flash it devices list all connected devices reboot reboot device normally reboot-bootloader reboot device into bootloader setserial <serial> set the device serial number setrev <rev> set the device hardware revision options: -w erase userdata and cache -s <serial number> specify device serial number -p <product> specify product name -c <cmdline> override kernel commandline -i <vendor id> specify a custom USB vendor id -b <base_addr> specify a custom kernel base address -n <page size> specify the nand page size. default: 2048
Typical Partition Layout
For Reference when flashing partitions
Name | Nandroid .img | Information Contained | Mount Point | Notes |
---|---|---|---|---|
splash1 | N/A | Boot image ("T-mobile G1" image) | mtdblock0? | size: 320x480x2. Different from bootanimation.zip. |
recovery | N/A | A 'backup' kernel, initrd, and OS for system recovery / maintenance |
mtdblock1 | Can flash custom recovery.img (Amon_Ra, ClockworkMod, etc). Accessed by holding [home] while booting. |
boot | boot.img | The main kernel and initrd | mtdblock2 | Can flash custom boot.img |
system | system.img | The main OS | mtdblock3 | This is the /system partition |
cache | cache.img | Temp storage | mtdblock4 | Unused. Can be re-partitioned. |
userdata | data.img | User data and settings | mtdblock5 | This is the /data partition |
Examples
Manual Nandroid restore
Make a Nandroid backup, and copy the folder off your SD card to your desktop.
cd ~/Desktop/path/to/backup/
fastboot flash userdata data.img
fastboot flash system system.img
fastboot flash boot boot.img
fastboot reboot
Flash Custom Recovery.img
fastboot flash recovery /path/to/<recovery>.img
fastboot reboot
Flash Custom boot.img
You should make a Nandroid backup first, in case you need to recover your boot.img
fastboot flash boot /path/to/<boot>.img
fastboot reboot
Development
If you are developing a kernel, you may find it helpful to delete your boot.img and recovery.img to force booting into fastboot:
fastboot erase boot
fastboot erase recovery
You can then manually boot from your custom kernel and a ramdisk:
fastboot boot <kernel> <ramdisk>
Once you have a working kernel and ramdisk, you can automagically combine them within fastboot:
fastboot flash:raw boot <kernel> <ramdisk>