I got VPN to work with my Rhod 400! - Touch Pro2, Tilt 2 Android General

I am running the wistilt kernel and not the most current RIL but one of the new RIL from the original RIL thread, but I am not sure it really matters as long as you are using an autobuild version or testing variant of it.
I will caveat that the native Android VPN will not work for my company because it uses Cisco IPSec with Group Name and Password on it. The IPSec in Android is some weird variant of IPSec that is not compatible with Cisco systems. This is a known problem in Android.
Here is what I did. I downloaded VPNC Widget from the markethttps://market.android.com/details?id=com.gmail.mjm4456.vpncwidget It is a simple Widget that is a one-click VPN start/stop.
I then had to get "tun" running on our build. I found it in /system/lib/modules/ folder. I went to Terminal Emulator went to root by typing "su" without quotes. I then type in "mknod /system/lib/modules/tun c 10 200" then I type "modprobe tun". If you get any kind of errors about not finding the file just go "cd /system/lib/modules" and try again. I forget if I had to do that or not.
Once I did that and set up the VPNC Widget with all my info it logged into my VPN, and I was able to set up my Microsoft Exchange server for email, and I was able to use a VNC app to remote into my work desktop.
I thought I might have to add some info into the conf file, but actually it works even after reboot. Maybe some of the developers can tell me why that is, because I was under the assumption a reboot would reset everything again.
Anyway just an FYI. Thought I would help some people wanting to VPN.

On many Linux systems, device files in /dev are created by udev. In our case we might have fixed device files, not sure.
It's odd that you mknoded /system/lib/modules/tun - usually you mknod stuff in /dev/...
Weird...
However what may have happened is that once the device file was mknoded, it stays in the filesystem, and the module autoloads once the device exists.

Entropy512 said:
On many Linux systems, device files in /dev are created by udev. In our case we might have fixed device files, not sure.
It's odd that you mknoded /system/lib/modules/tun - usually you mknod stuff in /dev/...
Weird...
However what may have happened is that once the device file was mknoded, it stays in the filesystem, and the module autoloads once the device exists.
Click to expand...
Click to collapse
I agree most things I see using mknod are in /dev/, but the tun file was not in that folder for me, so I searched for it, and that was the only place I found it. I guess that means that our build wasn't meant to support VPN originally even with the built in Android VPN stuff showing on it. I don't have a home VPN or I would try the Android built on VPN to see if it works now. Although I am thinking about setting one up, but I don't even have a desktop right now so it would be worthless until I get a NAS or desktop on my network.

Which reminds me if wistilt2 has added iptable support into his kernel yet. Off to investigate!

Related

[Q] VPN on G-tablet

I have been having trouble connecting to my work VPN with the G-Tablet. I have since tried going to ZPad 3.0 in hopes this would fix the issue. However, no luck. The VPN server is reporting an event error of 20209.
After a few hours of looking on other forums it turns out this have been an issue since Android 2.1. They have either intentionally left out the encryption module from PPPD or it was forgotten in the build. The 'fix' is to copy the PPPD file from a version prior to 2.1 (Android 1.5?) and save it to the System/xbin directory. However there is an argument over if should go into system/bin for 2.2.
Does anyone have more information on this - or better yet a fix/update? Any help on this would be appreciated.
which ROm are you using
stock ROM doesn't have VPN at all.
justauser said:
stock ROM doesn't have VPN at all.
Click to expand...
Click to collapse
I'm using ZPAD 3.0 ROM at the moment.
I have narrowed it down to a problem with the MPPE 128 encryption. I have found a PPPD that is supposed to fix the problem (see link below), but I don't now how to get it to the system directory. How do you mount system as R/W?
Alternate PPPD:
H***://melko.hiljanen.com/~qvr/android/ppp/
Root explorer will allow you to mount it that way
Sent from my DROIDX using Tapatalk
Let me know how it goes... I have been trying to connect my gtab but I thought I was the only person interested!
Sent from my DROIDX using XDA App
vectorcharlie said:
Let me know how it goes... I have been trying to connect my gtab but I thought I was the only person interested!
Sent from my DROIDX using XDA App
Click to expand...
Click to collapse
Ditto!!!!!!!!
Tried your link, getting the same error I've seen in the past:
Code:
pppd: This system lacks kernel support for PPP. This could be because
the PPP kernel module could not be loaded, or because PPP was not
included in the kernel configuration. If PPP was included as a
module, try `/sbin/modprobe -v ppp'. If that fails, check that
ppp.o exists in /lib/modules/`uname -r`/net.
See README.linux file in the ppp distribution for more details.
I think(?) we need a customized kernel with ppp. So far, we have NTFS and CIFS support that's been added by some of the devs, here.
vectorcharlie said:
Let me know how it goes... I have been trying to connect my gtab but I thought I was the only person interested!
Sent from my DROIDX using XDA App
Click to expand...
Click to collapse
No luck. The PPPD file didn't make a difference. I guess I should not have been surprised. The L2TP connections are supposed to work so I may try that tomorrow - if I can convince the network admin to make the changes on the vpn server.
The lastest info I have been able to collect on this issue is that it has been known at google since 2.0 was released. They were having a problem keeping a connection using MPPE 128 over PPTP so instead of releasing something that did not work right, they removed support for it until a later date. Said date has not been determined.
I will keep you posted as I find out more.
roebeet said:
Tried your link, getting the same error I've seen in the past:
Code:
pppd: This system lacks kernel support for PPP. This could be because
the PPP kernel module could not be loaded, or because PPP was not
included in the kernel configuration. If PPP was included as a
module, try `/sbin/modprobe -v ppp'. If that fails, check that
ppp.o exists in /lib/modules/`uname -r`/net.
See README.linux file in the ppp distribution for more details.
I think(?) we need a customized kernel with ppp. So far, we have NTFS and CIFS support that's been added by some of the devs, here.
Click to expand...
Click to collapse
I came across this too. Since the ppp directory exists under system/etc I have made the assumption that there is support for it (at least under ztab 3.0). In order to check using the method above we would need a terminal app or some other way to run the commands. If there is a way to do it natively I am too new to know.
Any devs willing to tackle this issue?
Newanzer said:
No luck. The PPPD file didn't make a difference. I guess I should not have been surprised. The L2TP connections are supposed to work so I may try that tomorrow - if I can convince the network admin to make the changes on the vpn server.
...
I will keep you posted as I find out more.
Click to expand...
Click to collapse
No luck. The Net Admin decided it would be too much work just for a tablet test (and his iPAD VPN work just fine thank you). Anyone willing to try a L2TP test?
I have tried L2TP in Vegan with no success. used my android phone to verify settings and it works fine from there.
nephelim said:
I have tried L2TP in Vegan with no success. used my android phone to verify settings and it works fine from there.
Click to expand...
Click to collapse
Ok so that is 2 ROMs down:
TNT Stock - No option
Vegan - Not functional
Just need TNT light and Zpad Clean v3.0 tested. I'm suspecting that it will be no for both. This is starting to creep higher on my list of needs. Does anyone know of a ROM VPN works in?
I confirm that the advent vega rom has the same problem.
Unable to use vpn.
Newanzer said:
Ok so that is 2 ROMs down:
TNT Stock - No option
Vegan - Not functional
Just need TNT light and Zpad Clean v3.0 tested. I'm suspecting that it will be no for both. This is starting to creep higher on my list of needs. Does anyone know of a ROM VPN works in?
Click to expand...
Click to collapse
Do you need tun.ko/kernel support for this stuff? Clemsyn compiled that into one of his kernels - check his thread in the Development forum out, and give that kernel a try with the Vegan ROM, that might get you closer.
rcgabriel said:
Do you need tun.ko/kernel support for this stuff? Clemsyn compiled that into one of his kernels - check his thread in the Development forum out, and give that kernel a try with the Vegan ROM, that might get you closer.
Click to expand...
Click to collapse
That could be worth the check. I would like to see a list of exactly what his kernel supports before I try though.
[EDIT]: Checked change log. VPN module in kernel not mentioned.
Looking over the list of known issues at Google, this problem has been known for a while. The fact that Google hasn't addressed it worries me a bit. It is possible that since phones are the largest part of their OS client, VPN isn't a high priority. They may be waiting for the open source community to solve their problem for them.
Was able to get VPN working
YOU WILL NEED TO HAVE ROOT AND BUSYBOX INSTALLED. PLEASE MAKE A BACKUP IN CASE SOMETHING GOES WRONG.
1st you will need the new kernel found at the below address.
http://forum.xda-developers.com/showthread.php?t=903505
2nd you will need to insert the tun.ko included in with the kernel into /system/lib/modules/2.6.32.27-cyanogenmod folder on the tablet using root explorer.
3rd you will need to install the latest version of vpn from
http://code.google.com/p/get-a-robot-vpnc/downloads/list
4th install a terminal emulator and then you will need type the following commands
su (press enter)
cd /system/lib/modules/2.6.32.27-cyanogenmod (press enter)
insmod tun.ko (press enter)
You should now be able to connect on VPN.
there is very easy installation get and run vpn frome purevpn........
brainyjd said:
YOU WILL NEED TO HAVE ROOT AND BUSYBOX INSTALLED. PLEASE MAKE A BACKUP IN CASE SOMETHING GOES WRONG.
1st you will need the new kernel found at the below address.
http://forum.xda-developers.com/showthread.php?t=903505
2nd you will need to insert the tun.ko included in with the kernel into /system/lib/modules/2.6.32.27-cyanogenmod folder on the tablet using root explorer.
3rd you will need to install the latest version of vpn from
http://code.google.com/p/get-a-robot-vpnc/downloads/list
4th install a terminal emulator and then you will need type the following commands
su (press enter)
cd /system/lib/modules/2.6.32.27-cyanogenmod (press enter)
insmod tun.ko (press enter)
You should now be able to connect on VPN.
Click to expand...
Click to collapse
Sorry for asking this noob question, but is this VPN fix only for Cyanogenmod, or will work with others, such as TnT Lite?
I'm running TnT lite and there no's VPN setup option.
tnt is missing the vpn shortcut
use VPN Show
Kazuyuki Eguchi/Tools
found in android market to access the vpn menu
i have used with sucess on most roms open vpn and open vpn settings
with out problems just by install them and setting it to auto run at start
with install to xbin and create a folder on internal sd "openvpn"
then place a vpn.conf file there
then connect this cause an error but causes super user to give it root rights
after that all my vpn,s work with out going near openvpn
purevpn said:
there is very easy installation get and run vpn frome purevpn........
Click to expand...
Click to collapse
Please elaborate...
Thanks!

[FIX] Kernel modules for VPN support (tun.ko + others)

Update: See saturn_de's thread for more modules:
http://forum.xda-developers.com/showthread.php?t=1455382
---
Asus failed big time with their ICS kernel. Not only did they leave out the tun module, they also left out several other required options.
After a lot of trial and error, I've found all the modules necessary to connect to VPN, at least using IPSec XAuth PSK mode with my employer's setup. It may or may not work for you.
Root is required. You can find the compiled modules attached. There is a _readme.txt file inside with instructions. Let me know your results!
Thanks to sklid for his initial tun.ko. If you're looking for cifs.ko, you can find it here:
CIFS kernel module for ICS.
Reserved, or something. Although I can hardly imagine actually needing this.
They also left out the ability to properly use the Battery setting for anything other than system processes - can you fix that in your kernel
Oh & can you fix the ad hoc network issue while your at it
Edited: I wished init.goldfish.sh would work. Anyone knows which script got called at startup?
I modified your instruction a bit as my shell script. It does not work if I tried with the ICS VPN - IPSec Xauth PSK. It works using VPN Widget from market.
You can copy the attached file into /etc and set executed permission for it via Root Explorer. When you need vpn, open terminal then execute it after becoming root. Then setup your vpn widget to connect.
huytrang90 said:
Edited: I wished init.goldfish.sh would work. Anyone knows which script got called at startup?
I modified your instruction a bit as my shell script. It does not work if I tried with the ICS VPN - IPSec Xauth PSK. It works using VPN Widget from market.
You can copy the attached file into /etc and set executed permission for it via Root Explorer. When you need vpn, open terminal then execute it after becoming root. Then setup your vpn widget to connect.
Click to expand...
Click to collapse
Is this the app you're talking about? VPNC Widget
If so, it may be something that vpnc supports but the built-in racoon doesn't. I wonder how your VPN is set up differently from mine. Could you post the logcat output (filtered by racoon) from when you're trying to connect using the built-in VPN tool?
I Thanked you for your effort and excellent documentation, but unfortunately my Prime reboots as soon as it completes Phase 2 negotiation. Can post gory details tomorrow if you're interested. Hopefully your work gets the attention of the devs at Asus!
Noxious Ninja said:
Is this the app you're talking about? VPNC Widget
If so, it may be something that vpnc supports but the built-in racoon doesn't. I wonder how your VPN is set up differently from mine. Could you post the logcat output (filtered by racoon) from when you're trying to connect using the built-in VPN tool?
Click to expand...
Click to collapse
That is correct program. I will get that logcat once I have access to PC.
Sent from my Transformer Prime TF201 using Tapatalk
Hey OP or anyone that knows, do you think this works with VPNsecure?
Tairen said:
Hey OP or anyone that knows, do you think this works with VPNsecure?
Click to expand...
Click to collapse
This VPNSecure? Maybe. I've used a PPTP VPN in Gingerbread on my phone before. I don't think ICS has built-in OpenVPN support, though, so you would have to use these kernel modules with the third-party OpenVPN Installer - assuming it still works with ICS.
If you decide to give it a try, let us know if/how it works.
Noxious Ninja said:
This VPNSecure? Maybe. I've used a PPTP VPN in Gingerbread on my phone before. I don't think ICS has built-in OpenVPN support, though, so you would have to use these kernel modules with the third-party OpenVPN Installer - assuming it still works with ICS.
If you decide to give it a try, let us know if/how it works.
Click to expand...
Click to collapse
Damnit so close. Just tried, got all the way through but when I tried to connect after typing in the passphrase this is what I got:
Wait..
Auth..
Get config..
FATAL: Cannot allocate TUN/TAP dev dynamically
My prime appears to connect fine but when I try to access any data over the connection it restarts.
Connection via the widget above works perfect tho!
Tairen said:
Damnit so close. Just tried, got all the way through but when I tried to connect after typing in the passphrase this is what I got:
Wait..
Auth..
Get config..
FATAL: Cannot allocate TUN/TAP dev dynamically
Click to expand...
Click to collapse
Is this from OpenVPN or PPTP? Are there any more detailed logs?
ssjgesus said:
My prime appears to connect fine but when I try to access any data over the connection it restarts.
Connection via the widget above works perfect tho!
Click to expand...
Click to collapse
Strange that multiple people are having restarts. I wonder if there's something in the vanilla Android kernel that doesn't match up with the Asus kernel, or something missing in my modules. It might just be a bug in Android, though. The VPNC Widget totally bypasses a lot of the built-in ICS VPN pieces and uses its own stuff instead.
Noxious Ninja said:
Is this from OpenVPN or PPTP? Are there any more detailed logs?
Strange that multiple people are having restarts. I wonder if there's something in the vanilla Android kernel that doesn't match up with the Asus kernel, or something missing in my modules. It might just be a bug in Android, though. The VPNC Widget totally bypasses a lot of the built-in ICS VPN pieces and uses its own stuff instead.
Click to expand...
Click to collapse
That program works well. It does complain about missing advance routing capability, but works nonetheless.
Sent from my Transformer Prime TF201 using Tapatalk
Noxious Ninja said:
Is this from OpenVPN or PPTP? Are there any more detailed logs?
Strange that multiple people are having restarts. I wonder if there's something in the vanilla Android kernel that doesn't match up with the Asus kernel, or something missing in my modules. It might just be a bug in Android, though. The VPNC Widget totally bypasses a lot of the built-in ICS VPN pieces and uses its own stuff instead.
Click to expand...
Click to collapse
It's what i get when using openvpn settings and following their instructions. I also directed the filepath to tun.ko as well. And yes i was trying to connect to one of their PPTP servers.
i am having restarts as well. how can i see the log of the vpn trying to connect?
ASUS released the kernel source today on their page, so can we get custom kernels now?
DroidHam said:
ASUS released the kernel source today on their page, so can we get custom kernels now?[/QUOT
Need unlocked bootloader & Recovery to flash.
Click to expand...
Click to collapse
When I issue "insmod tun.ko", I get
"insmod: init_module fail 'tun.ko' failed (Exec format error)"
I'm running the virtuous rom 9.4.2.15v2
Pls help
bklm1234 said:
When I issue "insmod tun.ko", I get
"insmod: init_module fail 'tun.ko' failed (Exec format error)"
I'm running the virtuous rom 9.4.2.15v2
Pls help
Click to expand...
Click to collapse
TUN is already enabled in the stock kernel that comes with Asus 9.4.2.15. It may not have been in earlier Samsung kernels before that. So, you shouldn't need to load that module.
you're right _motley. Thx so much.

[Q] wpa_supplicant "not found" or running as wifi, not system

I've been working on this for days and I'm on the verge of giving up and send my android tablet back to the retailer but, on the off chance that someone can help, I thought I'd post a plea for help.
I have been playing with my mother's birthday gift, an android tablet, in an attempt to put a bird watching app on it. I'm not used to this OS, so it took me a few days to get the hang of it, and then the wifi stopped working.
From a user perspective, you turn on the wifi and, after 20 seconds, it turns itself off and the tick disappears.
I decided to look a little further into the problem, as I didn't believe it was the hardware so soon, and used LauncherPro and SuperOneClick to root the tablet and ddms to see what was going on.
Anyway, I think I have tracked the issue to the wpa_supplicant file. I can load up the wifi interface from the command line:
insmod /system/lib/modules/8192cu.ko
busybox ifconfig wlan0 up
But when I ran the original wpa_supplicant in /system/bin/ it simply said "not found"
The file was there - I could copy it onto a usb stick and open it in a hex editor on my PC, but whatever I did, it would say "not found" if I tried to use it (chmod 777 as well).
When I got no joy from that, I started to look for alternative wpa_supplicants (there was no sign of a direct replacement for my disgo8100 2.3.3 version) and found the ad-hoc enabled ones.
I have tried a selection, but the one that comes closest to working (I mounted the system rw and replaced the original before mounting it ro again) insists on running as "wifi" (or 1010) when the original ran as "system" (or 1000).
This seems to mean that, although the supplicant runs happily, it doesn't create the /data/system/wpa_supplicant/wlan0 file in a form that other programs can access (wrong group/permissions, I think).
So, this has become very frustrating (but I've learned a lot about android, and how it differs from linux).
Can anyone provide an explanation for why the original file says "not found"? Could it be corrupt? If so, could someone provide a replacement from the disgo 8100? Could it be relying on a library that's not there?
What about the ad-hoc version I have? Can I force it to run as system.system instead of wifi? Am I wasting my time and should try to get disgo to provide a whole replacement rom (they have an update apk, but I believe you need to connect to the Internet to do an OTA update, which I can't).
As I said, I'm ready to send this tablet back, but I hate to admit defeat!! Any help would be gratefully received.
Cheers.
Never mind. Made some progress with the ad-hoc supplicant in this thread:
http://www.freaktab.com/showthread....pa_supplicant-file&p=3600&viewfull=1#post3600
Disgo 8100 Rooting
On the basis that there doesn't seem to be much information about the Disgo 8100, I thought I would post my findings.
I initially tried z4root, universalandroot and gingerbreak, but none of these worked. However, I didn't understand that I needed (or how) to enable USB debugging.
Once I did, I installed LauncherPro-0.8.6.apk and configured a shortcut to the development tab, which let me enable the USB debugging option.
I then downloaded android-sdk_r18-windows and modified the android_winusb.inf file by inserting the following at the end of the [Google.NTx86] and [Google.NTamd64] sections:
;Disgo8100
%SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_1F00
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_1F00&MI_00
When I plugged in the Disgo 8100, windows XP asked for drivers and I pointed it to the edited .inf file so that they could be installed and the disgo was recognised.
I then used SuperOneClickv2.3.3-ShortFuse on the PC to root the tablet - it all worked perfectly and reported success.
Installing term.apk got me a terminal emulator and I could su into root. Hopefully you can get yours rooted, too.
Disgo 8100 Android Market/Vending/Google Play
Whilst I managed to root the tablet, I couldn't get any form of the vending system to work.
I got the play dot google dot com site to recognise my tablet as a T-Mobile Samsung Nexus S using the information in this thread:
http://www.techknow.t0xic.nl/forum/index.php?topic=770.0
But market 2.3.6, 3.4.4 and the latest Google Play all fail with various errors (although I noticed that play only [email protected] out when the wireless is enabled - the others may do the same).
I have taken a log capture of google play failing using ddms and will look through it.
By the way, grabbing the hwver for this tablet gives:
console=ttySAC3,115200 androidboot.mode=normal mem=512M hwver=81.1.0.0 mtdparts=imapx200:[email protected](ramdisk),[email protected](kernel),[email protected](resv),[email protected](system),[email protected](userdata),[email protected](cache),[email protected](Local-disk),[email protected](panic) androidboot.mode=normal
Google Play working on Disgo 8100
Drawing this one to a close, in case anyone is interested:
I have Google Play installed and working. I downloaded com.android.vending-3.5.15.apk from the link in this thread:
http://www.theandroidsoul.com/download-google-play-store-apk-3-5-15/
I renamed it "Vending.apk" (the capitalisation may be important, not sure), mounted /system as rw (mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system) and copied it into /system/app. I changed permissions to "666".
I cleared the data/cache from the YouTube application and deleted YouTube.apk from /system/app (because it kept locking up) and replaced it with signedy244.apk (renamed as YouTube.apk) from http://forum.xda-developers.com/showthread.php?t=1529715 (the WifiHD version).
Rebooting the tablet, I connected to the WiFi and ran YouTube (in order to confirm my gmail account), which worked fine, and then Google Play, which (to my amazement) worked fine too.
Hope yours does too
Excellent thread! Wish I could thank you but I don't seem to have a Thanks button. Anyway, do you mind if I ask a couple of questions re. rooting the 8100:
1) Was your tablet running Android 2.3.3, kernel 2.6.35.7, build number GRI40?
2) Could you explain in a bit more detail what you did when you "configured a shortcut to the development tab"?
a3d35232 said:
Excellent thread! Wish I could thank you but I don't seem to have a Thanks button. Anyway, do you mind if I ask a couple of questions re. rooting the 8100:
Click to expand...
Click to collapse
Glad you like it.
a3d35232 said:
1) Was your tablet running Android 2.3.3, kernel 2.6.35.7, build number GRI40?
Click to expand...
Click to collapse
Yes.
a3d35232 said:
2) Could you explain in a bit more detail what you did when you "configured a shortcut to the development tab"?
Click to expand...
Click to collapse
a. Install launcherpro
b. Press home in the top left corner
c. Choose launcherpro
d. Press and hold a blank part of the screen
e. Choose shortcuts
f. Choose activities
g. Choose settings (scroll down to it)
h. Choose development (scroll down - not in alphabetical order)
i. Press ok
You should now have a desktop icon that lets you turn on USB debugging.
Enjoy
Thanks. Everything worked as you describe except the signedy244 version of YouTube. Whenever I launch it I get an error message "There was a problem with the network [400]". Searching on the net, it seems a lot of people are seeing this error and there may have been an update to the app which isn't in the signedy version. Are you still able to run it?
a3d35232 said:
Thanks.
Click to expand...
Click to collapse
No problem.
a3d35232 said:
Everything worked as you describe except the signedy244 version of YouTube. Are you still able to run it?
Click to expand...
Click to collapse
Yep, didn't have an issue - dropped it into the app folder, chmod and rebooted; worked first time and tested it a few times. The file I downloaded was 2,554,313 bytes, in case you want to check.
FYI, the issue I was having with the YouTube app was that it was making requests to the server with "restriction=ZH" in the uri. The server was replying with a HTML 400 error (bad request) because ZH is a language code, not a country code. Anyway, I've patched the app further to remove the restriction parameter from the request. I've posted details in the YouTubeHD thread (about half-way down page 36) if you're interested.
Any chance of telling a idiot how to get google play on the Disgo 8100?
My dad got given one at work but the app store sucks and I'm a little confused by the above
Many thanks

SU for Android on ChromeOS

This is a cross-post from a reddit thread I started, but this is probably a more appropriate location for it.
I have been trying to modify files in the system folder for the Android container on the Asus Flip so I can install SuperSu, but have run into some problems.
The system folder is contained in a squashfs image on the chromebook at /opt/google/containers/android/system.raw.img. Mounted squashfs images appear to not support read-write access. I have been able to unsquash the image, add the SuperSU apk to the /system/priv-app folder and su to the /system/xbin folder, and remake the image. This boots, but SuperSU force closes as soon as it starts.
To make tinkering easier, I've tried building a writable image using dd and mkfs. I placed it in a location that has rw access and modified the /etc/init/android-ureadahead.conf script which mounts it to enable rw access. Unfortunately though it won't boot. The boot logs for the android container show a litany of SELinux errors for different things that it could not set context, operation not permitted. I can post the exact log if necessary. Some googling led me to find that the SELinux security context attributes weren't being replicated in my image, so I tried mounting with context and fscontext options equal to the contexts from the original image, but I get the same problem.
If anyone has any ideas I'd be especially grateful.
lionclaw said:
This is a cross-post from a reddit thread I started, but this is probably a more appropriate location for it.
I have been trying to modify files in the system folder for the Android container on the Asus Flip so I can install SuperSu, but have run into some problems.
The system folder is contained in a squashfs image on the chromebook at /opt/google/containers/android/system.raw.img. Mounted squashfs images appear to not support read-write access. I have been able to unsquash the image, add the SuperSU apk to the /system/priv-app folder and su to the /system/xbin folder, and remake the image. This boots, but SuperSU force closes as soon as it starts.
To make tinkering easier, I've tried building a writable image using dd and mkfs. I placed it in a location that has rw access and modified the /etc/init/android-ureadahead.conf script which mounts it to enable rw access. Unfortunately though it won't boot. The boot logs for the android container show a litany of SELinux errors for different things that it could not set context, operation not permitted. I can post the exact log if necessary. Some googling led me to find that the SELinux security context attributes weren't being replicated in my image, so I tried mounting with context and fscontext options equal to the contexts from the original image, but I get the same problem.
If anyone has any ideas I'd be especially grateful.
Click to expand...
Click to collapse
Wayyyy out of my area of expertise, but here's my (completely novice) best guess.
>All Chromebooks are write-protected with a screw on the motherboard
>Putting a Chromebook in developer mode allows for some tinkering ie things like chroots, and on the asus flip, the ability to install apks from unknown sources.
>Unscrewing the write-protect screw allows for the ability to completely install a new operating system or dual boot setup.
>Maybe you need to do that before you're able to accomplish root access?
My other idea would be to try and figure out a way of doing a systemless root?
Also, total aside but since this is the only thread I've found on XDA about this device, I think chroots are theoretically possible now without the need to be in developer mode via Android apps (even without root on Android). Download the GIMP port from the Play Store to see what I'm talking about. Playing around with that for a few minutes really made me wish that it didn't use emulated mouse/keyboard in it's implementation. Also, it appears that apt-get is broken, but regardless it might interest someone out there looking for a project.
back from the dead, any progress on this?
I have been able to successfully root the Android image on my Asus Flip.
I built a blank image with dd in /usr/local, formatted it with mkfs, mounted it to a folder, mounted the original system.raw.img to a folder, copied the files across, placed *all* the SuperSU files listed as 'required' in the SuperSU update-binary in the relevant places in /system in my new image, set permissions & contexts for those files, edited arc-system-mount.conf and arc-ureadahead.conf to point to the new image and, finally, patched /etc/selinux/arc/policy/policy.30 with the SuperSU sepolicy patching tool in order to boot my rooted Android instance with selinux set to enforcing.
I have created a couple of scripts which more-or-less fully automate this procedure, which can be downloaded from nolirium.blogspot.com. Please feel free to download, open the scripts in a text editor to check them out, and try them out if you like. Only tested on Asus Flip, though.
I seem to be unable to post attachments at the moment so I will just add the descriptions here, I could probably post the entire scripts here too if anyone wants. Feel free to let me know what you think.
DESCRIPTIONS:
1-3.sh
Combines the first three scripts listed below.
01Makecontainer.sh
Creates an 900MB filesystem image in /usr/local/Android_Images, formats it, then copies Android system files therein.
02Editconf.sh
Modifies two system files: arc-system-mount.conf - changing the mount-as-read-only flag and replacing the Android system image location with a new location; and arc-ureadahead.conf - again replacing the Android system image location. Originals are renamed .old - copies of which are also placed in /usr/local/Backup.
03Androidroot.sh
Mounts the previously created Android filesystem image to a folder, and copies SuperSU files to the mounted image as specified in the SuperSU update-binary.
04SEpatch.sh
Copies an SELinux policy file found at /etc/selinux/arc/policy/policy.30 to the Downloads folder, opens an Android root shell for the SuperSU policy patching command to be entered, then copies the patched policy back to the original location. A copy of the original policy.30 is saved at /etc/selinux/arc/policy/policy.30.old and /usr/local/Backup/policy.30.old
Uninstall.sh
Removes the folder /usr/local/Android_Images and attempts to restore the modified system files arc-system-mount.conf and arc-ureadahead.conf.
ok so two questions, one do you think this would work on the Acer r13 convertable? and 2 where can I find the actual instructions/scripts
keithkaaos said:
ok so two questions, one do you think this would work on the Acer r13 convertable? and 2 where can I find the actual instructions/scripts
Click to expand...
Click to collapse
The R13 has a 64-bit Mediatek processor, right?
I have added a version for ARM64, but I haven't tested it.
You can find the instructions and scripts at nolirium.blogspot.com
ya, its a mediatek. and thanks ill go see if i can find it
---------- Post added at 03:31 AM ---------- Previous post was at 02:58 AM ----------
wow, ok. i can do this but im not sure i want to.. after reading the possible problems i may run into. Im going to be getting the G. Home in a couple weeks and i gotta keep things running smooth. This seems like going a tad too far then i need to. The other day i had action launcher going and it looked pretty damn good but i really want to try and get the action3.apk that i have put into the pri-app folder or whatever the chromebook uses i found the syst folder but cant access it. Im wondering if i make the machine writable it would work but im afraid of losing my updates, as long as i could do them manualy, i guess that would be cool. Also since im already going on... has anyone found a way to disable the dev boot screen without tinkering with the physical chromebook yet?
SuperSU on Chromebook
Hey there I love this post but unfortunately im on the mediatek (well not unfortunately cause i love it) but i do really want super su .. But i found this other post that i tried out but i am having a problem executing the scripts. When i go to run the first one, it says can not open "name of script" but the dev takes a pretty cool approach. Im still new to Chrome OS but thanks for the post and if you have any advice on executing scripts id love to hear it!! http://nolirium.blogspot.com/
I'm guessing the above post was moved from another thread...
Anyway, it turns out that zipping/unzipping the files in Chrome OS's file manager sets all the permissions to read-only. Apologies! sudo chmod+x *scriptname* should fix it...
Regarding OS updates, I actually haven't had a problem receiving auto-updates with software write-protect switched off; the main possible potential issue I could imagine arising from the procedure I outlined would involve restoring the original conf files if both sets of backups get deleted/overwritten. This seems unlikely, but in that case either manually editing the files to insert the original string (/opt/google/containers/android/system.raw.img), or doing a powerwash with forced update might be necessary in order to get the original Android container booting again.
I don't think anyone's found a way to shorten/disable the dev boot screen without removing the hardware write-protect screw - from what I've read, the flags are set in a part of the firmware which is essentially read-only unless the screw is removed. Perhaps at some point the Chrome OS devs will get fed up of reading reports from users whose relatives accidentally reset the device by pressing spacebar, and change the setup. Here's hoping.
Hey just jumpig in the thread right quick to see if these instructions are old or what-- got a chromebook pro and the notion of having to update a squashed filesystem every timeto install su seems like a pain..
Is there any kind of authoritative documentation/breakdown regarding what Chromeos is mounting where before I start breaking things? Also anyone happen to know if there's a write-protect screw anywhere in the chromebook plus/pro?
Other questions:
* adbd is running, but is not accessible from adb in the (linux) shell, which shows no devices. Do I need to access adb from another device (i'm short a usb c cable right now) or can I use adb (which is there!) on the chrome side to access adbd on the android side?
* Anyone know if adb via tcp/ip is available? Don't see it in the android settings.
Hey,
There's no real documentation AFAIK, the thing is that ARC++ is a bit of a moving target, as it's so actively being developed/reworked. For instance, with the method described earlier in the thread - it started off being possible to just swap out a file location in arc-ureadahead.conf, then they changed it to arc-setup-conf, and now, since a few CrOS versions ago, the rootfs squashfs image is mounted in a loop fashion via the /usr/sbin/arc-setup binary instead, making an overview of the setup somewhat opaque to the casual observer.
I was kind of hoping to implement a kind of hybrid systemless root style setup myself, but unfortunately I haven't really managed to find the time to sit down and fully figure out a few parts of the puzzle, in particular relating to minijail and working with namespaces. So, I'm still using the method mentioned in posts above for my rooting needs at the moment, the only significant changes being that at the moment I'm replacing /opt/google/containers.android.system.raw.img with a symlink to my writeable rooted rootfs img, and also that in recent CrOS versions the mount-as-read only and debuggable flags can be found in /etc/init/arc-setup-env ("Environment variables for /usr/sbin/arc-setup").
In general though, one can kind of get an idea of what's going on in the default setup by reading through the various /etc/init/arc-* Chrome OS upstart jobs (and their logs in /var/log). Though, like I say, things keep changing around somewhat with every CrOS update, as the implementation 'improves'. As time goes by, and the subsystem matures, it'll certainly be interesting to see what other approaches are possible relating to customizing Android on Chrome OS.
There should definitely be a write protect screw somewhere on the motherboard for the Samsungs, but so far I haven't come across any pics showing exactly which screw it is. So far, no-one seems to have been brave/foolhardy enough to fully tear down their own machine and locate the screw!
Regarding adb, on my device I found the following in arc-setup-env:
# The IPV4 address of the container.
export ARC_CONTAINER_IPV4_ADDRESS=100.115.92.2/30
adb 100.115.92.2 (in Chrome OS's shell) works fine for me, the authorisation checkbox pops up and then good to go. su works fine through adb as expected. There's also a useful little nsenter script in Chrome OS to get into the android shell; /usr/sbin/android-sh, which I've been using in my script to help patch SE linux.
I actually just updated my rooting scripts recently to support 7.1.1, though I've only tested on my own Armv7 device (Flip C100).
I'll attach them to this post in case anyone wants to take a look. There's a readme in the zip, some more details can also be found here and below
EDIT: Fixed the SE Linux issue occurring with the previous version I uploaded (it was launching daemonsu from u:r:init:s0 instead of u:r:supersu:s0).
Anyone considering giving them a spin should bear in mind that the method does involve creating a fairly large file on the device as a rooted copy of the android rootfs. (1GB for arm, 1.4GB for Intel). There's a readme in the zip but the other couple of important points are that:
a) The SuperSU 2.82 SR1 zip also needs to be downloaded and extracted to ~/Downloads on the Chromebook.
b) Rootfs verification needs to be off. The command to force this is:
Code:
sudo /usr/share/vboot/bin/make_dev_ssd.sh --remove_rootfs_verification --force --partitions $(( $(rootdev -s | sed -r 's/.*(.)$/\1/') - 1))
or the regular command to do it is:
Code:
sudo /usr/share/vboot/bin/make_dev_ssd.sh --remove_rootfs_verification
c) If, subsequent to running the scripts, there's a problem loading Android apps (e.g. after a powerwash or failed install), the command to restore the original rootfs image is:
Code:
sudo mv /opt/google/containers/android/system.raw.img.bk /opt/google/containers/android/system.raw.img
Hey this is a great response.. thanks!
Nolirum said:
Hey,
There's no real documentation AFAIK, the thing is that ARC++ is a bit of a moving target, as it's so actively being developed/reworked. For instance, with the method described earlier in the thread - it started off being possible to just swap out a file location in arc-ureadahead.conf, then they changed it to arc-setup-conf, and now, since a few CrOS versions ago, the rootfs squashfs image is mounted in a loop fashion via the /usr/sbin/arc-setup binary instead, making an overview of the setup somewhat opaque to the casual observer.
Click to expand...
Click to collapse
verity
Yeah playing with it now, I'm looking at these /etc/init/arc-*-conf files... I see that the /dev/loop# files are being set up... (more below)
Nolirum said:
I was kind of hoping to implement a kind of hybrid systemless root style setup myself, but unfortunately I haven't really managed to find the time to sit down and fully figure out a few parts of the puzzle, in particular relating to minijail and working with namespaces. So, I'm still using the method mentioned in posts above for my rooting needs at the moment, the only significant changes being that at the moment I'm replacing /opt/google/containers.android.system.raw.img with a symlink to my writeable rooted rootfs img, and also that in recent CrOS versions the mount-as-read only and debuggable flags can be found in /etc/init/arc-setup-env ("Environment variables for /usr/sbin/arc-setup").
Click to expand...
Click to collapse
Sorry not sure what you mean by "hybrid systemless root style setup"? I take it you're modifying the startup script and replaced the squashfs file in /opt... my concern about doing it was whether they were implementing some kind of dm-verity equivalent to the squashfs file to make sure it hasn't been tampered with (say, by adding /sbin/su or whatever) or whether it's safe to replace that file.. Sounds like you're saying it is? (update: I guess that's what rootfs verification does, and we can turn it off....)
Also you mean arc-setup.conf:
env ANDROID_DEBUGGABLE = 0
right?
Nolirum said:
In general though, one can kind of get an idea of what's going on in the default setup by reading through the various /etc/init/arc-* Chrome OS upstart jobs (and their logs in /var/log). Though, like I say, things keep changing around somewhat with every CrOS update, as the implementation 'improves'. As time goes by, and the subsystem matures, it'll certainly be interesting to see what other approaches are possible relating to customizing Android on Chrome OS.
Click to expand...
Click to collapse
I hadn't realized the boot was still in flux-- I'd have figured they'd worked that out by now...
Nolirum said:
There should definitely be a write protect screw somewhere on the motherboard for the Samsungs, but so far I haven't come across any pics showing exactly which screw it is. So far, no-one seems to have been brave/foolhardy enough to fully tear down their own machine and locate the screw!
Click to expand...
Click to collapse
Heh.. not gonna be me..
Nolirum said:
Regarding adb, on my device I found the following in arc-setup-env:
# The IPV4 address of the container.
export ARC_CONTAINER_IPV4_ADDRESS=100.115.92.2/30
adb 100.115.92.2 (in Chrome OS's shell) works fine for me, the authorisation checkbox pops up and then good to go. su works fine through adb as expected. There's also a useful little nsenter script in Chrome OS to get into the android shell; /usr/sbin/android-sh, which I've been using in my script to help patch SE linux.
Click to expand...
Click to collapse
Cool-- adb connect 100.115.92.2 does indeed work I was gonna use netcat to open port 5555 in chromeos and pipe it through, but looks like nc isn't here and I'm not yet ready to start changing the FS..though probably will be soon... btw any idea which partitions get overwritten when chrome it does it's updates? Will /root and /etc get overwritten, for example... would a "powerwash" overwrite it or can you get easily get into an unbootable state on these things?
It's also kind of strange that adb is listening to port 30 at that (internal?) bridge address by default witho no UI to turn it off.. and it's inaccessible from outside.. i wonder if there's an easy way to change the bridge to share the same IP as the actual interface...
Final thought-- I'd love to build that system image myself soup-to-nuts, but I can't find any "caroline" device tree set up... do you or anyone else happen to know if there's a standalone AOSP device tree for the chromebooks? It would be cool to have a mashup AOSP/lineageos if such a think could be possible-- I'm guessing chromiumos is just taking the android tree, building it and then adding it into their build... I Haven't build chromiumos for many years now so I can't even begin to imagine how this android build integrates with the whole emerge thing they had going.. but I bet it takes a while
Nolirum said:
I actually just updated my rooting scripts recently to support 7.1.1, though I've only tested on my own Armv7 device (Flip C100).
Click to expand...
Click to collapse
Cool I'll take a look at these scripts.
So I haven't yet run the scripts-- just looking through them-- I noticed the section starting:
if [ -e /etc/init/arc-setup-env ]; then
echo "Copying /etc/init/arc-setup-env to /usr/local/Backup"
This doesn't exist on the x86 CB Pro. There's an arc-setup.conf that sets up the environment variables though. It sets WRITABLE_MOUNT to 0, but then so does arc-system-mount.conf
Not sure if these are different between x86 and ARM or if it's just in the latest update.. but figured I'd let you know. Wanna throw thse scripts up on github somewhere? (Or I can do it) and we can maybe look at keeping them up to date and/or standardizing them? It wouldn't be hard to determine if it's running on ARM or x86_64 (uname -i for example)..
fattire said:
So I haven't yet run the scripts-- just looking through them-- I noticed the section starting:
if [ -e /etc/init/arc-setup-env ]; then
echo "Copying /etc/init/arc-setup-env to /usr/local/Backup"
This doesn't exist on the x86 CB Pro. There's an arc-setup.conf that sets up the environment variables though. It sets WRITABLE_MOUNT to 0, but then so does arc-system-mount.conf
Not sure if these are different between x86 and ARM or if it's just in the latest update.. but figured I'd let you know. Wanna throw thse scripts up on github somewhere? (Or I can do it) and we can maybe look at keeping them up to date and/or standardizing them? It wouldn't be hard to determine if it's running on ARM or x86_64 (uname -i for example)..
Click to expand...
Click to collapse
Oh, the arc-setup-env thing is intentional. There does appear to be another issue with the x86 version though. I've written up a detailed response to your previous post; it's in a text file at the moment so I'll copy it over and format it for posting here with quotes etc now - should only take a few minutes. Yeah, sticking them on github might be a good idea; I've been meaning to create an account over there anyway.
Yeah, so... Regarding the scripts, since I've put them up here for people to download - I should mention that the first person to test them (aside from me) has reported that something's not working right (I'm waiting for confirmation but I think he tried out the x86 version). It's likely either an error on my part when copying across from my Arm version, or perhaps something not working right with conditionals, meant to deal with the various OS versions ('if; then' statements, I mean). Once I find out more, I'll edit my earlier post...
fattire said:
Sorry not sure what you mean by "hybrid systemless root style setup"? I take it you're modifying the startup script and replaced the squashfs file in /opt... my concern about doing it was whether they were implementing some kind of dm-verity equivalent to the squashfs file to make sure it hasn't been tampered with (say, by adding /sbin/su or whatever) or whether it's safe to replace that file.. Sounds like you're saying it is?
Click to expand...
Click to collapse
Oh, sorry for being a bit vague - I just mean perhaps implementing a kind of systemless root à la Magisk/SuperSU (from what I understand of how these work) - avoiding the need to actually replace files in /system. Since I'm mainly just using su for the privileges rather than actually wanting to write to /system, I had the idea that perhaps a sort of overlay on e.g. xbin and a few other locations, rather than actually rebuilding the whole of /system, might be an interesting approach....
Yep, I've been replacing /opt/google/containers/android/system.raw.img with a symlink to my modified image lately. Works fine... I think they've been focused on just getting the apps working properly, maybe something like dm-verity is still to come.
Although, one of the cool things with Chromebooks IMO is that once the Developer Mode (virtual) switch has been flipped, the system's pretty open to being hacked around with. I think a large part of the much-trumpeted "security" of the system is thanks to the regular mode/Dev mode feature, once in Dev Mode with verified boot disabled on the rootfs, we can pretty much do what we want (I like the message that comes up in the shell when entering the first command I posted under the spoiler - it literally says "YOU ARE ON YOUR OWN!").
So yeah, with Dev Mode switched off, verified boot switched on, we can't even get into the shell (just the walled-off 'crosh' prompt), making the system indeed rather secure (but, for some of us, rather limited).
fattire said:
Also you mean arc-setup.conf:
env ANDROID_DEBUGGABLE = 0
right?
Click to expand...
Click to collapse
That's what I mean by a moving target, lol. On my device the Canary channel is at Chrome OS version 61; I think they started to move out some ARC++ (the acronym stands for Android Runtime on Chrome, version 2, if anyone's wondering, btw) environment variables to a separate file in version 60, or maybe 61. Problems with being on the more 'bleeding edge' channels include:
#Sometimes stuff gets broken as they commit experimental changes.
#Any updates sometimes overwrite rootfs customizations; the higher the channel - the more frequent the updates occur.
#Some of the stuff that gets updated, may later get reverted.
And so on...
fattire said:
I hadn't realized the boot was still in flux-- I'd have figured they'd worked that out by now...
Click to expand...
Click to collapse
Yeah you'd think so. Honestly, the more I use CrOS the more it seems like a (very polished) work-in-progress to me. Though, I guess most modern OSs are also works-in-progress though. (I don't mean the former statement in a critical way; I'm very happy that new features keep getting added to the OS - Android app support being a perfect case in point, that was a lovely surprise, greatly extending the functionality of my Chromebook).
fattire said:
Cool-- adb connect 100.115.92.2 does indeed work I was gonna use netcat to open port 5555 in chromeos and pipe it through, but looks like nc isn't here and I'm not yet ready to start changing the FS..though probably will be soon...
Click to expand...
Click to collapse
Netcat's not there but socat, which I haven't any experience with but have seen described as a "more advanced version of netcat", is listed in /etc/portage/make.profile/package.installable, meaning that adding it to CrOS is supported, and as simple as:
Code:
sudo su -
dev_install #(sets up portage in /usr/local)
emerge socat
I tried socat out and it seems to work, might be interesting to play around with.
fattire said:
btw any idea which partitions get overwritten when chrome it does it's updates? Will /root and /etc get overwritten, for example...
Click to expand...
Click to collapse
Theres a question. I forget some of the exact details now (gleaned from browsing the developer mailing lists and the documentation on chromium.org), but from what I do remember and my experiences tinkering, I can say:
The auto-update model uses kernel/rootfs pairs, e.g. at the moment my device is booting from partition 2 (KERN-A) with the rootfs being partition 3 (ROOTFS-B). My understanding is that with the next OS update pushed to my device, CrOS will download the deltas of the files to be changed, and apply the changes to partitions 4 and 5 (KERN-B and ROOTS-B), setting new kernel GPT flags (priority=, tries=, successful=), which will, post-reboot, let the BIOS know that 4 and 5 will form the new working kernel/rootfs pair. Then the following update will do the same, but with partitions 2 and 3, and so on and so forth, alternating pairs each time. It's a pretty nifty system, and I think something similar might be happening with new Android devices from version O onward (?).
So partitions 2,3,4,5 are fair game for being overwritten (from the perspective of the CrOS updater program). Partition 1, the 'stateful partition') is a bit special, in addition to a big old encrypted file containing all of the userdata (/home/chronos/ dir?), it also has some extra dirs which get overlaid on the rootfs at boot. If you have a look in /mnt/stateful/, there should also be a dir called 'dev_image', which (on a device in Dev mode) gets mounted up over /usr/local/ at boot. As I mentioned above, if you do
Code:
sudo su -
dev_install
you can then emerge anything listed in /etc/portage/make.profile/package.installable (not a great deal of stuff admittedly, compared to Gentoo), which gets installed to subdirs in /usr/local/. So I think stuff in partition 1; /mnt/stateful/, should be safe from being overwritten with an OS update. I think crouton chroots get put there by default.
Most of the other partitions don't really get used, and shouldn't get touched by the updater, here's a design doc on the disk format, and here's a Reddit post (from a Google/Chromium employee) mentioning dual booting from partitions 6 and 7.
fattire said:
would a "powerwash" overwrite it or can you get easily get into an unbootable state on these things?
Click to expand...
Click to collapse
It's not too hard to mess up the system and get it into an unbootable state, lol. The "powerwash" just seems to remove user data, mainly. If you change up (the contents of) some files in /etc, or /opt, for example, then powerwash, normally they won't get restored to their original state (unless you also change release channel).
But, as long as the write-protect screw's not been removed and the original BIOS overwritten, it's always possible to make a recovery USB in Chrome's Recovery Utility on another device, and then restore the entire disk image fresh (this does overwrite all partitions). Another thing that I did was make a usb to boot into Kali; I was experimenting with the cgpt flags on my internal drive and got it into an unbootable state, but was still able to boot into Kali with Ctrl+U, and restore the flags manually from there. (To successfully boot from USB, it was essential to have previously run the enable_dev_usb_boot or crossystem dev_boot_usb=1 command in CrOS). I understand also that the BIOS type varies with device release date and CPU architecture, and that Intel devices may have some extra potential BIOS options ('legacy boot').
fattire said:
It's also kind of strange that adb is listening to port 30 at that (internal?) bridge address by default with no UI to turn it off.. and it's inaccessible from outside.. i wonder if there's an easy way to change the bridge to share the same IP as the actual interface...
Click to expand...
Click to collapse
I think I saw something related to this on the bug tracker. If I come across any info, I'll let you know...
fattire said:
Final thought-- I'd love to build that system image myself soup-to-nuts, but I can't find any "caroline" device tree set up... do you or anyone else happen to know if there's a standalone AOSP device tree for the chromebooks? It would be cool to have a mashup AOSP/lineageos if such a think could be possible-- I'm guessing chromiumos is just taking the android tree, building it and then adding it into their build... I Haven't build chromiumos for many years now so I can't even begin to imagine how this android build integrates with the whole emerge thing they had going.. but I bet it takes a while
Click to expand...
Click to collapse
Yeah, I haven't built Chromium OS or anything, but apparently, there's an option to create a 'private' overlay for the build, which doesn't get synced with the public stuff.
I think that the higher-ups at Google might be still umming and ahing as to whether or not to make source code available for the Android container, it's certainly not been made public yet. Actually, I remember seeing a Reddit post from a Google/Chromium employee mentioning this.
"That article is a little misleading in terms of open source. While the wayland-server and services that communicate with the ARC++ container are open source, the actual ARC++ container is not."
Perhaps they're waiting to see how similar implementations of Android within a larger Linux setup (e.g. Anbox) fare.
There doesn't seem to be too much that differs from AOSP in the ARC++ container - a few binaries and bits and pieces linking the hardware to the container (e.g. the camera etc), maybe some stuff related to running in a container with the graphics being piped out to Wayland?, and so on.
Oh, I was searching the bug tracker for something else, and just saw this (quoted below). Looks like it might be possible to run AOSP based images on CrOS soon!
arc: Implement android settings link for AOSP image
Reported by [email protected], Today (72 minutes ago)
Status: Started
Pri: 1
Type: Bug
M-60
When ARC started without the Play Store support there is no way for user to activate Android settings. We need implement corresponded section that has
Title: Android settings:
Link: Manage android preferences:
Inner bug: b/62945384
Click to expand...
Click to collapse
Great response! I read it once and I'll read it again in more detail then will probably have questions For whatever it may be worth, my only experience with chromiumos was building the whole thing maybe 4 years ago for my original 2011 Samsung "snow" Chromebook-- and making a bootable USB (or was it an SDcard?) to run it on (with a modified firmware that did... something I can't remember.. i think it was basically a stripped down uboot and I remember adding a simple menu or something-- I think I was trying to bypass that white startupscreen or something..). However, after doing this a few times to play with it, I realized that Chromiumos without the Chrome goodies kinda sucks and I promptly forgot everything and went back to stock.
I did have it re-partitioned to run linux as a dual boot from the SD slot or something-- I remember using that cgpt thing to select the different boot modes and vaguely recall the way it would A/B the updates (which "O" is now doing)... but anyhoo I was using the armhf ubuntu releases with the native kernel and ran into all kinds of sound issues and framebuffer only was a little crappy so...
I'm gonna re-read in more detail soon and I'm sure I'll have questions-- one of which will be-- assuming that most stuff is the same on x86 vs arm, why are there two scripts? How do they differ?
ol. On my device the Canary channel is at Chrome OS version 61; I think they started to move out some ARC++ (the acronym stands for Android Runtime on Chrome, version 2, if anyone's wondering, btw) environment variables to a separate file in version 60, or maybe 61.
Click to expand...
Click to collapse
This is the -env file I'm missing, I presume?
I think that the higher-ups at Google might be still umming and ahing as to whether or not to make source code available for the Android container, it's certainly not been made public yet. Actually, I remember seeing a Reddit post from a Google/Chromium employee mentioning this.
Click to expand...
Click to collapse
It looks from the response that the gapps portion might be what's in question-- just like ChromiumOS vs Chrome has all the proprietary bits taken out?
Here's what I'd ideally like to see:
* Rooted Android, with a toggle switch to hide su in settings a la lineage (requires a kernel patch something like this one) + settings changes from lineageos
* adb access from outside the device-- critical for quickly testing apks from android studio w/o a cable. Basically put the chromebook in a "device mode" where adb is passed through... I'm going to see if I can pipe adb through with socat as you suggest...
* what else... I dunno watch this space.
An update from a couple of guys that have tested out the scripts on Intel: It seems to be that while they are able to launch daemonsu manually (with daemonsu --auto-daemon), it apparently does not seem to be getting launched at boot.
I am waiting for some more information on this. Previously, for Marshmallow, the script was setting up the app_process hijack method in order to to launch daemonsu at boot; to support Nougat I changed it to instead create an .rc file with a service for daemonsu, and add a line to init.rc importing it. This works for me, and from what I can gather, it copied/created all files successfully on the testers devices, too, so I'm not sure at this point what the issue is there.
Edit: Fixed the issue. I updated my previous post with further details.
fattire said:
I realized that Chromiumos without the Chrome goodies kinda sucks and I promptly forgot everything and went back to stock.
Click to expand...
Click to collapse
lol yeah. True, that.
fattire said:
...assuming that most stuff is the same on x86 vs arm, why are there two scripts? How do they differ?
Click to expand...
Click to collapse
It's literally just two things that differ: the few lines where we copy the su binary over e.g.
/x86/su.pie → /system/xbin/su, daemonsu, sugote
vs
/armv7/su → /system/xbin/su, daemonsu, sugote
...and also the size of the created container. The x86 container is about 30 percent larger than the Arm one.
I had a little look at how to determine the CPU architecture programmatically on Chrome OS a while back, but couldn't seem to find a reliable way of doing this, at least not without maybe getting a bunch of people with different CrOS devices to run something like, as you mentioned, uname -i (which returns 'Rockchip' on my device, uname -m (which returns 'armv7'), or such similar, and collating the results. It was just easier to do separate versions for x86/arm, rather than introduce more conditionals (with potential for errors). I'm certainly not averse to adding a check for $ARCH, and thus standardizing the script, as long as it's reliable.
fattire said:
This is the -env file I'm missing, I presume?
Click to expand...
Click to collapse
Yep! It's just the same few envs as in the .confs, moved into a new file. I'm fairly confident that the script's conditionals deals with them OK.
fattire said:
It looks from the response that the gapps portion might be what's in question-- just like ChromiumOS vs Chrome has all the proprietary bits taken out?
Click to expand...
Click to collapse
Yeah, although the respondant there perhaps doesn't seem to realise that he's talking to a Google/Chromium dev, the way he responds. Not that that makes anything he says in his post is necessarily less valid, though.
fattire said:
Here's what I'd ideally like to see:
* Rooted Android, with a toggle switch to hide su in settings a la lineage (requires a kernel patch something like this one) + settings changes from lineageos
* adb access from outside the device-- critical for quickly testing apks from android studio w/o a cable. Basically put the chromebook in a "device mode" where adb is passed through... I'm going to see if I can pipe adb through with socat as you suggest...
Click to expand...
Click to collapse
Interesting... I agree, those would both be useful additions to the functionality of ARC++...
Quick question-- has Samsung provided the source for the GPL components (including the kernel, obviously)? I looked here but didn't see anything...? Previously the kernel was included along with the chromium source and there was like a kernel and kernel-next repository.. but this was like five years ago. I think the codename for the samsung chromebook pro is called caroline... let me quickly see if I can find a defconfig in the chromium source...
Back.. nothing here in the chromeos-4.4 branch. Nothing here either in the master branch. Maybe I'm looking in the wrong branches-- master is probably mainline kernel. Also the directories.. it took me five minutes to realize it wasn't going to be in arch/arm - force of habit I guess. I'll keep looking unless anyone knows. This "chromium-container-vm-x86" one seems to have dm_verity as an unused option. Ah, this is looking promising.
...and... here!
So it would seem that this would be built as part of the chromiumos build system, which seemed to be half gentoo five years ago building out of a chroot and was kind of a pain to set up... still, I'm guessing that since it's got that weird script to make the defconfig, what you could do is use google's chromiumos build script to make the kernel image (with whatever changes you want), then, assuming that it doesn't care if you replace the kernel, just throw it over the right Kernel A/B partition and see if it boots and starts up chromeos... it's weird cuz the kernel has to do double-duty for chromeos and android.. but I bet you can just replace it and it would work fine...
I had a cursory go at building a couple of kernel modules for my Flip C100 a while back - I didn't get too far though, lol. People do seem to have had success building their own kernels and running them with Chrome OS though, as with most things I suppose it's just how much time/effort you're willing to put in.
I think I used this and maybe this, from the crouton project to guide me.
From what I remember, I just got fed up of all the arcane errors/config choices. I remember that even though I'd imported my current device config from modprobe configs, there were then such an incredibly long string of hoops/config choices to have to go through one by one, to then be confronted with various errors (different every time ISTR) that I think I just thought "screw this". I think there were some other issue with the Ubuntu version I was using at the time as well. I know that sort of stuff's kind of par for the course with kernel compilation, but I was mainly only doing it so I could edit xpad in order to get my joypad working, in the end I found a different solution.
It shouldn't be too much hassle though, in theory I guess.... Oh, also, in order to get a freshly built kernel booting up with the CrOS rootfs, in addition to the gpt flags, I think you might have to sign it, too? (just with the devkeys & vbutil_kernel tool provided on the rootfs), some info here, and here.
From what I remember, the build system would do whatever key signing was necessary.... although I do now remember you're right there was some manual step when I was building the kernel, but I can't remember if that's because of MY changes or that was just part of the build process.
I I just dug out the old VM (Xubuntu) I was using to build and, well, let's just say I'll be doing a LOT of ubuntu updates before I can even realistically look at this. I do kinda recall setting up the environment was a huge pain so I'm going to see if I can just update the 5 year old source, target the pro and just build the kernel image and see what pops out the other end. At least I won't have to deal with the cross compiler, though I think it should hopefully take care of that itself.
Interesting to see that those crouton projects have emerged (no pun intended) so I'll check them out too while ubuntu updates itself
Thanks for the github links.. I'm going to go read that wiki.
Update: Looked at it-- funny they just stripped out the chromeos-specific parts they needed rather than emerge everything which is smart. My only question is now that Android is involved, there's that script I linked to earlier that seems to say "if you want Android support you'll need these bits too"-- wonder if the same config scripts apply, and if there are any other device tree considerations as well...
I may play a bit and see how smoothly it goes.. Unfortunately I don't have unlimited time either :/
Also, please do let me know if you put the scripts on github and I can send you pull requests if I come up with anything.
Update: Finally updated like 3 major versions of ubuntu... the "depot_tools" repo had its last commit in 2013, so I updated that. Wow, this is so much clearer than previous docs... it looks like something called gclient is used now, which I configured with:
gclient config --spec 'solutions = [
{
"url": "https://chromium.googlesource.com/chromium/src.git",
"managed": False,
"name": "src",
"deps_file": ".DEPS.git",
"custom_deps": {},
},
]
'
that let me do gclient sync --nohooks --no-history ...which i think is updating the ancient source. I probably should have just started over, but anyway... we'll see what happens.
Update again: After updating with this new gclinet tool, it appears that the old repo sync method is still required as described here. That hasn't changed after all, so now I'm going to go through this old method, which will probably completely overwhelm my storage as it's downloading with history.. but anyway, in case anyone is trying this-- looks like the whole chroot/repo sync thing may still be how it's done... the /src directory described above may only be for building just the browser, not the whole OS...
...and here it is. I will have zero room to actually build anything tho, but hey.
* [new branch] release-R58-9334.B-caroline-chromeos-3.18 -> cros/release-R58-9334.B-caroline-chromeos-3.18
Note to self: use cros_sdk --enter to actually get in the chroot. Then:
~/trunk/src/scripts $ ./setup_board --board=caroline
to set up the build for caroline. Then to build:
./build_packages --board=caroline --nowithdebug
Useful links:
* Building ChromiumOS
* [URL="http://www.chromium.org/chromium-os/how-tos-and-troubleshooting/portage-build-faq"]eBuild FAQ
[/URL]

patching wpa_supplicant on Beelink W95

I would like to patch wpa_supplicant on my Beelink W95 that is susceptible to the KRACK WPA2 WiFi exploit.
I tested the W95 with vanhoefm/krackattacks-scripts (look on github, can't post links) and it failed the first test. I would like to patch wpa_supplicant so I can proceed with the other tests.. Except I'm not sure how to do this.
I've compiled programs for Linux and I've used Android studio. I'm really not sure how to cross compile from Linux to android and I don't think I need the full blown Android studio experience.
Are there any good guides to compiling just individual command line programs. I know I'd have to get the source, then do .configure then make, what I'd like some clarity on is if I need specific source from the device manufacturer or can I just use vanilla android code. Further, what options does make take, and basically what do I need to know so I can just compile wpa_supplicant with the patches I need to apply.
Thank you
Progress...
I decided that the first step should be to compile a generic wpa_supplicant and not worry about patches or security updates or anything like that. In order to do that, I had to compile openssl and libnl libraries. I went through a lot of versions of all three because I would always run into some problem or another. After a lot of trial and error (and some learning) I managed to successfully compile wpa_supplicant for the W95 box.
Yet I'm stuck. I can run wpa_supplicant from adb shell but I have not been able to successfully associate with an access point. I figured this might be some sort of conflict with Network or WiFi manager and two wpa_supplicants running at the same time. I wanted to successfully associate before I continued on to try and replace the wpa_supplicant on the Android box with my compiled version. My problem here was that I could not figure out how to enable wlan0 without network manager. In any case I got desperate and punted. I went ahead and tried to replace the original wpa_supplicant with the one that I compiled. Now everything's a mess.
Now that I think about it, I could probably enable the ssv6051 wifi driver module and bring up wlan0 with ifconfig or ip but did I know that back then? No.
Since I did already try and replace wpa_supplicant with my compilation I figured all bets were off. In any case, I could always copy back the original wpa_supplicant right? Well, not exactly. At this time, neither one works and I'm racking my brains just trying to get things back to square one. I get a vague error about not being able to start HAL. I read some about HAL and a possible culprit, selinux (although this is unlikely due to the w95 box being in Permissive mode by default) but I still am not anywhere closer to fixing my wifi. The button moves on temporarily, the driver modules load, but the HAL error occurs and it does not list any wifi networks.
I think I messed up when I edited one of the wpa_supplicant.conf files. Or it could have something to do with the wifi vendor. I don't know, but I'm close to getting this working. Then I can patch wpa_supplicant and it will no longer be vulnerable to the KRACK attack. At the very least I can continue the other tests.
Thank you for reading. Your input is appreciated.

Categories

Resources