[Q][SOLVED]Writing into ramdisk from init.rc - Android Q&A, Help & Troubleshooting

EDIT: The solution is in post #6.
Hi,
I'm trying to make a kernel modification which would create a file on boot before any partition is mounted. I wrote a simple shell script which tries to create a file in the root directory. The problem is I can't write any file to the / directory from a program or a script called by exec from init.rc. If I run dmesg, I can't find any indication of a problem there. I tried to modify the script to write to the /data directory on post-fs, and that worked, but that is not what I want.
I can't find out where the problem is. Do you have any ideas? Thanks.
simplified init.rc snippet:
Code:
on fs
# some work
exec /sbin/busybox sh /test.sh
# some other work
mount_all /fstab.grouper
# and another work
/test.sh
Code:
#!/sbin/busybox sh
echo "test" > /test

/ mounts as ro pretty early...
try to remount it rw before making files, or change the part of init.rc that mounts it ro.

frantisek.nesveda said:
Hi,
I'm trying to make a kernel modification which would create a file on boot before any partition is mounted. I wrote a simple shell script which tries to create a file in the root directory. The problem is I can't write any file to the / directory from a program or a script called by exec from init.rc. If I run dmesg, I can't find any indication of a problem there. I tried to modify the script to write to the /data directory on post-fs, and that worked, but that is not what I want.
I can't find out where the problem is. Do you have any ideas? Thanks.
simplified init.rc snippet:
Code:
on fs
# some work
exec /sbin/busybox sh /test.sh
# some other work
mount_all /fstab.grouper
# and another work
/test.sh
Code:
#!/sbin/busybox sh
echo "test" > /test
Click to expand...
Click to collapse
I am having the same problem, my script is not called. Did you find the solution?

Khaon said:
I am having the same problem, my script is not called. Did you find the solution?
Click to expand...
Click to collapse
Not yet. But recently I got back to the project where I would use it, so maybe I can take a look again and see if I am any wiser now. I'll try to solve it this evening or tomorrow, I'll be reinstalling my tablet so I'll have a good oportunity. I'll post the results here.

frantisek.nesveda said:
Not yet. But recently I got back to the project where I would use it, so maybe I can take a look again and see if I am any wiser now. I'll try to solve it this evening or tomorrow, I'll be reinstalling my tablet so I'll have a good oportunity. I'll post the results here.
Click to expand...
Click to collapse
That would be great, the only thing I could see is upon booting its permissions are read-only. And chmod 0777 doesn't change its permissions(rootfs is rw)

Khaon said:
That would be great, the only thing I could see is upon booting its permissions are read-only. And chmod 0777 doesn't change its permissions(rootfs is rw)
Click to expand...
Click to collapse
OK, I found the cause of the problem and the solution.
The implementation of the exec command in Android init scripts is missing from the init binary by default - the source looks like this:
Code:
int do_exec(int nargs, char **args)
{
return -1;
}
So there are two options - either write the do_exec function yourself, or use a trick to execute your programs.
Writing it yourself would be probably cleaner, but it would mean compiling the init binary again and not everyone wants to do that, so I'll be using the trick.
The trick is to register your program as a service and then invoke it via the start command.
Example init.rc:
Code:
# service invocation - where you need it
# warning - this will not wait for the finish of the program
start my_awesome_program
.
.
.
# service declaration - along with other declarations at the end of the file
service my_awesome_program /sbin/my_awesome_program
disabled
oneshot
If you want to implement the do_exec function and use the exec command, you can use for example CyanogenMod's implementation.
There may be a third option, but I haven't tested that - you can copy the init binary from a kernel which has the exec command working - I suppose all CM kernels should, but I haven't tried.
It's funny how when you already know the solution, you can find so much info, but when you don't, nothing comes up since you are searching wrong.

frantisek.nesveda said:
OK, I found the cause of the problem and the solution.
The implementation of the exec command in Android init scripts is missing from the init binary by default - the source looks like this:
Code:
int do_exec(int nargs, char **args)
{
return -1;
}
So there are two options - either write the do_exec function yourself, or use a trick to execute your programs.
Writing it yourself would be probably cleaner, but it would mean compiling the init binary again and not everyone wants to do that, so I'll be using the trick.
The trick is to register your program as a service and then invoke it via the start command.
Example init.rc:
Code:
# service invocation - where you need it
start my_awesome_program
.
.
.
# service declaration - along with other declarations at the end of the file
service my_awesome_program /sbin/my_awesome_program
disabled
oneshot
If you want to implement the do_exec function and use the exec command, you can use for example CyanogenMod's implementation.
There may be a third option, but I haven't tested that - you can copy the init binary from a kernel which has the exec command working - I suppose all CM kernels should, but I haven't tried.
It's funny how when you already know the solution, you can find so much info, but when you don't, nothing comes up since you are searching wrong.
Click to expand...
Click to collapse
Oh my, many thanks! So stupid exec always return ;D, wouldn't have thought one sec on checking the implementation of those functions.

Khaon said:
Oh my, many thanks! So stupid exec always return ;D, wouldn't have thought one sec on checking the implementation of those functions.
Click to expand...
Click to collapse
A small warning - starting the program as a service will not wait for the program finish, so its results will not be available immediately after the start call. I learnt this the hard way after a few hours of debugging just now.
I added this info to my previous post too.

frantisek.nesveda said:
A small warning - starting the program as a service will not wait for the program finish, so its results will not be available immediately after the start call. I learnt this the hard way after a few hours of debugging just now.
I added this info to my previous post too.
Click to expand...
Click to collapse
I always use
Code:
class core
user root
in addition to oneshot.
Haven't you com accross SElinux restrictions using busybox? Because I do I need to set permissions.
I have this issue

Related

[MOD] Change WiFi hostname - for custom ROMs (Sept 23)

This is useful for identifying phones on the local networks by looking at DHCP lease tables in the routers. It doesn't make your phone appear on Windows networks, since the phone needs to broadcast NetBIOS name for that. If you want your phone to show up on Windows networks (and share files) - you need Samba server, and JimmyChingala is working on one.
ROM developers can insert the option to customize hostname using the way described below in their Spare Parts options. Feel free to do so.
[SOLUTION]
The following shell command does the job of changing WiFi hostname:
echo YOURHOSTNAME > /proc/sys/kernel/hostname
Click to expand...
Click to collapse
For the change to stay, it should be executed on each boot. And here the things start being more problematic.
For custom ROMs:
Most, if not all, custom ROMs include some user init shell script that will be executed on boot, making the solution easy.
Enter the following line in the Terminal / ADB shell:
echo "echo YOURHOSTNAME > /proc/sys/kernel/hostname" >> the_path_and_name_of_userinit_script.sh
chmod 777 the_path_and_name_of_userinit_script.sh
Click to expand...
Click to collapse
Several examples of custom ROMs and their userinit scripts:
Suggested - will work for most ROMs (creates another file in directory of autoexecuted scripts): /etc/init.d/88hostnameinit
Additional possibility for Enomther's ROM: /data/local/userinit.sh
Additional possibility for CyanogenMOD: /sd-ext/userinit.sh
For stock ROMs:
There is no autorun script for stock ROMs, so they have to be added through modifying boot.img. It's a complicated procedure, and even though guides exist for it - I suggest not to mess with it only because of the hostname. The easiest solution would be to create a script file with the line above using Gscript or other scripting solutions, and execute it after each reboot. If anyone really wishes to modify boot.img - I assume that he/she knows enough about Linux/Android since it can be relatively easily done only on Linux, can find the necessary guides with some googling (like I did), and in this case the modification is easiest to do directly in init.rc - changing "hostname localhost" to "hostname name_of_your_choice".
[ORIGINAL POST]
Hi people,
I'm not much of a dev, but I can find my way around with a bit of Google search And sorry about the links that don't link, new user's permissions don't allow me to...
Anyway, after messing with my router today I've noticed that Nexus transmits "localhost" as its host name to DHCP server, causing my DD-WRT to show it as "*". I went to Google and to my surprise, discovered that there isn't such an option in any Nexus ROM yet.
Found this: LINK_www_laslow_net_?p=501
To change your hostname on Cyanogen 5.x, add the following line to the bottom of /system/etc/init.d/01sysctl -- and make sure you make a backup of 01sysctl before editing it!
echo NEWHOSTNAME > /proc/sys/kernel/hostname
Click to expand...
Click to collapse
I tested it, and it didn't work. After booting, the file still read "localhost" in it, and the hostname on DHCP server reflected it.
But, I didn't get frustrated, connected with ADB, manually executed the command:
echo MyHostName > /proc/sys/kernel/hostname
checked that the file was overwritten, disabled WiFi, deleted DHCP lease, enabled WiFi back - and voila, I have a new hostname!
Then I went to search for hostname setting, which got me to /init.rc:
on boot
# basic network init
ifup lo
hostname localhost
domainname localdomain
Click to expand...
Click to collapse
Well, I guess that's the place. A tiny problem, though - it's in the boot image, which can't be easily modified. Thanks to the latest thread on update.zip creation I can probably do it myself, but I wanted to share the findings and ask for the correct way to implement.
There's a "dirty but functional" way of "disable WiFi - override /proc/sys/kernel/hostname - enable WiFi", and it's probably not a problem to stick it somewhere in the boot sequence, or even write an app that writes those changes to one of the boot scripts and allows configuration of host and domain names. But it's not the best way - DHCP might already give out a lease, and the new host name might not register.
And there's a correct (?) way of doing it, introducing it into init.rc. Since it's "on boot", I suppose that it runs after mounting the partitions - which means that the partitions are already accessible.
In this case, the best way would be executing a small shell script that would check for existence of, say, "/system/etc/settinghostdomainnames.rc" and create a default one if it's not there, then use "import /system/etc/settinghostdomainnames.rc" and set a manual trigger, like the guy is trying to do here:
LINK_groups.google.co.jp_group_android-developers_browse_thread_thread_e2f432707b735ff0
"trigger someeventtobringupnetworkinterface"
That would allow to use a custom setting for host and domain names that can be changed by SW, and adding that as another option into ROM Settings app or external app.
But the guy in question didn't succeed. What did he miss? Would it be better to do something like "on fakesystemproperty=something" and instead of manual trigger, doing "setprop fakesystemproperty something"?
I can probably test it and find out myself, but it would take loads of time compared to one of the kernel devs, and I don't even have the environment set up for modifying boot images. I was kinda hoping that one of the kernel devs would test it. I can write and post the modifications to init.rc and the custom script, they're very simple.
So, who can help me with answering the questions in the thread, and/or testing the modification?
Thanks! It's back.
Oh well, I'll keep preparing Ubuntu VM anyway
OK, first test fired - updated /init.rc in my own boot.img, checked the values. It's working, hostname is indeed modified.
Now I'll try to rewrite /init.rc in such way as to load the hostname setting from elsewhere, while not screwing the security. Will post results soon.
Setting it to the same value as the BT value would be ideal. I'm not sure how you could do that though, because the init scripts run before the frameworks load
Looking forward for a fix to this problem.
Update, but only partially on topic:
God, I hate SH scripting. Couldn't even google a normal tutorial that would explain where I went wrong. A script of 10 lines, and I can't make it work.
Let's see, I need something like this:
#!/system/bin/sh
echo "on service-exited-network_prepare" > /system/etc/net_init.rc
echo " ifup lo" >> /system/etc/net_init.rc
if [ -e "/system/etc/net_init.domain" ];
then
echo "hostname `cat /system/etc/net_init.host`" >> /system/etc/net_init.rc
else
echo "hostname localhost" >> /system/etc/net_init.rc
fi
if [ -e "/system/etc/net_init.domain" ];
then
echo "domainname `cat /system/etc/net_init.domain`" >> /system/etc/net_init.rc
else
echo "domainname localdomain" >> /system/etc/net_init.rc
fi
echo >> /system/etc/net_init.rc
Of course, this thing fails miserably with -
Syntax error: end of file unexpected (expecting "then")
What the hell am I doing wrong? Never used SH before, mostly tcsh and perl.
Thanks.
Oh well, I guess I got the problem.. Unix vs Windows file format. Sorry for bothering.
its always bothered me that you cant change the device name for wifi networks, and ive always looked for a way to change it.
kudos to you for the ambition and diligence to do it!
dont give up, if you can get it smoothed out enough im sure cyanogen will implement it in his next mod. ive always wished there was an option in wifi settings to change device name. itd be very useful for lan ip configuring and when your connected to a random hotspot lol
Ok, after fighting for a day, I still didn't manage to import another .RC file and run on service exit (I don't even see the trace of the process I'm trying to start - the first thing it does is attempting to write log, and there is no log, no matter where I put the start command), but at least for a "quick-and-dirty way" there's a very simple solution, given SD-EXT partition (I believe everyone creates it):
open terminal application, type the following command:
echo "echo YOURHOSTNAME > /proc/sys/kernel/hostname" > /sd-ext/userinit.sh
That would override the hostname of the system before boot completion.
After some reading, I believe there's nothing bad in setting the hostname twice - once default localhost in init.rc, and then overriding it using /proc/sys directory, Linux is designed to cope with that and hopefully so does Android.
So, as to pershoot's request, it's possible to write a small application to read Bluetooth device name value and write it as WiFi hostname, and include it in boot process right before 20userinit.
Now this is a task I'm not suitable for, I have no knowledge of frameworks whatsoever. Anybody up to the task?
Jack_R1 said:
After some reading, I believe there's nothing bad in setting the hostname twice - once default localhost in init.rc, and then overriding it using /proc/sys directory, Linux is designed to cope with that and hopefully so does Android.
So, as to pershoot's request, it's possible to write a small application to read Bluetooth device name value and write it as WiFi hostname, and include it in boot process right before 20userinit.
Now this is a task I'm not suitable for, I have no knowledge of frameworks whatsoever. Anybody up to the task?
Click to expand...
Click to collapse
I requested it and I'm not pershoot
Oops Sorry, my bad. Fever and lots of time in front of the computer don't do me good...
Kudos to you Jack_R1. Watching this.
Let me know if you need any help with shell scripting.
Gonna watch this and try it out later, the solution so far.
is this a stable fix?
is this confirmed to work?
Sorted out, updated with the most current info and several examples of custom ROMs.
Jack_R1 said:
Sorted out, updated with the most current info and several examples of custom ROMs.
Click to expand...
Click to collapse
I am running CM6 with a2sd and somehow the /sd-ext/userinit.rc is not executed. Even if I change permissions of the file to 777, it's not executed.
I also haven't found in init.d the script which executes userinit.rc, might be because I am running custom kernel? (wildmonks).
The only way for me to do it was to put the script in /etc/init.d/88userinit file and change it's permissions to 777
It's /scripts/userinit.sh, not userinit.rc
The execution of /sd-ext/userinit.rc used to be in /init.rc, in boot.img.
But the preferred way for most of the ROMs is to use /etc/init.d/ scripts anyway, since a lot of ROMs use them.
Changed the 1st post to reflect it.

[HOWTO] Ubuntu on Folio 100

I'm sorry it took so long, I got lots of stuff to deal with. Good things are worth waiting for (i heard)
First off: You are responsible for any of your actions! Changes that are needed to boot Ubuntu on your folio will void your warranty!
Special Thanks goes to DerArtem for posting his Kernels, Weeds2000 for eMail support, topogigi for wifi hacking and last but not least the Ubuntu-Touch Team on IRC that made it possible for me to tweak the touchscreen driver.
However, the system you are about to create is not fully functional, there are still things missing (a working sound driver for example). Its nice to play with it anyway
Heres a quick walk-through:
We will flash a kernel to the toshiba folio tablet which makes it possible to boot from an sdcard or USB-stick (You have to choose one, we need at least 2GB, I'd recommend 4GB so you can install fancy stuff like OpenOffice etc.).
We will then create a root filesystem with rootstock, which will hold our Ubuntu system (similar to your hard drive-Ubuntu).
Finally, we have to tweak that filesystem and change passwords, copy wifi driver etc.
Then we're able to boot a beautiful Ubuntu.
Things you will need:
- A Computer running Linux (Debian / Ubuntu would be great. If you're not running Linux on your computer, running it on the folio would make absolutely no sense. Please don't ask, I don't know how to install it in Windows.)
- The files i added to this post
- A SD-Card, 2-4 GB should be fine.
- optional: A second SD-card, 128MB would be enough (for flashing)
- A USB hub (If you want to boot from USB AND use a keyboard.
- Some time... =)
The first thing you should do is flash one of the update.zip files; choose update-sdmmc.zip (this will boot your folio from sdcard) or update-usb.zip (this will boot from a usb pen drive), open it and unpack the content to a sdcard (This has to be a SDcard, we're gonna flash our device from there.)
Backup all your data on your folio (I'm serious! It'll be gone!) and turn it off.
Put the SDcard in its slot and turn the folio back on. Press + hold both power and volume up.
Follow instructions to do a system update (If you've never done this before you shouldn't start now =) )
When it reboots, your folio will show some funny black and white linux text stuff and hang somewhere. Congratulations! You just bricked your tablet. Now lets see how we can fix it... Turn it off (Keep power pressed for about 5 seconds) and take out the sdcard, put it in your PC.
It's getting messy now, so grab a beer and let's go:
Open a Terminal on your linux computer.
Code:
#echo "Hello world!"
If your console says "Hello World" you got it. Awesome! =)
Code:
#sudo apt-get install rootstock gparted
This will install rootstock, the tool we're gonna need to create our filesystem, as well as gparted, a tool for partitioning our flash drive. You can also install rootstock-gtk, the graphical version. Try it if you like:
Code:
#sudo apt-get install rootstock-gtk
I heard that ubuntu-netbook won't work because there are drivers missing, would somebody try that and report please?
If your beer is already empty when this is done, you need a faster computer. Tell your wife the guys at xda-developers told you so
Back to the terminal:
Code:
#sudo rootstock -f MyCoolHostName -l myCoolUserName -p myCoolPassword --seed xubuntu-desktop -i 2G --notarball
This will create our filesystem with a user called "myCoolUserName" and (theoretically) his password "myCoolPassword" and install a basic xubuntu-desktop. I had to change the password manually because it didn't work this way... We'll do that later.
Rootstock will download lots of packages (You could also set it up with "--seed ubuntu-desktop", then youll download even more packages or "--seed ubuntu-minimal" or kubuntu... I still didnt find a list of seeds online :-/
The creating will take quite some time, get another beer.
When this is done, you'll get a file like this : "qemu-armel-201104112120.img". We will now mount this image: (make sure the directory /mnt/ does exist and is empty:
Code:
#ls -la /mnt )
Code:
#sudo su
(its simpler to be root for now)
Code:
#mount -o loop qemu-armel-201104112120.img /mnt/
(You are aware that your filename is different, are you? Try this:
Code:
# mount -o loop qemu-armel-*TAB*
and your terminal will automatically fill in your filename. Awesome linux, huh? =)
)
Code:
#cd /mnt/etc/
#mv fstab fstab.bak
#echo "proc /proc proc defaults 0 0" > fstab
#echo "dev /dev tmpfs rw 0 0" >> fstab
Note that the first time we create a file called fstab (echo asdf > fstab), then we add one line to this file (echo asdfasdf >> fstab)
Now we need to copy our wifi-driver over. Remember I told you to write down the directory you put them in? =)
Code:
#cp /home/YourUserName/Desktop/FolioStuff/firmware /mnt/lib/firmware
We will now do something stupid: We chroot into our arm-based system from an intel-system. But since we're only changing passwords, we should be OK.
Code:
#cd /
#chroot /mnt/
#passwd myCoolUserName
#passwd
#exit
That's it, we're out of the chroot.
It's now time to prepare the SDcard (The steps are the same for a USB Flash drive, I think you'll figure them out.)
Find out how your SDcard can be accessed (You should still be root):
Code:
# fdisk -l
In my card reader, it's "/dev/mmcblk0", it could also be "/dev/sdb1" in your computer.
Now there are two possibilities:
1. You know what youre doing. Then it's easy: You wipe the only partition (or, if there are more than one, the first partition) on your sdcard and format it with ext3:
Code:
#mkfs.ext3 /dev/mmcblk0p1
Note: The device is called /dev/mmcblk0, the partition itself /dev/mmcblk0p1 (Partition 1)
2. You are not sure about this. No problem, start gparted: (as root!)
Code:
#gparted
In the upper right corner, select your flash drive, delete all partitions and create one formatted with ext3. Close gparted.
Mount your freshly created partition somewhere (i chose /mnt2/):
Code:
#mkdir /mnt2/
Code:
#mount /dev/mmcblk0p1 /mnt2
We can now copy our filesystem over. Make sure you use exactly the same flags (rfp for recursive, force, preserve (attributes))
Code:
#cp -rfp /mnt/* /mnt2/
OK, that could work. Unmount the sdcard:
Code:
#umount /mnt2/
Put it in your folio and cross your fingers.
Wifi drivers will be up soon...
It's recommend to add build-essentials to your rootstock image too..
Because then you can easily build the wireless lan drivers on your devices..
Maybe I'll post a howto this afternoon!
Is this Ubuntu really usable (for daily work) with the folio 100 (touch, response speed, ecc.)?
Thanks.
Yup, it's usable for everyday work. It's quite fast on the Folio 100, I've been pretty impressed when I tested it a few weeks ago.
Thanks ph84
It seems most difficult than expected but, great job !
Only i have 1 question, bricking the tablet sounds dangerous... is possible break out the tablet and get a rock?
Thanksss!!!!!
if ubuntu is installed on sd, does that mean that we can dual boot foliomod from nand and ubuntu from sd/usb?
Hm... I'm using Ubuntu 11.04 and I'm getting this error at the end of the rootfs creation :
E: Sub-process /usr/bin/dpkg returned an error code (1)
E: Second stage build in chroot failed !
E: Please see the log to see what went wrong.
I: Cleaning up...
.....
I: Umounting temporary Image
umount2: Dispositivo o risorsa occupata
umount: /tmp/tmp.zaZ1j1Tgt6/tmpmount/proc: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
umount2: Dispositivo o risorsa occupata
Click to expand...
Click to collapse
Do you have any idea where I can find the log?
And this procedure will build in the tablet a dual boot? Or dualboot is another procedure?
what is the *.rar????
No it's for singleboot only...
You can only start Ubuntu installed on SD-Card/USB-Stick with this procedure...
I don't know wether the boot-partition is locked when you are booting ubuntu/android..
If not it should be possible to build some applications to flash the boot-partition on the running system to change from ubuntu to android
When I do the rootstock step,I got this error!!!Please help!!!
I: Base system installed successfully.
I: First stage install done
I: Using Chroot for installer
Adding 'local diversion of /usr/sbin/invoke-rc.d to /usr/sbin/invoke-rc.d.rootstock'
Generating locales...
en_GB.UTF-8... done
Generation complete.
Generating locales...
en_US.UTF-8... done
Generation complete.
/bin/installer: line 53: syntax error near unexpected token `+'
E: Second stage build in chroot failed !
E: Please see the log to see what went wrong.
I: Cleaning up...
.....
I: Umounting temporary Image
I: A logfile was saved as //rootstock-201104140706.log
I: Done
Click to expand...
Click to collapse
Could you upload an *.img for us in this forum?
or a databank,etc?
mhmm it always hangs in the xulrunner configuration.. bahh someone know a solution for this? or does i realy have to chroot the rootfst and install everything manualy =(? Cant find any solution on google for this bug =/
sony_tornado said:
what is the *.rar????
Click to expand...
Click to collapse
Nvm, I was talking crap...
schnudergof said:
mhmm it always hangs in the xulrunner configuration.. bahh someone know a solution for this? or does i realy have to chroot the rootfst and install everything manualy =(? Cant find any solution on google for this bug =/
Click to expand...
Click to collapse
Just try rootstock without the parameters on --seed..
Maybe it will work..
You wont have a Desktop Enviroment like Gnome or something but you wont need that for installing the wireless drivers...
And after installing wireless drivers you can install ubuntu-desktop or something with apt-get!
Ok, I have been looking at rootstock, and if you install rootstock-gtk and than click on tasksel there is a whole list of seeds to chose from. I Think im going to try build the netbook build.
On a side note:
We will now do something stupid: We chroot into our arm-based system from an intel-system. But since we're only changing passwords, we should be OK
Click to expand...
Click to collapse
with chroot your only changing the root of your file system, your not running anything from there.
But its its in no way a complaint to your awesome guide! Thanks and keep up the good work!
shidima_101 said:
with chroot your only changing the root of your file system, your not running anything from there.
Click to expand...
Click to collapse
Thats right but when you change your root shell to the rootstock-fs you can also use sudo apt-get update/install and install it into the rootfs!
ph84 said:
Meanwhile, open another terminal. (This is linux! We're gonna multitask since our computer is capable of handling that!) Go to where you stored the attached files, for example
Code:
#cd /home/YourUserName/Desktop/FolioStuff
and unpack them:
Code:
#rar x *.rar
Click to expand...
Click to collapse
Where/what is the "attached files"?
Thanks
Just go to the first page, press STRG+F and type attached into the search window...
I hope you will find the attached files.. Else you dont have to try installing ubuntu on your folio >_<
°EraZoR° said:
Just go to the first page, press STRG+F and type attached into the search window...
I hope you will find the attached files.. Else you dont have to try installing ubuntu on your folio >_<
Click to expand...
Click to collapse
The files I found are only *.zip for update bootloader. Where is *.rar file?
Thanks

[krn.module] CIFS kernel module for X10 GB (SAMBA shares)

Hello guys,
I've compiled the CIFS module for our X10 (stock kernel version for 2.3.3, that is 2.6.29-00054-g5f01537 ).
Introduction
CIFS is for allowing to mount SAMBA/CIFS shares from Windows (mostly), so that they appear like a folder on the phone.
Specifically, you can watch movies on your X10 from a share, without first copying them to the phone. In fact you can mount any SAMBA share and do all operations with it.
There are two modules that do the job: cifs.ko (which is the main one) as well as nls_utf8.ko which just provides UTF-8 support for file/folder names within the shares.
Installation
Once you have unpacked the zip and extracted the two modules into the folder of your choice, the commands are these:
Code:
adb push "nls_utf8.ko" /sdcard/nls_utf8.ko
adb push "cifs.ko" /sdcard/cifs.ko
adb shell
su
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
cd /system/lib/modules
cp /sdcard/nls_utf8.ko .
cp /sdcard/cifs.ko .
insmod nls_utf8.ko
insmod cifs.ko
mkdir /sdcard/cifs
mount -o username=<yours>,password=<yours>,iocharset=utf8 -t cifs //<serverip>/<sharename> /sdcard/cifs
Now you can cd to your /sdcard/cifs and see the files shared there.
Observations
1. nls_utf8.ko is not mandatory and if your files don't have UTF-8 characters and only ascii, you can skip it IF you remove the isocharset=utf8 from the mount command above.
2. Music will stutter with all players I've tried. found an opinion that might be android lowlevel subsystem for reading mp3 files, and that they don't buffer enough - and given the latency over WIFI, this will create pauses / stuttering in the music. However, you can still copy the audio files, etc.
3. Movie playing works! I've tried RockPlayer for few minutes and didn't have an issue (seems it handles buffering very well) since it is software and thus they don't rely on some Android codec / etc.
4. Skip works! Again in Rock Player, you can skip in the movie and it takes a bit to skip there, but it does.
5. umount usually fails, since I assume, Android apps don't really exit and don't really free the resources. Once a file open, it doesn't let me un-mount saying that the resource / device is busy.
Download
Use it at your own risk!
cifs.zip
Chefs can bundle the files within the ROMs they offer - but please add this link into descriptions so that people can discuss issues they might encounter.
Cool.. Will try..
Sent from my X10i using XDA Premium App
nice! i am gonna try this!
New toy I'll give this a go tonight and report back. Thanks!
Hi viulian,
Thanks for the module. Would you mind if I include it in the hotfix for my rom?
Cheers,
z
zdzihu said:
Hi viulian,
Thanks for the module. Would you mind if I include it in the hotfix for my rom?
Cheers,
z
Click to expand...
Click to collapse
Absolutely no problem Z please do.
This module definetly requires an app to manage CIFS, mounting them with selected user/pass/path.
You can try cifs manager, its good.
Btw i thought the new sources weren't released yet.
I'm using old 2.1 sources and I could build these modules using Sony's blog post about how to compile kernels (with their CodeSourcery compiler) and a bit of Google foo.
Btw, I have another one ready, the cpufreq_interactive one which I'm creating a new thread now.
Later edit:
Although initially I read posts complaining about Sony's decision to keep the old 2.1 kernel (2.6.29) instead of the recommended (2.6.32) for GingerBread, it turned out that it was actually a smart move
Basically, the cifs module at least was much more difficult to port, due to the slow_work.ko module that needed to be compiled as well and inserted before.
viulian said:
Hello guys,
I've compiled the CIFS module for our X10 (stock kernel version for 2.3.3, that is 2.6.29-00054-g5f01537 ).
Introduction
CIFS is for allowing to mount SAMBA/CIFS shares from Windows (mostly), so that they appear like a folder on the phone.
Specifically, you can watch movies on your X10 from a share, without first copying them to the phone. In fact you can mount any SAMBA share and do all operations with it.
There are two modules that do the job: cifs.ko (which is the main one) as well as nls_utf8.ko which just provides UTF-8 support for file/folder names within the shares.
Installation
Once you have unpacked the zip and extracted the two modules into the folder of your choice, the commands are these:
Code:
adb push "nls_utf8.ko" /sdcard/nls_utf8.ko
adb push "cifs.ko" /sdcard/cifs.ko
adb shell
su
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
cd /system/lib/modules
cp /sdcard/nls_utf8.ko .
cp /sdcard/cifs.ko .
insmod nls_utf8.ko
insmod cifs.ko
mkdir /sdcard/cifs
mount -o username=<yours>,password=<yours>,iocharset=utf8 -t cifs //<serverip>/<sharename> /sdcard/cifs
Now you can cd to your /sdcard/cifs and see the files shared there.
Observations
1. nls_utf8.ko is not mandatory and if your files don't have UTF-8 characters and only ascii, you can skip it IF you remove the isocharset=utf8 from the mount command above.
2. Music will stutter with all players I've tried. found an opinion that might be android lowlevel subsystem for reading mp3 files, and that they don't buffer enough - and given the latency over WIFI, this will create pauses / stuttering in the music. However, you can still copy the audio files, etc.
3. Movie playing works! I've tried RockPlayer for few minutes and didn't have an issue (seems it handles buffering very well) since it is software and thus they don't rely on some Android codec / etc.
4. Skip works! Again in Rock Player, you can skip in the movie and it takes a bit to skip there, but it does.
5. umount usually fails, since I assume, Android apps don't really exit and don't really free the resources. Once a file open, it doesn't let me un-mount saying that the resource / device is busy.
Download
Use it at your own risk!
cifs.zip
Chefs can bundle the files within the ROMs they offer - but please add this link into descriptions so that people can discuss issues they might encounter.
Click to expand...
Click to collapse
Thanks viulian, very nice modules! May I include it in my rom?
Regards
Erick
Hello Erick, yes. Please add a link in your descriptions / thread / patches page etc, so people would also come here to check for possible issues, share experiences etc.
viulian said:
Hello Erick, yes. Please add a link in your descriptions / thread / patches page etc, so people would also come here to check for possible issues, share experiences etc.
Click to expand...
Click to collapse
For sure, thanks!
Hello friend,
Just wondering if I can install this through android terminal rather than adb?
Same commands/process? Thx
Aphex33 said:
Hello friend,
Just wondering if I can install this through android terminal rather than adb?
Same commands/process? Thx
Click to expand...
Click to collapse
Yes - if you handle copying the module to sdcard separately and then you become root in terminal, then it's the same.
viulian said:
Yes - if you handle copying the module to sdcard separately and then you become root in terminal, then it's the same.
Click to expand...
Click to collapse
Thx for quick response, become root in terminal? Explain please.....buy the way your modules rock! Currently using interactive.ko
Aphex33 said:
Thx for quick response, become root in terminal?
Click to expand...
Click to collapse
When you start the terminal, you notice you have a $ sign displayed to the left of the command prompt. That means you do not have the rights to do most things, since $ is for standard (limited) user.
What you need is to type command
Code:
su
And then your prompt will change to the dash sign #.
That means now you have full control over the phone, and you can start typing the commands.
Please double check what you do, and that you typed correctly - otherwise, as root, you might render your phone useless. Do not attempt if you don't feel confident enough and that you know what you are doing.
viulian said:
When you start the terminal, you notice you have a $ sign displayed to the left of the command prompt. That means you do not have the rights to do most things, since $ is for standard (limited) user.
What you need is to type command
Code:
su
And then your prompt will change to the dash sign #.
That means now you have full control over the phone, and you can start typing the commands.
Please double check what you do, and that you typed correctly - otherwise, as root, you might render your phone useless. Do not attempt if you don't feel confident enough and that you know what you are doing.
Click to expand...
Click to collapse
Thank you once again.
viulian said:
When you start the terminal, you notice you have a $ sign displayed to the left of the command prompt. That means you do not have the rights to do most things, since $ is for standard (limited) user.
What you need is to type command
Code:
su
And then your prompt will change to the dash sign #.
That means now you have full control over the phone, and you can start typing the commands.
Please double check what you do, and that you typed correctly - otherwise, as root, you might render your phone useless. Do not attempt if you don't feel confident enough and that you know what you are doing.
Click to expand...
Click to collapse
Hello, so If I have this correct, after placing the module in the correct place I have to type the commands in the first post word for word, correct? Apologize for being a noob, just wanna make sure.
hello guy
I dont know how to mount files from Windows. Someone explains clearly , please
Sorry for being noob. I think this module is awesome but dont know how to use
Got an exec format error when trying to insmod.
What can i try to solve this please ?
Thanks !

Snowball Mod

I ran the Snowball Mod without a hitch. I then tried to run the update but it won't run for some reason. The window flashes some text quickly but then closes so I'm not even really sure why it's not working. Anyone run into this or have any ideas. Thanks in advance!
I haven't had the time to try out the snowball mod, yet -- so I can't offer any advice. But, I would post the issue in the development thread, that's where the most help will be.
Swyped from my B&N Nook Tablet.
Try running it from a command line to keep it up and be able to read any text.
Also, there is a log.txt, if you post that, it can be more helpful.
Yeah I was goin to but I don't have enough posts. I was hoping someone would see it here.
Well... if you post your log.txt and start it from a command-line window rather than double clicking the update.bat, then we can take a look at what's up.
Log file says:
Snowball is reporting: v2.0.2
NO PACKAGE AVAILABLE
Command line:
Snowball is reporting: v2.0.2
There does not appear to be a package for the version snowball is reporting.
Are you sure you're not reapplying an update?
Perhaps you are accidentally trying to apply an "outdate"?
Thanks a lot!
There is no v2.0.2 update package in the zip folder. I renamed v2.0.1 to v2.0.2 and ran. Not sure if this was a good thing to do or not. Any help or direction would be appreciated. Thanks.
No write permissions
Tried to install snowball mod from a macbook pro by just running the snowball.sh. Started up and the B&N stuff was all there, although it looked like it ran without a hitch.
Looked at the log file in the snowball-mod folder and saw a lot of "Read-only file system" business. The first few lines being:
unzip: can't open nook-update-package.zip, nook-update-package.zip.zip, nook-update-package.zip.ZIP^M
rm failed for nook-update-package.zip, Read-only file system^M
Installing nook-update-package...
cd: can't cd to /mnt/media/nook-update-package^M
sh: Can't open install^M
rm failed for /mnt/media/nook-update-package, No such file or directory^M
Click to expand...
Click to collapse
How do you suggest I get around that?
conundrum768 said:
I haven't had the time to try out the snowball mod, yet -- so I can't offer any advice. But, I would post the issue in the development thread, that's where the most help will be.
Swyped from my B&N Nook Tablet.
Click to expand...
Click to collapse
We need 10 legit posts before we are allowed to post in the dev forum
Robotronik said:
Tried to install snowball mod from a macbook pro by just running the snowball.sh. Started up and the B&N stuff was all there, although it looked like it ran without a hitch.
Looked at the log file in the snowball-mod folder and saw a lot of "Read-only file system" business. The first few lines being:
How do you suggest I get around that?
Click to expand...
Click to collapse
Huh... this is weird... /mnt/media should not be read-only... although, I suppose, perhaps if you had it USB mounted, it might end up read-only.
Ensure that you have Automatic USB mounting turned off before you run the script.
You can actually push this update via wifi if you mod the update.bat (or update.sh for linux users) file.
Just turn on ADB Wifi (I prefer adbWireless app) and add the following to your bat file:
Code:
echo Waiting for device...
[B]adb connect XXX.XXX.XXX.XXX:XXXX[/B]
adb wait-for-device
...
adb shell "chmod 755 /data/local/tmp/update-package.sh ; su -c /data/local/tmp/update-package.sh" >> log.txt
if exist reboot adb reboot
[B]adb connect XXX.XXX.XXX.XXX:XXXX[/B]
echo INSTALLATION SUCCESSFUL
Use your IPort given to you by your ADB Wifi app in place of XXXs. Then just run the .bat!
Run from cmd if you don't want the output to vanish right away.
cfoesch said:
Ensure that you have Automatic USB mounting turned off before you run the script.
Click to expand...
Click to collapse
Okay, that got me a little further. Now:
Extracting nook-update-package...
Archive: nook-update-package.zip
creating: nook-update-package/data/
unzip: can't set permissions of directory 'nook-update-package': Operation not permitted
unzip: exiting
Installing nook-update-package...
sh: Can't open install
Click to expand...
Click to collapse
More permissions issues...
Still posting here because I don't have the 10 total posts to go in the Dev forum...
Anyway, I did the factory reinstall, and reran the snowballmod update. It said the root was still there, so I commented out that check from the snowball.sh, reran the package and everything went swimmingly.
Now, for the update:
The terminal spits out this:
Waiting for device...
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
7 KB/s (46 bytes in 0.006s)
Snowball is reporting: v2.0.2
.zipte-package-v2.0.2
There does not appear to be a package for the version snowball is reporting.
Are you sure you're not reapplying an update?
Perhaps you are accidentally trying to apply an 'outdate'?
Click to expand...
Click to collapse
Where the log file gives me:
Snowball is reporting: v2.0.2
NO PACKAGE AVAILABLE
Click to expand...
Click to collapse
The file "update-package-v2.0.2.zip" is in the directory. In the "update.sh" file replaced all instances of "${VERSION}" with "v2.0.2" and it seemed to work fine.
same
Robotronik said:
Still posting here because I don't have the 10 total posts to go in the Dev forum...
Anyway, I did the factory reinstall, and reran the snowballmod update. It said the root was still there, so I commented out that check from the snowball.sh, reran the package and everything went swimmingly.
Now, for the update:
The terminal spits out this:
Where the log file gives me:
The file "update-package-v2.0.2.zip" is in the directory. In the "update.sh" file replaced all instances of "${VERSION}" with "v2.0.2" and it seemed to work fine.
Click to expand...
Click to collapse
I AM HAVING THE SAME PROBLEM.MYBE..I need help some plz make a better howtos for dummies m
The first thing you need to do, if you have no clue what you're doing, is post the contents of the log file in the snowballmod folder.
The ".zipte-package-v2.0.2" seems to be related to adb shell "snowball-ver" returning DOS formatted text, even though you're in a *nix. I really did not expect this to happen with the linux and osx versions of adb, but apparently, they perform the same as cygwin... (cygwin I expected, after all, the adb.exe is a windows program). I will fix the update scripts to take that into account.
Code:
unzip: can't set permissions of directory 'nook-update-package': Operation not permitted
This message is reported by unzip when it is run by a non-root user on the /mnt/media partition.
You do _NOT_ have to run snowball-update though if you've installed snowball-mod fresh with the most recent version.
robtlebel said:
I AM HAVING THE SAME PROBLEM.MYBE..I need help some plz make a better howtos for dummies m
Click to expand...
Click to collapse
The changes made to the script were posted here:
Robotronik said:
Now, for the update:
The terminal spits out this:
Waiting for device...
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
7 KB/s (46 bytes in 0.006s)
Snowball is reporting: v2.0.2
.zipte-package-v2.0.2
There does not appear to be a package for the version snowball is reporting.
Are you sure you're not reapplying an update?
Perhaps you are accidentally trying to apply an 'outdate'?
Where the log file gives me:
Snowball is reporting: v2.0.2
NO PACKAGE AVAILABLE
The file "update-package-v2.0.2.zip" is in the directory. In the "update.sh" file replaced all instances of "${VERSION}" with "v2.0.2" and it seemed to work fine.
Click to expand...
Click to collapse
I had the same issue with the name of the update file being called incorrectly: ".zipte-package-v2.0.2". With that output the script is looking for a file of that name and it's not finding it. I just changed the value of the variable ${VERSION} to v2.0.2 (since that was what was being reported by Snowball as my current version) and all worked after that.
Easy to fix temporarily:
-open "update.sh" in a text editor
-go to line 66 and change
VERSION=`awk '//{ print $2 }' snowball.version`
Click to expand...
Click to collapse
to
VERSION=v2.0.2
Click to expand...
Click to collapse
or whatever version yours shows to be running (v2.0.1, etc). Something tells me it might be important to input the correct current version number in
-save and close the file and rerun it.
EDIT: or wait until cfoesch fixes the scripts
Scripts should be updated. I changed the awk program from just "//{ print $2 }" to "//{ sub('\r', '', $2); print $2 }" ... this means that it works both ways... *insert your favorite "both ways" joke here*
It should also detect if you haven't turned off automount, and warn you about it. If the nook ends up rebooting, then it would tear the USB mount and could cause file corruption. I got around it by putting things in /data rather than /mnt/media, but then realized, if it has to reboot, then it could cause trouble. So better, to just warn them that automount was on, and quit out.
It also detects better if something went wrong in the installation process, and should report that installation has failed, rather than successful under all cases.
Things may have gotten broken in the process, so keep up the bug reports.
I just can't stop Nookin' Around.........god i need to sleep
I decided to check out the update.sh script (can only go so far currently since I have the latest update).
At least for me, (Ubuntu Linux 11.10) I figured something out about the $OSTYPE call to set the $adb variable. I could echo $OSTYPE in the terminal and got a response, but could not echo it in any scripts. Ended up finding the "uname -o" call and that seems to have gotten it to work, although the printout is different.
snowball-update# echo $OSTYPE
linux-gnu
snowball-update# uname -o
GNU/Linux
Changed lines 7 & 8 and seems to have worked:
case `uname -o` in
GNU*|linux*|Linux*)
Now this last part is probably something on my end but: update.sh: 62: ./adblinux: Permission denied
Thanks again for the work (and everyone else involved in rooting/hacking these things )
Indeed. $OSTYPE seems to be specific to bash, and not all sh implementations.
If you don't mind could you do this command and give me the output? "ls -l /bin/sh" and "sh --version" Those two commands should explain exactly which implementation of sh you have. (For instance, on the NT with snowball-mod, the sh is a minimal implementation, and does not support $OSTYPE. But on most OSes I've seen sh is actually a statically linked bash, as it is the most widely used shell scripting language.)
The case on that you provided though could be a poor choice, as GNU*) would match GNU/freebsd, or GNU/openbsd, or GNU/anykernel. Sure it is unlikely, but it is possible.
The permissions issue is not entirely your end, but it is an expected artifact of extracting from a zip file. Although, is suppose performing a chmod 755 on it prior to use would be a good idea in general.

Auto Keystore Unlocker

Hey Guys,
I know there is an app in the market already Keystore Unlocker, but it doesnt seem to work with the latest su binary. Does anyone know if there is a way to disable the password requirement for stored certificates. It would be a useful feature to bake into some roms or even a new app that works with latest su.
I decomplied the apk for Keystore Unlocker but it was no help. I emailed the developer and asked if he would either update the app and make it paid (99 cents wouldnt be too much) or release the source for us to use for future projects.
Let me know if you guys have any ideas.
Same issue on HTC Incredible, Stock + Root ROM 2.3.4. Really annoying, anyone know a fix? My initial thinking is it's at kernel layer, as Hot Reboot doesn't cause issue but a "full" reboot does. Anybody have a suggestion on fix or workaround?
+1
Would love to bypass the credential storage. It literally decimates the battery trying to log into a credentialed WiFi (try/fail/try/fail) if you don't happen to notice that you haven't done the credential yet.
+1
I have mailed to the app's author, perhaps he has a solution.
Does anybody knows what exactly the app does? Is there a way by command line to activate the credential storage? (so it could be done in autostart)?
There are two possibilities to unlock the keystore. Both need to be run under UID=1000!
1) You have an AOSP based ROM, like Cyanogen:
There is a tool called "keystore_cli", which provides basic access to the keystore by commandline.
Simply run
Code:
su -c 'keystore_cli u <password>' 1000
to unlock it.
Other options are can be found in keystore.c:
Code:
static struct action {
int8_t (*run)();
int8_t code;
int8_t state;
uint32_t perm;
int lengths[MAX_PARAM];
} actions[] = {
{test, 't', 0, TEST, {0}},
{get, 'g', NO_ERROR, GET, {KEY_SIZE}},
{insert, 'i', NO_ERROR, INSERT, {KEY_SIZE, VALUE_SIZE}},
{delete, 'd', 0, DELETE, {KEY_SIZE}},
{exist, 'e', 0, EXIST, {KEY_SIZE}},
{saw, 's', 0, SAW, {KEY_SIZE}},
{reset, 'r', 0, RESET, {0}},
{password, 'p', 0, PASSWORD, {PASSWORD_SIZE, PASSWORD_SIZE}},
{lock, 'l', NO_ERROR, LOCK, {0}},
{unlock, 'u', LOCKED, UNLOCK, {PASSWORD_SIZE}},
{NULL, 0 , 0, 0, {0}},
};
I guess you can figure them out, if you want to.
2) You don't have the keystore_cli tool:
a) You might be able to use a keystore_cli binary from another rom
b) Use unix domain sockets to communicate with the keystore.
The socket is under /dev/socket/keystore.
To access this, you'd have to write a small c programm and use the socket(), write() syscalls.
Luckily. this is exactly what that "keystore unlocker" from the market does.
It comes with a small native executable located at
Code:
/data/data/ru.chunky.AutoKeystore/lib/libkeystorecmd-executable.so
which reads input to send to the socket from stdin.
The format is:
Code:
<code><length1><message1>...
Where <code> would be 'u' to unlock
<length> would be the length of the password as 16bit unsigned int
<message> would be the string representation of the password
In this example the password is "password", which is 8 characters long.
So the length would have to be \0000\0008 and the message to send to the socket
Code:
u\0000\0008password
Running
Code:
su -c "echo -e 'u\0000\0008password' | /data/data/ru.chunky.AutoKeystore/lib/libkeystorecmd-executable.so" 1000
should show a result of
Code:
1
in the commandline, if successful and the keystore should be unlocked.
it sounds brilliant!
Do you have any idea what is the problem with the app and actual su versions?
Awesome find man, shame is ICS fixed this bug. It just requires a pattern lock or pin lock. I wish we could find a workaround for this....
Sent from my HTC Rezound
stm999999999 said:
it sounds brilliant!
Do you have any idea what is the problem with the app and actual su versions?
Click to expand...
Click to collapse
Nope, no idea.
I worked around it like this (cyanogenmod):
In /data/local/userinit.sh I put
Code:
#!/system/bin/sh
nohup /data/local/keystoreunlock_delayed.sh > /dev/null 2> /dev/null &
and the file /data/local/keystoreunlock_delayed.sh contains:
Code:
#!/system/bin/sh
sleep 60
su -c 'keystore_cli u <password>' 1000
The 60 second delay makes sure the phone has already initialized the keystore.
It's a bit of a diry way to do it, but this way it works without any android app.
To test this on my device, I made a file /data/keystoreunlock_delayed.sh
#!/system/bin/sh
su -c 'keystore_cli u <password>' 1000
and execute it within root explorer. But nothing happens!?
I tried su -c 'keystore_cli u <password>' 1000 in terminal Emulator, I got permission denied. I have to do a "su" before, without any parameters, then superuser asks for permission, and then the long command worked.
stm999999999 said:
To test this on my device, I made a file /data/keystoreunlock_delayed.sh
#!/system/bin/sh
su -c 'keystore_cli u <password>' 1000
and execute it within root explorer. But nothing happens!?
Click to expand...
Click to collapse
I forgot the permission 0755. It was 0555.
Can I download keystore_cli somewhere so I can use this script?
I have /system/bin/keystore but not keystore_cli on the rooted 2.3.4 OTA. Using HTC Incredible and would like to use this workaround script.
EDIT: I now realize this is in the Rezound forum. I found this thread by Google search but couldn't find much else on keystore_cli other than zip extract logs.
hm, I do not use a Rezound, too. I have a Desire.
Are you sure, this file is not an integral part of android?
I found one version on dropbox: https://www2.dropbox.com/s/cuu6hm8dvi3jxh5/BI/system/bin/keystore_cli
but I cannot say anything about this file. If it is genuine and ok.
What about asking in an Incredible subforum?
AutoKeystore fixed
I've just resolved "newer su" issue with ru.chunky.AutoKeystore and added password-less VPN Wizard there.

Categories

Resources