Boot script - Android Software Development

Hi,
This question is for rooted phones, obviously.
I need to have a shell script run before the Dalvik VM, is this possible ?
How would I do it ?

One way would be by modifying one of the /init.* scripts that run during boot up - you'll need to repack the boot.img tho - some info in this post.
- jc

Related

[Q] ANSWERED!! NAND.. can you change kernels?

Hi guys,
Is it possible to change the kernel of a nand build at all?
I am an Extended Battery user and find only NAND builds with Hastarins kernel work at all..
Is there a way of mixing and matching Kernels with builds?
Ta
nutmegy said:
Hi guys,
Is it possible to change the kernel of a nand build at all?
I am an Extended Battery user and find only NAND builds with Hastarins kernel work at all..
Is there a way of mixing and matching Kernels with builds?
Ta
Click to expand...
Click to collapse
Yes
Just made something for you, note: haven't tested it:
Kernel Theiving
How to:
- Install Nand version which has the kernel you want.
- Run "extract_kernel.bat"
- Install Nand version you like, and want to keep.
- Run "install_kernel.bat".
- Et voila!
Now, you only have to use "install_kernel.bat" if you flash another rom.
Note: You need adb installed on your PC
Quickie on how to install adb:
Moon2 said:
You need adb:
-Get this installer: http://developer.android.com/sdk/index.html
-Go to Available Packages, Expand Third Party - Google - select USB Driver
-Update adb driver, if not already installed from: C:\Program Files\Android\android-sdk-windows\google-usb_driver
-Copy "adb.exe" and "AdbWinApi.dll" from "C:\Program Files\Android\android-sdk-windows\platform-tools" to "C:\Windows\System32".
-Run the batch file.
Click to expand...
Click to collapse
thank you very much!
I will give this a go!
Moon2 said:
Yes
Just made something for you, note: haven't tested it:
Kernel Theiving
How to:
- Install Nand version which has the kernel you want.
- Run "extract_kernel.bat"
- Install Nand version you like, and want to keep.
- Run "install_kernel.bat".
- Et voila!
Now, you only have to use "install_kernel.bat" if you flash another rom.
Note: You need adb installed on your PC
Quickie on how to install adb:
Click to expand...
Click to collapse
I read the batch file and
you have created a folder called boot under data folder and pasted the zimage
so everytime when we boot out Hd2s it going to replace the zimage with the one in boot folder, so i guess its going to delay the booting process (correct me if im wrong) so is it possible to delete that folder after booting our Leos?
agarp said:
I read the batch file and
you have created a folder called boot under data folder and pasted the zimage
so everytime when we boot out Hd2s it going to replace the zimage with the one in boot folder, so i guess its going to delay the booting process (correct me if im wrong) so is it possible to delete that folder after booting our Leos?
Click to expand...
Click to collapse
No, that's not what it does. it mounts the boot partition temporarily to /data/boot, and after it's mounted, adb copies over the zImage file, and overwrites the preexisting kernel image, after this, the partition is unmounted. So it's not repeated at each boot.
works a treat...
I just used Android commander..
made sure it was connected..
then ran the extract batch file
installed the nand build i wanted...
then ran the install Kernel.bat
and it works a treat!!!!
Moon2 said:
No, that's not what it does. it mounts the boot partition temporarily to /data/boot, and after it's mounted, adb copies over the zImage file, and overwrites the preexisting kernel image, after this, the partition is unmounted. So it's not repeated at each boot.
Click to expand...
Click to collapse
thnxx for the clarification, now i get it
nutmegy said:
works a treat...
I just used Android commander..
made sure it was connected..
then ran the extract batch file
installed the nand build i wanted...
then ran the install Kernel.bat
and it works a treat!!!!
Click to expand...
Click to collapse
Is all that done on the phone? It seems you installed the kernel on the phone somehow. I'm clueless about adb, I tried to use it before but was dumbfounded by it all.
Do I need Eclipse? Downloading the SDK stuff...installing JDA SE and it talks about Eclipse.
Moon2 the links dead it says file has been removed anybody re upload it????

[Q] Couple of questions about ROM development

Hello!
First of all, thanks to all you repliers!
I'd really like to know a few things creating a ROM:
1. how can I create an update.zip starting from a system.img? (I know how to sign) In case can I simply install the img and then push /system changes, like root or busybox?
2. how can I install busybox manually? Can I create a script which does the job for me (i.e. busybox --install command at first boot then delete the script itself), avoiding me to write loads of symlinks?
3. when I've created an update.zip, is it easy to root the ROM? I mean, just push su and SuperUser.apk? Or I need a particular boot.img?
Thanks
elegos said:
Hello!
First of all, thanks to all you repliers!
I'd really like to know a few things creating a ROM:
1. how can I create an update.zip starting from a system.img? (I know how to sign) In case can I simply install the img and then push /system changes, like root or busybox?
Click to expand...
Click to collapse
Clockwork Recovery won't install system image files for some reason. You'll need to dump the yaffs2 filesystem then zip it up into the update.zip, then use an updater-script to set unix permissions (zip doesn't preserve these). Also, there's no need to sign the update.zip. It's only meaningful to the device's firmware if it is signed by the device's manufacturer.
elegos said:
Hello!
2. how can I install busybox manually? Can I create a script which does the job for me (i.e. busybox --install command at first boot then delete the script itself), avoiding me to write loads of symlinks?
Click to expand...
Click to collapse
Certainly. You can add a script and call it from updater-script during the install.
elegos said:
Hello!
3. when I've created an update.zip, is it easy to root the ROM? I mean, just push su and SuperUser.apk? Or I need a particular boot.img?
Thanks
Click to expand...
Click to collapse
Boot image is irrelevant to a properly rooted system. Just adding SuperUser should be sufficient.
That's cool!
1. as of the system.img, I see there is a system folder too - is that just enought zipping it?
2. may you please tell me how to call a script within an edify updater-script please?
3. thanks
I don't understand. You have a system.img and a system folder? In what? What are you starting from? If you use a zipped system, you WILL need to set unix permissions, symlinks and modes as these are NOT preserved in a zip file.
As far as calling scripts, something like this:
run_program PACKAGE:installbusybox.sh

[HACK] Run scripts at boot-time on stock rooted 3.2 without reflashing (nfs modules)

Hi,
When you want to perform some scripts at boot-time, there is two possibilities :
- modify init.rc, but it requires to reflashing the rootfs image (modification in / does not hold after a reboot),
- using an android app like script manager, which will load your scripts at java/dalvik platform boot-time.
I've managed to find a way based on activating tf-daemon, which is a script called by the asus/ventana initrc, but disabled at boot-time. Basically, we're re-enabling this daemon by setting the property tf.enable to yes, and then creating a script called tf-daemon and put it in /system/bin. Since this script is called by init.ventana.rc as root, you can put whatever you want inside this script.
I don't know what is the original purpose of this daemon, but probably it's used by the asus team for internal and debugging purpose.
Be aware that in the next firmware update, this possibility could disappear.Let's hope the asus team does not read this post. Or at least they could allow power users to call custom scripts at boot-time.
As a case study, you will find as attachment a script for loading nfs modules at boot-time.
PS: damn, can't upload. Here is a temporary link : http://dl.free.fr/hwTZ0YBq2
Untar the archive, then su, and sh install.sh
At reboot, you should have nfs modules loaded.
Good find:
I gave this a try just to load a couple of my own modules that work with the kernel I'm using. Works fine -- Thanks, -
Another method is to make a script and just call it in the init.rc. After a firmware update you only have to add the "exec myscript.sh" line to init.rc. I personally prefer this method because it allows me to control when the script is executed, whereas the tf-daemon method is always executed at the same point(AFAIK). Good research though, always nice to know all the boot calls.
Modifying the init.rc was my first shot, but the problem is that init.rc lies in ramdisk. So when trying to modify, the modification does not hold
after reboot. So a real modification involves to reflash rootfs with nvflash, too much hassle for me. The method I'm providing is for lazy ones. ;-)
nice find, but the link is dead, could you please provide a new link for the script?
also, how do I load nfs module for there is none under /lib/modules, compile the kernel myself?

[RECOVERY] A500 Public Recovery v0.2 based on CWM v5.5.0.4 for ICS [May 21st 2012]

[Size=+2]A500 Public Recovery v0.2 based on Koush's CWM v5.5.0.4[/Size]
Here is a new Clock Work Mod for the ICS unlocked bootloaders only.
Features:
* cleanup tab option: shortcut to try to fix forcequits after updates, return to recovery and select on the main screen (Wipes Cache, dalvik, and fixes permissions)
* Standard options to backup and restore to either the SD card or internal storage
* Mount points match those of most running roms
* adb shell works as root (with or without system mounted)
* set boot mode menu to select the boot partition (hidden on know non-multiboot bootloaders)
* setbootmode and itsmagic command line tools for advanced users
* /data/linux directory is not deleted on erase userdata, nor backed up on nandroid backup (just like /data/media) to allow a space for linux files for dual boot and chroot linux installes.
While there may not be much fantastic yet about the recovery it appears funcitonal at this point. (Features such as touch ui may appear in the future)
Why is it called Public: its public in the sense that all the scripts and code required for anyone to build it have been made avalible. (note some linux knowledge may be needed to build it yourself)
[Size=+2]Installation[/Size]
There are to main ways to install
1) using fastboot or nvflash you can install the image
A500PubRecovery_v0.2.img MD5: 0e40a494cd066b1c8e1a8d01493f1452
2) using a any exiting recovery (as long as you have one of the unlocked bootloaders) you can install with an update.zip
A500PubRecovery_v0.2_update_S.zip MD5: 349d0d6284fc6d1e071827a37a8a55e5
** (FYI the fastboot command to run on your computer is 'fastboot flash recovery A500PubRecovery_v0.2.img')
[Size=+2]Developers Additional Information:[/Size]
Build instructions (including how to fetch the source code) is here:
https://github.com/ezterry/AcerRecovery/blob/recovery_manifest/README.mkdn
(Thanks yous/Credits are also included)
Kernel:
as of version 0.2 the kernel is built from source (see above for information on fetching the build tree including the linux kernel)
the kernel in v0.1 was a patched for system r/w acer ICS Stock kernel
additional information can be seen on the commit:
https://github.com/ezterry/AcerRecovery/commit/402da6f73e752e80312318e177035ee02e4fbf89
The biggest thanks is as manythings in the Android World to Koush, and the CyanogenMod team. (They did the hard part, I've just tweaked it for the A500 configuration)
[Size=+2]Version List[/Size]
v0.2:
A500PubRecovery_v0.2.img 0e40a494cd066b1c8e1a8d01493f1452
A500PubRecovery_v0.2_update_S.zip 349d0d6284fc6d1e071827a37a8a55e5
v0.1:
A500PubRecovery_v0.1.img 4414bdbdd3aa7b7d7d1166595e6ccb2a
A500PubRecovery_v0.1_update_S.zip f45e7e3b640b42a68ec9bb08bd4b88ce
for details on the source commits used in the builds please see:
https://github.com/ezterry/AcerRecovery/blob/recovery_manifest/VERSIONS.mkdn
I will put it in the guide ,so when you flash the unlocked boot loader you can chose to install this with it , the more options for the user the better.
Thanks for the hard work.
Awesome !!! im curious to look at source so thanks for this
Sent from my SCH-R760 using XDA
btw,
The a501 is a very similar device.. is some more advanced user wishes to test things out and let me know if and changes is needed or if its good as is (fastboot boot may be useful if you wish to boot it without actually saving it to the tab)
Other Acer devices probably need slight modifications, if you help I can look into adding it to the codebase/builds..but I can only test the a500 as it's the only tab I own.
Just try to make sure you have a link to the source code of any kernel..and failing that that it Lisa stock kernel from an official OTA image.
I have a A500 with the Build.Number "1.033.00_EMEA_DE".
I have Problems to get the CWM with that Tutorial:
http://www.brutzelstube.de/2012/acer-iconia-a500-mit-android-4-0-ics-rooten/
Its all running fine but when i want to boot into the CWM it seems to work but then the Android Guy with open Stomach and the Red ExclamationPoint is showing.
I wonder if i can use this Public Recovery v0.1??
Maybe someone can help me that.
Basian Mile said:
Its all running fine but when i want to boot into the CWM it seems to work but then the Android Guy with open Stomach and the Red ExclamationPoint is showing.
Click to expand...
Click to collapse
If you are running a stock ICS rom you need to make sure you don't have the recovery patch still installed, otherwise the stock recovery will be installed on reboot if any other recovery is installed.
If you have the script and patch.. this recovery as any other custom recovery will be overwritten.
Sent from my Galaxy Nexus using Tapatalk 2
The CWM (v5 from Thor2002ro) is running now. I was using the wrong CPUID. That was my falut. But now its ok.
So i can flash this new Recovery just in this right?
If you have one of the the unlocked ics bootloader you can flash this recovery.. either directly or with the update.zip from a working custom recovery.
Sent from my Galaxy Nexus using Tapatalk 2
Great Job!
If you want to build an A510 version, just change the data partition to point to /dev/block/mmcblk0p10. Everything else stays the same. If it doesn't boot, i may need to have the A510 recovery kernel.
BTW.. the recovery kernel doesn't really need to be patched for r/w, because /system never gets mounted as readonly, so it never does a remount to r/w. I've repacked recoveries with stock ICS kernels and they work fine. == Although, it doesn't hurt to patch them. ==
Euclid's Brother said:
BTW.. the recovery kernel doesn't really need to be patched for r/w, because /system never gets mounted as readonly, so it never does a remount to r/w. I've repacked recoveries with stock ICS kernels and they work fine. == Although, it doesn't hurt to patch them. ==
Click to expand...
Click to collapse
Part of it is I intend the kernel for my own ics rom. (Safer anyway in my opinion to not find any surprises as a user but not the biggest issue)
Tested it and installed fine , it's barebones recovery but I think A lot will love it , clean and simple. I used fastboot to install it .
Thanks Ez.
BTW I'm working on the next release
1) Some minor bug fixes (partitioning sdcard and full wipe are a bit strange at present.. in most cases we don't re-partition sdcards.. and wipe if you are installing a rom after will fix its self)
2) Now that acer has released their source, I've dropped the pre-built tweaked stock kernel, and added a source build, mostly still stock but I've changed to lZMA to allow some more space for the recovery ramdisk. (also system remount is allowed by default in this kernel so no postbuild acrobatics .. ie KPatch script)
3) add setbootmode/itsmagic binaries to the system. A500 (this is in github as is the kernel so building from synced source will give you a recovery with these pre-installed)
4) hopefully add an interface to call said binaries
Also I have an A510 test version I need someone (with the tab) to try.. PM me
Edit (Feature Idea):
whould anyone be interested in recovery when wiping not only skiping /data/media (internal /sdcard) but also skiping /data/linux ?
The idea is dual boot people bootling linux could use a ramdisk to run some bindmount/piviot root hackery to make /data/linux the root directory
also anyone using chroot to run a linux distro along side android could use the /data/linux directory as the chroot jail
let me know and I'll look into making APR here support such a feature
Is it posible to add app cwm for install.zip,backup,restore since rom ?
For exemple,the same app into sgs2 with siyha kernel or another kernel ??? Big thanks
Envoyé depuis mon A500 avec Tapatalk
ezterry said:
3) add setbootmode/itsmagic binaries to the system. A500 (this is in github as is the kernel so building from synced source will give you a recovery with these pre-installed)
Click to expand...
Click to collapse
Ehm, definitely don't put itsmagic next to setbootmode, it corrupts the kernel image in AKB.
ezterry said:
Edit (Feature Idea):
whould anyone be interested in recovery when wiping not only skiping /data/media (internal /sdcard) but also skiping /data/linux ?
The idea is dual boot people bootling linux could use a ramdisk to run some bindmount/piviot root hackery to make /data/linux the root directory
also anyone using chroot to run a linux distro along side android could use the /data/linux directory as the chroot jail
let me know and I'll look into making APR here support such a feature
Click to expand...
Click to collapse
Yeah I'm actually thinking to install linux to /data/linux and chroot there, too, exactly the same way.
micky387 said:
Is it posible to add app cwm for install.zip,backup,restore since rom ?
For exemple,the same app into sgs2 with siyha kernel or another kernel ??? Big thanks
Click to expand...
Click to collapse
I'm not exactly sure what you are talking about,
If you want to use this recovery with RomManager (as an unofficial 3.x+ recovery) you may. (In rom manager select flash recovery, select a500, select that you have manually installed a CWM recovery, select 3.x) To make it "official" koush needs to update his repo.. and I'm not going to poke that until I fix some minor outstanding bugs.
Actions will by default happen on the /data/media partition (as that is usually /sdcard) and no roms are yet in the system.. but I may work on fixing that after I make the next release. Currently running a backup myself.
If you want some other app to do this.. it needs to be compatible with the clockwork mod API.
Skrilax_CZ said:
Ehm, definitely don't put itsmagic next to setbootmode, it corrupts the kernel image in AKB.
Click to expand...
Click to collapse
next to as in both the "itsmagic" and "setbootmode" binaries are in /sbin? .. I hope you can live with that.
I don't intend to automatically run it *ever* in this recovery, just want it to exist for anyone cleaning the system to return to a HC bootloader.. probably won't even add it to the GUI as its not something you want to do by mistake (and really I don't want to promote anyone to do.. its just there for some advanced users doing advanced operations). Boot mode however will be in the gui.
ezterry said:
next to as in both the "itsmagic" and "setbootmode" binaries are in /sbin? .. I hope you can live with that.
I don't intend to automatically run it *ever* in this recovery, just want it to exist for anyone cleaning the system to return to a HC bootloader.. probably won't even add it to the GUI as its not something you want to do by mistake (and really I don't want to promote anyone to do.. its just there for some advanced users doing advanced operations). Boot mode however will be in the gui.
Click to expand...
Click to collapse
Very clever... i was worried myself at first when i saw you mention itsmagic... i'm so happy we have an open bootloader now with no tricks... oh, except the original hacking
Thanks so much for your work on this!
ezterry said:
I'm not exactly sure what you are talking about,
If you want to use this recovery with RomManager (as an unofficial 3.x+ recovery) you may. (In rom manager select flash recovery, select a500, select that you have manually installed a CWM recovery, select 3.x) To make it "official" koush needs to update his repo.. and I'm not going to poke that until I fix some minor outstanding bugs.
Actions will by default happen on the /data/media partition (as that is usually /sdcard) and no roms are yet in the system.. but I may work on fixing that after I make the next release. Currently running a backup myself.
If you want some other app to do this.. it needs to be compatible with the clockwork mod API.
next to as in both the "itsmagic" and "setbootmode" binaries are in /sbin? .. I hope you can live with that.
I don't intend to automatically run it *ever* in this recovery, just want it to exist for anyone cleaning the system to return to a HC bootloader.. probably won't even add it to the GUI as its not something you want to do by mistake (and really I don't want to promote anyone to do.. its just there for some advanced users doing advanced operations). Boot mode however will be in the gui.
Click to expand...
Click to collapse
OK.
I want to know if it's possible to add the same app (a part of recovery)
Thanks
ezterry said:
next to as in both the "itsmagic" and "setbootmode" binaries are in /sbin? .. I hope you can live with that.
I don't intend to automatically run it *ever* in this recovery, just want it to exist for anyone cleaning the system to return to a HC bootloader.. probably won't even add it to the GUI as its not something you want to do by mistake (and really I don't want to promote anyone to do.. its just there for some advanced users doing advanced operations). Boot mode however will be in the gui.
Click to expand...
Click to collapse
Yeah that's ok, I meant next to as in GUI, that would bring only problems.
v0.2 is out (see op)
Bugfixes:
~ wipe full data fix
~ fix on formating the external sdcard
~ cleaned up some warnings
Features:
~ added multiboot support (select boot partition)
~ added itsmagic binary (command line only)
~ switch to kernel source build rather than pre-built kernels
~ added /data/linux support (skip on wipe data, and nandroid backup)
kernel was built from:
https://github.com/ezterry/AcerTabKernel/commit/a6312764aa19ea7fe581b9931723c206a12b11ef
config file: apr_a500_defconfig
besides the configuration the kernel source is thus far unchanged from the acer a500 ICS drop
The kernel is built along with the recovery, see developer notes in OP for a link to the build instructions.
v0.2 doesn't boot for me.
Using Skrilax v6 bootloader I can't boot v0.2 while v0.1 works fine, both flashed from fastboot.
I also tried flashing v0.2 from v0.1 recovery, same results.

Auto mount or symlink at boot

Hello, is it possible to do that ?
Regards
Sure, you have a few options.
The best way (hardest):
-requires root and knowledge of the boot.img and ramdisk partitions of Android
-create the symlink or mountpoint by adding the necessary lines the /init.rc file.
Next best way (not hard if you have init.d support):
-requires root
-requires init.d support
-simply write a script to create your symlink/mountpoint, name it appropriately, and place it in the /system/etc/init.d directory.
-with init.d support, this will automatically run the script at boot and set the parameters you've outlined in said script.
The "other" method (avoid this if possible since it relies on loading an app on boot):
-requires root
-download Script Manager from the play store
-write a script to create your mountpoint or symlink
-configure Script Manager to execute the script on boot.
Hello
I found /init.rc, also found init.00.rc and init.01.rc, but i guess we are talking about the first one (init.rc)
I wasn't able to edit it with a text editor on my tf101, do i need something i don't have to edit it ? Or notepadd++ will be enough ?
In case i fail completly with this, is tasker able apply the line for me too ?
Thanks you for your time.
Regards
Magissia said:
Hello
I found /init.rc, also found init.00.rc and init.01.rc, but i guess we are talking about the first one (init.rc)
I wasn't able to edit it with a text editor on my tf101, do i need something i don't have to edit it ? Or notepadd++ will be enough ?
In case i fail completly with this, is tasker able apply the line for me too ?
Thanks you for your time.
Regards
Click to expand...
Click to collapse
The /init.rc can't be directly modified that way. Everything in the root filesystem "/", as well as the kernel zImage, are loaded at boot from the boot.img image. Therefore, any changes you make will just be reverted when you reboot because it reloads the original from the boot.img image. In order to modify /init.rc, you must pull your boot.img and then extract the files from it. Now you can add the necessary lines to it. After that, you re-combine everything back into the boot.img, and push it back to your device.
If all that sounds unfamiliar to you, you will have some reading to do. Most of this will need to be done on a linux machine too.
What ROM are you running? If you have init.d support, that would be the most straightforward way to accomplish your goals.
I'm running asus' rom .24 on a tf101
I don't know if it support init.d, didn't found this file on my device.
Regards
You can also use an app from here, XDA, called directory bind. It all depends what you're looking to do with those symlinks.
Sent from my Sprint Evo View 4G (PG41200) using Xparent Purple Tapatalk 2
Hello, i plan to move game data to sdcard and symlink it to the old internal place.
Also plan to symlink some folders to the movie folder
Regards
Then directory bind app is designed for just your need. All these solutions require rooting your device.
Sent from my HTCEVOV4G using Xparent Purple Tapatalk 2
I will look at this, thanks.
Directory bind run during boot or after boot ?(little delay before things get re symlinked ?)
Regards

Categories

Resources