FAQ
Q. What is Root? http://en.wikipedia.org/wiki/Rooting_(Android_OS) Q. How to get root permission? The rooting process varies from device to device, look at the following forums for a working method on your device. xda-developers forum MoDaCo Device Specific Forum Q. How can I check whether my phone is properly rooted? The simplest way to check if you have root privilege is to run "su" command in the shell (terminal). If you don't have a terminal app you can install free "Android Terminal Emulator" application from the Google Play. Type su and press enter in the terminal, superuser request window should be popped up and when you allow it, the prompt character should change from '$' to '#'. The pound sign (#) is the typical symbol used to indicate that you are now running commands as root. If you see something different, your phone is not properly rooted. Q. I get "Mount script cannot be created. cannot create /system/etc/install-recovery.sh: not enough memory" error. Some HTC devices are "NAND locked". On "NAND locked" (or "S-ON") devices the /system partition is write-protected by the bootloader and thus cannot be modified even if you have root privileges. In order to use Link2SD you need to do "S-OFF" to disable this NAND lock. (a.k.a. "NAND unlock" or "unlocking the bootloader") Q. Is busybox required for Link2SD? No, not required. Q. I've installed link2SD and it is moving the apps to the main partition of SD instead to the 2nd partition. Click "Create Link" to move and link applications to 2nd partition with Link2SD. You can see "Linked -> SD card" label for linked apps. If you click "Move to SD" app will be moved to first partition with native app2sd method of Android OS. This is same as going to "Manage Applications" and then clicking "Move to SD". You can see "on SD Card" label for those apps. Q. What is the difference between “Move To SD Card (Native to Android)" and “Create (Symbolic) Link” in Link2SD? Which method conserves the greatest amount of internal memory, what are the advantages of "linking" over "moving" and vice versa? Native apps2sd Starting with Android 2.2 (Froyo) Google introduced native apps2SD. This method moves * apk file on Android 2.2 * apk + lib files on Android 2.3+ into a secure folder on your SD card in the main FAT partition. It is the easiest method because it doesn't require you to partition your sdcard and root privilige. It has some disadvantages though. First disadvantage is that application files are just stored on the sdcard's main FAT partition. When you enable USB mass storage to share files with your computer (or otherwise unmounts or removes the external storage), any application installed on the external storage and currently running is killed. The system effectively becomes unaware of the application until mass storage is disabled and the external storage is remounted on the device. Besides killing the application and making it unavailable to the user, this can break some types of applications in a more serious way. So second disadvantage is that not all apps can be moved with native apps2sd method because of above reason. In order for the application to consistently behave as expected, developer should not allow the application to be installed on the external storage if it uses any of the following features, due to the cited consequences when the external storage is unmounted: Widgets, Services, Alarm Services, Live Wallpapers, Live Folders, Account Managers, Sync Adapters, Broadcast Receivers listening for "boot completed". Force move (requires root); You can force the apps move to SD card with native apps2SD even the application does not support moving as described above. Link2SD and some other apps can force move apps if you have root privileges. But, note that this can break some applications, as described above. Link2SD Link2SD moves apk + dex + lib files of the application to the second partition and creates symbolic links in the original locations on internal storage. First advantage is that it can free up more space from the internal storage compared to native apps2sd method because it moves the dex file as well. The second advantage of Link2Sd over native apps2sd is that by creating symlinks you get Android assume these apps are installed into the internal memory, though in fact all the files are located on the SD. Therefore you can link all applications to SD card; widgets, services, live wallpapers etc., all of them will work without any problem from SD card. The third advantage is that, even when you mount the SD card to your PC your linked apps are all still live and working! Because Android unmounts the first FAT partition to share files with your computer but the second partition remains mounted. Link2SD allows you to run all of your "SD apps" even when mounted to your computer as a disk drive. And, disadvantage is that, obviously, it requires root privilege and a second partition on your SD card. It's not working "out-of-the-box" as native apps2sd, you need to root your device and create a second partition on your SD card yourself. Q. How can I create a partition on my SD card? If you have a custom recovery installed (ClockworkMod or AmonRa) on your phone you can use it to create a second partition on your SD card. Or you can use a computer to create it; on Windows there are some free partition manager applications such as "MiniTool Partition Wizard Home Edition", "EaseUS Partition Master Home" etc. You can use any of them that you prefer. on Linux you can use GParted. on Mac OS you can use its Disk Utility. Q. I get error with the mounting of my Ext partition. It says device busy. Your second partition may be already mounted. Most probably your rom has already builtin a2sd, try to disable a2sd on your ROM. Q. I succesfull set up Link2SD and linked most of my applications to SD card and enabled "auto link". But when I install a new app I see reduction on the internal storage even if the app is linked. Why am I still losing space? Link2SD does not link application's private data files that are located in /data/data directory, they remain in the internal storage. Thus each app you install will still have some data on the internal storage so you can still potentially fill up your internal storage even if you are moving all of your apps over. Begining from version 3.4, Link2SD Plus can move application's private data files that are located in /data/data directory. You need to use a non-FAT file system (ext2, ext3, ext4 or f2fs) on your second partition in order to link app's private data files. Because the FAT file system (FAT16, FAT32 or exFAT) does not support UNIX (POSIX compliant) file ownership or permissions and will cause a security breakdown of app\'s private files. On devices that have emulated SD card, external data and obb files are actually located on the internal storage. These files can fill up your internal storage in that case. Begining from version 4.0, Link2SD Plus can move external data and obb folders of apps and games to 1st or 2nd partition (depending on your selection) of the SD card. 2nd partition on SD card is optional for this feature, folders can be moved to the 1st or the 2nd partition. Linked folders are bound at boot time. Q. I've linked an app, but when I go to "Settings -> Applications -> Manage applications" I see that the app is still on my Phone, "Move to SD card" button is active. By creating symlinks you get Android assume these apps are installed into the internal memory, though in fact all the files are located on the SD. To check if an application is linked or not use Link2SD application. Q. I am getting read-only file system error and can not link any app anymore. If your 2nd partition becomes read-only, it may be a filesystem error or corruption. On Linux (and Android) any filesystem error can trigger filesystem go read-only (for protecting fs). Try to reformat your second partition or fsck utiltiy to fix fs errors, following is an example usage of fsck command.
e2fsck -fpDC0 /dev/block/mmcblk0p2
Also, if you use AmonRa recovery you can run its "Repair sd-ext" function to fix file system errors on the 2nd partition. Q. What does it mean to freeze an app - what is the benefit of doing that? Freezing an app makes it disabled in the system. The app is still installed, but it cannot run (cannot be opened, turned on, accessed, etc). The benefit of doing this can be preventing it from running in the background, downloading data and killing your battery when you don't even use it. With a simple un-freeze you can run a frozen app again. Disabled apps are marked -Frozen- in Link2SD. The other way is to manually uninstall the unwanted apps but the problem with manually deleting apps is that you may not get market updates. Plus, once you delete an app, it is difficult to get it back in case you actually need it. Freezing allows you to get the same benefits as uninstalling while allowing you to get updates and to un-freeze at anytime to use the frozen app. Note that freezing doesn't clear up space on your phone, the application files are still where they are. Q. I see -Updated- label on some applications, what does it mean? Pre-installed apps (eg. YouTube, Google Maps, Google Voice, etc.) will initially be system apps, residing in /system. When updating such apps, the old apk will stay in /system while the updated version will be placed in /data. After such an update, the app will be marked -Updated- in Link2SD. For system apps in -Updated- status, you can free up space in /data by replacing the old apk (in /system) by their updated version (from /data). This can be done by selecting the Link2SD option "Integrate update into system". For saving even more memory space for such apps, you may select to link these apps via Link2SD. However, system apps can't be linked by Link2SD, so before this can be done they have to be converted from system app to user app before. This can either be done by: *) Converting the app from System app to User app via Link2SD (option "Convert to user app"), then link it via Link2SD or *) Un-install the app via Link2SD, then reboot, then re-install it from Google Play (it will then be re-installed as a user app), then link it via Link2SD Converting from a System app to a User app via Link2SD (option 1 above) for existing and running apps may cause problems ('application stopped unexpectly' errors), which may persist even after rebooting your device. In such cases the 2nd option above may be a better solution. However, before using option 2 above and uninstalling such apps, make sure that you will be able to re-install them from Google Play afterwards. Never do that for internal Android components, only for pre-installed apps like YouTube, Google Voice, Google Maps, pre-installed File explorer apps, etc. Q. The free space doesn't increase after linking the applications, what could be the reason for this? Moving files to 2nd partition and creating symlinks can delay the freeing of storage space; you might need to wait some time for the change to be visible. Or you can reboot the phone to see the changes immediately. Q. What exactly does "Clean up the 2nd partition" do? "Clean up the 2nd partition" function scans the second partition (/data/sdext2 directory) and finds the apk and dex files that are not associated with any apps (i.e. garbage files). When finished, shows the files it found and asks for confirmation to delete them. It doesn't delete anything without your permission. Q. What exactly does "Link dalvik-cache files" do? "Link dalvik-cache files" function finds the applications that their apk files are linked but dex files are not linked and then links the dex files of them. Q. What exactly does "Clean up the dalvik-cache" do? "Clean up the dalvik-cache" function scans /data/dalvik-cache directory and finds the files that are not associated with any apps (i.e. garbage files). When finished, shows the files it found and asks for confirmation to delete them. It doesn't delete anything without your permission. Q. Library files that I linked get unlinked after restarting my phone, why? On Android 2.3 and 2.2, the links to the lib files are being lost after rebooting because the PackageManager service unpacks all native libraries from the apk files at boot time. Android 2.3 links native library directories and it does not unpack libs for apps on the external card since they have their libraries in the ASEC container. But it unpacks the lib files that are linked by Link2SD. Logcat log shows what is going on...
... I/PackageManager( 184): Unpacking native libraries for /data/app/com.aurorasoftworks.quadrant.ui.standard-1.apk I/PackageManager( 184): Unpacking native libraries for /data/app/com.cerience.reader.app-1.apk I/PackageManager( 184): Unpacking native libraries for /data/app/arity.calculator-1.apk I/PackageManager( 184): Unpacking native libraries for /data/app/com.eclipsim.gpsstatus2-1.apk ...
You can use "relink lib files at boot option" as workaround. Q. Altough "auto link" is on, some apps are not linked to SD card automatically, instead, I see that that they are installed on SD card with native app2sd method of Android. I need to link them manually. Beginning with Android 2.2, application developers can express the preferred installation location for their applications in the manifest of the apps. The attribute supports three values: "internalOnly", "preferExternal", and "auto". At install time, the system checks the value of android:installLocation and installs the application .apk according to the preferred location, if possible. If the application has requested external installation, the system installs it in the SD card. If the attribute is "auto", the system will decide where to install the application based on several factors. If an application is installed on SD card with native app2sd method, it can not be linked to SD card with Link2SD. You need to link it manually. If you decide to use Link2SD and "auto link" on, set default install location to "internal" within Link2SD to prevent conflict Link2SD and native app2sd. In that case, apps will be installed in internal storage even if the application is declared as "preferExternal" or "auto" and Link2SD can link its files. Q. Every time the phone boots have a message "mount warning" and i must quick reboot the phone in order to see my linked apps, which could be the cause? Some roms (for example new Samsung Gingerbread ROMs) do not have install-recovery.sh and init.d scripts to mount 2nd partition at boot. Therefore Link2SD mounts the 2nd partition after system finishes mounting and you need to perform "Quick reboot" after each "real boot". This problem has been fixed starting from version 1.9.11. If you still experiment this problem, please install latest version and run "Recreate mount scripts" from the menu within Link2SD. Q. I can't see some apps that I've linked on "My Apps" in market. Try clean cache & data for Market application within Link2SD. If some apps are still missing from "My apps" afterwards, just install any app from the market and they will show up. Q. I switch off my phone to remove the SD card, then switch on while SD card is removed. After I insert SD card again all apps that are linked to SD card get force close and failed to open. On Android 1.6 and 2.1, missing app permissions may cause these force closes. On Android 2.2+ this is not the case, you can remove, reboot and re-insert the SD card without any problem. On Android 1.6 and 2.1, the only way to recover from this is re-installing the app. You can re-install the app within Link2SD, it will re-install the application from the existing apk file, does not download anything. The issue is that, if an app can not be found by the package manager at boot time its permissions become missing on Android 1.6 and 2.1. Even if it is avaliable for subsequent boots the permission problem continues and only re-installing can repair it. Monitoring adb logcat while the phone is booting shows what is going on;
W/PackageManager( 138): Not granting permission android.permission.INTERNET to package it was previously installed without W/PackageManager( 138): Not granting permission android.permission.WAKE_LOCK to package it was previously installed without W/PackageManager( 138): Not granting permission android.permission.VIBRATE to package because it was previously installed without ... ...
/data/system/packages.xml file, which stores which apps are installed and which permissions they have, shows:
<package name="bz.ktk.bubble" codePath="/data/app/bz.ktk.bubble.apk" system="false" ts="1297597502000" version="19" userId="10024"> <sigs count="1"> <cert index="18" key="30820255308201bea0030201020204490d7e..." /> </sigs> <perms /> </package>
as you can see the permissions block is empty. But it should be like this:
<perms> <package name="bz.ktk.bubble" codePath="/data/app/bz.ktk.bubble.apk" system="false" ts="1297597502000" version="19" userId="10024"> <sigs count="1"> <cert index="18" key="30820255308201bea0030201020204490d7e..." /> </sigs> <perms> <item name="android.permission.WAKE_LOCK" /> <item name="android.permission.VIBRATE" /> </perms> </package>
Manually editing the packages.xml file does not help. What fixes it is to re-install the application. You can use batch reinstall capability of Link2SD. Q. What happens if I uninstall or update a linked application? If you uninstall a linked application its apk, dex and lib files will be automatically deleted from the SD card by Link2SD. If you update a linked application new apk, dex and lib files will be placed in the internal memory at first and then they will be automatically relinked by Link2SD in the background. You don't have to manually relink after updating an application. Note: Since the app is linked again, On Android 1.6 and 2.1, shortcut and the widget of the app should be re-added to homescreen if the apk file is linked. Q. I saw a new version of Link2SD in the market, do I need to unlink my applications before upgrading and then relink with the new version? No, you don't need to do anything special before upgrading, you can directly upgrade to the new version. Q.What happens to my linked apps if I uninstall the Link2SD app? Will my linked apps will be automatically uninstalled or moved back to phone memory? And then if I install it back will they stay there? Nothing happens. All linked apps remain intact and can be run even if you uninstall the Link2SD. And if you install Link2SD back, you can see that they are there as linked. Q. I get "Segmentation Fault" error on ICS (Android 4.0) when I try to move an app to SD card or try to Freeze/UnFreeze an app. It's due to an issue in ChainsDD's superuser su binary on ICS. Try with ClockworkMod's Superuser or Chaninfire's SuperSU. Q. I upgraded/changed my ROM and I can not see my linked apps, their files are on the 2nd partition but the system can not see the apps. How can I make them available, do I need to reinstall and relink them again? No, if you didn't wipe data when updating ROM the only thing you need to do is to run "Recreate mount scripts" from "menu -> more" within Link2SD and do a normal (not quick) reboot. If you wiped data, after executing "Recreate mount scripts" and rebooting, run "Relink all application files" from "menu -> more" and then reboot. All of your linked apps should be available again after reboot. If you also wiped dalvik-cache, in addition to the above step run "Link dalvik-cache files". Q. I have installed Link2SD on my Samsung Galaxy S3. When I try to move any app to SD Card I get a warning saying my device does not support app2sd. What does it mean? Currently, Android only supports the primary external storage for native App2SD function. If the primary external storage is emulated from the internal phone storage (like in S3, Note 1&2 etc.) or does not exists at all, moving app to SD function will not be supported by Android system. It's the limitation of device (rom & hardware). You can link the app in order to move its files to your SD card. Q. When I try to link an app I get "mkdir failed for /data/sdext2/data, File exists" error. This error has been fixed starting from version 2.4. If you still experiment this problem, please install latest version and run "Recreate mount scripts" from the menu within Link2SD and reboot. Q. When I try to link the internal data of certain apps (like Facebook) it cannot be linked and gets error, sometimes the app crashes. Try to "freeze" the app before linking the internal data, you can unfreeze it after the linking is completed. Q. I get "mount: Operation not supported on transport endpoint" error in creating mount scripts. Try with an ext4 partition.