Related
Allows to mount a samba (windows) share, so you can e.g. play avi movies over wi-fi directly from a remote shared folder using e.g. RockPlayer.
Unlike the samba support in the ES Explorer, no downloading to a temp file on the SD card takes place and there's no waiting for the download to finish before the playback begins. When using this kernel module, from the applications' point of view, there's no difference between the network files and the local files on the SD card.
Usage:
Code:
mount -t cifs //<ip>/<share> /<mount point> -o username=<user>,password=<password>
Example: tested on CyanogenMod-6
Code:
insmod /system/lib/modules/2.6.34-cyanogenmod/kernel/fs/cifs/cifs.ko
busybox mount -t cifs //192.168.1.3/avi /sdcard/samba -o username=guest
Example: tested on CyanogenMod-6 with wildmonks kernel
Code:
insmod /system/lib/modules/2.6.35/kernel/fs/cifs/cifs.ko
busybox mount -t cifs //192.168.1.3/avi /sdcard/samba -o username=guest
then watch some movies... and later unmount it to save the battery:
Code:
busybox umount /sdcard/samba
I recommend to use the GScript application for the mount and umount scripts, then you can put them as GScript shortcuts somewhere on your screen...
For multi-language support use wildmonks latest kernel kernels dated 072410 that has unicode support.
(Recommend using this one for first time users 2.6.35-rc6_AVS-925mV_CFS_1113Mhz_072410.zip)
Example:
Code:
insmod /system/lib/modules/2.6.35/kernel/fs/cifs/cifs.ko
busybox mount -t cifs //192.168.1.3/avi /sdcard/samba -o username=guest,iocharset=utf8
I tested this and I can see the Cyrillic alphabet just fine.
Very cool! So in theory, I should be able to mount my music shares on my network and stream those while at home? Since we're talking about the kernel, perhaps the default music player might work?
There's no difference between the network files and the local files on the SD card.
Well, right, when you posted that that's what got me thinking about the music. So... I'm right? Well, I will try it later on tonight.
Does this have to be built into the kernel?
Set the path to an existing file cifs.ko. Just search the system using the Root Explorer (File Manager)
How do I show unicode filenames when mount?
I tried -o iocharset=utf8, but it requires nls_utf8.ko, which I don't know where can I get this library
Amazing! Works great on my Nexus One
This is a pretty nice and simple method to get media access over the network. Thanks for sharing this great tip!
@J.L.C.
Most if not all kernels have this either built in or compiled as a module.
Works great! Thx a lot! But how can I add russian language support? I meen when I mount source folder, the folders in russian shown with ??????? and I can`t enter to them.
d750 said:
Allows to mount a samba (windows) share, so you can e.g. play avi movies over wi-fi directly from a remote shared folder using e.g. RockPlayer.
Unlike the samba support in the ES Explorer, no downloading to a temp file on the SD card takes place and there's no waiting for the download to finish before the playback begins. When using this kernel module, from the applications' point of view, there's no difference between the network files and the local files on the SD card.
Usage:
Code:
mount -t cifs //<ip>/<share> /<mount point> -o username=<user>,password=<password>
Example: tested on CyanogenMod-6-RC1
Code:
insmod /system/lib/modules/2.6.34-cyanogenmod/kernel/fs/cifs/cifs.ko
busybox mount -t cifs //192.168.1.3/avi /sdcard/samba -o username=guest
Example: tested on CyanogenMod-6-RC1 with wildmonks kernel
Code:
insmod /system/lib/modules/2.6.35/kernel/fs/cifs/cifs.ko
busybox mount -t cifs //192.168.1.3/avi /sdcard/samba -o username=guest
then watch some movies... and later unmount it to save the battery:
Code:
busybox umount /sdcard/samba
I recommend to use the GScript application for the mount and umount scripts, then you can put them as GScript shortcuts somewhere on your screen...
Click to expand...
Click to collapse
I just wanted to say, i was referred to this thread from another topic i posted, basically inquiring about an app, that would do exactly this.
I already had shared folders setup on my computer (and know how to see what they are REALLY called, how samba sees them) for streaming to my Wii, so with the instructions above, this was REALLY easy.
My setup is in my sig, and i basically just copy/pasted the first example (substituting my ISP and shared directory name), and it worked, without flaw...
I would like to simply say, Thank you.
would love to see this as an actual app with a gui! any takers?
Thanks heaps man
I initially had tried getting this to work with my phone after the release of Rock Player, I was trying to run cifs.ko directly without the pathname and eventually gave up and placebo streamed via ftp (dumping file to sdcard while playing it)
Thanks again!!!
Wow! I've been looking for this feature for a last week.
Is there any chance to get it working on stock FRF91?
When I try it gives me "no such device" stderr
Aquila said:
Wow! I've been looking for this feature for a last week.
Is there any chance to get it working on stock FRF91?
When I try it gives me "no such device" stderr
Click to expand...
Click to collapse
Same happens here...
And that would be afeature I would love to have working...
Simpson84 said:
Works great! Thx a lot! But how can I add russian language support? I meen when I mount source folder, the folders in russian shown with ??????? and I can`t enter to them.
Click to expand...
Click to collapse
subscribe to the issue of displaying Cyrillic
how fix it?
sorry for my English
AllanJacques said:
Same happens here...
And that would be afeature I would love to have working...
Click to expand...
Click to collapse
I've just upgraded to the recent Cyanogen 6.0-RC2 and it works like a charm.
I am using the second command (just set up a proper path to cifs.ko).
Amazing ! Thanks a lot ! Just lots of thanks Great !
dimon1983 said:
subscribe to the issue of displaying Cyrillic
how fix it?
sorry for my English
Click to expand...
Click to collapse
I afraid the only fix is to rename your folders and files to be using Latin characters.
Update: it works but unmount is not found.
applet not found
please help to unmount this all
please help me making it work at all...
My notebook is on the same wireless network than my N1, my second hd is named Swap, I want to share the whole hd with N1 and when doing this:
insmod /system/lib/modules/2.6.34-cyanogenmod/kernel/fs/cifs/cifs.ko
busybox mount -t cifs //192.168.2.3/swap /sdcard/samba -o
username=myusername,password=mypassword
it doesnt work, and using guest as username gives me no device found!
Please, help me?
Hey guys i really need help trying to figure out how to use cifsmanager, could someone please help me? ....i tried following some guides on the web about pushing the cifs.ko under /system/lib/modules, but even after i tried that cifsmanager keeps saying the same exact freaking thing, it says: mounting 192.168.x.xx:/media/Data/My Music on /mnt/cifs/failed: no such device, and its just driving me crazy because i really want to get this to work....my rom version is cyano-6.1 rc1 and if someone could help me out i would greatly appreciate it thanks.
A couple of suggestions :
1) Did you go to the settings menu in CIFS Manager and check "Load via insmod" and enter the correct path in "Path to cifs.ko" ?
2) cifs.ko must also match the version of your installed kernel. You can test in Terminal. If insmod gives you a "exec format error" it is the wrong cifs.ko for your kernel.
More info on how to debug here :
http://androidcommunity.com/forums/f28/browse-your-computer-from-android-9292/
and here :
http://forum.sdx-developers.com/and...ifs-for-network-share-mounting-in-the-kernel/
ok yea I already did number 1, and two, i just did that now and here is what i came up with:
# cd /system/lib/modules
# ls
bcm4329.ko cifs.ko
# insmod cifs.ko
insmod: init_module cifs.ko' failed (File exists)
#
im not sure what that means, do you have any idea? Well i got the info placed in the program correctly and the drive mounts ok, just that i have to make the file viewer run as su before i can see any of the items....this is driving me crazy, oh and by the way thank you for replying
Try a "su" command before the insmod.
sometimes permissions are not correct.
I have also found the correct version of the module in an alternate directory on some of the overclock kernel mods. (i.e. /system/lib/2.6.29.6-cyanogenmod/kernel/fs/cifs).
I can't get it work too. Meanwhile, I am looking for a nls_utf8.ko for Aria. Does it even exist? I searched and got zero result.
alright, i tried using su before running insmod and i came up with the same thing :/ and about the /system/lib/2.6.29.6-cyanogenmod/kernel/fs/cifs.ko, i dont have the 2.6.29.6-cyanogenmod folder in my /system/lib, im not sure what to do....thanks again for your time to reply and help me
thefawns said:
alright, i tried using su before running insmod and i came up with the same thing :/ and about the /system/lib/2.6.29.6-cyanogenmod/kernel/fs/cifs.ko, i dont have the 2.6.29.6-cyanogenmod folder in my /system/lib, im not sure what to do....thanks again for your time to reply and help me
Click to expand...
Click to collapse
look in /system/lib/modules
are you using an oc kernel ? if so can you provide the link ?
and did you install cifs.ko from an alternate source ? if so , link please...
cm6.1-rc1 has its own /system/lib/modules/cifs.ko included in the rom.
insmod it for the first time will have no feedback at all meaning it's loaded, right?
If running it again then it will show
insmod: init_module '/system/lib/modules/cifs.ko' failed (File exists)
Yes , that's correct "Files exists" indicates the module is already loaded.
Then a mount in Terminal (i.e. mount -t cifs -o username=yourusername,password=yourpassword //192.168.1.20/sharename /sdcard/mnt/cifs/sharename) should work.
Original thread (Thanks mercianary):
http://forum.xda-developers.com/showthread.php?t=744236
Instructions
Here is a direct link to zipped .img file with deboot file both to be placed onto on root of SD card
http://www.megaupload.com/?d=7MON3O0J
Ingredients
debian.img + deboot (to be placed on the root of your SD card)
Better Terminal Emulator (or other terminal emulator) + AndroidVNC (or other VNC client) from the market
To automate one click startup process via Better Terminal Emulator:
Preferences>Initial command:
Code:
export PATH=/data/local/bin:$PATH:.
su
sh /sdcard/deboot
Or type this for each new session in any terminal emulator:
Code:
su
sh /sdcard/deboot
You should get a blank screen showing "localhost:/#" after a couple of seconds.
Then leave Terminal running in background (don't let it close via task killer or otherwise), hold down the hardware menu or home button to switch programs for a bit and connected in via VNC (AndroidVNC)...
address: localhost port: 5901 and password: password ... then hit connect (login details will be saved for next time)...
its working fine software keyboard etc and at good speed. In menu options select 24bit colour, local mouse, 1:1 scaling and Touchpad only to make navigating menus much easier.
Normal phone and Android functions should be fine.
Short press hardware menu key to get mouse options etc and longpress to bring up software keyboard (using Android VNC).
This debian image cannot be shut down unless the phone is rebooted.
I am using the Hyperdroid Rom off NAND, overclocked at 1.2ghz and a 16GB class 6 microsd (although it should be independent to all this... worth mentioning)
Edit 1. This is a bare image with LXDE on top but the repository for Debian is large and you can use apt-get install openoffice.org, apt-get install abiword etc to grab whatever you want to fill the 1.5GB image... unlike Ubuntu all the applications are free.
Edit 2. Its possible to have debian and ubuntu on your SDcard.
2g SDcard. Can running ?
This is too small I think, you should have at least a 4GB card!
This will sound stupid but is it possible to run this if you have sdcard android build and not nand?
Ty for reply.
Sent from my HTC HD2 using XDA Premium App
Hmmmmmm can any body tell me exactly WHAT IS THIS?!?
sorry for stupid Q
farhang_za said:
Hmmmmmm can any body tell me exactly WHAT IS THIS?!?
sorry for stupid Q
Click to expand...
Click to collapse
Linux running as some sort of virtual machine on android by using vnc(rdp) software.
Sent from my HTC HD2 using XDA Premium App
maneken25 said:
This will sound stupid but is it possible to run this if you have sdcard android build and not nand?
Ty for reply.
Sent from my HTC HD2 using XDA Premium App
Click to expand...
Click to collapse
No. But look out for this.
Hmmmmmm can any body tell me exactly WHAT IS THIS?!?
Click to expand...
Click to collapse
Its a versatile linux OS of desktop quality, affectionately known as the mother of all linux operating systems, it is the 4th most popular linux variant as compliled by distrowatch as of 2010 and third in terms of downloads in early 2011. Ubuntu was number 1.
Here are some positive traits of Debian.
How to set into Chinese
So, ok, Ive got this working,.. where does the image come from exactly? how was it built and can any linux variant be used?
imperiallight said:
Original thread (Thanks mercianary):
http://forum.xda-developers.com/showthread.php?t=744236
Edit 1. This is a bare image with LXDE on top but the repository for Debian is large and you can use apt-get install openoffice.org, apt-get install abiword etc to grab whatever you want to fill the 1.5GB image... unlike Ubuntu all the applications are free.
Click to expand...
Click to collapse
Nice, will have to check it out. Used to use debian on my IBM X31 'cos Ubuntu was just little too resource hungry until my PB butterfly arrived Just looked into the 'paid apps' for Ubuntu. OMG!!! Are they having a laugh? Who is seriously gonna pay for commercial codecs when you can just download the 'bad' and 'ugly' packs from the repos!!! Off topic I know, but, seriously, what???
well i have tried my best but this is NOT realy working for me!
i get this Error :
# su
# sh /sdcard/deboot
mkdir failed for /sdcard/debian, File exists
losetup: /dev/block/loop5
mount: mounting /dev/block/loop5 on /sdcard/debian failed: Device or resource by
mount: mounting devpts on /sdcard/debian/dev/pts failed: No such file or directy
mount: mounting proc on /sdcard/debian/proc failed: No such file or directory
mount: mounting sysfs on /sdcard/debian/sys failed: No such file or directory
mount: mounting /sdcard on /sdcard/debian/root/sdcard failed: No such file or dy
net.ipv4.ip_forward = 1
chroot: can't execute '/bin/bash': No such file or directory
#
finallly got that working!
but this damn androidVNC wont connect!!
it says VNC connection failed!!!
farhang_za said:
finallly got that working!
but this damn androidVNC wont connect!!
it says VNC connection failed!!!
Click to expand...
Click to collapse
https://market.android.com/details?id=com.toremote.vncpro
I use that... remote vnc pro.... like $6 but it works great.....
diesburg said:
https://market.android.com/details?id=com.toremote.vncpro
I use that... remote vnc pro.... like $6 but it works great.....
Click to expand...
Click to collapse
yeah! it worked thanks maan
I keep getting the error message
"sdcard/deboot: line 5: syntax error: unexpected "else"
#"
I checked out the linked thread by the OP and downloaded another deboot file but still got the same error.
I have got WP7 dual booted with american android with a 16GB SDcard partitioned 50:50
I managed to get Ubuntu 10.10 working via VNC off the SDcard but would like to get this debian to work to free up storage space.
Any suggestions would be appreciated
i also got this error
# su
# sh /sdcard/deboot
mkdir failed for /sdcard/debian, File exists
losetup: /dev/block/loop5
mount: mounting /dev/block/loop5 on /sdcard/debian failed: Device or resource by
mount: mounting devpts on /sdcard/debian/dev/pts failed: No such file or directy
mount: mounting proc on /sdcard/debian/proc failed: No such file or directory
mount: mounting sysfs on /sdcard/debian/sys failed: No such file or directory
mount: mounting /sdcard on /sdcard/debian/root/sdcard failed: No such file or dy
net.ipv4.ip_forward = 1
chroot: can't execute '/bin/bash': No such file or directory
#
what do you have to do to fix it. is it a rom problem becouse i have hyperdriod gbx v12
http://forum.xda-developers.com/showthread.php?t=918899
is it different form hyperdriod gbx 2.01 becouse that is what imperiallight is using, im even using a 16gb sdcard but class 2
I also got the same problem...
any body know how to fix it??
Edit: solve the problem, reinstall the ROM from scratch..
Next.. ubuntu
plasmastrike said:
i also got this error
# su
# sh /sdcard/deboot
mkdir failed for /sdcard/debian, File exists
losetup: /dev/block/loop5
mount: mounting /dev/block/loop5 on /sdcard/debian failed: Device or resource by
mount: mounting devpts on /sdcard/debian/dev/pts failed: No such file or directy
mount: mounting proc on /sdcard/debian/proc failed: No such file or directory
mount: mounting sysfs on /sdcard/debian/sys failed: No such file or directory
mount: mounting /sdcard on /sdcard/debian/root/sdcard failed: No such file or dy
net.ipv4.ip_forward = 1
chroot: can't execute '/bin/bash': No such file or directory
#
what do you have to do to fix it. is it a rom problem becouse i have hyperdriod gbx v12
http://forum.xda-developers.com/showthread.php?t=918899
is it different form hyperdriod gbx 2.01 becouse that is what imperiallight is using, im even using a 16gb sdcard but class 2
Click to expand...
Click to collapse
When connection via VNC client fails try:
vncserver :1
or
vncserver :2 (the port is 5902)
in the debian console
plasmastrike said:
i also got this error
# su
# sh /sdcard/deboot
mkdir failed for /sdcard/debian, File exists
losetup: /dev/block/loop5
mount: mounting /dev/block/loop5 on /sdcard/debian failed: Device or resource by
mount: mounting devpts on /sdcard/debian/dev/pts failed: No such file or directy
mount: mounting proc on /sdcard/debian/proc failed: No such file or directory
mount: mounting sysfs on /sdcard/debian/sys failed: No such file or directory
mount: mounting /sdcard on /sdcard/debian/root/sdcard failed: No such file or dy
net.ipv4.ip_forward = 1
chroot: can't execute '/bin/bash': No such file or directory
#
what do you have to do to fix it. is it a rom problem becouse i have hyperdriod gbx v12
http://forum.xda-developers.com/showthread.php?t=918899
is it different form hyperdriod gbx 2.01 becouse that is what imperiallight is using, im even using a 16gb sdcard but class 2
Click to expand...
Click to collapse
First off, you already have the .img mounted(/sdcard/debian device busy), and the rest of the file structre wasn't created right.
to create it manually, run these in terminal:
Code:
cd /sdcard
rm /debian
mkdir /debian
cd debian
mkdir /dev/pts
mkdir /proc
mkdir /sys
I just managed to boot this using SD Android via haret.
I couldn't get it to work before using ACA sd, see my previous post.
I used http://forum.xda-developers.com/showthread.php?t=1437463 SD ICS from tytung.
First boot created debian folder ok but after second boot I could not connect with VNC due to localhost:1 being used by /tmp/X1-lock. I tried using 5902 but no go.
After reading up whether you can delete this, it seems you can.
So using root browser (from market-free) I deleted /mnt/sdcard/debian/tmp/X1-lock (and also X11-UNIX in same place, as this also gives the same problem) and then entering the commands in terminal
I haven't had any problems so far.
Remember to backup everything before trying this, I don't accept responsibility etc.
Note; megaupload link in first post gone, use link in original thread
Vegan ginger - loaded the standard with pershoot kernel but it has no cifs support. Replaced with clemsyn and cifs was great but after rebooting my screen hung and eventually I had to revert to my original without cuts. I think there is a way to instruct the pershoot kernel to load cifs support even thought it isn't compiled into the kernel. I'm looking for some step by step instructions to learn how to do that. Anyone know how?
How about reading the instructions posted by pershoots on the very same page from which you downloaded the kernel ?!?
To use one of the kernel modules:
Pull the one you want from lib-2632.39.tar.gz (winrar can open this),
adb remount
adb push MODULE.ko /system/lib/modules/2.6.32.39-cyanogenmod/
adb shell chmod 644 /system/lib/modules/2.6.32.39-cyanogenmod/MODULE.ko
adb shell insmod /system/lib/modules/2.6.32.39-cyanogenmod/MODULE.ko
Click to expand...
Click to collapse
- if you don't use adb then just use "terminal emulator" (from the market or preloaded with the some ROMs).
- replace "MODULE" with "cifs"
- use the lib file appropriate to your ROM and bootloader.
Best of luck,
Yeah - that was helpful !
"How about reading the instructions posted by pershoots on THE VERY SAME PAGE FROM WHICH YOU DOWNLOADED THE KERNEL?!?"
Having a bad day were we???
The kernel came with the rom so I never downloaded a kernel and had no idea where the page was - your link was helpful in that it took me to that page (not on xda forum) so I was able to download the library anyway. Sadly, I am not using cyanogen so the paths listed in the instructions don't apply I don't think. I'm also not using adb yet although I'm working up to it. I can use terminal emulator so that shouldn't be a problem assuming I find where to put the module. Possibly it can go anywhere in the system/lib/modules directory as long as I can point to it? I guess we'll have to try it and see.
The real question that you have raised is "use the lib file appropriate to your ROM and bootloader." How do you determine what is "appropriate"?
So perhaps someone would be willing to share a tad more knowledge and perhaps we will have a thread that other g-tab owners can use to learn from.
Pushing modules in the kernel is the same no matter the rom and vegan ginger is built from cm source anyway
thebadfrog said:
Pushing modules in the kernel is the same no matter the rom and vegan ginger is built from cm source anyway
Click to expand...
Click to collapse
So I downloaded lib-2632.39.tar.gz and unpacked it, searched around and found the cifs.ko file. I'm guessing that I can put that anywhere logical in /system/library and point to it. My app (CIFS Manager) has an option to load via insmod and asks for a path to it. I'm assuming that insmod is available and my app will call it to load the module? I'd also like to know how I would know without someone telling me that the module was in lib-2632.39.tar.gz? Is there some rationale that would tell me how this library and the kernel are related or are these libraries just generic in some way? Thanks for the helping hand.
http://forum.xda-developers.com/showthread.php?t=903505
enigma0456 said:
I would know without someone telling me that the module was in lib-2632.39.tar.gz?
Click to expand...
Click to collapse
The kernel developers who provide the kernels and the extra optional modules provide information on their blogs when they post the availability of the kernel. For example, pershoot's blog has this info, as well as install instructions.
or you ask here.
enigma0456 said:
The kernel came with the rom so I never downloaded a kernel and had no idea where the page was.
Click to expand...
Click to collapse
Sorry I mistakenly assumed since you mentioned pershoot that you have been to his thread (the most active in the development section).
enigma0456 said:
Possibly it can go anywhere in the system/lib/modules directory as long as I can point to it?
Click to expand...
Click to collapse
Yes you certainly can.
enigma0456 said:
How do you determine what is "appropriate"?
Click to expand...
Click to collapse
If you have a gingerbread based ROM download the the lib file with "gb" in its file name.
If you have a the new bootloader on the your gtab use the ones with "newbl" in the file name.
enigma0456 said:
So I downloaded lib-2632.39.tar.gz and unpacked it, searched around and found the cifs.ko file.
Click to expand...
Click to collapse
Thats the wrong file (this is the one for Froyo ROMs).
enigma0456 said:
I'm assuming that insmod is available and my app will call it to load the module?
Click to expand...
Click to collapse
True
enigma0456 said:
I'd also like to know how I would know without someone telling me that the module was in lib-2632.39.tar.gz?
Click to expand...
Click to collapse
You wouldn't.
enigma0456 said:
Is there some rationale that would tell me how this library and the kernel are related or are these libraries just generic in some way?
Click to expand...
Click to collapse
There isn't any, just the developers choice.
^^^^ Good job lol
Thanks - that was really helpful. I like direct answers to questions. So I went and got the right library (looked for gb in name as directed). Moved the module onto my tab into a download directory via usb. Went to /System/Lib via terminal and there was no modules directory. I tried to make one and got an error that the file system is mounted read only. Arghhh I remember fighting with this when I was trying to install another keyboard. I never was able to resolve it. Theoretically "remount" should work but I searched and tried all different examples and I was never able to get it to work for me. I tested my cifs manager and it errors out - providing a base that cifs doesn't work without the module. I'm going to try pointing it at my download folder for now to see if the module would work. That is pretty messy so I would still like to put it in the proper place - if you feel up to it would you instruct me on how to overcome the deadly "mounted read only" file system problem?
________________________________
Update - put the cifs.ko file in /sdcard/download. Went into cifs manager and told it to load via insmod. Made path to cifs.ko = /sdcard/download (also tried /sdcard/download/cifs.ko) In all cases I get the message "... failed no such device". If I turn off the insmod feature I get the same message which leads me to believe that the cifs.ko isn't loading. As a test, I am using the exact same path to share, mount point, etc. on my other tab running Clemsyn/Calkulin that has cifs built into the kernel and it connects almost instantly. It is likely therefor that my problem revolves around this kernel loading cifs. Not sure what I'm doing wrong but suggestions are welcome.
enigma0456 said:
I'm guessing that I can put that anywhere logical in /system/library and point to it.
Click to expand...
Click to collapse
It's better if you put it in the standard place. What's the standard place? The paths in the kernel zip file and the module tar file should give you a clue:
Code:
$ tar -tzvf /mnt/sdcard/kernel/lib-2632.39_gb.tar.gz
drwxr-xr-x root/root 0 2011-04-30 20:14:37 lib/
drwxr-xr-x root/root 0 2011-04-30 20:14:37 lib/modules/
drwxr-xr-x root/root 0 2011-04-30 20:14:37 lib/modules/2.6.32.39-cyanogenmod/
-rw-r--r-- root/root 73 2011-04-30 20:14:37 lib/modules/2.6.32.39-cyanogenmod/modules.ieee1394map
-rw-r--r-- root/root 10709 2011-04-30 20:14:37 lib/modules/2.6.32.39-cyanogenmod/modules.symbols.bin
-rw-r--r-- root/root 271 2011-04-30 20:14:37 lib/modules/2.6.32.39-cyanogenmod/modules.alias
drwxr-xr-x root/root 0 2011-04-30 20:14:37 lib/modules/2.6.32.39-cyanogenmod/kernel/
drwxr-xr-x root/root 0 2011-04-30 20:14:37 lib/modules/2.6.32.39-cyanogenmod/kernel/net/
drwxr-xr-x root/root 0 2011-04-30 20:14:37 lib/modules/2.6.32.39-cyanogenmod/kernel/net/sunrpc/
drwxr-xr-x root/root 0 2011-04-30 20:14:37 lib/modules/2.6.32.39-cyanogenmod/kernel/net/sunrpc/auth_gss/
-rw-r--r-- root/root 408035 2011-04-30 20:14:37 lib/modules/2.6.32.39-cyanogenmod/kernel/net/sunrpc/auth_gss/rpcsec_gss_krb5.ko
-rw-r--r-- root/root 532157 2011-04-30 20:14:37 lib/modules/2.6.32.39-cyanogenmod/kernel/net/sunrpc/auth_gss/auth_rpcgss.ko
-rw-r--r-- root/root 3424305 2011-04-30 20:14:37 lib/modules/2.6.32.39-cyanogenmod/kernel/net/sunrpc/sunrpc.ko
Looks like the kernel modules need to be in a lib/modules/KERNEL-VERSION/ directory. That looks very Linux-ish. Can we just untar it to / as we do in Linux? Better check:
Code:
$ ls -l / | /system/xbin/fgrep lib
$
Yikes! No /lib directory at all on Android. Where the heck do the kernel modules go? Let's look at the kernel zip file to see if there is a clue--the unzip on the gTablet doesn't understand this zip file format, so check on a Linux system:
Code:
$ unzip -l boot-cm_2632.39_gb-oc-uv-xtra-vfp_fp-043011.zip
Archive: boot-cm_2632.39_gb-oc-uv-xtra-vfp_fp-043011.zip
Length Date Time Name
--------- ---------- ----- ----
1123 2008-02-28 21:33 META-INF/MANIFEST.MF
1176 2008-02-28 21:33 META-INF/CERT.SF
1714 2008-02-28 21:33 META-INF/CERT.RSA
252000 2008-02-28 19:33 META-INF/com/google/android/update-binary
1015 2098-06-15 19:23 META-INF/com/google/android/updater-script
88544 2098-01-27 05:41 kernel/dump_image
76132 2098-01-27 05:54 kernel/mkbootimg
303 2098-03-22 09:35 kernel/mkbootimg.sh
70992 2098-01-27 05:53 kernel/unpackbootimg
56 2098-01-27 06:09 kernel/unpackbootimg.sh
2219848 2098-06-22 03:05 kernel/zImage
12234 2098-03-04 12:32 system/lib/hw/wlan/LICENSE.TXT
258778 2011-04-30 16:14 system/lib/hw/wlan/bcm4329.ko
249144 2011-04-11 01:13 system/lib/hw/wlan/fw_bcm4329.bin
249467 2011-04-11 01:13 system/lib/hw/wlan/fw_bcm4329_apsta.bin
0 2011-01-07 02:11 system/lib/modules/2.6.32.39-cyanogenmod/placeholder
--------- -------
3482526 16 files
Hmm, there is a placeholder file in system/lib/modules/KERNEL-VERSION/, so /system's where the modules are supposed to go.
Code:
$ su
# /system/xbin/mount -w -o remount /system
# cd /system
# /system/xbin/tar -xzvf /mnt/sdcard/kernel/lib-2632.39_gb.tar.gz
# /system/xbin/mount -r -o remount /system
My app (CIFS Manager) has an option to load via insmod and asks for a path to it. I'm assuming that insmod is available and my app will call it to load the module?
Click to expand...
Click to collapse
Asks a path to what? Insmod or the kernel module?
I'd also like to know how I would know without someone telling me that the module was in lib-2632.39.tar.gz?
Click to expand...
Click to collapse
Kernel functionality, like filesystems, are either built into the kernel or added using kernel modules. (You can also have filesystems implemented in userspace, but, we'll skip that complexity for now). So, the guy who gave you the kernel would either have compiled the filesystem in or must supply the module file for it. First, check if the filesystem is built-in:
Code:
$ cat /proc/filesystems
nodev sysfs
nodev rootfs
nodev bdev
nodev proc
nodev tmpfs
nodev debugfs
nodev sockfs
nodev usbfs
nodev pipefs
nodev anon_inodefs
nodev inotifyfs
nodev configfs
nodev devpts
ext3
ext2
ext4
nodev ramfs
vfat
msdos
yaffs
yaffs2
No CIFS, so it's not compiled in; we'll have to load the module:
Code:
$ su
# insmod /system/lib/modules/2.6.32.39-cyanogenmod/kernel/fs/cifs/cifs.ko
# cat /proc/filesystems
nodev sysfs
nodev rootfs
nodev bdev
nodev proc
nodev tmpfs
nodev debugfs
nodev sockfs
nodev usbfs
nodev pipefs
nodev anon_inodefs
nodev inotifyfs
nodev configfs
nodev devpts
ext3
ext2
ext4
nodev ramfs
vfat
msdos
yaffs
yaffs2
nodev cifs
Yup, CIFS is there now. But, this sort of thing gets tedious. You can use a shell script to make things easier. Here's what I use to mount my external USB HDD:
Code:
#!/system/bin/sh
PATH=/system/bin:/system/xbin
lsmod | fgrep -q nls_utf8 || insmod /system/lib/modules/`uname -r`/kernel/fs/nls/nls_utf8.ko
lsmod | fgrep -q ntfs || insmod /system/lib/modules/`uname -r`/kernel/fs/ntfs/ntfs.ko
exec mount -r -t ntfs -o fmask=0111,dmask=0022,nls=utf8 /dev/block/sda1 /mnt/usbdisk
Just save the file somewhere and make it executable and run the script as superuser to mount the USB HDD.
Is there some rationale that would tell me how this library and the kernel are related or are these libraries just generic in some way?
Click to expand...
Click to collapse
Since these are kernel modules, they are by definition related, no?
Note that you need a Terminal Emulator and the Superuser app (both from Market) and busybox (also from Market) for the above commands to work. Also, do not type in the prompts (the '$' and '#' characters) at the beginning of the commands. They are there as a reference to show you when you're in superuser mode and when you're a normal user.
enigma0456 said:
I tried to make one and got an error that the file system is mounted read only.
Click to expand...
Click to collapse
remount is specific to "adb", the equivalent in terminal emulator is:
Code:
su root
mount -o remount,rw /system
cp /sdcard/download/cifs.ko /system/lib/modules/cifs.ko
chmod 644 /system/lib/modules/cifs.ko
mount -o remount,ro /system
Then just use "Mount Manager" to load the copied CIFS module, might want to reboot if mount manager failed to do the insmod.
I have been using the above procedure with all pershoot's kernels without a problem.
This should solve your problem,
Best of luck,
I coludn't make it work either. It was in the right folder, suposedly "loaded" but it wasn't working.
I am on the Caulkin/Clemsyn ver 5 (the 1.5GHz) now - exactly because of this inability to load that module. I don't know why pershoot doesn't make it part of the kernel, maybe he doesn't have a PC in the house
Sure, the whole typing thingie in linux/android looks easy if that is what you do 24/7. But for less accustomed with that, all this is likely a turn-off.
SoNic67 said:
I coludn't make it work either. It was in the right folder, suposedly "loaded" but it wasn't working.
I am on the Caulkin/Clemsyn ver 5 (the 1.5GHz) now - exactly because of this inability to load that module. I don't know why pershoot doesn't make it part of the kernel, maybe he doesn't have a PC in the house
Sure, the whole typing thingie in linux/android looks easy if that is what you do 24/7. But for less accustomed with that, all this is likely a turn-off.
Click to expand...
Click to collapse
GScript lite can automate the "whole typing thingie" - just put the insmod command there.
The nice thing about it being a module for the functions you rarely use is, for the 99.999% of the time that you don't need the functionality, it's not taking up memory since its not loaded.
I was just shutting down to get some zzzzs but I fired my PC back up to have a go at this. I worked through part of it - did get the remount working and was able to copy things to the directory and then remount ro. It didn't work yet but I was tired and I may have made a typo. I REALLY appreciate the detailed explanation and examples. This is a page I will refer back to over and over until it becomes second nature. Thanks. Questions:
1. I follow how you arrived at the location (although I don't have a kernel zip file) - is "placeholder" a standard or was that just experience and intuition that informed you?
2. The whole section about un-tarring lib-2632.39_gb.tar.gz - Linux is not my primary language so how did you know that it would un-tar to the proper kernel module directory? Did I miss something?
3. I have to go back and retrace my steps but I tried using both cifs manager and mount manager and they both fail claiming "there is no such device" I tried the manual steps for loading insmod and the cifs.ko as the example described and I get "failed (Exec format error)
Please dispense more wisdom as needed.
enigma0456 said:
Questions:
1. I follow how you arrived at the location (although I don't have a kernel zip file) - is "placeholder" a standard or was that just experience and intuition that informed you?
Click to expand...
Click to collapse
Experience and intuition.
The `placeholder' file is not a standard. On Linux, kernel modules are placed in /lib/modules/KERNEL-VERSION/, and the standard utility (or, program) which we use to load modules, modprobe, looks there for kernel modules. In fact, it's normally unnecessary to manually load modules like we have done. Usually on Linux, because of the standardized module locations, the appropriate modules are automatically loaded when needed.
Things are irritatingly (and unnecessarily) different on Android. There is no modprobe supplied with the system and the busybox modprobe still attempts to use the /lib/modules/... path as on Linux. Which is why you have to resort to insmod and the long-winded path to the kernel module.
I am new to Android myself, and the steps I outlined above are what I used to determine where things should go on the gTablet.
2. The whole section about un-tarring lib-2632.39_gb.tar.gz - Linux is not my primary language so how did you know that it would un-tar to the proper kernel module directory? Did I miss something?
Click to expand...
Click to collapse
You didn't notice the 'cd /system' command before the tar command extracting the kernel modules.
You move to the directory where things should be placed before untar'ing; and when you untar, tar will re-create the directory structure you see in the tar file in the directory you're currently in. Some versions of tar have a `-C' flag which you can use to change the current directory; sort-of like the 'Extract to directory' option you have in GUIs. If you had one of those tar commands you'd do this:
Code:
# /system/xbin/tar -C /system -xzvf /mnt/sdcard/kernel/lib-2632.39_gb.tar.gz
instead of this:
Code:
# cd /system
# /system/xbin/tar -xzvf /mnt/sdcard/kernel/lib-2632.39_gb.tar.gz
3. I have to go back and retrace my steps but I tried using both cifs manager and mount manager and they both fail claiming "there is no such device" I tried the manual steps for loading insmod and the cifs.ko as the example described and I get "failed (Exec format error)
Please dispense more wisdom as needed.
Click to expand...
Click to collapse
The error messages are helpful clues.
The "Exec format error" probably means that you've downloaded the wrong version of the kernel and/or modules. Pershoot supplies 4 versions: for Froyo-ROMs, for Gingerbread-ROMs, for tablets with the new Bootloader and Froyo-ROMs, and tablets with the new Bootloader and Gingerbread-ROMs. Use the correct version for your hardware and ROM.
The "no such device" error message is also a clue. The output of 'cat /proc/filesystems', above, after the cifs module was loaded has a line like:
Code:
nodev cifs
which means that the cifs filesystem is not associated with an actual device file. The "no such device" means that you're (or the program you use is) incorrectly supplying a /dev/... parameter to the mount command, or have screwed up or incorrect options somewhere.
Here's how I mounted a Win 7 share on the gTablet just now. In a Terminal Emulator window:
Code:
$ su
# insmod /system/lib/modules/2.6.32.39-cyanogenmod/kernel/fs/cifs/cifs.ko
# mkdir /mnt/cifs
# mount -t cifs //SERVER-IP-ADDRESS/SHARE-NAME /mnt/cifs -o domain=DOMAIN,username=USERNAME,password=PASSWORD
This method is slightly insecure, though. It's better to create a file with
Code:
domain=DOMAIN
username=USERNAME
password=PASSWORD
and then pass the `credentials=filename' option instead of the `domain=...' above:
Code:
mount -t cifs //SERVER-IP-ADDRESS/SHARE-NAME /mnt/cifs -o credentials=/SOME/PATH/cifs-cred.txt
I know typing all this is a chore, but my goal is to help you troubleshoot things on your own in the future. Linux, and by extension, Android, is good in this regard. It's transparent and very inspectable--if something goes wrong, you can look around, and usually fix things up.
Cheers!
OK - well I tried the manual insmod as in your example and I get the "failed (Exec format error) so I'm going to assume that I still have the wrong module. I'm trying to avoid getting into the changing my kernel project right now so I'll go back and check again on Pershoots page to try and find the version of the kernel that is currently running in my g-tab and the appropriate library that goes with it. The problem must lie there. I was sure I had the right library to go with my 2.6.32.36-cynaogenmod [email protected] #1 but then again, the labeling on his site doesn't reflect a name like that. The best I can find is boot-cm_2632.36_gb-xtra-vfp_fp-032711.zip and the associated lib-2632.36_gb.tar.gz (kernel modules). Is this really the kernel in my g-pad? Don't know how to tell but sems to be the only gingerbread one with that numbering series.
If you use some kernel version X.Y.Z, you have to use the modules that were compiled with that kernel. It's not just the version numbers that have to match--the compilation options might matter too.
I.e., Make sure, you are running the kernel first, then install the modules. Just pick the latest GB (you mentioned you were running VEGAn-gingerbread) kernel from pershoot's page.
1. Download this kernel zip file: boot-cm_2632.39_gb-oc-uv-xtra-vfp_fp-043011.zip
2. Download the associated kernel module file: lib-2632.39_gb.tar.gz
3. Boot into ClockworkMod recovery to install the kernel. At the main menu, choose, "install zip from sdcard". Then select, "choose zip from sdcard", navigate to where you put the kernel zip file, then choose the zip file and apply it.
4. Reboot back into the normal system.
5. Now, follow the steps outlined above to untar the modules in /system. Do *not* use `chmod -R 644' to change permissions recursively. This command *removes* the execute permission from directories which *must* be present. The module tar file should, generally, have the correct permissions already.
6. Try the manual method first: insmod /SOME/PATH/cifs.ko must work, then try the mount command.
7. Unmount using `umount /MOUNT/POINT'.
You can troubleshoot the CIFS manager later.
Coda
This investigation lead me to the kernel naming investigation and the discovery that the module library must be compiled with the kernel that you are using. Obvious now but ... Anyway, in the process of learning about kernels I stumbled upon cyanogenmod so I loaded that onto my tab. I liked the way it works so I took another run at the cifs - and it did not work. I went back and followed these steps and made sure that I found the lib module that matched the kernel that came with my release of cyanogen. I extracted cifs.ko and copied it to the /system/lib/modules directory (I had to make the modules directory) and then I used cifsmanager to try and mount the share and it worked. Next I deleted the modules directory with the module in it and tried to mount the share and it failed. I put it all back and it worked again. So - the instructions preceding this post are sound and, if followed carefully, will work. The key seems to be making sure the lib module is the one that goes with your kernel. Thanks again to all those that contributed to my education!
swan song
enigma0456 said:
I went back and followed these steps and made sure that I found the lib module that matched the kernel that came with my release of cyanogen...
The key seems to be making sure the lib module is the one that goes with your kernel.
Click to expand...
Click to collapse
That may only have worked because CyanogenMod uses pershoot's kernel as its default kernel. Had it used Clemsyn's kernel instead, you may very well have ended up back at square one.
The golden rule is: Get the kernel and the kernel modules from the same guy, because he can (and probably does) build both at the same time. And because of this you can be sure that:
a) The modules were compiled with the correct kernel sources, header files and configuration options.
b) The same compiler was used to compile both the kernel and the modules.
c) The same compiler flags, like optimizations, were used for the compilations. In rare cases, I've seen mismatches here causing problems.
In most cases however, esp. on an architecture like the x86 which is very forgiving, slightly mismatched kernels and modules won't cause problems, but, this is not the sort of thing you should be futzing around with--unless you're a wizard.
I have 4 different versions of GCC (2 each for x86 and x86-64--stable and latest), the Intel C compiler v11, and 3 different compilers for the ARM (Android NDK, the prebuilt one from the Aboriginal Linux project and the latest GCC cross-compiled for the ARM). I use different version for different things and stick to each consistently.
OK, so kernels and modules have to be compiled together, but, what about userspace? Do normal programs have to be recompiled if you change the kernel?
No, not (generally) required. The Linux kernel developers have gone to great lengths to make sure that the kernel interface to userspace stay the same--in fact, it would only be a mild exaggeration to say that the kernel guys would rather give away their first-borns than break the userspace API.
This is the reason why you can run Clemsyn kernels on TnT-Lite, or pershoot kernels on VEGAn-Gingerbread, or whatever other combo you prefer.
since i only have 1 post, can anyone tell me how to get the tuntap driver to load on gsb 3.7? im trying to use the cisco anyconnect for rooted devices, but it appears that cm7 doesn't have the tun/tap driver installed correctly. i was able to download a tun.ko and put it in /system/lib/modules, but it won't execute with insmod (Exec format error).
Can you post the exact steps you followed, adb commands used, and any reference materials you used?
The first question I had after reading your post was I wondered if you changed permissions after loading the new file to /system.
Good Luck,
i was trying to get the cicso anyconnect for rooted devices to work, so i followed the following thread:
http://forum.xda-developers.com/showthread.php?t=1164088
i got it copied by remounting the /system mount to rw, then copied the tun.ko file to /system/lib/modules
after that, i did chmod 644 to match the other module in there (wlan.ko) and they are both owned by root.
drwxr-xr-x 1 root root 2048 Jul 10 16:38 .
drwxr-xr-x 1 root root 2048 Jul 10 16:38 ..
drwxr-xr-x 1 root root 2048 Jul 10 16:38 2.6.29-DecaFuctCFS-dirty-9ff84b92
-rw-r--r-- 1 root root 213388 Jul 14 08:28 tun.ko
-rw-r--r-- 1 root root 620128 Aug 1 2008 wlan.ko
then,
insmod /system/lib/modules/tun.ko
insmod: init_module '/system/lib/modules/tun.ko' failed (Exec format error)
mount -o rw,remount -t yaffs2 /dev/block/mtdblock1 /system
once done
mount -o ro,remount -t yaffs2 /dev/block/mtdblock1 /system
will mount the /system partition back to read only.
Click to expand...
Click to collapse
did this to mount /system as read/write.
What tun.ko module are you trying to use? Try the tun.ko from inside the attached zip which was compiled for Conap's kernel.
Edit: removed attached zip as it doesn't work either
from the app description:
COMPATIBLE DEVICES:
This release supports rooted Android 2.1+ devices. A compatiable tun.ko module is required, which should be placed in /data/local/kernel_modules/ if the tun module is not built into the kernel. The iptables binary is also required.
For those without root access, a fully supported production AnyConnect for a set of Samsung platforms is available as a separate download from the Android Market.
We cannot guarantee compatibility, but look forward to your feedback.
Click to expand...
Click to collapse
i'll try this too. i suppose it would have helped to read the entire app description.
\EDIT: nevermind, that folder doesn't even exist on gsb 3.7
sirblacknite said:
from the app description:
This release supports rooted Android 2.1+ devices. A compatiable tun.ko module is required, which should be placed in /data/local/kernel_modules/ if the tun module is not built into the kernel. The iptables binary is also required.
Click to expand...
Click to collapse
i'll try this too. i suppose it would have helped to read the entire app description.
\EDIT: nevermind, that folder doesn't even exist on gsb 3.7
Click to expand...
Click to collapse
Not sure if it will help but you could create the /data/local/kernel_modules directory and either place tun.ko there or symlink /system/lib/modules that contains tun.ko to the kernel_modules directory. Using adb shell or terminal emulator:
Code:
su
mkdir /data/local/kernel_modules
ln -s /system/lib/modules /data/local/kernel_modules
iptables support is included in the ROM but if you want to try providing the binary in the directory they specify, you can copy it from /system/bin
didnt' seem to make a difference. i copied the tun.ko from the zip you posted (for conaps kernel) to /system/lib/modules and it still gives the error.
# ls -al /system/lib/modules
ls -al /system/lib/modules
drwxr-xr-x 1 root root 2048 Jul 18 09:09 .
drwxr-xr-x 1 root root 2048 Jul 10 16:38 ..
drwxr-xr-x 1 root root 2048 Jul 10 16:38 2.6.29-DecaFuctCFS-dirty-9ff84b92
-rw-r--r-- 1 root root 160908 Jul 18 09:09 tun.ko
-rw-r--r-- 1 root root 620128 Aug 1 2008 wlan.ko
# insmod /system/lib/modules/tun.ko
insmod /system/lib/modules/tun.ko
insmod: init_module '/system/lib/modules/tun.ko' failed (Exec format error)
Click to expand...
Click to collapse
I get the same error when trying to insert it on my Eris running Evervolv Build 4. Or do I need a different tun.ko for that? Thanks.
sirblacknite said:
didnt' seem to make a difference. i copied the tun.ko from the zip you posted (for conaps kernel) to /system/lib/modules and it still gives the error.
Click to expand...
Click to collapse
snortman said:
I get the same error when trying to insert it on my Eris running Evervolv Build 4. Or do I need a different tun.ko for that? Thanks.
Click to expand...
Click to collapse
I've tried three different tun.ko modules but none seem to work. I pulled one from GSB 2.3 when workshed included a version to see if it would work, I also tried the one I posted that was from Conap's DecafuctCFSv9 kernel, and another that is in Evervolv(I assume it's a HeroC version).
Not sure if anyone ever found/compiled a tun.ko that worked for the gingerbread roms. It could be that one hasn't been built for the unreleased version of Conap's kernel that is used on all of these roms. I might try to figure out how to compile conap's kernel from his source with the tun.ko module getting built as well.
MongooseHelix said:
I've tried three different tun.ko modules but none seem to work. I pulled one from GSB 2.3 when workshed included a version to see if it would work, I also tried the one I posted that was from Conap's DecafuctCFSv9 kernel, and another that is in Evervolv(I assume it's a HeroC version).
Not sure if anyone ever found/compiled a tun.ko that worked for the gingerbread roms. It could be that one hasn't been built for the unreleased version of Conap's kernel that is used on all of these roms. I might try to figure out how to compile conap's kernel from his source with the tun.ko module getting built as well.
Click to expand...
Click to collapse
That would be cool. Thank you for your help so far on this.
Mongoose,
That would be awesome if you got the time and were able to do that. I suppose I could give it a stab myself, but I would have to get my dev environment setup first. Or if Cisco would just release a version that didn't require tun.ko, that would be great too (and would be something we could actually use in the company, without suggesting to some of these people who can barely use computers that they need to root their phone).
any update on this?
I've not forgotten about it but haven't had the time to look into it any and learn about kernel stuff. I did ask workshed if anyone found or compiled a working tun.ko module for CM7/GSB and he said no. Like I had suspected, he said someone would need to compile the kernel with it included. I'm not sure how difficult it is to figure out so we'll see if one of us can give it a go at some point.
I compiled and attached a new version of tun.ko that should work for ROMs using kernel version 2.6.29-DecaFuctCFS-dirty-9ff84b92. It's attached below. If the ROM devs would like to include a version of Conap's kernel with built-in tun.ko support, that could probably be done as well.
I haven't actually tested out any VPN stuff so you all will have to report back if it is in fact working. Hope it does!
Instructions:
* Download tun.zip and extract tun.ko
Code:
adb remount
adb push tun.ko /system/lib/modules/
adb shell
cd /system/lib/modules
chmod 644 tun.ko
insmod tun.ko
* check that it was inserted by typing the command "lsmod" which should output something like "tun 11252 0 - Live 0xbf000000"
that totally worked!
too bad i didnt catch it until the day my new phone was out for delivery, but at least i have something to show my employer that anyconnect actually does work on android.