[TOOL] amend2edify script converter [Zip][Batch][Windows][Ubuntu] - Android Software Development

:[Disclaimer]:
Use this at your own risk!
:[Requirements]:
Microsoft .Net 3.0 (or Mono for Linux / Mac).
An update zip or an "update-script" to convert.
An android phone with a custom recovery that supports edify scripted zip files.
The Java Runtime Environment (only required for signing zip files).
:[Tested and functional in Ubuntu 10.10 / 11.04]:
Please see this post for instructions.
:[Description]:
This is a tool for converting amend scripts to edify scripts.
I only have direct access to an Epic 4G, so I can't test this on other phones.
I rely on the community to give me the info needed to support other devices.
Many thanks go the the numerous people that have contributed, sorry there is no list, but you know who you are.
:[Features]:
Backup original files.
Convert script files from amend to edify.
Convert zip files from amend to edify.
Sign converted zip files (requires the JRE).
Batch Mode converts multiple zip files at once.
Mount Types for multiple phones using an easily upgradeable XML database file.
:[Instructions]:
These are in the README, but I'm leaving them here so maybe you will read them:
Open program.
Select "Options" -> check "Backup Original".
Select "Options" -> check "Delete Temp Files".
Select "Options" -> check "Sign Zip File". << Requires Java (probably won't work on Linux).
Select "Options" -> "Mount Type" -> Select your phone or it's closest equivalent.
Select "File" -> "Open" -> Browse for and select the file to be converted.
Check the "Output" Tab for the resulting conversion.
Select "File" -> "Save"...
NOTE::The conversion is done when the file is opened.
Make sure to set the settings before opening the file.​
Click to expand...
Click to collapse
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
[Download latest version Here]
[Download latest database version Here] (right-click, "save as")
:[Extra notes]:
Try "Universal" if your device isn't specifically listed.
VibrantMTD is based on mounts taken from a Vibrant running MIUI.
:[Error messages]:
Error: update-script could not be found in zip​The zip you have tried to open does not contain an "update-script" file.
In other words, the zip is not an amend scripted file and there is nothing to convert.
:[WishList]:
Support for more phones. (See I Need Help notes below.)
:[Testing]:
This was originally tested on an Epic 4G with this GB keyboard, a battery mod that originally came from here, and some other random amend scripted zips.
It has since been successfully used on many different phones with many different amend based zips (by people other than myself).
:[Feedback]:
Please report bugs / errors.
:[I need Help]:
If you want specific mounts for your phone to be included, please help me by running this command from adb:
Code:
adb shell "mount > /sdcard/PHONENAME_mountinfo.txt"
or this command from a terminal:
Code:
mount > /sdcard/PHONENAME_mountinfo.txt
Then email the file to [email protected] with the subject "PHONENAME mountinfo".
Replace PHONENAME with your phone's name, so I know what phone it's for.
:[ChangeLog]:
Code:
phoneDatabase update - (04-08-2012)
- Added WildfireS-MarvelC
phoneDatabase update - (04-07-2012)
- Added Xperia X10 Mini
- Added Droid 3
- Added Galaxy S2 t989
- Added Transform Ultra
- Added Xperia Pro
- Added Optimus
(Sorry to those who had to wait for this.)
phoneDatabase update - (11-28-2011)
- Added GalaxyS2i777
phoneDatabase update - (11-28-2011)
- Added Sensation4G
- Added OptimusS
- Added Universal (note: this should work for [I]most[/I] custom recoveries)
[COLOR="Blue"]Try "Universal" if your device isn't specifically listed.[/COLOR]
phoneDatabase update - (11-11-2011)
- Added XperiaNeo
- Added GalaxyGio
- Added OptimusBlack
phoneDatabase update - (10-05-2011)
- Added NookColor
phoneDatabase update - (10-02-2011)
- Added XperiaArc
- Added Legend
phoneDatabase update - (10-01-2011)
- Added Epic4GTouch
phoneDatabase update - (09-28-2011)
- Added Photon4G
- Added HuaweiUM840
phoneDatabase update - (09-22-2011)
- Added CLIQXT
- Added DroidBionic
phoneDatabase update - (08-23-2011)
- Added myTouch4GSlide
- Renamed "MyTouch4G" to "myTouch4G"
phoneDatabase update - (08-02-2011)
- Added DroidX
- Added VibrantMTD
- Added Defy
- Added Evo3D
phoneDatabase update - (06-27-2011)
- Added EeePadTransformer
v1.0.1.2 - (06-21-2011)
- Added used mount point info to output comments.
- Added user configurable Comments area.
(Thank you [URL="http://forum.xda-developers.com/member.php?u=2982370"]tsachi[/URL] for the idea and original code).
- Reworked some internals for the above changes.
- Minor changes to the AboutForm (ESC / ENTER to exit).
phoneDatabase update - (06-21-2011)
- Added GalaxyTab10.1.
- Added XperiaX8.
phoneDatabase update - (06-03-2011)
- Added Ascend.
phoneDatabase update - (06-02-2011)
- Added Blade.
- Added Milestone (Droid).
- Added G2x.
- Added OptimusOne.
- Added XperiaX10.
phoneDatabase update - (05-05-2011)
- Added Optimus2x.
- Added GalaxyS4G.
- Added Vibrant.
v1.0.1.1 - (04-12-2011)
- Adjusted conversion for write_radio_image and write_hboot_image.
- Misc. internal code changes.
phoneDatabase update - (04-12-2011)
- Added HeroC.
- Added NexusS.
- Added Fascinate.
- Added Thunderbolt.
phoneDatabase update - (03-08-2011)
- added Shift4G.
phoneDatabase update - (02-20-2011)
- added MyTouch4G.
v1.0.1.0 - (02-20-2011)
- added phoneDatabase.xml file for dynamic mount type loading.
- Misc. internal code changes.
v1.0.0.11 - (02-15-2011) [COLOR=Blue]Unreleased[/COLOR]
- Misc. internal code changes.
v1.0.0.10 - (02-14-2011)
- added Mount Type selection for HTC Incredible.
- added Mount Type selection for HTC G2.
pre v1.0.0.10
- see ChangeLog.txt (inside the zip)
=]

If this works as intended, could any joe-shmo (like myself) plug in the scripts from a rom.zip, paste over the new output, and then proceed to flash the rom? (avoiding having to wait for the dev to do it)...
Or is it a little more complicated than that
Sent from my baked and emotionless SPH-D700

finally
Sent from my SPH-D700 using XDA App

Beat me to it. I was working on a php convertor
Sent from my SPH-D700 using Tapatalk

It seems to be buggy right now. I've tried converting something small, a Gingerbread keyboard. Installation aborted.
Anyways, here's the link to what I copied:
http://forum.xda-developers.com/showthread.php?t=845162
Here's the output message:
# Unknown:: delete SYSTEM:app/ime-mtm-stock-gingerbread.apk ;
show_progress(0.1, 0);
# Unknown:: You shouldn't have seen this!
# Unknown:: You shouldn't have seen this!
show_progress(0.1, 10);

Doesn't look like proper syntax. You can't use keyword calls for system, data, tmp, etc in edify. Paths must be proper paths, /system
Sent from my SPH-D700 using Tapatalk

so, this tool is for converting the old .zip files we used to use into the new edify .zip files we need to use for EXT4?
ive been trying to find out how to reformat the CIA boot animation and some custom sounds for boot and shutdown to work with EXT4 but so far everything is aborted when i try to install

sauron0101 said:
It seems to be buggy right now. I've tried converting something small, a Gingerbread keyboard. Installation aborted.
Anyways, here's the link to what I copied:
http://forum.xda-developers.com/showthread.php?t=845162
Here's the output message:
# Unknown:: delete SYSTEM:app/ime-mtm-stock-gingerbread.apk ;
show_progress(0.1, 0);
# Unknown:: You shouldn't have seen this!
# Unknown:: You shouldn't have seen this!
show_progress(0.1, 10);
Click to expand...
Click to collapse
Looks like I forgot to add the delete cmd to the switch statement. =[
And the "you shouldn't see this" is from blank lines in the script (I think).
I'll fix it up when I get a chance (after work).
I'll be releasing the source as well if anyone cares...
@Dameon
You should still do the php thing... Some people hate .Net, and online is sometimes better than downloading a tool.
=]

squshy 7 said:
If this works as intended, could any joe-shmo (like myself) plug in the scripts from a rom.zip, paste over the new output, and then proceed to flash the rom? (avoiding having to wait for the dev to do it)...
Or is it a little more complicated than that
Sent from my baked and emotionless SPH-D700
Click to expand...
Click to collapse
Pretty much, yes...
I plan on supporting zip input and signed zip output. I'll have to see how dificult it is to implement...
=]

Program updated, check 1st post for changelog.
@sauron0101
Your errors should now be fixed.

@nubecoder:
Installation still seems to abort for whatever reason. Clockwork gave Error 6.

Dameon87 said:
Beat me to it. I was working on a php convertor
Sent from my SPH-D700 using Tapatalk
Click to expand...
Click to collapse
I was thinking about doing one, too, but it was I going to be lazy and either write a shell script or a simple C prog to use from the command line.

does it work?

thizzmaster said:
does it work?
Click to expand...
Click to collapse
There was a problem with the line endings being used, that seemed to be causing the "Status 6" error.
Should be fixed now.
Please report any bugs found.
=]

Provide a Linux Version, please.

Excellent tool, Great job.

Worked for me with a theme, thanks

does this do this auto or do you need the new edify scripts to paste in the output section? if you need the scripts could somone please post them.

danweb66 said:
does this do this auto or do you need the new edify scripts to paste in the output section? if you need the scripts could somone please post them.
Click to expand...
Click to collapse
Input is for the amend script. Output is where the edify scripts come out.
Remember the cardinal rule of nature, don't put anything in where something is supposed to come out.

I stripped nubecoders comments from his code for anyone who wants to see all the pieces being converted by this program. He has included his code with his prog, so if anyone wants to port at least the converter part to linux or whatever, look in a2eForm.cs.
Code:
* from: assert compatible_with("0.2") == "true"
* to: assert(compatible_with("0.2") == "true");
* from: show_progress 0.1 0
* to: show_progress(0.1, 0);
* from: format SYSTEM:
* to: delete_recursive("/system");
* from: delete SYSTEM:app/ime-mtm-stock-gingerbread.apk
* to: delete("/system/app/ime-mtm-stock-gingerbread.apk")
* from: delete_recursive SYSTEM:app
* to: delete_recursive("/system/app");
* from: copy_dir PACKAGE:system SYSTEM:
* to: package_extract_dir("system", "/system");
* from: copy_dir PACKAGE:app SYSTEM:app
* to: package_extract_dir("app", "/system/app");
* from: symlink SYSTEM:xbin/su SYSTEM:bin/su
* to: symlink("/system/xbin/su", "/system/bin/dumpcrash");
*
* from: symlink dumpstate SYSTEM:bin/dumpcrash
* to: symlink("dumpstate", "/system/bin/dumpcrash");
* from: set_perm_recursive 0 0 0755 0644 SYSTEM:
* to: set_perm_recursive(0, 0, 0755, 0644, "/system");
* from: set_perm_recursive 0 2000 0755 0755 SYSTEM:bin
* to: set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
* from: set_perm 0 3003 02755 SYSTEM:
* to: set_perm(0, 3003, 02755, "/system")
* from: set_perm 0 3003 02755 SYSTEM:bin/netcfg
* to: set_perm(0, 3003, 02755, "/system/bin/netcfg");
* from: run_program PACKAGE:installbusybox
* to: run_program("installbusybox");
* from: run_program programToRun arg1
* to: run_program("programToRun", "arg1");
* from: run_program programToRun arg1 arg2
* to: run_program("programToRun", "arg1", "arg2");
* from: run_program /system/xbin/busybox --install -s /system/xbin
* to: run_program("/system/xbin/busybox", "--install", "-s", "/system/xbin");
* from: write_raw_image PACKAGE:boot.img BOOT:
* to: assert(package_extract_file("boot.img", "/tmp/boot.img"),
* write_raw_image("/tmp/boot.img", "boot"),
* delete("/tmp/boot.img"));

Related

[DEV][AOSP] ICS sources and build instruction for A501

1. Preparing environment and building
1.1. Installing bootloader and recovery
This step can be done only in Windows (can be done on Linux too, but I didn't find right version of Linux nvflash):
Run MS Windows (tested even on Windows 7) on host PC
Download this package (Size=12592367 MD5=EA890A3B3E1CEDBBD820D1A798A365A2). Inside package:
Windows drivers for nVidia USB device
nvflash tool and required libraries
Unlocked bootloader, see details here
Batch for automatic update, see original batch here
Generate your SBK with your CPUID by this link
Connect tablet to PC through USB
Turn-off tablet
Press and hold reset button on tablet
Press power and wait until new USB device will be detected
Install USB drivers (can be find in package)
Run script run.bat and follow recommendations
1.2. Downloading sources and building Android
Create directory for AOSP sources
Code:
mkdir aosp && cd aosp
Initializing repo
Code:
repo init -u [url]https://android.googlesource.com/platform/manifest[/url] -b ics-mr1
Downloading sources
Code:
repo sync
Download sources of Acer Picasso device
Code:
git clone git://github.com/shchers/afs_device_acer_picasso.git device/acer/picasso
Download sources of MBM RIL library
Code:
git clone git://github.com/shchers/afs_vendor_mbm_mbm-ril.git vendor/mbm/mbm-ril
Download sources of MBM GPS library
Code:
git clone git://github.com/shchers/afs_vendor_mbm_libmbm-gps.git vendor/mbm/libmbm-gps
Download sources of MBM GPS service
Code:
git clone git://github.com/shchers/afs_vendor_mbm_mbmservice.git vendor/mbm/mbmservice
Setting-up build environment
Code:
source build/envsetup.sh
Configuring target (Acer A500/A501 == full-picasso)
Code:
lunch full_picasso-userdebug
Building with using all available CPU cores
Code:
m -j`grep -c processor /proc/cpuinfo`
2. Installing Android to device
2.1. Updating through CWM recovery
2.1.1. Creating update archive
Go to target output directory
Code:
cd ${ANDROID_PRODUCT_OUT}
Create folder for updater script. Run in console:
Code:
mkdir -p META-INF/com/google/android
Copy updater script there
Code:
show_progress(0.400000, 0);
ui_print("> Formating system partition");
format("ext4", "EMMC", "/dev/block/mmcblk0p3", "0");
ui_print("> Mounting system partition");
mount("ext4", "EMMC", "/dev/block/mmcblk0p3", "/system");
ui_print("> Extracting system directory");
package_extract_dir("system", "/system");
ui_print("> Creating symlinks");
show_progress(0.200000,0);
symlink("Roboto-Bold.ttf", "/system/fonts/DroidSans-Bold.ttf");
symlink("Roboto-Regular.ttf", "/system/fonts/DroidSans.ttf");
symlink("mksh", "/system/bin/sh");
symlink("toolbox",
"/system/bin/ls","/system/bin/mount","/system/bin/cat",
"/system/bin/ps","/system/bin/kill","/system/bin/ln",
"/system/bin/insmod","/system/bin/rmmod","/system/bin/lsmod",
"/system/bin/ifconfig","/system/bin/setconsole","/system/bin/rm",
"/system/bin/mkdir","/system/bin/rmdir","/system/bin/reboot",
"/system/bin/getevent","/system/bin/sendevent","/system/bin/date",
"/system/bin/wipe","/system/bin/sync","/system/bin/umount",
"/system/bin/start","/system/bin/stop","/system/bin/notify",
"/system/bin/cmp","/system/bin/dmesg","/system/bin/route",
"/system/bin/hd","/system/bin/dd","/system/bin/df",
"/system/bin/getprop","/system/bin/setprop","/system/bin/watchprops",
"/system/bin/log","/system/bin/sleep","/system/bin/renice",
"/system/bin/printenv","/system/bin/smd","/system/bin/chmod",
"/system/bin/chown","/system/bin/newfs_msdos","/system/bin/netstat",
"/system/bin/ioctl","/system/bin/mv","/system/bin/schedtop",
"/system/bin/top","/system/bin/iftop","/system/bin/id",
"/system/bin/uptime","/system/bin/vmstat","/system/bin/nandread",
"/system/bin/ionice","/system/bin/touch","/system/bin/lsof");
ui_print("> Applying permissions");
set_perm_recursive(0, 0, 0755, 0644, "/system");
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");
set_perm_recursive(1002, 1002, 0755, 0440, "/system/etc/bluetooth");
set_perm(0, 0, 0755, "/system/etc/bluetooth");
set_perm(1000, 1000, 0640, "/system/etc/bluetooth/auto_pairing.conf");
set_perm(3002, 3002, 0444, "/system/etc/bluetooth/blacklist.conf");
set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");
set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");
set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");
set_perm(0, 0, 0544, "/system/etc/install-recovery.sh");
set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");
set_perm_recursive(0, 2000, 0755, 0644, "/system/vendor");
set_perm(0, 0, 0644, "/system/vendor/fake.txt");
show_progress(0.200000, 10);
package_extract_file("boot.img", "/dev/block/mmcblk0p2");
NOTE: Don't rename file! It should be updater-script!
Download this archive (Size=149342 MD5=9497D5087FEF04C1EA4EE215A3DC83B8) and extract there
Create ZIP archive. Run in console:
Code:
zip -r9 full-pack.zip boot.img system META-INF
Generate keys. Run in console:
Code:
openssl genrsa -out key.pem 1024
openssl req -new -key key.pem -out request.pem
openssl x509 -req -days 3650 -in request.pem -signkey key.pem -out certificate.pem
openssl pkcs8 -topk8 -outform DER -in key.pem -inform PEM -out key.pk8 -nocrypt
Run signing archive. Run in console:
Code:
java -jar ${ANDROID_HOST_OUT}/framework/signapk.jar certificate.pem key.pk8 full-pack.zip full-pack-sign.zip
2.1.2. Using CWM recovery
Upload full-pack-sign.zip on FAT32 formated microSD card
Turn-off tabled
Insert microSD
Press Power button while hold Volume Down button
Release Power button when you'll see text in top left corner, some like "cleaning cache partition..."
From opened menu select "wipe data/factory reset"
Select "Yes -- delete all user data"
Press on "install zip from sdcard" menu
Select "choose zip from sdcard"
In this menu select "full-pack-sign.zip"
After installing press "Go back"
Press "reboot device"
2.2. Updating through Android debug
2.2.1. Updating system partition
Get a root access
Code:
adb root && adb wait-for-device
Remount system partition with R/W permitions
Code:
adb shell mount -o remount,rw -t ext4 /dev/block/mmcblk0p3 /system/
Sync binaries
Code:
adb shell stop && adb sync && adb reboot
2.2.2. Updating boot partition
Reboot to fastboot
Code:
adb reboot bootloader
Select one of possible methods to use new boot partition
Boot with custom kernel and ramdisk without flashing (boot partition will not be rewrote) - this mode useful for debugging kernel/root
Code:
fastboot boot ${ANDROID_PRODUCT_OUT}/kernel ${ANDROID_PRODUCT_OUT}/ramdisk.img
Boot with custom boot.img without flashing (boot partition will not be rewrote) - this mode also can be used for debugging kernel/root
Code:
fastboot boot ${ANDROID_PRODUCT_OUT}/boot.img
Flashing new boot.img to boot partition
Code:
fastboot flash:raw boot ${ANDROID_PRODUCT_OUT}/kernel ${ANDROID_PRODUCT_OUT}/ramdisk.img
2.3. Enabling Google services
To enable Google services on new system, should be copied several Google binaries to /system/app. To do it should b done several steps:
Get a root access
Code:
adb root && adb wait-for-device
Remount system partition with R/W permitions
Code:
adb shell mount -o remount,rw -t ext4 /dev/block/mmcblk0p3 /system/
Download this (i.e. GAPPS) archive (Size=16449776 MD5=C7E6FAAFE7223A17DE93DD1D7A968734)
Extract it somewhere
Code:
mkdir GooglePack && cd GooglePack
unzip googlepack.zip
Stop dalvik virtual machine
Code:
adb shell stop
Upload APK files
Code:
for f in `ls *.apk`; do echo "Uploading $f" && adb push $f /system/app/; done
Remove Provision.apk - it looks like setup wizard, but SetupWizard.apk much powerful
Reboot device to recovery and wipe data partition (use CWM "Wipe" menu for it)
Code:
adb reboot recovery
Reboot device after wiping
Use wizard on system start-up to configure your account
Use Android Market to install GMail and other apps
3. Debugging
3.1. RILD
To see rild log should be done:
Code:
adb logcat -b radio
4. FAQ
Q: WiFi scanner show few AP, but can't connect anywhere...
A: Try to make factory reset.
Click to expand...
Click to collapse
Q: Is it thor2002ro sources?
A: No, it is my own port.
Click to expand...
Click to collapse
Q: What is the version?
A: ICS MR1 (Current version: 4.0.4).
Click to expand...
Click to collapse
5. Supported features
2D/3D acceleration
Photo/Video Camera
2G/3G
GPS
AGPS
SMS (tested only in GSM networks)
WiFi
Bluetooth
Audio/Video playback
Image viewing
External SD Card
External USB storage
Compass
Gyroscope
6. To do
[rild] Add support for USSD
[rild] Add support/check for MMS
[libsensors] Implement libsensors and replace Acer binaries
[audio] Add support for USB audio devices
[audio] Add support for modem audio input
7. Screenshots
Version
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
EDGE connection
Speed test results on HSDPA+
8. Pre-builds
Build #1 (Size=114409141 MD5=11C9E0BE468B21BF061C7ECF6673C9B4)
Build #2 (Size=119899802 MD5=4CB798A28B38D02217752C6E09F0E226)
[reserved]
Reserved for further updates, if it will be necessary...
Well, thanks to my Ukraine neighbor
Should be an interesting project for the weekend!
Would be great if someone could post a .zip
Holy sweet meatballs!
I have a A501, and I'm pleased to hear that the 3G Iconia is getting some love. Makes me wonder if I should sell it with the ICS ROM loaded on it, or keep it now it has ICS love since I have a Galaxy Tab...
Decisions Decisions.
Eagerly waiting a ZIP so we can all be eating some delicious Ice Cream Sandwich.
That's great, also the steps are really clean, maybe you should give some tips to acer
@shchers: aren't you thinking about submitting your work to CyanogenMod so our tables could get official support from CM team? I think there is no Acer Iconia maintainer right now at all in the CM team so you could try and join them as Iconia maintainer. This would be really great.
Hm, forgive me for asking but where is the kernel to use with it?
macia10 said:
Hm, forgive me for asking but where is the kernel to use with it?
Click to expand...
Click to collapse
After I've written above reply, I've checked shchers' git repo and there is a kernel but in a binary form.
@shchers: did you build this kernel yourself? GPL licence requires that you need to publish its sources as well.
yaworski said:
After I've written above reply, I've checked shchers' git repo and there is a kernel but in a binary form.
@shchers: did you build this kernel yourself? GPL licence requires that you need to publish its sources as well.
Click to expand...
Click to collapse
ONLY if he modified it from Acer's released source. If he didn't, he doesn't have to add the sources to his git (though it'd be handy for conveniences sake). Best we wait and see what he says before jumping to ANY conclusions.
Either way, FANTASTIC work shchers! Thank you VERY much!
@shchers: did you build this kernel yourself? GPL licence requires that you need to publish its sources as well.
Click to expand...
Click to collapse
No, I used Acer kernel. But thanks for reminder
When my kernel will be ready I'll share it with community
About ZIP... I see that many people asking about update package, so I started building and it will be ready in a one hour.
shchers said:
No, I used Acer kernel. But thanks for reminder
When my kernel will be ready I'll share it with community
About ZIP... I see that many people asking about update package, so I started building and it will be ready in a one hour.
Click to expand...
Click to collapse
Awesome. Have you thought about the CyanogenMOD suggestion made earlier? If you added your source to that, we could get official support for it on our devices which would rock, and it'd also make life easier for those wanting to get MIUI ported over.
yaworski said:
@shchers: aren't you thinking about submitting your work to CyanogenMod so our tables could get official support from CM team? I think there is no Acer Iconia maintainer right now at all in the CM team so you could try and join them as Iconia maintainer. This would be really great.
Click to expand...
Click to collapse
Good point, but unfortunately I'd never seen CM source code. May be you can share link to CM Gerrit/Git with me?
shchers said:
Good point, but unfortunately I'd never seen CM source code. May be you can share link to CM Gerrit/Git with me?
Click to expand...
Click to collapse
You should find all you need through the following link...
http://www.cyanogenmod.com/community
There's also a link to their Git hub on there.
shchers said:
Good point, but unfortunately I'd never seen CM source code. May be you can share link to CM Gerrit/Git with me?
Click to expand...
Click to collapse
All you need is here:
http://wiki.cyanogenmod.com/wiki/Building_from_source
http://wiki.cyanogenmod.com/wiki/Howto:_Gerrit
(just replace gingerbread branch with ics)
But you probably need working kernel source for the device to submit vendor specific code to CM.
Is this kernel just a binary from Acer's leak? I'm asking because I'm not aware of a working kernel source for a500.
shchers said:
About ZIP... I see that many people asking about update package, so I started building and it will be ready in a one hour.
Click to expand...
Click to collapse
thx man! i really want to give it a try!
and thx for showing some love to us a501 users nobody cares about us
To yaworski and FloatingFatMan:
Guys, thanks a lot for links! I'll try to build CM tonight
shchers said:
To yaworski and FloatingFatMan:
Guys, thanks a lot for links! I'll try to build CM tonight
Click to expand...
Click to collapse
What, that would be very nice, even though i own an A500! If you need an testing, I'll volunteer.
Taptalked u see
tosomax said:
thx man! i really want to give it a try!
and thx for showing some love to us a501 users nobody cares about us
Click to expand...
Click to collapse
See link in comment #1
Well, I guess I can forget about configuring ubuntu for now
cygwin never could get working.
Great job on compiling and getting the link up!
RapidShare.... not so rapid Probably getting flooded by all the 501 users
You 500 users go play with the 500 roms and stop sucking all the bandwidth!

[DEV_TOOL] HTC ROM EXTRACTOR * UNRUU | DECRYPT/ENCRYPT rom.zip I REPACK system.img *

[DEV_TOOL] HTC ROM EXTRACTOR​
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Tools for working with firmware HTC in LINUX
fit Kenny Millington Source kmdm
(HOW TO)
PUSH THE BUTTON
! Requirements (libunshield v0.7 or higher):
Code:
$ sudo apt-get install automake
$ git clone https://github.com/kmdm/unshield.git
$ cd unshield/
$ git checkout -t origin/v18\_wip
$ ./bootstrap
$ ./configure --prefix=/usr
$ make
$ sudo make install
1. Extract from the zip and put the RUUXXXXXXXXX.exe to a folder with the tool;
2. Run in Terminal rom-extractor file and select the option:
MAIN MENU
u - UNRUU EXE TO ZIP - extract from the file rom.zip RUU.exe
d - DECRYPT MENU > DECRYPT MENU ROM.ZIP > OUTPUT.ZIP
r - REPACK MENU > REPACK MENU
e - ENCRYPT MENU >
c - CLEAN TOOL - Unmount and remove temporary files
x - exit
> DECRYPT MENU ROM.ZIP > OUTPUT.ZIP
1 ... 24 - decode the file rom.zip output.zip (select the target device)
> REPACK MENU
e - EXTRACT ZIP ROM - to extract the firmware from the ROM folder output.zip
m - MOUNT SYSTEM (EXT4 ONLY) - mount the partition image system.img in the folder system (you can add \ remove the firmware files)
d - DESPARSE SYSTEM.IMG (EXT4 ONLY) - uncompress the sparse image system.img (depending on the device - some zhaty, some not (determined EXPERIMENTAL)) and mount the partition image system.img in the folder system (you can add \ remove the firmware files)
s - MAKE SPARSE SYSTEM.IMG (EXT4 ONLY) - the creation of a sparse image sistem.img (you must specify the size of the partition XXXXM (device) - for example ONE X = 1280M)
n - UNMOUNT SYSTEM - dismount and delete the folder system
z - ADD SYSTEM.IMG > OUTPUT.ZIP - add new edited system.img into output.zip
> ENCRYPT MENU OUTPUT.ZIP > ROM.ZIP
1 ... 24 - create encrypt new rom.zip from output.zip
Thanks
as i9000 said:
[DEV_TOOL] HTC ROM EXTRACTOR​
Tools for working with firmware HTC in LINUX
fit Kenny Millington Source
(HOW TO)
PUSH THE BUTTON
! Requirements (libunshield v0.7 or higher):
Code:
$ git clone https://github.com/kmdm/unshield.git
$ cd unshield/
$ git checkout -t origin/v18\_wip
$ ./bootstrap
$ ./configure --prefix=/usr
$ make
$ sudo make install
1. Extract from the zip and put the firmware. Exe to a folder with the tool;
2. Run in Terminal rom-extractor file and select the option:
u - extract from the file rom.zip RUU.exe
1 ... 21 - decode the file rom.zip output.zip (select the target device)
e - to extract the firmware from the ROM folder output.zip
m - mount the partition image system.img in the folder system (you can add \ remove the firmware files)
n - dismount and delete the folder system
c - Clean all tools
x - exit
d - uncompress the sparse image system.img (depending on the device - some zhaty, some not (determined EXPERIMENTAL)) and mount the partition image system.img in the folder system (you can add \ remove the firmware files)
s - the creation of a sparse image sistem.img (you must specify the size of the partition XXXXM (device) - for example ONE X = 1280M)
Click to expand...
Click to collapse
i can not work and i can not runnig
R: [DEV_TOOL] HTC ROM EXTRACTOR extract RUU & repack system.img
lauri_ylonen said:
i can not work and i can not runnig
Click to expand...
Click to collapse
This is only for linux
Inviato dal mio GT-I9070 con Tapatalk 2
Are there plans to add the One S?
Nm. Just looked at the source.... Oops.
bedwa said:
Are there plans to add the One S?
Nm. Just looked at the source.... Oops.
Click to expand...
Click to collapse
INFO FOR ALL...
If your device is not supported and you would like it supported please open an issue in the tracker with the device name, codename and a link to the most recent hboot file for the device. (Not a link to the full RUU!)
Click to expand...
Click to collapse
Kenny Milington https://github.com/kmdm/ruuveal
anything more?..
I promise to add new binaries in my instrument as we update source
Not as all. The oops was cause I looked at the source and noticed the unpacker was One S supported. Lol.
Fixed a typo in paragraph 21
HTC One VX (tc2) > HTC One S (ville)
add
HTC_ROM-EXTRACTOR_v.0.0.3_x64
it seems that I'm doing something wrong.
[email protected]:~$ git clone https://github.com/kmdm/unshield.git
Cloning into 'unshield'...
remote: Counting objects: 569, done.
remote: Compressing objects: 100% (208/208), done.
remote: Total 569 (delta 370), reused 545 (delta 346)
Receiving objects: 100% (569/569), 116.31 KiB | 204 KiB/s, done.
Resolving deltas: 100% (370/370), done.
[email protected]:~$ cd unshield/
[email protected]:~/unshield$ git checkout -t origin/v18\_wip
Branch v18_wip set up to track remote branch v18_wip from origin.
Switched to a new branch 'v18_wip'
[email protected]:~/unshield$ ./bootstrap
Creating configure.ac...done.
+ aclocal -I m4
./bootstrap: 29: ./bootstrap: aclocal: not found
[email protected]:~/unshield$
Click to expand...
Click to collapse
can anyone help?
Maybe a more step-bystep guide,
Sorry for been noob
andrewschumi said:
it seems that I'm doing something wrong.
can anyone help?
Maybe a more step-bystep guide,
Sorry for been noob
Click to expand...
Click to collapse
sudo apt-get install automake
Added
v.o.o.4
22 - HTC One U (m7_u)
23 - HTC One UL (m7_ul)
24 - HTC Desire SV (magnids)
ADDED v.0.0.5
REBUILD TOOL
ADDED ENCRYPT MENU!!!
as i9000 said:
ADDED v.0.0.5
REBUILD TOOL
ADDED ENCRYPT MENU!!!
Click to expand...
Click to collapse
Could you please help? unruu never completes. It gives me this
Extracting temporary files...
Extracting rom zip files...
./unruu_exe: line 8: 4379 Aborted (core dumped) ./unruu ruu.exe
failed to open source zip: No such file or directory
That last line fails because decrypt is looking for a zip that was never made.
If i do ./unruu ruu.exe , I am given the following
[email protected]:~/Desktop/HTC_ROM-EXTRACTOR_v.0.0.5/tools$ ./unruu ruu.exe
Extracting temporary files...
Extracting rom zip files...
Aborted (core dumped)
Click to expand...
Click to collapse
this was done as root with the same result.
Perhaps I need to switch to all i386 binaries? Ill try that, but i was trying to avoid it, as it will break my current nvidia driver setup. ohwell
Tilde88 said:
Could you please help? unruu never completes. It gives me this
Extracting temporary files...
Extracting rom zip files...
./unruu_exe: line 8: 4379 Aborted (core dumped) ./unruu ruu.exe
failed to open source zip: No such file or directory
That last line fails because decrypt is looking for a zip that was never made.
If i do ./unruu ruu.exe , I am given the following
this was done as root with the same result.
Perhaps I need to switch to all i386 binaries? Ill try that, but i was trying to avoid it, as it will break my current nvidia driver setup. ohwell
Click to expand...
Click to collapse
Did you do this?
! Requirements (libunshield v0.7 or higher):
Code:
$ sudo apt-get install automake
$ git clone https://github.com/kmdm/unshield.git
$ cd unshield/
$ git checkout -t origin/v18\_wip
$ ./bootstrap
$ ./configure --prefix=/usr
$ make
$ sudo make install
Added version 0.0.6 x86-64
25 - HTC One WLS (m7_wls)
26 - HTC One SV (k2_u)
27 - HTC One SV (k2_plc_cl)
as i9000 said:
Did you do this?
! Requirements (libunshield v0.7 or higher):
Code:
$ sudo apt-get install automake
$ git clone https://github.com/kmdm/unshield.git
$ cd unshield/
$ git checkout -t origin/v18\_wip
$ ./bootstrap
$ ./configure --prefix=/usr
$ make
$ sudo make install
Click to expand...
Click to collapse
lol yes of course
Tilde88 said:
lol yes of course
Click to expand...
Click to collapse
OK, try to extract some different rom, may be you has problem from invalid ruu.exe..
and more, what size have your ruu.exe? - x32 systems, can't handle files largest 2GB...
as i9000 said:
OK, try to extract some different rom, may be you has problem from invalid ruu.exe..
and more, what size have your ruu.exe? - x32 systems, can't handle files largest 2GB...
Click to expand...
Click to collapse
im running x64, tried with x64 binaries, and i also tried using 32bit binaries. furthermore, my RUU is onlt 1.15GB. Also, x86 (there is not such thing as x32) can handle 3gb files.
thanks so much for the tool though, everything else workes, I juse used a script I found from another developer to get the .zip, then used your tool for all the other features.
Tilde88 said:
im running x64, tried with x64 binaries, and i also tried using 32bit binaries. furthermore, my RUU is onlt 1.15GB. Also, x86 (there is not such thing as x32) can handle 3gb files.
thanks so much for the tool though, everything else workes, I juse used a script I found from another developer to get the .zip, then used your tool for all the other features.
Click to expand...
Click to collapse
Well then stay one variant - you doesn't installed "Unshield", try run terminal and input 'unsield'
here the correct conclusion:
Code:
~$ unshield
No action provided on command line.
Syntax:
unshield [-c COMPONENT] [-d DIRECTORY] [-D LEVEL] [-g GROUP] [-i VERSION] [-GhlOrV] c|g|l|t|x CABFILE [FILENAME...]
Options:
-c COMPONENT Only list/extract this component
-d DIRECTORY Extract files to DIRECTORY
-D LEVEL Set debug log level
0 - No logging (default)
1 - Errors only
2 - Errors and warnings
3 - Errors, warnings and debug messages
-g GROUP Only list/extract this file group
-h Show this help message
-i VERSION Force InstallShield version number (don't autodetect)
-j Junk paths (do not make directories)
-L Make file and directory names lowercase
-O Use old compression
-r Save raw data (do not decompress)
-V Print copyright and version information
Commands:
c List components
g List file groups
l List files
t Test files
x Extract files
Other:
CABFILE The file to list or extract contents of
FILENAME... Optionally specify names of specific files to extract (wildcards are supported)
hi is there any chance to add the Desire HD. As i am trying to merge a Orange UK RUU for Desire DHD and they never released the last RUU with all the OTA's to make a New RUU with all the OTA's included.
I have made a Nandroid backup after all the OTA's was installed to the phone i even have all the OTA's just need a way to extract the rom.zip (easy from exe file not a issue) add the changed .img files such as radio, system, hboot recovery rcdata lib.img and make a new rom.zip and ruu.exe any way this can be done just tried with your tool and got invalid htc aes encrypted zip.
Thanks in advance

NTFS on your android with full read write support

How to install this:
1. put copymodulecrc to the /data/local/tmp folder and chmod them to 755
(adb shell chmod 755 /data/local/tmp/copymodulecrc)
2. put ntfs-3g and ntfsmount to the folder /system/bin and chmod them to 755
(adb shell chmod 755 /system/bin/ntfs-3g)
(adb shell chmod 755 /system/bin/ntfsmount)
3. put sdcardfs.ko to the folder /system/lib/modules and chmod them to 644
(adb shell chmod 644 /system/lib/modules/sdcardfs.ko)
What is next? Next:
1. in order to get it working, sdcardfs.ko must be patched to match your kernel version since every kernel modules is paired with kernel by version string, so if version string not match module version it will not work! So you must patch sdcardfs.ko module using tool called copymodulecrc! Copymodulecrc will extract version string from any module of the your stockrom kernel modules and copy them directly to the sdcardfs.ko (patch them). First of all you need to look into your /system/lib/modules folder and use any .ko file NAME for referencie in next commands:
Code:
adb shell /data/local/tmp/copymodulecrc /system/lib/modules/PUT_NAME_OF_THE_KO_YOU_FOUND_IN_STOCK_ROM_KERNEL_MODULES /system/lib/modules/sdcardfs.ko
So replace PUT_NAME_OF_THE_KO_YOU_FOUND_IN_STOCK_ROM_KERNEL_MODULES with the name of the any module you found in modules folder! Done.
2. if you completed step 1 without errors you are ready for this step. You need to locate script called install-recovery.sh (on most devices it is in folder /system/etc) and add next lines:
Code:
insmod /system/lib/modules/sdcardfs.ko
Done. On every next reboot sdcardfs kernel module will be automatically included in your kernel.
3. if you get error in patching sdcardfs.ko whole thing will not work! So these step is important! You can verify success by command: (su -c "insmod /system/lib/modules/sdcardfs.ko") , if you see error than sdcardfs is not working, if you see nothing than it is working
Since you completed these 3 things, you are ready to use NTFS volumes on your device! To understand these things:
1. first of all, you can not mount ntfs volume regulary trought settings menu since android not support ntfs by default! You must mount/umount your ntfs volume manually (you can use for example android terminal emulator when you need to mount/umount ntfs). You will not see any details about ntfs volume in settings menu since android not support ntfs by default, you can see details in most file managers only.
How to mount and unmount:
1. to mount (first connect your usb ntfs volume to your device usb port) :
Code:
su -c "ntfsmount mount"
Done! Your ntfs volume by these command is mounted and you are ready to read/write them using your faworite file manager
2. To umount (do in mind - every time before you going to remove ntfs volume from your device you must unmount it!):
Code:
su -c "ntfsmount umount"
Done! You are ready to remove ntfs volume from your usb port.
NTFS on sdcard? Yes but you need to modify a bit ntfsnount script! Don't ask me how ypu can modify them, do it byself!
Since somebody complain here about gpl licence, I am not ready ready to share sdcardfs source code with you since it is not gpl licenced, instead it is apache 2.0 licenced by Samsung guys @ 2013 and I no need to share it with you since you wanted to see them forced! I not like when somebody forcing me for something! Find it, patch them, make module of them byself
ntfs-3g is not compiled by me, it is used from here -> http://forum.xda-developers.com/showthread.php?t=1724078
ntfsmount script is created by me.
Copymodulecrc I do not know where I found them but here is source code:
Code:
/* copymodulecrc */
/*
* Copyright (C) 2014 CUBE
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#include <stdio.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/mman.h>
int main(int argc, char **argv) {
struct stat st;
off_t filesize;
int fd;
char *data, *pos;
unsigned int i;
int bFound;
unsigned long crcval;
if (argc != 3) {
printf("usage: copymodulecrc [modulename(src)] [modulename(dst)]\n");
return -1;
}
if (stat(argv[1], &st) != 0) {
fprintf(stderr, "module1 stat failed.\n");
return -1;
}
filesize = st.st_size;
fd = open(argv[1], O_RDONLY);
if (fd < 0) {
fprintf(stderr, "module1 open failed.\n");
return -1;
}
data = mmap(NULL, filesize, PROT_READ, MAP_SHARED, fd, 0);
if (data == MAP_FAILED) {
fprintf(stderr, "module1 mmap failed.\n");
close(fd);
return -1;
}
pos = data;
bFound = 0;
for (i = 0; i < (filesize - 12); ++i) {
if (memcmp((void *)pos, (void *)"module_layout", 13) == 0) {
bFound = 1;
break;
}
pos++;
}
if (bFound == 0) {
fprintf(stderr, "module1 crc not found.\n");
munmap(data, filesize);
close(fd);
return -1;
}
pos -= 4;
memcpy((void *)&crcval, (void *)pos, 4);
munmap(data, filesize);
close(fd);
printf("module crc=%08x\n", (unsigned int)crcval);
if (stat(argv[2], &st) != 0) {
fprintf(stderr, "module2 stat failed.\n");
return -1;
}
filesize = st.st_size;
fd = open(argv[2], O_RDWR);
if (fd < 0) {
fprintf(stderr, "module2 open failed.\n");
return -1;
}
data = mmap(NULL, filesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
if (data == MAP_FAILED) {
fprintf(stderr, "module2 mmap failed.\n");
close(fd);
return -1;
}
pos = data;
bFound = 0;
for (i = 0; i < (filesize - 12); ++i) {
if (memcmp((void *)pos, (void *)"module_layout", 13) == 0) {
bFound = 1;
break;
}
pos++;
}
if (bFound == 0) {
fprintf(stderr, "module2 crc not found.\n");
munmap(data, filesize);
close(fd);
return -1;
}
pos -= 4;
memcpy((void *)pos, (void *)&crcval, 4);
munmap(data, filesize);
close(fd);
printf("module crc copied.\n");
return 0;
}
And finaly, files you need to install is in attachment, enjoy!
Will try late-night. Just asking, will it work on Galaxy S3-GTi9300?
Just need some clarification, when you say NTFS support, do you mean read and write or just read-only?
munjeni said:
Not going to explain in details, here is my tool which will add ntfs support to your android, run them and folow instructions! If you unable to patch sdcardfs.ko kernel module (giving you error when you doing insmod) than the whole things will not work on your device Curntly tested device is Xperia Z1 Compact on android version 14.4.A.0.108! Important thing is having sdcardfs installable, the rest is easy.
In order to have sdcardfs module insmoded on every reboot, you need to add one line into /system/etc/install-recovery.sh :
The rest of the tutorial you can see under application. Enjoy if you find this usefull!
Click to expand...
Click to collapse
/system/etc/install-recovery.sh :-
- install-recovery.sh file is not available at /system/etc/.
- Is it possible to create the file and then we can insert the line?
Am using AOSP - Carbon ROM on Xperia Z..
Thank you!!
'A Munjeni Work' again!
Thanks a lot! :victory:
Looking forward for what all can I do with it.
Wow this will be amazing, cant wait to try...
anonyo said:
Just need some clarification, when you say NTFS support, do you mean read and write or just read-only?
Click to expand...
Click to collapse
+1
anonyo said:
Just need some clarification, when you say NTFS support, do you mean read and write or just read-only?
Click to expand...
Click to collapse
Quote!
Just a heads up..
On Xperia Z2 tablet with 4.4.2, connected to 1tb NTFS drive.
After modding the ko and setting all permissions, rebooting, will only "half-mount" the drive. It sees it, recognizes it, but claims drive is empty (wants to format it).
Status bar displays "Empty USB Storage"
In settings, when selecting Mount USB Storage, it briefly acts like it will mount. for a split second.
Any files I can get that can possibly help?
UPDATE: After running the mount commands via terminal, now it seems to mount it via ES File explorer. Although it sometimes still gives me the message in statusbar.
But seems to be working well.
Seeing as this patches a kernel module will it work on rooted phones with a locked bootloader?
Aborto said:
Seeing as this patches a kernel module will it work on rooted phones with a locked bootloader?
Click to expand...
Click to collapse
My Z2 Tablet has a locked bootloader. So yes, it should. There's nothing going on that warrants an unlocked bootloader. Just the addition of some files and permission changes, which are normal with a rooted device.
Also note, that in the Settings\Storage, it will not show up as being "mounted". At least not in my case. However, ES File Explorer has no issue with it, and shows as a USB 1052 drive under the "Local" menu. Navigation seems normal within the drive.
I get the "USB Drive Empty or Unsupported" message in the status bar, for a few seconds, but the ES FE displays the drive contents, and the message goes away after it reads drive contents. Note that it may assign a different drive identifier each time you use it.
In testing I have found apps from the market;
StickMount does not work at all on my Stock OS.
Paragon NTFS mount works, but it runs as a system process using memory and probably battery.
This mod seems to work, for the most part, as long as you use ES File Explorer.
OP - you must provide the source for any modified code covered by the GPL that you are distributing - that includes the sdcardfs kernel module, and the ntfs-3g binary. Packing them in an encrypted Windows executable does not help.
spoidar said:
OP - you must provide the source for any modified code covered by the GPL that you are distributing - that includes the sdcardfs kernel module, and the ntfs-3g binary. Packing them in an encrypted Windows executable does not help.
Click to expand...
Click to collapse
No he doesn't. Only the zimage (kernel) is covered under GPL.
UPDATE: Just to clarify, the matter "Has" been brought to the Developers Committee to address any possible GPL violations. The DC is more informed on GPL.
Moscow Desire said:
No he doesn't. Only the zimage (kernel) is covered under GPL.
Click to expand...
Click to collapse
What? No. The ntfs-3g project is licensed under the GPL. And so is the sdcardfs driver. You can't generate binaries from GPL code and distribute them without providing the source.
Need help here
After i Copy copymodulecrc and sdcardfs.ko to /data/local/tmp and gave the permission as rwx-r-r to copymodulecrc. how to run it? can anybody help me here to patch sdcardfs.ko
coolrevi said:
After i Copy copymodulecrc and sdcardfs.ko to /data/local/tmp and gave the permission as rwx-r-r to copymodulecrc. how to run it? can anybody help me here to patch sdcardfs.ko
Click to expand...
Click to collapse
First off, permissions must be set to 755 (rwx-rx-rx) if I'm not mistaken. Root Explorer converts it to the numerical format when you change permissions.
Next, use a terminal program (available from the play store) Make sure you run it as SU. (type SU + Enter, you will get the # sign) Then type in the commands and paths as indicated. (I copied and pasted my paths)
Moscow Desire said:
First off, permissions must be set to 755 (rwx-rx-rx) if I'm not mistaken. Root Explorer converts it to the numerical format when you change permissions.
Next, use a terminal program (available from the play store) Make sure you run it as SU. (type SU + Enter, you will get the # sign) Then type in the commands and paths as indicated. (I copied and pasted my paths)
Click to expand...
Click to collapse
I got it till replacing a line in install-recovery.sh but i am stuck there as there is no line called ntfs.ko to replace with
Thanks for posting this up, can't wait to get home and test this out.
I am recieving the error in the screenshot
The device that i am using is Lenovo A3500HV which contains a Jellybean 4.2.2 AOSP ROM (Hardly any modification)
Please Help
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}

[GUIDE][COMPLETE] Build or Port MIUI ROM to Any Device

{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Introduction:-
Hey guys! Here's a complete tutorial for building or porting MIUI to your device! I know there are already some guides for it but I felt none of them were noob-friendly and many were confusing and missing some important instructions. So I decided to share this complete guide which will teach you how to build MIUI from scratch. This is a basic guide in which I have taken building latest MIUI v7 as example. So let's start!
POST 1- Guide to build MIUI using PatchROM Sources
POST 2- Modifying boot.img
POST 3- Guide to port MIUI from another device
Basically,There are two methods by which you can build MIUI ROM for your device.
Build from source using PatchROM Method
Port manually from another device which already has MIUI
Let's start with PatchROM Method:-
Requirements:-
Ubuntu 14.04 64-bit. (Installed as virtual machine like in VMware will also work)
Base ROM for your device.
NOTE- Preferably take pure AOSP built for your device as base ROM rather than CyanogenMod. You'll get less rejects while patching MIUI framework. But CM works too! Your choice..
Apktool. You can use Advanced Apktool by BDFreak. It's easier to use.
Working brain and a lot of patience!!
Prerequisites:-
First of all, take framework-res.apk, framework.jar, framework2.jar, services.jar, android.policy.jar and telephony-common.jar from your base ROM zip.
Now using apktool, decompile all above files.
If you're using advanced apktool then go to 3-Out folder and rename the respective folders to-
PHP:
framework-res
framework.jar.out
framework2.jar.out
services.jar.out
android.policy.jar.out
telephony-common.jar.out
We'll need these folders further for MIUI framework patching.
STEP-1: Preparing build environment
Switch to Ubuntu 14.04. We'll have to prepare ROM building environment.
Next step is to setup android sdk. Follow THIS guide. (Look at 2nd answer graphical image explanation. Follow till step 5.)
Now run the following commands as superuser from terminal-
PHP:
sudo apt-get update
Then after run this-
sudo apt-get install bison build-essential curl flex git git-core gnupg gperf libesd0-dev liblz4-tool libncurses5-dev libsdl1.2-dev libwxgtk2.8-dev libxml2 libxml2-utils lzop openjdk-7-jdk openjdk-7-jre pngcrush schedtool squashfs-tools xsltproc zip zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev unzip lib32readline-gplv2-dev lib32z1-dev make python-networkx zlib1g-dev:i386 phablet-tools
Click to expand...
Click to collapse
All the necessary packages are now installed. Now the next step is to configure repository.
In terminal,run following commands-
PHP:
mkdir -p ~/bin
PHP:
PATH=~/bin:$PATH
PHP:
cd ~/bin
PHP:
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
PHP:
chmod a+x ~/bin/repo
PHP:
mkdir ~/patchrom
PHP:
cd ~/patchrom
PHP:
repo init -u git://github.com/MiCode/patchrom.git -b miui-7 -m android-4.4.4.xml
Now you'll have to configure git. Run following commands in terminal-
Code:
git config --global user.email [COLOR="Red"]ENTER_YOUR_EMAIL_ID_HERE[/COLOR]
Code:
git config --global user.name [COLOR="Red"]ENTER_YOUR_REAL_NAME_HERE[/COLOR]
Now it's time to download the MIUI source code! Run the following command in terminal-
PHP:
repo init -u git://github.com/MiCode/patchrom.git -b miui-7 -m android-4.4.4.xml
PHP:
repo sync
Now grab a cup of coffee while the MIUI source gets downloaded. Required time depends on speed of your internet connection. The MIUI source is of size about 600-700 MB (With .repo total is 1.5 GB).
After the source is downloaded,create a new directory in /home. Name it whatever you want. (Preferably codename of your device) In my case, it's taoshan.
PHP:
cd /home/stryder/
PHP:
mkdir taoshan
PHP:
cd taoshan
Now create a makefile for your device. If you want, you can make changes to this my makefile and use.
PHP:
gedit makefile
You can copy the following content in makefile (Don't forget to make changes in it according to your device) and save it.
Code:
#
# Makefile for taoshan
#
# The original zip file, MUST be specified by each product
local-zip-file := stockrom.zip
# The output zip file of MIUI rom, the default is porting_miui.zip if not specified
local-out-zip-file := MIUI7_taoshan.zip
# All apps from original ZIP, but has smali files chanded
local-modified-apps :=
local-modified-priv-apps :=
local-modified-jars :=
# All apks from MIUI
local-miui-removed-apps :=
local-miui-removed-priv-apps :=
local-miui-modified-apps :=
# All apps need to be removed from original ZIP file
local-remove-apps := Gallery2 Exchange2
# Config density for co-developers to use the aaps with HDPI or XHDPI resource,
# Default configrations are HDPI for ics branch and XHDPI for jellybean branch
local-density := XHDPI
PORT_PRODUCT := taoshan
# To include the local targets before and after zip the final ZIP file,
# and the local-targets should:
# (1) be defined after including porting.mk if using any global variable(see porting.mk)
# (2) the name should be leaded with local- to prevent any conflict with global targets
#local-pre-zip := local-pre-zip-misc
#local-after-zip:= local-put-to-phone
# The local targets after the zip file is generated, could include 'zip2sd' to
# deliver the zip file to phone, or to customize other actions
#include phoneapps.mk
include $(PORT_BUILD)/porting.mk
local-pre-zip-misc:
@echo Update boot.img
cp other/boot.img $(ZIP_DIR)/boot.img
@echo Update build.prop
cp other/build.prop $(ZIP_DIR)/system/build.prop
@echo Delete some unneeded files
rm -rf $(ZIP_DIR)/system/etc/.has_su_daemon
rm -rf $(ZIP_DIR)/system/priv-app/Dialer.apk
rm -rf $(ZIP_DIR)/system/priv-app/Keyguard.apk
rm -rf $(ZIP_DIR)/system/priv-app/SystemUI.apk
rm -rf $(ZIP_DIR)/system/priv-app/VoiceDialer.apk
rm -rf $(ZIP_DIR)/system/priv-app/Launcher3.apk
rm -rf $(ZIP_DIR)/system/priv-app/ParanoidOTA.apk
rm -rf $(ZIP_DIR)/system/priv-app/ThemeChooser.apk
rm -rf $(ZIP_DIR)/system/priv-app/ThemesProvider.apk
Explanations:-
'local-zip-file' = Name of your original Base ROM zip
'local-out-zip-file' = Name for your finished MIUI rom
'local-modified-apps' = Apps that will be modified to fit in with the framework. They need to be modified because they contact with the system
'local-remove-apps' = Apps that will be removed from the original ROM
'local-pre-zip' = Refers to code-block that should be executed before the zip is done.
'local-after-zip' = Refers to code-block executed after the zip is completed
'local-zip-misc' = The code-block just described at 'local-pre-zip'. It adds some Google Apps and a build.prop
'local-test' = Another code-block
Now, manually copy the previously decompiled framework folders to your device folder.
PHP:
framework-res
framework.jar.out
framework2.jar.out
services.jar.out
android.policy.jar.out
telephony-common.jar.out
Next,copy your Base ROM zip in your device folder.
Now move to patchrom folder.
PHP:
cd ~/patchrom
PHP:
source build/envsetup.sh
Again move to your device folder and start MIUI framework patching.
PHP:
cd /home/stryder/taoshan
PHP:
make firstpatch
Now a new folder folder temp will be created. In that you'll find the reject folder in which there will be rejects which you have to fix manually. Follow THIS excellent guide by @JavierAlonso to fix rejects. Also see THIS guide.
After fixing all the rejects, type following command to create a flashable zip of your MIUI ROM.
PHP:
make fullota
or you can also use
PHP:
make zipfile
With this, the flashable zip file is built. Now follow the tutorial from next post to modify your boot.img and include this new boot.img in your flashable MIUI ROM zip. Then flash the zip from recovery and enjoy your source built MIUI ROM!
Sometimes, your device might get stuck on bootanimation so in this case, take LOGCAT and look for the error and solve it. You can use some tools like Advanced Logcat Viewer to read the log.
Modifying boot.img
Now, let's modify the boot.img from base ROM zip to it make compatible with our MIUI ROM.
First of all, download any boot image kitchen or editor. I used Android Image Kitchen for Windows.
Assuming you're using the same kitchen, Extract the files from Android Image Kitchen in a separate folder. Copy your base ROM boot.img in that folder.
Now drag and drop the boot.img on unpackimg. The kernel files will be extracted in ramdisk and split_img folder.
We have to modify the ramdisk so move to that. In sbin folder, you'll see the extracted files.
Now there are two chances- First, Your ramdisk is already extracted with various folders and files. In that case ignore the next steps and directly modify in respective files using Notepad++.
While in second case, you'll get the ramdisk as ramdisk.cpio file. If you get this the you'll have to move to Ubuntu again for extracting it.
Now in Ubuntu, copy your ramdisk.cpio in a seperate folder (suppose in stryder folder) in your home directory.
Now, open terminal and run the following command-[No need as superuser]
PHP:
cd stryder
PHP:
cpio -i -F ramdisk.cpio
Some output will be shown in terminal as 2320 blocks or something like that!
Now in your folder, you'll see the extracted ramdisk files.
Now comes the actual modification.
First of all, download attached zip and extract the files in appropriate folders. (If the folder is not present, add that folder).
Open default.prop and edit the lines like this-
PHP:
#
# ADDITIONAL_DEFAULT_PROPERTIES
#
ro.adb.secure=0
ro.secure=0
ro.allow.mock.location=0
ro.debuggable=1
persist.sys.usb.config=mtp,adb
persist.service.adb.enable=1
persist.service.debuggable=1
Save the changes and open init.cm.rc (In case of CyanogenMod) or init.pa.rc (In case of AOSPA). Add # before the import line like this-
PHP:
# Superuser
#import /init.superuser.rc
Save this file and now open init.rc.
At the end of init.rc file, add these lines-
PHP:
#service for shelld
service shelld /system/xbin/shelld
class main
#service for su
service su_daemon /system/xbin/su --daemon
class main
oneshot
service lbesec /system/xbin/lbesec
class main
oneshot
Save this file and then open seapp_contexts.
In that file, add at the end-
PHP:
user=theme seinfo=platform domain=platform_app type=platform_app_data_file
user=backup seinfo=platform domain=platform_app type=platform_app_data_file
user=updater seinfo=platform domain=platform_app type=platform_app_data_file
user=theme_man domain=system_app type=system_data_file
Also modify these lines (if present) to look like this-
PHP:
user=_app domain=untrusted_app type=app_data_file
user=_app seinfo=platform domain=platform_app type=app_data_file
user=_app seinfo=shared domain=shared_app type=app_data_file
user=_app seinfo=media domain=media_app type=app_data_file
user=_app seinfo=release domain=release_app type=app_data_file
Save this file and if present, open init.qcom.rc.
And before this line (at the end)-
PHP:
on property:sys.boot_completed=1
Add these lines-
PHP:
service shelld /system/xbin/shelld
class main
Save the file. Now it's time to repack your ramdisk.
First, move your original ramdisk.cpio from the extracted folder to /home. That is, if your extracted ramdisk is in
PHP:
/home/stryder/
Move original ramdisk.cpio file to-
PHP:
/home/
After that, run this command in terminal-
PHP:
cpio -i -t -F ../ramdisk.cpio | cpio -o -H newc -O ../ramdisk_new.cpio
Now a new file ramdisk_new.cpio will be created. Take a look if it's of the same size as the original one just a few bytes difference.
Also open this ramdisk_new.cpio and make sure you have the newly added files in it. (Ex. otad in bin folder etc.)
Now move this ramdisk_new.cpio to previously extracted Android Image kitchen ramdisk/sbin/ directory.
Delete the original ramdisk.cpio from it and rename the ramdisk_new.cpio to ramdisk.cpio.
Now come back and directly run repackimg. The modified image_new will be generated. Rename it to boot and include this modified boot.img in your MIUI ROM zip. Now you can proceed to flash your MIUI ROM!
Special Thanks- @Zenamp
Port MIUI from another device
Requirements:-
7-zip, Winrar or similar software
Notepad++
Instructions:-
First of all, make 2 folders- 1. BASE ROM 2. PORT ROM
What is Base ROM: It is the ROM which is built for your device. (AOSP or CM etc.)
What is Port ROM: MIUI ROM of other device which you want to port to your device.
NOTE- It's better if the port device and your device has same CPU architecture and specifications. If you couldn't find same specification device then try the device having almost similar specification of your device.
Now extract the Base ROM zip in BASE ROM folder and Port ROM zip in PORT ROM folder.
Next, Delete addon.d (If present), app, framework, fonts, media and priv-app folder in System folder of BASE ROM.
Now copy addon.d (If present), app, framework, fonts, media and priv-app folder from system folder of PORT ROM to system folder of BASE ROM.
Now open etc folder in both ROMs folder. Go to init.d folder of PORT and copy and replace any extra files except 00banner to init.d of BASE ROM.
Now open permissions folder in etc of both ROMs and copy and replace all the permissions files from PORT ROM to your BASE ROM folder except handheld_core_hardware.xml and platform.xml. (In case of CM based BASE ROM, also don't replace org.cyanogenmod.hardware.xml).
Also copy any extra folder available in PORT ROM etc/ to BASE ROM etc/ e.g. miui_feature folder.
Now open your system_fonts.xml in etc folder of BASE ROM and copy this before </familyset> end of file
PHP:
<family>
<nameset>
<name>miui</name>
</nameset>
<fileset>
<file>Miui-Regular.ttf</file>
<file>Miui-Bold.ttf</file>
</fileset>
</family>
<family>
<nameset>
<name>miuiex</name>
</nameset>
<fileset>
<file>MiuiEx-Regular.ttf</file>
<file>MiuiEx-Bold.ttf</file>
</fileset>
</family>
<family>
<nameset>
<name>miuiex-light</name>
</nameset>
<fileset>
<file>MiuiEx-Light.ttf</file>
</fileset>
</family>
Now copy all the extra files from PORT ROM bin, lib and xbin folder to BASE ROM respective folders. Remember, DO NOT REPLACE anything. Just copy and paste and skip the files with same name.
Now, open build.prop of BASE ROM. You can change these value to anything you like-
PHP:
ro.build.id=
ro.build.display.id=
ro.build.date=
ro.build.date.utc=
ro.product.locale.language=en
ro.product.locale.region=US
ro.cm.version=
ro.modversion=
Now copy paste these values at the end of your BASE ROM build.prop. You can edit the fields but keep the structure same.You can look at PORT ROM build.prop for reference.
PHP:
ro.build.description=devicename-user 4.4.2 yourname C2104XXUCNG1 release-keys
ro.build.fingerprint=devicemanufacturer/devicemodel/device:4.4.2/yourname/C2104XXUCNG1:user/release-keys
ro.product.model=Xperia L
ro.product.device=taoshan
ro.build.characteristics=default
#MIUI_Features
ro.miui.has_real_blur=0
ro.miui.has_handy_mode_sf=1
ro.config.sms_received_sound=FadeIn.ogg
ro.config.sms_delivered_sound=MessageComplete.ogg
ro.product.manufacturer=Xiaomi
ro.config.elder-ringtone=Angel.mp3
persist.sys.mitalk.enable=true
ro.miui.ui.version.code=5
ro.miui.ui.version.name=V7
persist.sys.strictmode.disable=true
ro.product.mod_device=yourdevice
Change these fields in BASE ROM build.prop according to PORT ROM build.prop-
PHP:
ro.config.notification_sound=
ro.config.alarm_alert=
ro.config.ringtone=
If your device has On-screen buttons, then add this value at the end of BASE ROM build.prop-
PHP:
qemu.hw.mainkeys=0
Now we're done with build.prop.
Next, open META-INF/com/google/android/updater-script from BASE ROM using Notepad++ and change, compare and replace all the symlink and set_metadata lines in updater-script according to PORT ROM updater-script.If some extra lines are there in BASE ROM updater-script, keep it as it is.
NOTE:-I have attached one sample updater-script with this post. Look below. You can refer from that if you feel any difficulty.
Add these before unmount("/system"); at the end of updater-script-
PHP:
set_perm(0, 1000, 06750, "/system/xbin/shelld");
run_program("/sbin/busybox", "mount", "/data");
package_extract_dir("data", "/data");
package_extract_file("META-INF/com/miui/relink", "/tmp/relink");
set_perm(0, 0, 0555, "/tmp/relink");
run_program("/tmp/relink");
delete("/tmp/relink");
set_perm_recursive(1000, 1000, 0755, 0644, "/data/miui");
set_metadata("/system/bin/debuggerd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata("/system/bin/debuggerd_vendor", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:debuggerd_exec:s0");
set_metadata("/system/xbin/su", "uid", 0, "gid", 2000, "mode", 06755, "capabilities", 0x0, "selabel", "u:object_r:su_exec:s0");
delete_recursive("/data/miui/preinstall_apps");
delete_recursive("/data/miui/cust/preinstall_apps");
ui_print("Installation finished...Enjoy!");
unmount("/data");
Also copy META-INF/com/miui and data folder to BASE ROM from PORT ROM.
Now modify your BASE ROM boot.img using the tutorial from previous post and put that new boot.img in BASE ROM folder.
Finally, select META-INF, system, boot.img, file_contexts(If present) and data folder in BASE ROM.
Right click and select Add to Archive. Select Zip. Type the name of zip. (Don't delete ".zip" at the end!) Click OK.
Now you're ready to flash this zip from recovery.
Sometimes, your device might get stuck on bootanimation so in this case, take LOGCAT and look for the error and solve it. You can use some tools like Advanced Logcat Viewer to read the log. Look HERE for fixing bootloop.
I hope you guys understood how to build and port MIUI. I wish you good luck! If you get stuck anywhere, If you become successful building MIUI, feel free to post here. Also if you succeed, I'll appreciate if you give me credits and add link to this thread in your ROM thread on XDA.
Frequently Asked Questions
Shepard62700FR said:
The PatchROM technique (post #1 tutorial) works for Android 4.4 KitKat, meaning that you have to find a KitKat AOSP or CyanogenMod 11 ROM for your device as a base, STRYDER said that he doesn't recommend the OEM Stock ROM as a base due to vendor stuff that might cause more rejects (and I think if the stock ROM is not deodexed, it's worse).So preferably take aosp kitkat rom as base. Patchrom method won't work for Android 5.0 Lollipop and higher.
If you want to port a MIUI Lollipop/Marshmallow ROM to a Lollipop/Marshmallow based device, you will have to do the "port from other device" technique (post #3), which is to find MIUI ROM for another device with the same Android version, chipset, screen resolution and follow the port method. Use this guide for porting to qualcomm and broadcom devices preferably. For mediatek devices, I suggest following porting guides from MIUI forums. Though this guide might work as well.
Click to expand...
Click to collapse
Question:- Can I port MIUI to XXX device?
Answer:- You'll never know if you don't try!
Question:- Can you please port/help porting MIUI to XXX device?
Answer:- Sorry, I won't port. It's not possible for me to accept port requests, that's why I wrote this guide so that you can port it yourself and test it out on the device you own! About helping, post your issues/logs here in this thread. Me or any other members will help you as they can.
Its awesome bro.
Thanks for sharing with us.....
wolfmannight said:
Its awesome bro.
Thanks for sharing with us.....
Click to expand...
Click to collapse
You're welcome bro!
A perfect guide! Many Thanks!
abhatia1435 said:
A perfect guide! Many Thanks!
Click to expand...
Click to collapse
You're welcome bro! It's the most simplified guide you'll ever find...You can try porting MIUI 7 to your Xperia M!
Heyyy Bro, sorry for the noob questions but will all our Sony stuffs like XReality, DSEE HX HD audio, headphone settings will be lost or not, can we mix MIUI with Sony's stuffs
STRYDER~007 said:
You're welcome bro! It's the most simplified guide you'll ever find...You can try porting MIUI 7 to your Xperia M!
Click to expand...
Click to collapse
Yes bro. Was thinking of that only Can I use the method mentioned in 3rd post? Using XL's ROM for porting to XM? Have you released it for XL?
Black Plague said:
Heyyy Bro, sorry for the noob questions but will all our Sony stuffs like XReality, DSEE HX HD audio, headphone settings will be lost or not, can we mix MIUI with Sony's stuffs
Click to expand...
Click to collapse
Well some features may be lost but i have seen my friend @gamzekal has built MIUI with Sony stuffs HERE..So yeah..Probably we can include those stuffs..I'm not sure though!
abhatia1435 said:
Yes bro. Was thinking of that only Can I use the method mentioned in 3rd post? Using XL's ROM for porting to XM? Have you released it for XL?
Click to expand...
Click to collapse
Yeah you can use any method..I have not yet released MIUI for XL..There are some issues with RIL which I'm fixing now..But you can take any other device and port from it..Visit MIUI site and download latest v7! Try taking the device which has similar specification with your XM.. But not necessarily..I ported the one from HTC One S and it still worked!!
Sad but true, I tried to ask him about how he do that stuff but xda won't allow me to send message zzz coz his inbox if full
Black Plague said:
Sad but true, I tried to ask him about how he do that stuff but xda won't allow me to send message zzz coz his inbox if full
Click to expand...
Click to collapse
Yeah I know! Probably he's too lazy to delete his old msgs!!
@STRYDER~007 You did it again bro!!! Thanks for sharing this with us!
sebastiandg7 said:
@STRYDER~007 You did it again bro!!! Thanks for sharing this with us!
Click to expand...
Click to collapse
Happy to share bro! Enjoy!
This is a nice guide... But only for 4.4.4, correct @STRYDER~007?
repo init -u git://github.com/MiCode/patchrom.git -b miui-7 -m android-4.4.4.xml
Click to expand...
Click to collapse
I wan't to port this for eagle (D2303), but all 4.4.4 AOSP / CM / Omni roms are fuc*** up, none of them works properly to be used as base, and all devs went directly into CM12.1 / Omni 5.1.1, which work fantastic. Any ideas?
linuxct said:
This is a nice guide... But only for 4.4.4, correct @STRYDER~007?
I wan't to port this for eagle (D2303), but all 4.4.4 AOSP / CM / Omni roms are fuc*** up, none of them works properly to be used as base, and all devs went directly into CM12.1 / Omni 5.1.1, which work fantastic. Any ideas?
Click to expand...
Click to collapse
Yep.. Only for 4.4 since MIUI 7 patchrom source is based on 4.4.. Try to find base ROM which will be somewhat stable to be used as base.. There's no alternative to that!
Thanks for giving this guide bro.. I am trying your second method, I am using V7.0.5.0.KXDMICI (MIUI7) (downloaded from official site)(for Mi3) rom as a port rom, but i noticed that there is no init.d folder in the etc folder, Am i selected the wrong rom to port? or there is another problem?
dineshkumareswaran said:
Thanks for giving this guide bro.. I am trying your second method, I am using V7.0.5.0.KXDMICI (MIUI7) (downloaded from official site)(for Mi3) rom as a port rom, but i noticed that there is no init.d folder in the etc folder, Am i selected the wrong rom to port? or there is another problem?
Click to expand...
Click to collapse
For which device are you porting? What is your base rom?(You can find it in build.prop) Explain in detail..Also if there's no init.d, it doesn't matter..Go ahead with further procedure..
STRYDER~007 said:
For which device are you porting? What is your base rom?(You can find it in build.prop) Explain in detail..Also if there's no init.d, it doesn't matter..Go ahead with further procedure..
Click to expand...
Click to collapse
I am trying it for xperia L, I am using nyx rom as my base rom(if you recommend any other i can go with it), I am noob in porting (i can't find init.d in build prop, i try further steps and inform you and thanks

[EXE] Static Linux binaries for ARM/Android (Cryptsetup, EncFS, F2FS-Tools, Testdisk, PhotoRec,..)

Native ARM/static Linux binaries
(for all ARMv7+ compatible platforms)
Open-source Linux binaries that are either not available on Android (e.g. in Termux)
or make sense to be statically compiled (e.g. to run in TWRP/recovery for data recovery).
These are root tools and might damage your device severely. Use at your own risk. I take no responsibility whatsoever. If in doubt don't use them.​
Minimum CPU: ARMv7/vfpv3-d16. Compiled against musl-libc/Android Kernel 3.4. Binaries are static, bionic/libc independent and should run on Android, TWRP, emulator or any other compatible ARM device. Musl is patched (info)(info2)(patch file: patch -p0 -u -b -i musl-android-smp.patch) to iterate CPU cores by /proc/stat instead of _SC_NPROCESSORS_CONF/sched_getaffinity to prevent false detection due to ARM cpu core powersaving (permanently turning cores on/off). This should report CPU cores more reliably to multithreading apps.
Example instructions how to build EncFS can be found here.
Some Cryptsetup compile recipes are here.
Changelog:
20190923 - f2fs-tools added
20190915 - dislocker, ntfs-3g, mount.exfat-fuse added
20190910 - VeraCrypt v1.24-b5 added
20191215 - musl smp patch added
20191224 - hstr v2.2.0 updated
20191225 - Testdisk, PhotoRec v7.2-wip-dec2019 updated
20200103 - tar v1.32 updated (with selinux, acl, xattr support)
20200513 - Cryptsetup v2.3.2 added
20200518 - fscrypt 0.2.7, strace56(aarch64) added
20200525 - p7zip v17.01 added
20200603 - parted v3.3 added
20200606 - fxz v1.1.0alpha added
20201212 - ddrescue v1.25 added
20201212 - Cryptsetup v2.3.4 updated
20210113 - f2fs-tools updated to v1.14.0
20210125 - Several tools compiled by @Borovets. See 'Misc' tools.
20210413 - Cryptsetup v2.3.5 updated
20210916 - Cryptsetup v2.4.1 updated. Thx to @misterhsp.
20211108 - rsync v3.2.3 updated
20211118 - Cryptsetup v2.4.2 updated. Thx to @misterhsp.
20220103 - mmc-utils added
20220106 - More tools from @Borovets. See spoiler.
Spoiler
bash-5.1.16-[1]-[2022.01.05].tar.gz
openssl3-3.0.1-[2021.12.14]-static.tar.gz
tree-2.0.0-[2021.12.23]-static.tar.gz
e2fsprogs-1.46.5-[2021.12.31]-static.tar.gz
openssl-1.1.1-m-[2021.12.15]-static.tar.gz
libsqlite-3.37.1-[2021.12.30]-static.tar.gz
ldns-host-1.7.1-[2021.12.30]-static.tar.gz
bootimg-info-2.0-[2021.12.18]-static.tar.gz
bc-5.2.1-[2021.12.29]-static.tar.gz
openssl3-tool-3.0.1-[2021.12.14]-static.tar.gz
openssl-tool-1.1.1-m-[2021.12.15]-static.tar.gz
sqlite-3.37.1-[2021.12.30]-static.tar.gz
stunnel-5.61-[2021.12.17]-static.tar.gz
toybox-0.8.6-borovets-295-applets-[2021.12.30]-static.tar.gz
unrar-6.10-beta-3-[2021.12.11]-static.tar.gz
zstd-1.5.1-[2021.12.22]-static.tar.gz
20220107 - parted v3.4 updated
20220113 - cryptsetup v2.4.3 updated. Thx to @misterhsp.
20220114 - gptfdisk v1.0.8 added
20220212 - tar v1.34 updated
20220622 - gptfdisk v1.0.9 (armv7) added
20220724 - dialog v1.3 added
20220728 - f2fs tools v1.15.0 updated
20220730 - cryptsetup v2.5.0 updated. Thx to @misterhsp.
20220806 - 7z-zstd v22.01 added. Thx to @xenosaur
20220910 - rsync v3.2.6 updated
20220913 - htop v3.2.1 added
20220913 - gocryptfs v2.3 updated. Thx to @misterhsp
20220922 - veracrypt v1.25.9 updated
20220924 - fdisk v2.38.1 and file v5.43 added
20221129 - cryptsetup v2.6.0 updated. Thx to @misterhsp
20221213 - f2fs tools v1.15.0 fixed (uuid.h missing)
20230215 - cryptsetup v2.6.1 updated. Thx to @misterhsp
20230307 - gocryptfs v2.3.1. Thx to @misterhsp
Data recovery tools:
- PhotoRec 7.2 - PhotoRec is file data recovery software designed to recover lost files including video, documents and archives from hard disks, CD-ROMs, and lost pictures (thus the Photo Recovery name) from digital camera memory. PhotoRec ignores the file system and goes after the underlying data, so it will still work even if your media's file system has been severely damaged or reformatted.
- Testdisk 7.2 - Recover lost partitions and partition tables. For external sdcards. Never use it on internal mmc unless you know what you're doing.
- ext4magic 0.3.2 (with supplementary gnu date binary that can handle relative time like 'date -d "-20minutes" +%s')
- fidentity - A little utility sharing PhotoRec signature database. It identifies the type of data contained in a file and reports the extension as seen by PhotoRec.
- debugfs - Might be helpful on ext2 systems or other stuff.
- strace 4.20 - For debugging. Mainly to catch syslog messages (as Android has no traditional /dev/log buffer).
- strace 5.6 - For aarch64.
- ddrescue v1.25 - Data recovery tool for block devices with errors.
Compression tools:
p7zip v17.01 (fork) - (Download) A new p7zip fork with additional codecs and improvements
pixz - Parallel, indexed xz compressor
xz - Multicore aware version of xz/lzma (use --thread=0)
tar v1.32 - Tar provides the ability to create tar archives, as well as various other kinds of manipulation. Download below. More builds from @mirfatif here.
fxz - (Download) FXZ Utils is a fork of XZ Utils. It adds a multi-threaded radix match finder and optimized encoder.
Misc:
- hexcurse v1.60.0 - Hexcurse is a curses-base hex editing utility that can open, edit, and save files, editing both the hexadecimal and decimal values. 'ncurses' ui layout depends on TERM env variable. Change temporary with eg. 'TERM=xterm-256color hexcurse <file>'. See /system/etc/terminfo for possible terminals (xterm-256color, linux..).
- nethogs v0.8.5 - ncurse/nettop-like per-app separated speedmeter and traffic counter supporting high refresh rate. Try 'nethogs -d0' (speedmeter) or 'nethogs -v1' (traffic counter).
- rsync v3.2.3 - rsync is an open source utility that provides fast incremental file transfer. (--with-rsyncd-conf=/data/etc/rsyncd.conf)
- smbnetfs v0.6.1 - SMBNetFS is a Linux/FreeBSD filesystem that allow you to use samba/microsoft network in the same manner as the network neighborhood in Microsoft Windows. More info see below.
- progress v0.14 - Linux tool to show progress for cp, mv, dd, ... (formerly known as cv). Download here.
- archivemount (20180801) - A fuse filesystem for mounting archives in formats supported by libarchive. Download here.
- squashfuse v0.1.103 - FUSE filesystem to mount squashfs archives Download here.
- FuseISO - FuseISO is a FUSE module to mount ISO filesystem images (.iso, .nrg, .bin, .mdf and .img files). It currently support plain ISO9660 Level 1 and 2, Rock Ridge, Joliet, and zisofs. Download here.
- HSTR v2.2.0 - HSTR (HiSToRy) is a command line utility that brings improved Bash/zsh command completion from the history. It aims to make completion easier and more efficient than Ctrl-r. (If history is empty try setting HISTFILE in /system/etc/bash/bashrc e.g. export HISTFILE=/data/.bash_history).
- GNU screen, tmux - Thanks to @mirfatif.
- dislocker, ntfs-3g, mount.exfat-fuse - Thanks to @mirfatif.
- f2fs-tools - Thanks to @mirfatif. Update: v1.14.0 here.
- parted v3.3 - GNU Parted (the name being the conjunction of the two words PARTition and EDitor) is a free partition editor, used for creating and deleting partitions. Note: It might be useful to partition external sdcards (e.g. to limit adoptable storage). I do not recommend to use it on internal memory. It might brick your phone.
- Several tools compiled by @Borovets
Spoiler: Borovets tools
Borovets tools 2021.01.25
arptables-0.0.5-[2021.01.17]-static.zip
autoflushtest-1.0-[2021.01.14]-static.zip
btrfs-compsize-1.3-[build-2]-[2020.12.27].zip
btyacc-3.0-[2021.01.18]-static.zip
c-blosc-1.21.1-development-[2020.12.22].zip
c-blosc2-2.0.0-beta-6-development-[2020.04.21].zip
cabextract-1.9.1-[2021.01.08]-static.zip
compsize-1.3-[2021.01.07]-static.zip
convert-color-space-0.1-[2021.01.18]-static.zip
cpustat-0.02.13-[2021.01.13]-static.zip
doxygen-1.9.2-[2021.01.17]-static.zip
ed-1.17-[2021.01.11]-static.zip
hello-2.10-[2021.01.08]-static.zip
htop-3.0.5-[2021.01.13]-static.zip
ipcalc-ng-1.0.0-[2020.12.28]-static.zip
iw-5.9-[2021.01.08]-static.zip
libsqlite-3.34.1-[2021.01.20].zip
libtar-1.2.20-[2021.01.16]-static.zip
m5-1.0-[2020.12.31]-static.zip
sqlite-3.34.1-[2021.01.20]-static.zip
Borovets tools 2021.01.27
lcab-1.0-beta-12-[2021.01.17].zip
memdump-1.01-[2021.01.25].zip
memdumper-0.4-[2021.01.25].zip
memtester-4.5.0-[2021.01.09].zip
tcpdump-4.99.0-[libcap-1.9.1]-[2021.01.05].zip
wget2-1.99.2-[2020.12.12].zip
wolfssl-4.5.0-[2020.12.12].zip
xfsprogs-5.10.0-[2021.01.01].zip
Crypttools:
(These crypttools are mostly frontend tools for the main backend that resides in the kernel. If your kernel hasn't been configured accordingly at compile time you might not be able to use all features.)
Cryptsetup v2.3.5 - (Download) Cryptsetup is an utility used to conveniently setup disk encryption based on DMCrypt kernel module. These include plain dm-crypt volumes, LUKS volumes, loop-AES and TrueCrypt (including VeraCrypt extension) format.
eCryptfs-utils v111 - Frontend tools for the enterprise cryptographic filesystem for Linux. That's what Android/Google use for encryption. It's file-based (no container) and mounting can be automated by Termux widget. Needs shared libraries but is still portable. See notes below.
EncFS v1.9.5 - EncFS provides an encrypted filesystem in user-space. It runs in userspace, using the FUSE library for the filesystem interface.
gocryptfs - An encrypted overlay filesystem written in Go. Download here. Thanks to @mirfatif.
VeraCrypt - VeraCrypt is a free open source disk encryption software. Download here. Thanks to @mirfatif.
fscrypt 0.2.7 - (Download) fscrypt is a high-level tool for the management of Linux filesystem encryption. Needs at least kernel 4.1.
Crypttools info:
Cryptsetup:
General Notes:
- Features like TrueCrypt, VeraCrypt and LUKS2 need 'userspace crypto api' enabled in kernel. Most Android kernels are probably not configured for that and you have to recompile your kernel or contact your kernel maintainer. For kernel 3.4 you need this:
Code:
CONFIG_CRYPTO_USER=y
CONFIG_CRYPTO_USER_API=y
CONFIG_CRYPTO_USER_API_HASH=y
CONFIG_CRYPTO_USER_API_SKCIPHER=y
- If 'cryptsetup benchmark' is incomplete and says 'userspace crypto api not available' you might be affected. You can still use LUKS1 though. A full benchmark looks like this:
Code:
# cryptsetup benchmark
# Tests are approximate using memory only (no storage IO).
PBKDF2-sha1 249186 iterations per second for 256-bit key
PBKDF2-sha256 327680 iterations per second for 256-bit key
PBKDF2-sha512 58829 iterations per second for 256-bit key
PBKDF2-ripemd160 227555 iterations per second for 256-bit key
PBKDF2-whirlpool 33539 iterations per second for 256-bit key
argon2i 4 iterations, 208288 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time)
argon2id 4 iterations, 207817 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time)
# Algorithm | Key | Encryption | Decryption
aes-cbc 128b 77.8 MiB/s 88.4 MiB/s
serpent-cbc 128b N/A N/A
twofish-cbc 128b 58.5 MiB/s 61.9 MiB/s
aes-cbc 256b 61.5 MiB/s 68.4 MiB/s
serpent-cbc 256b N/A N/A
twofish-cbc 256b 58.5 MiB/s 61.8 MiB/s
aes-xts 256b 95.1 MiB/s 86.9 MiB/s
serpent-xts 256b N/A N/A
twofish-xts 256b 60.0 MiB/s 61.8 MiB/s
aes-xts 512b 74.1 MiB/s 67.2 MiB/s
serpent-xts 512b N/A N/A
twofish-xts 512b 60.3 MiB/s 62.0 MiB/s
LUKS:
Code:
** 10MB test image (luks.img) **
dd if=/dev/zero of=luks.img bs=1M count 10M
cryptsetup luksFormat luks.img
cryptsetup open luks.img myluks
mke2fs -t ext4 /dev/mapper/myluks
mkdir luks
mount /dev/mapper/myluks luks
** luks folder is ready here **
umount luks
cryptsetup close myluks
- If standard luksFormat cipher (aes-xts-plain64) doesn't work (not supported by your kernel) you can try one of the more compatible ciphers:
Code:
cryptsetup luksFormat -c cbc-essiv:sha256 luks.img myluks
cryptsetup luksFormat -c aes-plain luks.img myluks
- For LUKS2 (experimental) use:
Code:
cryptsetup luksFormat --type luks2 luks.img
- Use "cryptsetup -v --debug" for more verbose output (debugging). In case of errors.
Veracrypt:
Code:
cryptsetup open --type tcrypt --veracrypt veracrypt.tc myvera
cryptsetup status myvera
mkdir /data/myvera
mount /dev/mapper/myvera /data/myvera
umount /data/myvera
cryptsetup close myvera
- Use container from desktop system (created with real Veracrypt)
- "veracrypt.tc" is the veracrypt container name
- "myvera" is an arbitrary name (handle)
- Use "cryptsetup -v --debug" for more verbose output (debugging). In case of errors.
eCryptfs-utils:
General Notes:
These tools are not built statically as they explicitly rely on 'dlopen' (plugin system). Instead they are compiled with relative rpaths (./libs). That means dependencies (libraries in subfolders) must be present in the binaries folder and you have to be in the binaries folder itself (with 'cd') before invoking any binary. By this the binaries are still portable (system independent) as long as the subfolders are present. I've put the files into a tar.gz archive so permissions should be set +x already. Extract the archive into /data/local/bin for 'Example' below.
Code:
mkdir -p /data/local/bin
cd /data/local/bin
tar xf crypttools.armv7.20180204.tar.gz
cd ecryptfs
./ecryptfs-stat --help
More info: ArchLinux Wiki
Example:
Tested on /sdcard based on FUSE filesystem. sdcardfs untested. Might need selinux permissive.
We create a folder /sdcard/pics that can be enabled (files present) or disabled (no files present) by a click on a widget button (Termux script) and entering our password. The encryption is done on a per-file basis. The actual files are stored encrypted in /sdcard/efs/pics.
- You might need SuperSU or Magisk Superuser for 'su -mm'. That makes sure that all apps can see the mounted folder (mount namespace separation).
- Busybox needed
- Install Termux and Termux:Widget from F-Droid or Playstore
- Start it and enter:
Code:
pkg upgrade
pkg install tsu
exit
- Create script /data/data/com.termux/files/home/.shortcuts/efs-pics.sh and make sure permissions(700) and owner (take from parent folder) are correct.
Code:
#!/system/xbin/bash
su -mm -c "/system/xbin/bash -c /data/local/scripts/$(basename "$0")"
- Create script /data/local/scripts/efs-pics.sh (770/root):
Code:
#!/system/xbin/bash
set -e
PATH=$PATH:/data/data/com.termux/files/usr/bin
# Necessary because rpaths are relative
cd /data/local/bin/ecryptfs
# /data/myefskey contains the salted key.
# Don't forget to make a backup.
# Without it encrypted data is lost.
function enter_passphrase {
read -p "Enter passphrase: " passphrase
sig=$(printf "%s" "$passphrase" | ./ecryptfs-insert-wrapped-passphrase-into-keyring /data/myefskey -) || exit
sig=$(echo $sig | cut -d "[" -f2 | cut -d "]" -f1)
}
CPATH1="/data/media/0/efs/pics"
CPATH2="/data/media/0/pics"
if ! mountpoint -q ${CPATH2}; then
enter_passphrase
echo ""
mount -t ecryptfs -o ecryptfs_sig=$sig,ecryptfs_fnek_sig=$sig,ecryptfs_cipher=aes,ecryptfs_key_bytes=16 ${CPATH1} ${CPATH2} || (echo "$(basename "$0") mount failed!"; exit)
./keyctl clear @u
echo "$(basename "$0") mount successful! :)"
else
umount ${CPATH2} || (echo "$(basename "$0") umount error $? :("; exit)
echo "$(basename "$0") umount successful :)"
fi
# uncomment to force-close Termux window
# killall com.termux
- If your rom uses encryption already (/data/data) beware the './keyctl clear @u' command. It might flush *all* keys in the kernel including the Android encryption one (i'm not sure). This might lead to unpredicted behavior. Either comment it out (then your once injected key remains in the kernel keystore and someone could simply remount your folder without passphrase) or make yourself familiar with the keyctl command and handle it yourself. My phone is not encrypted so i cannot help here.
- Create random keyfile (/data/myefskey) and wrap it with passphrase. This might need 1-2 minutes depending on your devices entropy pool (/dev/random). Backup this key (/data/myefskey). Without it your encrypted data is lost. And don't forget the trailing '-' (minus) at the end of the line, it's important.
Code:
cd /data/local/bin/ecryptfs
read -p "Enter passphrase: " passphrase; printf "%s\n%s" $(busybox od -x -N 100 --width=30 /dev/random | head -n 1 | busybox sed "s/^0000000//" | busybox sed "s/[[:space:]]*//g") "${passphrase}" | ./ecryptfs-wrap-passphrase /data/myefskey -
- Create folders:
Code:
mkdir -p /sdcard/efs/pics /sdcard/pics
- Create Widget (Termux) and select 'efs-pics.sh'.
- Start it and enter your passphrase (you used above). If everything goes well (it will tell you) you can place files into /sdcard/pics and scrambled files should come up in /sdcard/efs/pics. Never write into /sdcard/efs/pics directly.
- Activate widget again. /sdcard/pics should get emptied.
- Optional: You can set /data/media/0/efs/pics to 700/root so no one can access/see the encrypted data.
SMBNetFS info:
Note: The library paths are relative. You need to be in the folder (with 'cd') to spawn the executable (./smbnetfs). You can extract the archive wherever you want though as far as the file/folder structure remains intact.
Example:
Code:
mount -o remount,rw /
mkdir -p /data/local/bin /mnt/cifs
mount -o remount,ro /
tar xf smbnetfs.tar.gz -C /data/local/bin
cd /data/local/bin/smbnetfs
export HOME=/data/local/bin/smbnetfs/home
* enter your smb credentials into smbnetfs/home/.smb/smbnetfs.auth (eg. auth "192.168.1.2" "${user}" "${pass}")
./smbnetfs /mnt/cifs
cd /mnt/cifs/192.168.1.2/${share}
I think it usually should list the samba environment in /mnt/cifs but i'm not sure which prerequisites are necessary for that (edit: maybe it needs real workgroup/hostname instead of IPs). If nothing comes up this should work:
The folder 192.168.1.2/${share} is unreachable by Androids folder picker (unless you can enter the path manually). So either pre-create the folder structure beforehand (mkdir -p /mnt/cifs/192.168.1.2/${share}) and add/register the folder to your app by folder picker (eg. MXPlayer) and then overmount that with the actual ${share}. Or bindmount the folder:
Code:
mount --bind /mnt/cifs/192.168.1.2/${share} /mnt/cifs2
Edit: Another option is to let smbnetfs create a static link (actually a symbolic link) to the share in the mountpoint root (/mnt/cifs). Its not as robust as the bindmount though. MXPlayer doesn't find any files (even though the folder picker shows the folders properly).
Code:
echo "link myfiles 192.168.1.2/${share}" > /data/local/bin/smbnetfs/home/.smb/smbnetfs.host
chmod 700 /data/local/bin/smbnetfs/home/.smb/smbnetfs.host
I've noticed that MXPlayer shows the samba folders just for a glimpse of a second. But if you enter one of the local folders and then go back all samba folders are there. Not sure why this is happening or maybe its just my system.
Edit2: Not yet tested but.. check the permissions. Its possible that SMBNetFS mounts with 755 or something. That's inaccessible for Android apps. Try this:
Code:
./smbnetfs -o umask=000,noatime,noexec,nodev,nosuid /mnt/cifs
Samba 4.8.3 configuration:
Code:
_idmap_modules=idmap_rid,idmap_hash,idmap_tdb2
_pdb_modules=pdb_tdbsam,pdb_smbpasswd,pdb_wbc_sam,pdb_samba4
_auth_modules=auth_unix,auth_wbc,auth_server,auth_netlogond,auth_script,auth_samba4
waf configure --prefix=/tmp/myout \
-C \
--sysconfdir=./conf/etc/samba \
--with-configdir=./conf/etc/samba \
--localstatedir=./conf/var \
--libexecdir=./conf/usr/lib \
--enable-fhs \
--with-lockdir=./conf/var/cache/samba \
--with-piddir=./conf/run/samba \
--with-logfilebase=./conf/var/log/samba \
--without-pam \
--without-systemd \
--without-ads \
--with-shared-modules=$_idmap_modules,$_pdb_modules,$_auth_modules \
--disable-cups \
--without-gettext \
--bundled-libraries=NONE,com_err,ldb,uid_wrapper,resolv_wrapper,socket_wrapper,nss_wrapper,ntdb,roken,wind,hx509,asn1,heimbase,hcrypto,krb5,gssapi,heimntlm,hdb,kdc,cmocka,talloc,tdb,pytdb,ldb,pyldb,tevent,pytevent \
--disable-rpath-install \
--disable-python --without-ad-dc --without-acl-support --without-ldap \
--hostcc=/usr/bin/gcc \
--cross-compile --cross-execute='qemu-arm -L /media/devpart/qemu/root'
waf build -j4
waf install
Compression tools added.
Next are crypttools (ecryptfs-utils, cryptsetup).
DualJoe said:
Compression tools added.
Next are crypttools (ecryptfs-utils, cryptsetup).
Click to expand...
Click to collapse
Please add ecryptfs-simple
xyne.archlinux.ca/projects/ecryptfs-simple
Thanks.
Ecryptfs-simple is not POSIX compliant. It relies on an argv interface (to parse command-line parameters) that is a GNU extension that musl doesn't support.
The original eCryptFS is simple enough anyway (and its the upstream project). I will provide a quickstart example and a one button GUI controlled solution (Termux widget) to handle it.
Please to add gifsicle,
http://github.com/kohler/gifsicle
Thanks.
I only have gifsicle. The other ones are too complex for my setup atm.
DualJoe said:
I only have gifsicle. The other ones are too complex for my setup atm.
Click to expand...
Click to collapse
Thank you very much.
Please help me again to build giflossy (fork of gifsicle).
I really need it to compress (--lossy=N) the Gif file to be smaller.
https://github.com/kornelski/giflossy
Thanks.
Do you use them directly on your phone for web postings or something? What's your use case to not prefer a desktop system for this?
DualJoe said:
Do you use them directly on your phone for web postings or something? What's your use case to not prefer a desktop system for this?
Click to expand...
Click to collapse
I use it directly on the phone, for learning purposes.
Using it on the phone is so handy that it can be easily used anywhere.
Thanks.
Please help me again to build lbzip2
http://lbzip2.org/
Thanks.
Here it is.
DualJoe said:
Compression tools added.
Next are crypttools (ecryptfs-utils, cryptsetup).
Click to expand...
Click to collapse
When will Crypttools be released.
I've waited for the major update of cryptsetup. Its out now indeed. I should get it up this week.
Crypttools and quickstart tutorials added.
Mountpoint is not writable (eCryptfs)
DualJoe said:
Crypttools and quickstart tutorials added.
Click to expand...
Click to collapse
Can't write to mountpoint.
# touch /sdcard/pics/test
touch: /sdcard/pics/test: Permission denied
# cp file /sdcard/pics
cp: can't create '/sdcard/pics/file': Permission denied
buengeut said:
touch: /sdcard/pics/test: Permission denied
Click to expand...
Click to collapse
What are your permissions?
Code:
# stat /data/media/0/pics
Access: (775/drwxrwxr-x) Uid: (1023/media_rw) Gid: (1023/media_rw)
# stat /data/media/0/efs
Access: (775/drwxrwxr-x) Uid: (1023/media_rw) Gid: (1023/media_rw)
# stat /data/media/0/efs/pics
Access: (775/drwxrwxr-x) Uid: (1023/media_rw) Gid: (1023/media_rw)
How does your mount look like?
Code:
# mount |grep pics
/data/media/0/efs/pics on /data/media/0/pics type ecryptfs (rw,relatime,ecryptfs_fnek_sig=56b1f3c519fb3412,ecryptfs_sig=56b1f3c519fb3412,ecryptfs_cipher=aes,ecryptfs_key_bytes=16)
Is /sdcard linked?
Code:
# ls -l /sdcard
lrwxrwxrwx 1 root root 21 May 10 1973 /sdcard -> /storage/self/primary
What Android version and kernel do you have?
DualJoe said:
What are your permissions?
Code:
# stat /data/media/0/pics
Access: (775/drwxrwxr-x) Uid: (1023/media_rw) Gid: (1023/media_rw)
# stat /data/media/0/efs
Access: (775/drwxrwxr-x) Uid: (1023/media_rw) Gid: (1023/media_rw)
# stat /data/media/0/efs/pics
Access: (775/drwxrwxr-x) Uid: (1023/media_rw) Gid: (1023/media_rw)
How does your mount look like?
Code:
# mount |grep pics
/data/media/0/efs/pics on /data/media/0/pics type ecryptfs (rw,relatime,ecryptfs_fnek_sig=56b1f3c519fb3412,ecryptfs_sig=56b1f3c519fb3412,ecryptfs_cipher=aes,ecryptfs_key_bytes=16)
Is /sdcard linked?
Code:
# ls -l /sdcard
lrwxrwxrwx 1 root root 21 May 10 1973 /sdcard -> /storage/self/primary
What Android version and kernel do you have?
Click to expand...
Click to collapse
Android 6.0 kernel 3.18.14
/sdcard is symlink to /mnt/sdcard, i changed /sdcard to /mnt/sdcard
Code:
# mount -t ecryptfs
/mnt/sdcard/efs/pics on /mnt/sdcard/pics type ecryptfs (rw,relatime,ecryptfs_fnek_sig=1b77138d91206e66,ecryptfs_sig=1b77138d91206e66,ecryptfs_cipher=aes,ecryptfs_key_bytes=16)
Code:
# stat /mnt/sdcard/pics
Access: (775/drwxrwxr-x) Uid: (1000/ system) Gid: (1015/sdcard_rw)
# stat /mnt/sdcard/efs
Access: (775/drwxrwxr-x) Uid: (1000/ system) Gid: (1015/sdcard_rw)
# stat /mnt/sdcard/efs/pics
Access: (775/drwxrwxr-x) Uid: (1000/ system) Gid: (1015/sdcard_rw)
Code:
# touch /mnt/sdcard/pics/test
touch: /mnt/sdcard/pics/test: Permission denied
What about the permissions of /data/media/0 folders? That's the most important part.
If your sdcard is not at /data/media/0 you probably don't have a multiuser environment (older phone?) and /mnt/sdcard is probably a real partition. This is early Kitkat partition layout (/sdcard and /data have separate partitions). On later systems both are on /data partition and /sdcard is abstracted by a FUSE file system that would automatically set the proper permissions whenever you write something to it (even as root).
In case you are on an old layout you would need to set proper permissions to /sdcard/pics and /sdcard/efs yourself. Just take a look at the other folders with 'ls -l /mnt/sdcard' and set accordingly. You would also need to change /data/media/0 to /mnt/sdcard in the script.
What do you get with this?
Code:
# mount |grep sdcard
# mount |grep storage
What phone is it? Kernel 3.18 doesn't sound all too old.
Edit: Another theory is your internal sdcard is scardfs or something. If so, it might break "stacking" folders (mount over). Try to use /data/pics and /data/efs/pics as a test.
It works in Permissive mode (setenforce 0)
I need Busybox with SELinux-enabled and use it to set it to Permissive mode
Code:
# busybox getenforce
Enforcing
# busybox setenforce 0
# busybox getenforce
Permissive
And then execute the efs-pics.sh and test it
Code:
# cp file /mnt/sdcard/pics ; echo $?
[b]0[/b]
# ls /mnt/sdcard/pics
[b]file[/b]
Horreee.... it Works.

Categories

Resources