[Q&A] Running Ubuntu natively on the Shield Tablet - Shield Tablet Q&A, Help & Troubleshooting

Q&A for Running Ubuntu natively on the Shield Tablet
Some developers prefer that questions remain separate from their main development thread to help keep things organized. Placing your question within this thread will increase its chances of being answered by a member of the community or by the developer.
Before posting, please use the forum search and read through the discussion thread for Running Ubuntu natively on the Shield Tablet. If you can't find an answer, post it here, being sure to give as much information as possible (firmware version, steps to reproduce, logcat if available) so that you can get help.
Thanks for understanding and for helping to keep XDA neat and tidy!

It's amazing
Wow, it is really great that we will be able to run Ubuntu on the Shield!!
As of now, how would you describe the performance of it? Is it laggy or running smoothly? Also, do I understand correctly from your fist post that wifi is not working? Is there other functions not working?

dual boot
Also, as someone managed to get an android /ubuntu dual boot?

Teve1982 said:
Wow, it is really great that we will be able to run Ubuntu on the Shield!!
As of now, how would you describe the performance of it? Is it laggy or running smoothly? Also, do I understand correctly from your fist post that wifi is not working? Is there other functions not working?
Click to expand...
Click to collapse
it works well enough, I don't have anything to compare it to but it's not slow or anything
WiFi and Bluetooth work now. Touchscreen doesn't work, and I don't know yet if it ever will on Linux. Touchscreen works too!
Teve1982 said:
Also, as someone managed to get an android /ubuntu dual boot?
Click to expand...
Click to collapse
it's already dual boot, Linux stays in its own directory on the userdata partition

miscellaneous info
Hi guys, I'm totally noob with linux and ubuntu so my question may be stupid:
How Can I dualboot lollipop and ubuntu on the shield tablet?
If I use the img linked here what is the command that I must use to flash on tablet? I need only that file or I need something else?
I saw that the image kernel file is updated frequently to implement new feature, how can I upgrade to a new version?
Thanks a lot and be patient with me
Polve72

Interest is peaked.
Sent from Bad Azz VZW LG G3 Cyan Tapatalk

Unable to complete boot
Hey guys,
so i followed the instructions to the letter, or at least i think so.
1. downloaded the latest boot image. new_boot(94)
2. downloaded , unpacked and repacked the files from nvidia as explained
3. transferred repacked bz2 file to device, unpacked in /data/linux/
4. booted using fastboot command with command extra command line arguement.
given that i add the extra command line argument, then ubuntu seems to boot fine, but it stops after a while with the last report being :
"enable autosuspend for nvidia bruce"
nothing seems to be happening after that...
i have tried the two previous boot images also, but the same thing happens... any ideas?

Ubuntu issues
Hey,
I tried following the directions on the post. I got the device rooted and unlocked the bootloader, cwm is installed, busybox is installed, and root checker says I am rooted. I also followed the directions and have the root file system moved across into /data. When I use fastboot to load the image, I get a kernel panic. Things are scrolling pretty quickly but it looks like the busybox operations that are trying to mount certain areas keep failing saying no such file or directory. It almost seems like from the bootloader, it can't see /data, however I am able to mount it via cwm and see the files are there via adb. One of the error messages I got on the boot was that "mount /dev/mmcblk0p24 on /data failed invalid argument". Would you have any idea what I might be missing here. One thing I did notice while following the directions was that sudo ./apply_binaries.sh did not seem to do anything, it just displays the usage info like it was expecting different arguments.
Any suggestions you have for me would be much appreciated.
Thanks.

polve72 said:
Hi guys, I'm totally noob with linux and ubuntu so my question may be stupid:
How Can I dualboot lollipop and ubuntu on the shield tablet?
If I use the img linked here what is the command that I must use to flash on tablet? I need only that file or I need something else?
I saw that the image kernel file is updated frequently to implement new feature, how can I upgrade to a new version?
Thanks a lot and be patient with me
Polve72
Click to expand...
Click to collapse
At the moment, I honestly can't recommend trying this if you have no Linux experience, it's still WIP (for example, the touchscreen and Bluetooth won't work without additional configuration), and this is still ARM so most closed-source software (such as most games) still won't work (at least not at acceptable performance levels). But, if you still want to try, you need to follow the instructions from the post that contains the boot.img downloads (mainly the rootfs part). At the moment there's no real solution for dual-booting, but it's possible to flash the boot.img to the recovery partition (after which, booting the recovery will go to Linux instead). Good luck!
dud3rin0 said:
Hey guys,
so i followed the instructions to the letter, or at least i think so.
1. downloaded the latest boot image. new_boot(94)
2. downloaded , unpacked and repacked the files from nvidia as explained
3. transferred repacked bz2 file to device, unpacked in /data/linux/
4. booted using fastboot command with command extra command line arguement.
given that i add the extra command line argument, then ubuntu seems to boot fine, but it stops after a while with the last report being :
"enable autosuspend for nvidia bruce"
nothing seems to be happening after that...
i have tried the two previous boot images also, but the same thing happens... any ideas?
Click to expand...
Click to collapse
Can you please post a picture of the screen when it gets stuck? (the bruce message usually appears after the rootfs is mounted, so since it doesn't continue, that probably failed). apply-binaries.sh should work fine, if it didn't run I think it would still boot, but there will be no GPU acceleration for sure (and maybe no X11 at all).
jfsir said:
Hey,
I tried following the directions on the post. I got the device rooted and unlocked the bootloader, cwm is installed, busybox is installed, and root checker says I am rooted. I also followed the directions and have the root file system moved across into /data. When I use fastboot to load the image, I get a kernel panic. Things are scrolling pretty quickly but it looks like the busybox operations that are trying to mount certain areas keep failing saying no such file or directory. It almost seems like from the bootloader, it can't see /data, however I am able to mount it via cwm and see the files are there via adb. One of the error messages I got on the boot was that "mount /dev/mmcblk0p24 on /data failed invalid argument". Would you have any idea what I might be missing here. One thing I did notice while following the directions was that sudo ./apply_binaries.sh did not seem to do anything, it just displays the usage info like it was expecting different arguments.
Any suggestions you have for me would be much appreciated.
Thanks.
Click to expand...
Click to collapse
It's possible that your internal memory isn't recognized by the kernel. I'll send you a PM later today with a custom kernel so that we can start debugging this, I've had this issue before but I'm pretty sure I fixed it early on.

@Bogdacutu
I think you'll right. I'll wait a better and more user friendly approach.
Polve72

Thanks. Any help is much appreciated.

Thank you
@Bogdacutu Thank you very much for this!!!! buntu runs fairly smooth on my Tablet. But how will you get x86 software run on ARM? I thought there is no way.
Best Regards

aarr_ee said:
@Bogdacutu Thank you very much for this!!!! buntu runs fairly smooth on my Tablet. But how will you get x86 software run on ARM? I thought there is no way.
Best Regards
Click to expand...
Click to collapse
qemu can run in userspace (so it can run x86 software relatively seamlessly without a full VM), but x86 apps can't load ARM libraries, so x86 apps don't have direct rendering (which slows them down even more than they are already)

Portable
Is there any way to make this possible for the Shield Portable?

Great project,
Are you able to play any linux games with decent fps? I ask because ive found following video:
https://www.youtube.com/watch?v=hRBPeNzE558

thewolf16 said:
Great project,
Are you able to play any linux games with decent fps? I ask because ive found following video:
https://www.youtube.com/watch?v=hRBPeNzE558
Click to expand...
Click to collapse
Pretty much any game compiled for ARM will work, so Steam games won't work without QEMU (and so far I haven't been able to get Steam to actually start properly), which would mean some performance loss.

Thank you for your answer
Will this work with your build?:
https://www.youtube.com/watch?v=uVknjU7eGbI
https://www.youtube.com/watch?v=4GUP27TJ5w4
This would be much faster than qemu.
EDIT: And can you run the 2D adventure game "Edna & Harvey: The breakout". Its an windows game but because its made in java you can run it natively on linux with the java-installer:
java -jar ednaunpack.jar
Click to expand...
Click to collapse

thewolf16 said:
Thank you for your answer
Will this work with your build?:
https://www.youtube.com/watch?v=uVknjU7eGbI
https://www.youtube.com/watch?v=4GUP27TJ5w4
This would be much faster than qemu.
Click to expand...
Click to collapse
Probably. I'm not planning to pay for that anytime soon as I really dislike their licensing scheme, so I can't know for sure if it works or not.
EDIT: decided to buy it, apparently they don't give you the license automatically, so I might have to wait a day or so until I get it

Not Enabled Bluetooth...
Hi,
I have the SHIELD TABLET 16GB Wi-Fi model and succeeded to run Ubuntu with new_boot(123).img!
Recently, I try to the bluetooth configuration to use bluetooth keyboard. However I cannot enable bluetooth.
To enable bluetooth, I do the following commands on terminal.
Code:
sudo aptitude install bluetooth bluez-hcidump bluewho bluez-tools blueman
git clone https://code.google.com/p/broadcom-bluetooth/
cd broadcom-bluetooth
make brcm_patchram_plus
sudo cp brcm_patchram_plus /usr/local/bin
sudo brcm_patchram_plus -d --patchram /system/etc/firmware/bcm43241.hcd --baudrate 3000000 --enable_lpm --enable_hci --use_baudrate_for_download --no2bytes --tosleep 1000 /dev/ttyTHS2
After brcm_patchram_plus, these message is shown.
Code:
option patchram with arg /system/etc/firmware/bcm43241.hcd
option baudrate with arg 3000000
option enable_lpm
option enable_hci
option use_baudrate_for_download
option no2bytes
option tosleep with arg 1000
/dev/ttyTHS2
writing
01 03 0c 00
writing
01 03 0c 00
(...looping)
The last 2 lines are looping until do Ctrl-C on terminal.
So I try to change the bluetooth setting from "OFF" to "ON" on the Unity's System Setting Panel.
After that, I retry the brcm_patchram_plus command and its output message is changed as bellow.
Code:
...
writing
01 18 fc 06 00 00 c0 c6 2d 00
received 7
04 0e 04 01 18 fc 00
Done setting baudrate
writing
01 27 fc 0c 01 01 01 01 01 01 01 00 00 00 00 00
received 7
04 0e 04 01 27 fc 00
Done setting line discpline
the brcm_patchram_plus doesn't finish until Ctrl-C. In this state, I can open the "Bluetooth New Device Setup" Panel.
However, I cannot find any bluetooth devices...(attatched picture) So I open the other terminal and type some commands.
Code:
$ hciconfig -a
hci0: Type: BR/EDR Bus: UART
BD Address: 43:24:1B:00:00:00 ACL MTU: 1021:8 SCO MTU: 64:1
DOWN
RX bytes:642 acl:0 sco:0 events:36 errors:0
TX bytes:983 acl:0 sco:0 commands:38 errors:0
Features: 0xbf 0xfe 0xcf 0xfe 0xdb 0xff 0x7b 0x87
Packet type: Dm1 DM3 Dm5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH SNIFF
Link mode: SLAVE ACCEPT
$ hcitool dev
Devices:
$ rfkill list
0: bluedroid_pm: Bluetooth
Soft blocked: yes
Hard blocked: no
1: phy0 Wreless LAN
Soft blocked: no
Hard blocked: no
2: brcmfmac-wifi: Wireless LAN
Soft blocked: no
Hard blocked: no
4: hci0: Bluetooth
Soft blocked: yes
Hard blocked: no
$ rfkill unblock all
$ rfkill list
0: bluedroid_pm: Bluetooth
Soft blocked: no
Hard blocked: no
1: phy0 Wreless LAN
Soft blocked: no
Hard blocked: no
2: brcmfmac-wifi: Wireless LAN
Soft blocked: no
Hard blocked: no
4: hci0: Bluetooth
Soft blocked: no
Hard blocked: no
$ hcitool scan
Device si no available: No such device
Please give me any advices!
Thanks,

How to make a keyboard and mouse work on it?
Thanks

Related

Ubuntu on HTC Desire (Native, No chroot)

Hi guys,
First of all, if this is in the wrong section, Sorry. (I thought this would be the -most- appropriate place)
I've managed to create a minimal ubuntu build (No GUI etc), but everytime I goto boot it from my kernel, my kernel loads correctly, but with Android from NAND - rather than Ubuntu from SD!
I have only one partition on my SD, It's an EXT2 partition (and of course my kernel supports ext2).
I'm attempting to load it like this:
fastboot -c 'root=/dev/mmcblk0p1 rw rootfs=ext2 init=/usr/bin/sh rootdelay=5 noinitrd' boot arch/arm/boot/zImage
So as above, the kernel loads fine, but loads Android on my NAND rather than Ubuntu on my SD - Help!
I should mention that everything works under a CHROOT, and I can SSH into the phone... just can't boot natively ;\
So obviously the kernel isn't calling the SD card, but why?!?!
I've no idea what you're talking about, but check this thread if it might help (maybe you can help them too?).
http://forum.xda-developers.com/showthread.php?t=764255
If you post this on Villainrom.co.uk there is a good chance that someone who refuses to use xda can help you.
Thanks for the help guys,
I'll try a few things including the prebuilt kernel in one posts
at the moment, I gotta wait as it's converting itself to ubuntu - netbook edition. ;\
OzJD said:
Hi guys,
First of all, if this is in the wrong section, Sorry. (I thought this would be the -most- appropriate place)
I've managed to create a minimal ubuntu build (No GUI etc), but everytime I goto boot it from my kernel, my kernel loads correctly, but with Android from NAND - rather than Ubuntu from SD!
I have only one partition on my SD, It's an EXT2 partition (and of course my kernel supports ext2).
I'm attempting to load it like this:
fastboot -c 'root=/dev/mmcblk0p1 rw rootfs=ext2 init=/usr/bin/sh rootdelay=5 noinitrd' boot arch/arm/boot/zImage
So as above, the kernel loads fine, but loads Android on my NAND rather than Ubuntu on my SD - Help!
Click to expand...
Click to collapse
Try:
fastboot -c 'root=/dev/block/mmcblk0p1 rw rootfs=ext2 init=/usr/bin/sh rootdelay=5 noinitrd' boot arch/arm/boot/zImage
Anything new ?
Hi
So finally did you succeed in booting a linux environment from your Desire without chrooting ?
If yes, could you please explain step-by-step how you did this ?
Maybe there are good examples or tutorials out there ?
I did a search and did not find anything noob proof
At least i would really be interested in doing this too.
Thanks in advance.
Lennyuk said:
If you post this on Villainrom.co.uk there is a good chance that someone who refuses to use xda can help you.
Click to expand...
Click to collapse
I hope there's a simple answer to this question, but why do some people "refuse" to post on XDA?
I'm not sure why yours isn't working... This is the command I use to boot Debian:
fastboot -c "root=/dev/mmcblk0p3 rootfs=xfs rootwait rw init=/sbin/startlinux boot *path to zImage*"
Startlinux is my custom script that boots it all up as it doesn't like init for some reason.
EDIT: Actually, your problem might be that it's rebooting straight after you send it the command. Have a look at "cat /proc/last_kmsg" straight after it boots, it might give you some info.
OzJD said:
Hi guys,
First of all, if this is in the wrong section, Sorry. (I thought this would be the -most- appropriate place)
I've managed to create a minimal ubuntu build (No GUI etc), but everytime I goto boot it from my kernel, my kernel loads correctly, but with Android from NAND - rather than Ubuntu from SD!
I have only one partition on my SD, It's an EXT2 partition (and of course my kernel supports ext2).
I'm attempting to load it like this:
fastboot -c 'root=/dev/mmcblk0p1 rw rootfs=ext2 init=/usr/bin/sh rootdelay=5 noinitrd' boot arch/arm/boot/zImage
So as above, the kernel loads fine, but loads Android on my NAND rather than Ubuntu on my SD - Help!
Click to expand...
Click to collapse
I am interesting your idea,a and which kernel did you used for it.
As same as build by bravo_defconfig ?
Because I run native debian on Android,But could not open /dev/tty0,so could not use Xserver,directvnc,fbterm and some software needs open /dev/tty0.
When use that debian from VNC.(running vnc server on debian and accsess by vnc client),I can see GUI debian. But it is not my aim.
There is my entry configure native devian on android and usb hosthttp://forum.xda-developers.com/showthread.php?t=702742&highlight=usb+host&page=8
Do you want to run ubuntu on android device without run android ?
My aim is run debian(any whatever) on external usb monitor from android device.
Now mplayer could run on external monitor by USB hosted kernel that in above link.
Thank/
It run native debian without chroot.
sirnono said:
Hi
So finally did you succeed in booting a linux environment from your Desire without chrooting ?
If yes, could you please explain step-by-step how you did this ?
Maybe there are good examples or tutorials out there ?
I did a search and did not find anything noob proof
At least i would really be interested in doing this too.
Thanks in advance.
Click to expand...
Click to collapse
Maybe you want to run boot a linux environment without run android.
It can run native debian software on android without chroot.
http://forum.xda-developers.com/showthread.php?t=702742&highlight=usb+host&page=8
tknv said:
I am interesting your idea,a and which kernel did you used for it.
As same as build by bravo_defconfig ?
Because I run native debian on Android,But could not open /dev/tty0,so could not use Xserver,directvnc,fbterm and some software needs open /dev/tty0.
When use that debian from VNC.(running vnc server on debian and accsess by vnc client),I can see GUI debian. But it is not my aim.
There is my entry configure native devian on android and usb hosthttp://forum.xda-developers.com/showthread.php?t=702742&highlight=usb+host&page=8
Do you want to run ubuntu on android device without run android ?
My aim is run debian(any whatever) on external usb monitor from android device.
Now mplayer could run on external monitor by USB hosted kernel that in above link.
Thank/
Click to expand...
Click to collapse
You need to compile a custom kernel with virtual terminal support (under device drivers -> character devices) to run X11.
I use vorkKernel because I find it beats the plain CM kernel in just about every way and I just modify the default vork config to suit my needs.
Sent from my HTC Desire using XDA App
That I tried before.
Deathisfatal said:
You need to compile a custom kernel with virtual terminal support (under device drivers -> character devices) to run X11.
I use vorkKernel because I find it beats the plain CM kernel in just about every way and I just modify the default vork config to suit my needs.
Sent from my HTC Desire using XDA App
Click to expand...
Click to collapse
Thanks advice,But I tried it before and could not compile it.
Tried Configure both.
[*]Virtual terminal
[*]Enable character translations in console
[*]Support for console on virtual terminal
[*]Support for binding and unbinding console drivers
and
[*] Virtual terminal
[ ]Enable character translations in console
[ ]Support for console on virtual terminal
[ ]Support for binding and unbinding console drivers
Compile Error log.
CC drivers/video/console/vgacon.o
drivers/video/console/vgacon.c: In function 'vgacon_startup':
drivers/video/console/vgacon.c:508: error: 'PCIMEM_BASE' undeclared (first use in this function)
drivers/video/console/vgacon.c:508: error: (Each undeclared identifier is reported only once
drivers/video/console/vgacon.c:508: error: for each function it appears in.)
drivers/video/console/vgacon.c: In function 'vgacon_do_font_op':
drivers/video/console/vgacon.c:1073: error: 'PCIMEM_BASE' undeclared (first use in this function)
make[3]: *** [drivers/video/console/vgacon.o] Error 1
make[2]: *** [drivers/video/console] Error 2
make[1]: *** [drivers/video] Error 2
make: *** [drivers] Error 2
This is my problems.
Here I used kernelhttps://github.com/tknv/cm-kernel/tree/android-msm-2.6.35-bravo
Disable VGA text console and Framebuffer console if it's selected in Device Drivers -> Graphics Support -> Console Display Driver Support. That should hopefully fix your problem
Works !
Deathisfatal said:
Disable VGA text console and Framebuffer console if it's selected in Device Drivers -> Graphics Support -> Console Display Driver Support. That should hopefully fix your problem
Click to expand...
Click to collapse
Disable VGA text console then works !(I did not configure FB console yet at that time)
Thank you.
Now could run directvnc on external monitor USB-display from Android device,also usb key-board works on directvnc from USB-hosted bravo.
But very wild.
I need configure monitor setting and also now no way to stop direcvnc except kill process from wireless adb.
bergfex made it boot on DHD
http://forum.xda-developers.com/showthread.php?t=1045910
tknv said:
Disable VGA text console then works !(I did not configure FB console yet at that time)
Thank you.
Now could run directvnc on external monitor USB-display from Android device,also usb key-board works on directvnc from USB-hosted bravo.
But very wild.
I need configure monitor setting and also now no way to stop direcvnc except kill process from wireless adb.
Click to expand...
Click to collapse
Any news and code to share with us?

Linux Working on Android

(I'm reposting this under a different title so web searches will bring it up)
I can get Ubuntu 11.04, 11.10 & Debian 6 to mount repeatedly in all sorts of ui updatable configurations using this information:
http://www.nerd65536.com/2011/07/ins...version-2.html
It's a friggin Christmas Miracle! Can't tell you how much time I've wasted working this out, and it all boils down to the sh and run scripts.
So, without further ado, here goes.
!!Make sure you're rooted!!
!!The quotes just tell you what to type. Don't type them!!
1.
Download one of the three builds on the website listed above (or build your own, it should work fine). Extract it from tar.bz2, they should all extract to a linux file, this includes the necessary scripts. Put it on the sd-card on your phone.
2.
Download the new scripts that (Nerd) listed found here: http://ohm.nerd65536.com/android-lin...latest.tar.bz2
And extract them. You'll have another file that says linux. Open it, take the three files inside (install.sh, root-scripts & scripts) and paste them in the linux folder you moved to your sd-card. They will overwrite the ones currently there. These scripts work for sgs4g, the originals did not.
3.
Install the latest BusyBox in both xbin and .bin if it's not already installed (must be rooted), Latest is 1.19.3. Make sure Outside Sources and USB debugging are both enabled in your settings menu. Open your Superuser App and update binaries.
4.
Download a terminal client, like Better Terminal Emulator or Android Terminal Emulator. I use the first. The terminal needs to run the commands as root, especially the linux vnc command as it didn't want to work for me no matter if I started by typing su. Better Terminal Emulator has a check box to always start in root.
5.
Open up your terminal emulator and type su if you are not rooted there. Then change directory to the linux file on the sd-card. run the sh file there.
Like this:
"su"
"cd /sdcard/linux"
"sh install.sh"
If it works, the resulting dialog in terminal won't throw up any problems.
6.
Get back to / on sd by typing in terminal:
"cd /"
You should then have a: / # prompt, which means you are still rooted.
Enter:
"linux"
Which should result in a: [email protected]:/#
This means Linux is running. Congratulations. It should continue to run unless you shut down your phone.
7.
Download a VNC client, like Android VNC Viewer (free) or Remote VNC Pro, which I use. Add a new entry in it, with the following settings:
Host: localhost
Port: 5901
Password: cheesecake
Color: 24-bit
Name: Linux
When that's done save if you can or back out if you can't, and go back to your terminal emulator.
8.
It should still say: [email protected]:/#
If it doesn't, fine, if it does, just go back to root prompt by typing:
"exit"
Which should get you: / #. Then type:
"linux vnc"
Which should run itself and mount the chroot environment. It should tell you your new 'X' desktop is localhost:1, and have a: / # prompt again.
It might also ask you for a password, if so then put whatever password you'll remember in that's longer than 6 characters and verify it. This only happens once.
9.
Go back to your VNC client and if you entered a password in step 8. then edit your listing to your password instead of cheesecake, if not then don't.
Click on the Linux link and BAM! (shameless Emerilism), you're at your Linux desktop which should be running a iceWM desktop interface, which is fast. The LXDE desktop is nicer and if you want that then go into you're terminal and get into the linux shell by typing:
"linux"
And then switch to LXDE by typing:
"apt-get autoremove icewm- lxde+"
Which will run through the removal/ installation, and verify you want to download the <400mb files. Type:
"y"
And give it time to finish. When finished, just go back to your VNC client and hit Linux again, and you will have a nice looking functional desktop, with a cpu load graph on the bottom. I tried using Gnome desktop and Unity 2d, but both of these would install and not fully run with all options. They are heavier and slower, but cool non-the-less. Let me know if anyone has luck with these on Android.
Notes-
You only have to type "linux vnc" once in terminal to start linux every time you boot your phone. Otherwise, just open your VNC client and click on Linux to use it. Easy!
You will want to update and upgrade your linux after install, do so by typing in terminal:
"apt-get update"
"apt-get upgrade"
Also, you might run across a problem if you try to add-apt-repository, that's because that python command is not present. To use it, enable by typing:
"apt-get install python-software-properties"
Also of note, the downloadable linux builds are sized to about 2.15gig on your sd, which is big enough for most. There is a way to resize them which I tried but it gave me trouble in loading. I will try again and see if I can get it to work.
Here's the link from Dangermouse:
http://www.androidfanatic.com/commun...atid=9&id=1610
Thanks to Nerd65536 for the info, write-up and files. He fixed my problem.
You might want to put quote or code tags around all the commands to make them easier to see and read, but good guide! I'll try it out soon since I haven't gotten any linux build to run on my phone in a good while.
Thanks for the post!
I wrote the post noob-style to make it easy for beginners to follow, as I've had to search and test forever to find information that works.
Let me know if you have any problems, I'd be happy to assist. Don't expect you'll have any issues with your knowledge of the os. It works pretty well on the Android system, fun to use.
wasn't this posted ages ago?
No, it's a bleed over from a question post I made under Q&A a week or so ago. I threaded this because I had such a hard time finding a thread with working steps for the Galaxy S under google search. There's not that much new from this post http://www.nerd65536.com/2011/07/in...showComment=1323566336074#c553594301247543088 by Nerd65536 (which took me forever to find and was the only one that worked). Other than that, just a few of my own thoughts and hints on the process.
krylon360 said:
wasn't this posted ages ago?
Click to expand...
Click to collapse
meant to quote not thanks, but anyways, to answer.
There has been a few times this has been posted, but its been many months and this seems like the first the issues have been sorted.
Sent from my SGH-T959V using Tapatalk
Ok, a little more use of Linux builds on my phone and I'm starting to understand why it does or does not work.
Certain kernel builds seem to work well, others not at all. Most of the kernel's I've tried have been problematic, and trying to install the .sh file will fail.
When you install your new kernel (or on your existing one) you need to open your Superuser app which should be there if your phone is rooted. There is a button to update binaries, and they need to be updated. Some builds don't seem to let this work easily and give failure notifications.
Make sure Outside Sources is enabled and USB debugging is too, both are in the settings menu.
Use BusyBox installer to install in both the .bin and .xbin directories, this will not cause any conflicts (or hasn't yet . If this gives you an error, and it will if Superuser did, then either usb debugging has not been selected or the kernel is not playing nice.
Ok, so this kernel by RaverX3X will work for linux, I'm on it now:
http://forum.xda-developers.com/showthread.php?t=1305145
(Thanks for this)
Oh yeah, and Back|Track5 Linux is working too
Fixing the packet injection for the Broadcom now.
sconsylman said:
Oh yeah, and Back|Track5 Linux is working too
Fixing the packet injection for the Broadcom now.
Click to expand...
Click to collapse
. Keep us posted on that. Should be pretty handy.
Wait. why do we need LInux to run on our phone?
Can someone explain?
Android doesn't come with most of what this has:
http://www.backtrack-linux.org/
I know, but why do we need it?
Enlighten me
airfluip1 said:
Wait. why do we need LInux to run on our phone?
Can someone explain?
Click to expand...
Click to collapse
I've seen this comment on every single thread online regarding Linux on Android. It's a joke right?

[Q&A] How to build/modify your own linux image for eMMC install Debian sample inside

[Q&A] How to build/modify your own linux image for eMMC install Debian sample inside
This thread is for help and support with all linux distributions instalable in eeepad asus transformer. I will explain how to build your own image file or modify existing one in order to use lilstive OLife script.
As ubuntu is the most popular distro, please, all de questions related with ubuntu post them in lilstevie's thread.
You can install any distribution with arm architecture support, but you'll need to make some tweaks in the image in order to work propperly. As my experience in linux is most of it related with debian is the distro i will give the best support, but i'll try to answer every question you ask.
I've chosen debian armHardFloat port instead of debian armel fore many reasons, you can read about this port here:
http : //wiki. debian.org/ArmHardFloatPort
This port is still young so right now there are packages still unaviable to install but they are entering in wheeze day to day. If you preffer to use armel instead or armhf you can always do, you will loose improvement but you will have (at the time of writting this) less packages aviable. In the future (not far away) it will be the best option.
Building your own image:
There are many ways to create a image file but because we are going to need qemu in order to debootstrap the instalation the easiest way to create it is with qemu-img
Code:
qemu-img create debian-armhf.img 400M
I have only given 400M of space because is going to be a minimal instalation without desktop enviroment, it could be smaller but, just in case, that's the size i've chosen. The transfer with OLife it will be faster if the image is smaller.
When you boot for your first time you will find an error because there is no valid MSDOS partition table, this is ok, nothing happens because of that but if you want to avoid it use fdisk to create a partition table
Code:
fdisk debian-armhf.img
we need now to give format to the filesistem:
Code:
mkfs.ext4 debian-armhf.img
It will ask if you really want to do because it's not an ordinary partition and you have to type "s" to proceed
Now whe have ready the image and we have to mount it in some folder to install debian in it:
Code:
mount -o loop debian-armhf.img debian
asuming debian as the created folder for that.
We are ready to debootstrap de instalation:
Code:
debootstrap --verbose --arch armhf --foreign --include=btrfs-tools,locales,kbd,wpasupplicant wheezy debian http://ftp.de.debian.org/debian
this will make the first step to install wheezy armhf, --foreing parameter is because the target architecture is different from the host one and it's going to stop before de second-stage, it will include the packages btrfs-tools locales and kbd, you can add as many as you want but it will be always faster if you install them manually once installed in the transformer. I didn't install ssh server because i have a dock, but if you don't have it will be needed to complete the instalation with a remote shell, but you can also install packages later with chroot after the second stage.
In order to be able to chroot we will need qemu-user-static, with armhf it's needed 1.0 version with armel it's not necesary, it can be any version not too old. Also if you have an i386 system it's recomendable to install an amd64 kernel to do chroot or debootstrap will fail configuring cron. Actually i think in this sample image there is anacron instead of cron because there was an issue i thought it was related with that but later twb found out the problem was another different and now it's solved.
we will add qemu-arm-static to the instalation to be able to chroot
Code:
cp /usr/bin/qemu-arm-static debian/usr/bin/
we chroot to the new enviroment:
Code:
chroot debian
and execute the second stage of debootstrap:
Code:
./debootstrap/debootstrap --second-stage
After finish the instalation we will set the root password
Code:
passwd
and now it's ready, you can make tweaks, install packages (as ssh if you need it) or whatever you want, but you will have to add a repository to /etc/apt/sources.list in order to install any packages.
In this image and debootstrap proccess i've used german repositories because are the fastest for me, but you can use another one, right now it's neede also experimental repository to have working touch screen, but as soon xserver-xorg-input-evdev with full multitouch support enters sid as it won't be necesary
example of /etc/apt/sources.list
Code:
http://ftp.de.debian.org/debian unstable main contrib non-free
http://ftp.de.debian.org/debian experimental main contrib non-free
I have already installed in this image necesary packages for that and experimental repositories won't interfiere unless you pass the parameter for apt-file so you can forget about this if you want, but if you are building your own image apt-get install -t experimental xserver-xorg will do the work.
we have ready now our image but it need some files and tweaks to make everithing work in the eepad.
From here you can apply this to any arm image you want to test.
(all the files needed are in the attached file files.tar.gz in the rigth folders)
we need to add modules and firmware, i've extracted them from lilstive ubuntu.img
strictly necesary are:
Code:
/lib/firmware/nvram.txt
/lib/firmware/brcm/*
but you may need another ones if you are going to use external hardware, that's on you.
there are also two folder in /lib/modules one is for the asus kernel and the other one for chrome os kernel, i suggest to add both of them because it's just a bit space and you will be able to use the image with both kernels.
In order to make wifi work i've made /etc/modprobe.d/options.conf file with some parameters found in one of the threads of lilstevie and /etc/modules with the modules to load.
You will also need to configure /etc/network/interfaces and /etc/wpa_supplicant/wpa_supplicant.conf all this files are in the attached files.tar.gz but wpa_supplicant.conf is not because it depends of each ones wifi, but there is a wpa_supplicant.conf.example and you can always google for it a bit. If you don't have a dock make sure you do this correctly or you won't be able to connect to the internet and ssh device to continue instalation easily
if you want to be able to use adb (wich is really usefull if you for example did not correctly configure wpa_supplicant) you will have tu add also "/usr/bin/adbd" and /etc/init.d/adbd"
I've modify the original init.d script to avid LSB tags missing warning error, it's not really necesary rsyslog as previous service started but ... it works.
In order to make adb service start automatically we will execute (inside the chroot of course)
Code:
update-rc.d /etc/init.d/adb defaults
This may be different in non debian based distributions, but you can always ln manually to rcX.d
Finally, there is the "bug" it has made me think something was wrong and change cron with anacron, when you boot it appears to stop booting starting a service (cron, dbus, deppending what you have installed) but it isn't you can login pressing ctrl + alt + F2 (touchpad key),
we think it's related with the bootloader and default tty as 7 or something like that.
As workaround add in /etc/rc.local "chvt 1" (without quotes) just before exit 0 line
Because there is not oem-installation like in ubuntu after the first boot there are a couple of things to do, we have to resize the image to fit the partition, change password, configure locales and xorg keyboard-layout (if you have more than one locales) add an user and include in relevant groups and maybe more in the future so i've made a postinstalation.sh script included in /usr/bin:
Code:
#!/bin/sh
echo "Making online resize of the root partition"
partition=`mount -l | grep " / " | awk '{print $1}'`
resize2fs $partition
echo "changing root password"
passwd
echo "configure locales"
dpkg-reconfigure locales
echo "configure xserver keyboard layout"
dpkg-reconfigure keyboard-configuration
echo "configure localtime"
dpkg-reconfigure tzdata
echo "Please anter a user name"
read username1
adduser $username1
echo "adding user to relevant groups"
adduser $username1 audio
adduser $username1 video
adduser $username1 netdev
adduser $username1 plugdev
adduser $username1 bluetooth
adduser to bluetooth will fil because there is not installed any bluetooth manager so there is not bluetooth group yet, and remeber tu use OLife script to inject bluetooth firmware in order to have bluetooth working.
And that's it i think i haven't miss anything but i will update this when needed. You can now install your image with lilstevie's OLife script, you will have to rename it to ubuntu.img from now. If everithing went ok you can now install the desktop enviroment you prefer, on screen keyboard or whatever you like.
I haven't test network manager and i've only tested kde-netbook, but there are still broken dependencies and it's a bit slow. This will improve as soon as we have hardware acceleration (if we ever do), and armhf port goes ahead.
Lilstevie is going to host my images and maybe OLife script will have more options in the future, but from now you can download from here:
http://dl.dropbox.com/u/60048492/debian-armhf.img.tar.gz
(md5sum inside)
http://dl.dropbox.com/u/60048492/files.tar.gz
All credits and many thanks for lilstevie and twb for all the help they gave me.
I will apreciate any correction not only in this process but also in my english grammar/ortography
Please, any mod or admin can correct the word modufy in the title?
reserved
Thanks
Following your instructions, I can finally replace ubuntu with debian, which resides my home laptops, office desktop, and now, on my tablet as well. Unfortunately debian has no "onboard" package... and it's rather inconvenient without a dock.
Thanks anyway for bring debian to this tablet.
boseliquid said:
Following your instructions, I can finally replace ubuntu with debian, which resides my home laptops, office desktop, and now, on my tablet as well. Unfortunately debian has no "onboard" package... and it's rather inconvenient without a dock.
Thanks anyway for bring debian to this tablet.
Click to expand...
Click to collapse
What has onboard that haven't other onscreen keyboards? i haven't ever tried onboard and i just tried a couple of onboard keyboards in debian, i also did managed to load it automatically in login screen, But i did never went deeper, like "only appear if the focus is in textbox" or something like that.
Anyway i has to be easy to rebuild that package for debian or just install it from ubuntu. What do you exactly need?
onboard onboard
Onboard has keys that simulate middle-click and right-click of mouse. I tried to install ubuntu's deb file, but runs into problem with dependencies. Compiling the source on the tablet led to error related to gdk/gdk.h which i couldn't figure out how to resolve.
Onboard respond better than others, e.g. xvkbd and florence both have run-away key presses, i.e. a string of letters appear even for a quick single tap on a key.
Also, onboard integrates nicely with lightdm. I used xdm plus florence to log in (the screen keyboard hides most of xdm's GUI).
With fluxbox, debian seems faster than ubuntu+fluxbox on the tablet. That's why onboard is nice since fluxbox menu requires right-clicking on the desktop. Fortunately, fluxbox keys are easily configurable, so i still can shutdown by pressing some key combination.
Hopefully lilstevie has the time to work on hardware acceleration, which would then allows to dump android completely.
boseliquid said:
Onboard has keys that simulate middle-click and right-click of mouse. I tried to install ubuntu's deb file, but runs into problem with dependencies. Compiling the source on the tablet led to error related to gdk/gdk.h which i couldn't figure out how to resolve.
Onboard respond better than others, e.g. xvkbd and florence both have run-away key presses, i.e. a string of letters appear even for a quick single tap on a key.
Also, onboard integrates nicely with lightdm. I used xdm plus florence to log in (the screen keyboard hides most of xdm's GUI).
With fluxbox, debian seems faster than ubuntu+fluxbox on the tablet. That's why onboard is nice since fluxbox menu requires right-clicking on the desktop. Fortunately, fluxbox keys are easily configurable, so i still can shutdown by pressing some key combination.
Hopefully lilstevie has the time to work on hardware acceleration, which would then allows to dump android completely.
Click to expand...
Click to collapse
Ok, i'll give it a look and if i can i will build a debian package in order to include it in the image
I've managed to build a couple of packages for onboard. You can't imagine how much crap it's in building dependencies, mono, unity and so many things, so i've removed appindicator dependency because i don't think it's going to be really necesary. The true is that i don't have so much time right now so,
Can you please test it and tell me if you have any problem? I can try to rebuild another older version in order to avoid unity crap and those things without messing the code, but if this works well it's the eassiest solution.
You have to install both packages, the other dependencies are instalable from debian oficial repository, at least i haven't got any problem installing it in my building environment.
http://dl.dropbox.com/u/60048492/onboard_0.95.1-1_all.deb
http://dl.dropbox.com/u/60048492/python-virtkey_0.60.0-1_armel.deb
arch of python-virtkey is armel instead of armhf
Almost there... but obtained the following error msg:
Unpacking onboard (from onboard_0.95.1-1_all.deb) ...
dpkg: dependency problems prevent configuration of onboard:
onboard depends on python-virtkey (>= 0.60.0); however:
Package python-virtkey is not installed.
onboard depends on python-gconf; however:
Package python-gconf is not installed.
dpkg: error processing onboard (--install):
dependency problems - leaving unconfigured
Thanks again.
boseliquid said:
Almost there... but obtained the following error msg:
Unpacking onboard (from onboard_0.95.1-1_all.deb) ...
dpkg: dependency problems prevent configuration of onboard:
onboard depends on python-virtkey (>= 0.60.0); however:
Package python-virtkey is not installed.
onboard depends on python-gconf; however:
Package python-gconf is not installed.
dpkg: error processing onboard (--install):
dependency problems - leaving unconfigured
Thanks again.
Click to expand...
Click to collapse
python-virtkey is provided in my previous post, just install it, after that
#apt-get install -f
will resolve and install automatically pending dependencies.
I've already tried and it works.
EDIT: i have been working in the suppose you are runnin debian armel and not armhf
To get bluetooth working, you need an armhf build of brcm_patchram_plus.
Thankfully it's GPL'd, so here's a copy.
Hi,
I'm having a bit of trouble getting Debian on my TF101 using OLiFE.
I'm forced to use the android/Ubuntu dual-boot option, but that's another story.
Basically, there's a kernel panic and I can't see the entire screen without it rebooting one second later. I am able to flash my TF101 properly without bricking (it's a B60), but everytime I boot it up as my default OS, I get that rebooting screen.
NothingMuchHereToSay said:
Hi,
I'm having a bit of trouble getting Debian on my TF101 using OLiFE.
I'm forced to use the android/Ubuntu dual-boot option, but that's another story.
Basically, there's a kernel panic and I can't see the entire screen without it rebooting one second later. I am able to flash my TF101 properly without bricking (it's a B60), but everytime I boot it up as my default OS, I get that rebooting screen.
Click to expand...
Click to collapse
Kernel panic kinda implies the problem is with the kernel, not with Debian. If you're using the 3.1 kernel, try the 2.6 one by lilstevie. Whichever kernel you're using, you're better off seeking help in one of the kernel-specific threads.
rdnetto said:
Kernel panic kinda implies the problem is with the kernel, not with Debian. If you're using the 3.1 kernel, try the 2.6 one by lilstevie. Whichever kernel you're using, you're better off seeking help in one of the kernel-specific threads.
Click to expand...
Click to collapse
Could or couldn't it may also be a problem with initramfs and boot parameters. I now because i experienced it. So if you give us more information, better, try to record a video of the bootloop and pass it slowly to see the error, i did that and it worked for me
Franks Tools-new modified Ubuntu install
Hello i dont know if this is right thread,i like to ask you advanced users for some help.I wanna install ubuntua via new modified Franks tools by kenshin,released few days ago,i cannot find exact answer what i need to progress.
My questions are: How can i made nvflashable files system.img boot.img recovery.img and others to use franks tools? how to obtain these images?
2.) and if i will use those images that can be found here on forum can i then just flash for example Revolution HD rom? ,or does it destroy my installation of ubuntu via franks tools?
because i know that there is little play with partitions so i am not sure if i can flash any rom after use of franks tools dual boot option.thank you for help
shaola said:
Could or couldn't it may also be a problem with initramfs and boot parameters. I now because i experienced it. So if you give us more information, better, try to record a video of the bootloop and pass it slowly to see the error, i did that and it worked for me
Click to expand...
Click to collapse
I did everything stock and did exactly what you said to do for Debian, though I used the armel architecture and the adb wouldn't work with an error.
By everything stock, I mean that I didn't alter anything from the OLiFE folder except adding the ubuntu.img file.
NothingMuchHereToSay said:
I did everything stock and did exactly what you said to do for Debian, though I used the armel architecture and the adb wouldn't work with an error.
By everything stock, I mean that I didn't alter anything from the OLiFE folder except adding the ubuntu.img file.
Click to expand...
Click to collapse
The original kernel from OLiFE didn't work for me - I had a boot loop. Try manually compiling the lilstevie kernel, or using a kernel from Jhinta's kernel thread.
The packed kernels (CWM zips) for Ubuntu will work exactly the same under Debian. (or at least in the direct mount case - I don't know about loop mount)
i can't get wifi up ... could someone help?
it is shown in iwlist wlan0 scan but i can't find an network ...
while boot it sends many intervals and abort this progress with givin' up.
i just copied li/firmware file from olife.img und files from this thread over it ...
anyone could help please?
NoDiskNoFun said:
i can't get wifi up ... could someone help?
it is shown in iwlist wlan0 scan but i can't find an network ...
while boot it sends many intervals and abort this progress with givin' up.
i just copied li/firmware file from olife.img und files from this thread over it ...
anyone could help please?
Click to expand...
Click to collapse
what are you uing to scan? this driver ony supports wpasupplicant, not iw nor iwconfig
hi,
i installed the ubuntu image with olife on my transformer. i don't like ubuntu very much, i prefer debian which i run debian on my computer as well. i stumbled over this thread so i wondered what's the status of debian on our transformer.
can anyone tell me whats currently working.
hanswurschtus said:
hi,
i installed the ubuntu image with olife on my transformer. i don't like ubuntu very much, i prefer debian which i run debian on my computer as well. i stumbled over this thread so i wondered what's the status of debian on our transformer.
can anyone tell me whats currently working.
Click to expand...
Click to collapse
The same as in ubuntu. But you may need some tweeks. Depends of the kernel you are using. nvidia has released also a beta of the nvidia drivers for armhf and not only armel so you may use armhf or armel with jintha's kernel and have almost everithung working.

[GUIDE] Ubuntu in a chroot on the Galaxy S4 - now with Native Booting!

Notice (4/16/14): I'm no longer here. I've said "goodbye" to AT&T and their locked bootloader schemes. I'm voting with my wallet - I've sold my I337 and switched to T-Mobile. My apologies to the community, but you're now on your own here.
Intro/About/Requirements:
This thread started as a guide for people who wanted to run Ubuntu in a chroot, and then connecting to it locally with a VNC client. This method has been used countless times on other devices, with many thanks to @zacthespack and his his group, LinuxonAndroid. Unfortunately, this method did not work out-of-the-box on my device, so I tweaked things to work with the Galaxy S4 and posted them here in this thread.
However, the most people immediately noticed that with this method the performance is not great, and some applications can't work in a headless environment. With a comment made by zackthespack, I began researching what it would take to get Ubuntu to write directly to the device's framebuffer. After a few months, I not only managed to accomplish this, but also developed a way to get the Galaxy S4 to boot directly into Ubuntu. As far as I have seen, both of these are a "first" for this handset.
All of these methods require root. The VNC Chroot does not require a custom kernel, but the other methods require a custom-built kernel. For the I337 (AT&T) handset, this can pose a problem if you have bootloaders that are MF3+. If you're using MDB/MDL bootloaders still, you shouldn't have a problem with this and you can Loki the custom kernel without issue.
Depending on your ROM and/or Kernel, you may also need a new version of BusyBox installed, even for the VNC method. You'll find a few apps on the Play Store that can do this for you. Beware that some of them are not easily reversible (such as TinyBox), so if you're stuck on MF3 with no way to create/restore a nandroid/system backup, you should be careful.
Click to expand...
Click to collapse
Disclaimers:
Following this guide and/or flashing anything I've provided to your device is your own responsibility. If something breaks, you break your device, or something explodes, I can't be held liable (I'll help correct any situations you may put yourself in, however). I claim no rights to any proprietary software or intellectual property included in this post or the packages contained herein. By using any of this software, you agree to whatever licenses/agreements that the creators may have included with their software. If you use any of this stuff in your own project, please provide credit where credit is due. For example, if you take my u.sh script and adapt it to some new device (i.e. Galaxy S 5), please at least mention where it came from.
Click to expand...
Click to collapse
VNC Chroot Method (original):
This method is loosely based on this thread for the Galaxy S3 and the ubuntu.sh script there. It didn't work for the S4, but I've made several tweaks to it, simplifying it a ton, and otherwise getting it to work perfectly on my S4. I've tried this using my AT&T Galaxy S4 (SGH-I337) on both the MDL build and the MF3 build - both seem to work great.
Instructions:
Download the Ubuntu 13.04 Small v1 image here.
Create a folder on your sdcard labeled "ubuntu" by whatever means you want to.
Extract the ubuntu.img from your downloaded zip into this folder.
Download my version of the ubuntu.sh and place it on the root of your sdcard.
Open the script in a text editor and read through it. Never run a script like this on your android without first knowing what it does - especially when the author is telling you that you need root. If you're happy with it, proceed.
Install an terminal emulator of your choice. I personally used this one, and technically an adb shell will work too (but you'll be tethered to your PC...).
Install a VNC Client of your choice. I personally used this one, but there might be better/faster ones out there.
Open the terminal emulator, and execute the following commands:
Code:
su
sh /sdcard/ubuntu.sh
If you see a bunch of errors and get dumped back at the "[email protected]:/ # " prompt, then something went wrong. Report your errors in this thread. Remember, this requires root (and the "su" command to get there, of course).
You'll be prompted for some setup parameters, which you can save at the end for later. Just answer each question and press Enter after each:
You'll need to provide a new password for the "ubuntu" user. A simple passwords like "ubuntu" works, unless you want some security.
Start VNC server? (y/n) - always choose "y". We need this to interact with the device.
SSH server? Optional. If you use it, you should enable it.
Screen size: Enter whatever you want. I personally used 960x540 (one quarter of the S4's screen size) so that I could actually interact with things using the touch screen.
Save settings as defaults? - You might not want to do this until you have a screen size that works best for you.
Once you see the prompt, "[email protected]:~# " - you're in! You now have Ubuntu running in a chroot. As the on-screen instructions suggest, type "exit" at this prompt to end the chroot and Ubuntu. It is recommended to do this when you are done so that the ubuntu.sh script can clean up after itself (unmounting things, etc.).
Leave your terminal emulator app running! Use your Home button to return home and leave it running.
Open you VNC client and connect with the following settings:
Nickname: (whatever you want)
Password: ubuntu
Address: localhost
Port: 5900 (default)
Username: (leave blank)
Color Format: 24-bit color (you can use lower if you want better performance)
Connect. For the VNC app I used, I had to zoom in to make the screen fit correctly (use pinch-to-zoom, and then use the "+" button on-screen). Also, you can play around with the Input Mode some if you wish.
Enjoy Ubuntu!
As you can see, it's not terribly complicated to get this up and running. Once you have set it up the first time, it's a lot smoother from then on out. The script is designed to allow you to use the external SDCard if you wish. Just use place the ubuntu.img in an "ubuntu" folder on your external SDCard, drop the ubuntu.sh on the root of the external SDCard, and use "sh /mnt/extSdCard/ubuntu.sh" instead (don't forget "su"!).
Click to expand...
Click to collapse
Freedreno Chroot Method (NEW):
This long-winded tutorial will explain how you can setup Xubuntu-desktop in a chroot. Before attempting any of this, you should read through all the steps and be sure you're comfortable performing the steps needed.
This requires roughly 2GB free space on your /data partition - the actual finished install is about 1.4GB, but it will require some extra space while it installs Freedreno and other components. HINT: Keep in mind that your /data partition is shared with your internal sdcard (your internal sdcard gets whatever space is leftover at the end of the /data partition), so you can get an idea how much free space you have by looking at how much space your internal sdcard has available.
Instructions:
Step 0 (option A) - Build Custom Kernel
You will need to install a custom kernel that has specific options enabled in the configuration, along with a few patched files in the source code. This list of changes is based on a delta from the stock I337 MF3 kernel, available at http://opensource.samsung.com/. You should be able to apply these changes to "any" kernel that you can build from source, so this documentation may apply to devices other than the I337.
Kernel Mods:
Required config changes:
Code:
CONFIG_DEVTMPFS=y
# CONFIG_DEVTMPFS_MOUNT is not set
CONFIG_DRM=y
CONFIG_MSM_KGSL_DRM=y
# CONFIG_KGSL_PER_PROCESS_PAGE_TABLE is not set
# CONFIG_MSM_KGSL_PAGE_TABLE_COUNT is not set
CONFIG_FB_MODE_HELPERS=y
CONFIG_FB_MSM_TRIPLE_BUFFER=y
CONFIG_FB_MSM_DEFAULT_DEPTH_BGRA8888=y
# CONFIG_FB_MSM_DEFAULT_DEPTH_RGBA8888 is not set
Fix for Wi-Fi problems when using MF3 kernel on UCUAMDL bootloaders (i.e. "unadulterated" or "neutered"):
Code:
CONFIG_PROC_AVC=y
Required Patches to kernel source code:
https://github.com/freedreno/kernel-msm/commit/4c0281745f8c85707be88acebb557aca0b8f1dba
https://github.com/freedreno/kernel-msm/commit/228f65d48d4855d903e3b4642179dfa14eedd040
https://github.com/freedreno/kernel-msm/commit/54b510b2e6bccf08fdf3a8ad00a62b27c2f8c1e6
Additional changes required for sudo to work (added 10-25-13 in v4):
Code:
# Samsung Rooting Restriction Feature
#
# CONFIG_SEC_RESTRICT_ROOTING is not set
# CONFIG_SEC_RESTRICT_SETUID is not set
# CONFIG_SEC_RESTRICT_FORK is not set
# CONFIG_SEC_RESTRICT_ROOTING_LOG is not set
Additional changes to the initramfs required for sudo to work (added 10-25-13 in v4):
Edit fstab.qcom, remove the nosuid, part of the line that references userdata.
Step 0 (option B) - Download Custom Kernel Instead
Don't want to compile your own kernel from source? If you have the I337, you can use mine! As mentioned above, this kernel is based on the original MF3 source from Samsung, with the modifications listed above. If you are stuck with MF3+ bootloaders on your I337, you will not be able to install this kernel directly (at the time of this writing). MDB/MDL bootloaders are fine, but you will need to flash loki-doki afterwards (this kernel is not pre-lokified!). This kernel might work with other similar variants (such as the M919), but I haven't tested this on anything except my own I337 daily-driver. YMMV. If you run into issues, you might need to wipe cache/dalvik. This will likely only work with TouchWiz-based ROMs (I have not tried it with AOSP). Here's some downloads for you:
mf3-freedreno-android-boot-v4.zip - CWM/TWRP flashable zip.
- Boots to android, allows Ubuntu with Freedreno to work in a chroot.
- Compiled with the original (slightly modified) MF3 initramfs and "mf3-freedreno-minimum-zImage-v4" (below).
- Includes minimal configuration changes described above, plus the WiFi fix part.
mf3-freedreno-minimum-zImage-v4 - Just the MF3 kernel itself with minimal changes to get the chroot to work.
mf3-freedreno-minimum-config-v4 - Yeah, that's right. I'm providing the .config files I used for all of this.
Step 0.5 - Install the Kernel
Before you can start up the chroot properly, you'll need to have the custom kernel installed. You don't want the "ubuntu-boot" version right now, because you don't have an Ubuntu install to boot to. If you're using my pre-built kernel, first flash mf3-freedreno-android-boot-v4.zip and then flash loki-doki.zip.
Step 1 - Companion Files
Download this file: mf3-freedreno-companions-v4.zip - Non-flashable zip. This includes the script files, which you should promptly read through both u.sh and launch.sh. It is always good practice to read through any script file you get from the internet, making sure it's doing what you would expect it to. Also check out CREDITS.txt, which includes information about the included upstart-dummy.tar.gz and start-stop-daemon files.
Extract the companion files .zip and place its contents on the root of your internal sdcard (/sdcard/). Don't extract the contents of upstart-dummy.tar.gz. This is your $src directory. You can change this if you wish (see script for details).
Step 2 - Install/Configure Ubuntu
Install an terminal emulator of your choice. I personally used this one, and technically an adb shell will work too (but you'll be tethered to your PC...). At the console/shell, type the following two commands:
Code:
su
sh /sdcard/u.sh bash
The script will download Ubuntu Core and install Freedreno, upstart-dummy, and lubuntu-desktop. Total download size will be around 425MB. Total install time will vary, but count on it taking at least 45 minutes to install and configure everything. At the very end, you'll be prompted to enter a password for the new user "ubuntu".
Step 2.5 - Exit ubuntu
When you see the message "Type 'exit' (without quotes) to leave ubuntu," the install is complete. You'll notice that your prompt changed to "[email protected]". This is the easiest way to confirm that you're actually inside the ubuntu chroot. Type exit and hit Enter to get back to android.
Step 3 - Fire it up!
From now on, you can start Ubuntu using u.sh in any of these three ways:
sh /sdcard/u.sh - This will make initial prep, STOP android (black screen), launch the chroot, install/configure if needed, and will execute "service lightdm start". This will give you the greeter and you can login as "ubuntu". If the lightdm service stops for whatever reason (see info about the home button below), the script will continue by exiting the chroot and rebooting your device.
[*]sh /sdcard/u.sh bash - Same as above, except that it will not stop android, not startx (will give bash shell instead), and will not reboot your phone when you exit the shell.
[*]sh /sdcard/u.sh destroy - This will do exactly as it sounds - destroy your ubuntu installation. This will unmount your /sdcard from ubuntu (if still mounted somehow) and then recursively delete your ubuntu installation. If you change the source or destination directories in the main script, you should be careful deleting things.
NOTE: Remember to ALWAYS run any these from a root shell, whether via terminal emulator, via adb shell, or using SManager (or similar).
Step 4 - Note the Home Button and Touchpad
Take note that any time you have X running via lightdm, the hardware Home button will kill the X server. This is intentional, and will exit the chroot and reboot your phone. You'll also notice that currently, the touchscreen acts like a giant touchpad (like on a laptop). Use two fingers to right-click or scroll. Direct touchscreen input is not available at this time due to a segmentation fault that evdev causes when used on this device in a chroot.
Step 5 - (optional) Make Changes and Do it All Over Again
Customize the crap out of it! Edit my u.sh, launch.sh or xorg.conf and have fun. If you find great improvements, please post them in this thread! In future revisions, I might include them. Things should be well documented within the scripts. You might even change the bit at the end of launch.sh that starts "service lightdm start&" instead of "startx" - this would give you the greeter and let you login as the user "ubuntu" if you want. Also note that those three files are the only ones that must remain in your $src directory if you wish to continue to run this as a chroot. By the way, booting directly to Ubuntu after it is installed does not require any of the companion files anymore.
Click to expand...
Click to collapse
Native Boot Method (NEW):
This part of the tutorial is for those who wish to take things a step further and boot your device directly into Xubuntu-desktop. This will require that you setup the Freedreno chroot properly, and then you'll be installing a new boot.img. While this doesn't replace your /system partition, you won't be able to boot directly into Android while you have this boot.img installed.
Instructions:
Step 1 - Install Ubuntu
Basically, you need to perform all the steps for the Freedreno Chroot method, and get that up and running first. All you're doing here is swapping out your kernel.
Step 2 (option A) - Build Custom Kernel
You'll need all of the kernel customizations included in the freedreno chroot method, plus these listed below:
NOTE: You will need some proprietary blobs, which can be found on your device in the /etc/firmware directory.
Config changes to enable booting directly into Ubuntu (beyond replacing the initramfs...):
Code:
CONFIG_EXTRA_FIRMWARE_="audience-es325-fw.bin a300_pm4.fw a300_pfp.fw vidc_1080p.fw"
CONFIG_CMDLINE="console=tty0 fbcon=vc:0-3"
# CONFIG_CMDLINE_FROM_BOOTLOADER is not set
CONFIG_CMDLINE_EXTEND=y
# CONFIG_CMDLINE_FORCE is not set
Optional config changes to enable the framebuffer console when booting directly into Ubuntu - useful for debugging.
Code:
CONFIG_VT_CONSOLE=y
CONFIG_VT_CONSOLE_SLEEP=y
CONFIG_VT_HW_CONSOLE_BINDING=y
CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
CONFIG_FRAMEBUFFER_CONSOLE=m
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
# CONFIG_FONTS is not set
NOTE: You will need to grab some .ko files that are created, which must be loaded in the following order:
Code:
insmod /ko/font.ko
insmod /ko/softcursor.ko
insmod /ko/bitblit.ko
insmod /ko/fbcon.ko
I recommend that you include these four lines into the init script that is included in the ubuntu ramdisk. These can go pretty much anywhere after the ". /scripts/functions" part, but before it calls out to run-init. Also, don't forget to drop those .ko files into a new /ko directory in the initramfs. If you want to load these with modprobe, I'll leave that up to you (good luck).
Replace the entire ramdisk/initramfs:
At this time, I'm not going to provide instructions on how to do this. You'll need this mako boot.img straight from Ubuntu, repacked with the zImage created here. For what it's worth, the re-pack tool I'm using includes --cmdline 'androidboot.hardware=qcom user_debug=31 zcache', but I'm not sure if that's needed (especially considering our kernel seems to use qcache?). Anyways, good luck.
Step 2 (option B) - Download Custom Kernel Instead
Again, if you don't want to compile your own kernel from source, you can download mine and use it. The same warnings and restrictions apply as they do in Step 0 (option B) of the Freedreno Chroot method. And here's your downloads:
mf3-freedreno-ubuntu-boot-v4.zip - CWM/TWRP flashable zip.
- Boots to Ubuntu directly, but only if your Ubuntu install is located at /data/ubuntu (Default).
- Compiled with the original MF3 initramfs and "mf3-freedreno-everything-zImage-v4" (below).
- Includes all configuration changes described above.
mf3-freedreno-everything-zImage-v4 - Just the MF3 kernel itself with all changes for both chroot and direct booting to Ubuntu.
mf3-freedreno-everything-config-v4 - Yet again, I'm providing my complete .config file for this.
Step 3 - Install the Kernel
Here's the easy part. Flash your completed boot.img, flash loki-doki, and reboot. If you're using my pre-built kernel, first flash mf3-freedreno-ubuntu-boot-v4.zip and then flash loki-doki.zip.
Click to expand...
Click to collapse
Flashable Zip Method (NEWEST):
It's finally finished: a flashable .zip that you can use to dump a pre-built rootfs onto your data partition. This will still require that you flash one of the two custom kernels (whether for chroot or native booting), but it will allow you to skip the whole build/install process.
ubuntu-install-v4.zip - CWM/TWRP flashable .zip. Requires approx 2GB free space on your data partition during install, and the final install size is approximately 1.3GB (may want more free space to add your own programs/etc.). Output folder is /data/ubuntu. This can be changed in u.sh, but heed the warnings within!
Instructions:
Instructions for Chroot-style Ubuntu:
Download the "companions" .zip and extract its contents to the root of /sdcard.
Download the "ubuntu-install" .zip to your internal or external SDCard.
Download the "mf3-freedreno-android-boot" .zip to your internal or external SDCard.
Make a nandroid backup of your phone, and store it on an external SDCard or your computer. Always a good idea to have this.
Install the "ubuntu-install" and "mf3-freedreno-android-boot" .zip files, followed by loki-doki.zip if you need that for your device (e.g. I337).
Restart and resume with Step3 of the Freedreno Chroot Method.
Instructions for Native Boot Ubuntu:
Download the "ubuntu-install" .zip to your internal or external SDCard.
Download the "mf3-freedreno-ubuntu-boot" .zip to your internal or external SDCard.
Install the "ubuntu-install" and "mf3-freedreno-ubuntu-boot" .zip files, followed by loki-doki.zip if you need that for your device (e.g. I337).
Restart and let it start into Ubuntu!
NOTE: The username is "ubuntu" and the password is also "ubuntu" - it is highly recommended that you change this ASAP.
Click to expand...
Click to collapse
Known Issues/Bugs:
Below is the list of known issues that I can think of, from the top of my head. This will probably be updated later as everyone points stuff out. Some issues only apply to some of the methods, so the applicable methods are listed in parenthesis after each.
Sound has not been tested (freedreno/native)
3D graphics or OpenGL support has not been tested (all)
Some applications don't work in a headless environment (vnc)
Some applications don't like to run as root, such as chromium (freedreno) lightdm is working in companions-v3, so no need to login as root anymore
Onboard is not working (freedreno/native) fixed in companions-v3
sudo does not work (all) fixed in kernel-v4 for freedreno/native, but problem remains for (vnc) if you are not using a custom kernel
A few kernel Oops's (native)
Shutdown menu doesn't always work (freedreno/native) fixed partly in companions-v4 - proper locale settings seem to allow the shutdown menu to work once you are logged in
Performance issues due to VNC connection (vnc)
No 3G/WiFi/network connection that I'm aware of... (native)
No control over 3G/WiFi/network/bluetooth yet (all)
Xorg's normal touchscreen driver evdev causes segmentation faults (freedreno/native)
Working on a possibly trying to get fbdev to work natively without Freedreno for simplicity (freedreno/native)
Anything you'd normally expect from a phone does not exist (freedreno/native)
Screen rotation (with or without accelerometer) doesn't work yet (freedreno/native)
HDMI/MHL output remains untested at this time. I got it to briefly work once, but I need to revisit this. (freedreno/native)
Many more to come, I'm sure...
Click to expand...
Click to collapse
To-Do:
Add mirrors to the download links.
Add a CWM/TWRP-flashable .zip that just dumps a clean Ubuntu install onto your data partition. This should be easy enough. completed!
Fix some of the bugs above.
Simplify the launch.sh and xorg.conf files. The u.sh script seems pretty solid.
Develop a method that works with only fbdev. This method might eliminate the possibility of 3D acceleration, but should enable screen rotation and other nifty things.
Possibly look into getting kexec (or similar) to work on the Galaxy S4 to offer a dual-boot option. Low priority at the moment, because flashing a kernel back and forth is pretty easy stuff.
Get Ubuntu Touch to work. This would eliminate a lot of bugs. I mostly need to just buckle-down and build CM10.1 from source, and then slowly visit each step of the Ubuntu Touch boot process.... Ugh.
Rebuild Freedreno to try to get Mesa/Gallium3D working properly. I'm probably going to need a lot of help from Rob Clark on this one!
More to come...
Click to expand...
Click to collapse
Revision History:
[11-13] mf3-freedreno-companions-v2.zip - Updated launch.sh: added some error checking and fixed the Freedreno build process.
[11-15] mf3-freedreno-companions-v3.zip - Updated launch.sh to include onboard and English language. Removed florence and xvkbd. Removed .keyb script. Added sudo. Simplified upstart-dummy, and included new upstart-dummy.tar.gz. Prepped for new flashable .zip method.
[11-26] mf3-freedreno-companions-v4.zip - Updated launch.sh: included fix for onboard so that it should work anytime lightdm is launched, added some bits for sudo to work, and home button now kills lightdm (not just the Xsession); Updated u.sh: Added check for root, added notes about sudo and nosuid.
[11-26] mf3-freedreno-android-boot-v4.zip & mf3-freedreno-ubuntu-boot-v4.zip - Finally fixed sudo! See kernel mods sections for details.
[11-26] ubuntu-install-v4.zip - rebuilt with new companions.
Click to expand...
Click to collapse
Aou said:
Check out this app: SManager (Script Manager). It makes running the ubuntu.sh or u.sh a whole lot easier, plus you can send it into the background (vnc method only). Just remember to jump back into SManager later, use the Menu Key and open the console to be able to kill the ubuntu.sh. You can also add "bash" as an additional argument (freedreno method only). This seems to be an effective replacement for the Terminal Emulator. Don't forget to choose the "su" option to run either script as root.
Click to expand...
Click to collapse
I have literally spent hundreds of hours working on this project, and many more hours documenting it thoroughly - just so that I could share it with all of you. If you found this guide, custom kernel or scripts to be beneficial, please hit the THANKS button on this post.
This mostly works, but I think I may have made an error. I see it starting the sshd, but not VNC server. I can call vncserver, but when launching the vnc client app I just get stuck at "Establishing Handshake" until it times out. This differs from when I don't call vncserver, where I get immediately connection refused.
I'm going to redownload the image and start from scratch, but the image isn't very friendly when I'm trying to figure out how to rerun the initial configuration script...
On my S4 running OTA-MF3 with root, this didn't work for me until i used Busybox Installer from the market. Tried internal and external without it, neither worked. Only thing that looked like an error after that was
Code:
chown: cannot access '/external-sd/': no such file or directory
but this only showed the first time I ran it. Opened VNC connection just fine from my computer to the phone, and though there was slight graphics glitching (orange and red boxes on desktop) it worked just fine and they didn't interfere. Thanks for this!
Tsaukpaetra said:
This mostly works, but I think I may have made an error. I see it starting the sshd, but not VNC server. I can call vncserver, but when launching the vnc client app I just get stuck at "Establishing Handshake" until it times out. This differs from when I don't call vncserver, where I get immediately connection refused.
I'm going to redownload the image and start from scratch, but the image isn't very friendly when I'm trying to figure out how to rerun the initial configuration script...
Click to expand...
Click to collapse
It's not, I agree. I found that the easiest way to clear the configuration and start anew is to do the following from the "[email protected]" prompt (that is, within ubuntu):
Code:
rm /root/DONOTDELETE.txt
rm /root/cfg/linux.config
DeadlySin9 said:
On my S4 running OTA-MF3 with root, this didn't work for me until i used Busybox Installer from the market. Tried internal and external without it, neither worked. Only thing that looked like an error after that was
Code:
chown: cannot access '/external-sd/': no such file or directory
but this only showed the first time I ran it. Opened VNC connection just fine from my computer to the phone, and though there was slight graphics glitching (orange and red boxes on desktop) it worked just fine and they didn't interfere. Thanks for this!
Click to expand...
Click to collapse
Interesting. I looked through the image's init.sh, and found something that's relatively new (wasn't in beta):
Code:
# Fix for sdcard read/write permissions by Barry flanagan
chown ubuntu /external-sd/
As far as I can tell, that message is harmless. It's only included in the initial configuration, as it's in the section:
Code:
if [ ! -f /root/DONOTDELETE.txt ]
As for the need to download/install the BusyBox installer, that's not surprising at all. I've had so much trouble BusyBox ever since I switched to MF3. I might include this as an extra step in the OP - thank you.
You kidding right...does this really work? To cool, thanks Aou. Great work.
TheAxman said:
You kidding right...does this really work? To cool, thanks Aou. Great work.
Click to expand...
Click to collapse
Yessir, it does indeed work! The S4 handles it very nicely with the extra RAM & CPU it has to spare, so the only limiting factor is VNC. If someone could devise a way to get Ubuntu to draw directly on the screen from within that Chroot, that would be perfect. I don't think it's really possible by design, but this might be the closest we get to running native linux on the I337 until we see some unlocked bootloaders.
Thanks
Aou said:
Yessir, it does indeed work! The S4 handles it very nicely with the extra RAM & CPU it has to spare, so the only limiting factor is VNC. If someone could devise a way to get Ubuntu to draw directly on the screen from within that Chroot, that would be perfect. I don't think it's really possible by design, but this might be the closest we get to running native linux on the I337 until we see some unlocked bootloaders.
Thanks
Click to expand...
Click to collapse
In fact I am currently working on getting xorg to write to androids frame buffer which will mean no more vnc
Sent from my Nexus 4 using xda premium
zacthespack said:
In fact I am currently working on getting xorg to write to androids frame buffer which will mean no more vnc
Sent from my Nexus 4 using xda premium
Click to expand...
Click to collapse
You, sir, are the man. thank you so much for working on this! I threw $10 at you to help fund the skittles/cheetos/carrots/beer/pizza/whatever it takes to help you along.
Added a couple things to the OP. Looks like pure-stock roms will indeed need BusyBox installed, by some means or another. Also, found SManager, which makes executing the ubuntu.sh script much, much easier.
The second script that allows me to launch ubuntu, but the first that allows me to get a real X server on my vnc. Thank you so much !
PS: Why am I unable to install wine ?
"Package wine is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source"
This is working pretty good, slow though, do I have it setup right, or did I miss something?
TheAxman said:
This is working pretty good, slow though, do I have it setup right, or did I miss something?
Click to expand...
Click to collapse
I have found it to run a bit slow, and with regular crashing of GUI programs too. Is it just slow or unusable? You can always try closing other apps besides terminal and VNC, or try to VNC from a computer even.
tboss1995 said:
The second script that allows me to launch ubuntu, but the first that allows me to get a real X server on my vnc. Thank you so much !
PS: Why am I unable to install wine ?
"Package wine is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source"
Click to expand...
Click to collapse
Looks like you're not the only one. Check out this thread on the LinuxOnAndroid site:
http://forum.linuxonandroid.org/index.php?topic=268.0
TheAxman said:
This is working pretty good, slow though, do I have it setup right, or did I miss something?
Click to expand...
Click to collapse
DeadlySin9 said:
I have found it to run a bit slow, and with regular crashing of GUI programs too. Is it just slow or unusable? You can always try closing other apps besides terminal and VNC, or try to VNC from a computer even.
Click to expand...
Click to collapse
Most of the slowness comes from interacting with it via VNC, it would seem. Hard to compare to anything else, considering VNC is all we've got at the moment. I wonder if @zacthespack can shed some light on this. As he mentioned before, he's working on getting it to draw directly to the Android screen. I'm certainly not going to ask for any status updates, but I'm wondering if he can confirm that we'd see a speed increase without VNC...
EDIT: Also, as I use it more, I am noticing the app crashes too (such as Chromium). Could just be something in the 13.04 image, but also could be because we're running this all on ARM architecture.
Aou said:
Looks like you're not the only one. Check out this thread on the LinuxOnAndroid site:
http://forum.linuxonandroid.org/index.php?topic=268.0
Most of the slowness comes from interacting with it via VNC, it would seem. Hard to compare to anything else, considering VNC is all we've got at the moment. I wonder if @zacthespack can shed some light on this. As he mentioned before, he's working on getting it to draw directly to the Android screen. I'm certainly not going to ask for any status updates, but I'm wondering if he can confirm that we'd see a speed increase without VNC...
Click to expand...
Click to collapse
RE installing WINE, sure you can install the ARM verson but Wine is not a emulator (infact WINE stands for Wine Is Not a Emulator) so you can only run ARM compiled windows software.
Yest there is a good speed increase, as with VNC xorg writes to the vnc server and passes it to the vnc client to then render on the screen.
With the new method xorg just writes to Androids frame buffer, no inbetween man.
And it can get even faster once we have graphics accelerations although not all chip sets will get that.
zacthespack said:
RE installing WINE, sure you can install the ARM verson but Wine is not a emulator (infact WINE stands for Wine Is Not a Emulator) so you can only run ARM compiled windows software.
Click to expand...
Click to collapse
Good point, forgot about that. It's really just a big package of Windows dependencies, responding to API calls, etc. The software that Wine runs is still sending stuff to/from the processor directly, therefore it would have to be compiled for ARM.
I wonder what Windows8 programs are available that are compiled for ARM (because of the Microsoft Surface and all...).
Aou said:
Good point, forgot about that. It's really just a big package of Windows dependencies, responding to API calls, etc. The software that Wine runs is still sending stuff to/from the processor directly, therefore it would have to be compiled for ARM.
I wonder what Windows8 programs are available that are compiled for ARM (because of the Microsoft Surface and all...).
Click to expand...
Click to collapse
There's plenty or ARM software within the built in app store, but I'm not sure where they install to or how one would go about extracting them. I have it on desktop and it shows what processors it runs on. Can't wait for the straight to screen function though
Also, I'm going to see if a different image is more stable. Chromium was the most obvious crashing for me and others generally crashed.
DeadlySin9 said:
There's plenty or ARM software within the built in app store, but I'm not sure where they install to or how one would go about extracting them. I have it on desktop and it shows what processors it runs on. Can't wait for the straight to screen function though
Also, I'm going to see if a different image is more stable. Chromium was the most obvious crashing for me and others generally crashed.
Click to expand...
Click to collapse
I noticed that with 12.04, it doesn't seem to connect to Xorg or something, because when you use VNC, it only shows a grey screen with a cross cursor. Same for both "Lite" and "Full" packages. Haven't tried older (10.x) packages of Ubuntu.
The other Linux images should work just fine. Optionally, you can edit the ubuntu.sh script to be more appropriate, but it should theoretically work the same (unless the init.sh is located elsewhere inside the image...).
I tried the Ubuntu 10 image and the Debian image but ubuntu didn't run vnc (vncserver not found or something) and debian kept saying I didn't have permissions.
It appears chromium is incredibly unstable on this image, so I've uninstalled it.
I'm currently working on trying to get Minecraft to work, but ever since 1.6.2 and this new launcher, it's incredibly difficult to modify the client files and such. Something is going wrong with liblwjgl.so. I can get the launcher to work correctly, but when it goes to load the game, it can't find liblwjgl.so and says that it might be because of 32bit vs ARM. I did get lwjgl installed correctly, and pulled the ARM version of the .so and stuck it in [what I believe was] the right .jar file, but it still has the error.
I'll keep you all posted. If I can get this to work, and if zacthespack can get xorg to draw on the android screen, ... :good:
EDIT:
Found out that every time the launcher runs minecraft, it downloads several libraries and other crap to run the game, to keep itself current and to support multiple versions, yada, yada. Unfortunately, this means that it downloads https://s3.amazonaws.com/Minecraft..../2.9.0/lwjgl-platform-2.9.0-natives-linux.jar every time you click Play, and overwrites any custom one you might have (i.e. one with ARM libraries inside). I tried revoking write access to the file, but then the launcher aborts the launch because it can't overwrite the file.
Any suggestions?
EDIT #2:
Well, the easy solution was to modify the file, run the launcher, disconnect mobile data temporarily, and then launch the game ("couldn't connect to server .... have local copy of file .... assuming it's good...."). No more errors about that stupid library file. However, the game immediately crashes now with an error report. Investigating this now. PROGRESS!
Problem
I'm aware I may need to modify the script in order to accommodate my setup, but I figured I'd post here first before changing anything in case someone else had a similar problem and came up with the solution.
I followed all the instructions, except I want to boot from an external USB stick (mounted using StickMount).
I reviewed the script, dropped it on the root of the USB stick, and copied the unzipped image to a folder named ubuntu.
Here is the output when I run the script:
Making mount points and mounting to them...
mount: mounting /dev/loop20 on /data/local/ubmnt failed: Operation not supported
mount: mounting devpts on /data/local/ubmnt/dev/pts failed: No such file or directory
mount: mounting proc on /data/local/ubmnt/proc failed: No such file or directory
mount: mounting sysfs on /data/local/ubmnt/sys failed: No such file or directory
Connecting to /sdcard...
mount: mounting /sdcard on /data/local/ubmnt/sdcard failed: No such file or directory
Putting in some settings...
net.ipv4.ip_forward = 1
/sdcard/usbStorage/sda1/ubuntu.sh[19]: can't create /data/local/ubmnt/etc/resolv.conf: No such file or directory
/sdcard/usbStorage/sda1/ubuntu.sh[20]: can't create /data/local/ubmnt/etc/resolv.conf: No such file or directory
/sdcard/usbStorage/sda1/ubuntu.sh[21]: can't create /data/local/ubmnt/etc/hosts: No such file or directory
ubuntu is configured with SSH and VNC servers that can be accessed from the IP:
(You will see an error about wlan0 if your WiFi is disabled. Safe to ignore.)
----------------- OKAY, starting Ubuntu! -----------------
chroot: can't execute '/root/init.sh': No such file or directory
----------------- Ubuntu has exited! -----------------
Cleaning up - unmounting everything and removing what we made...
umount: can't forcibly umount /data/local/ubmnt/dev/pts: No such file or directory
umount: can't forcibly umount /data/local/ubmnt/sys: No such file or directory
umount: can't forcibly umount /data/local/ubmnt/proc: No such file or directory
umount: can't forcibly umount /data/local/ubmnt/sdcard: No such file or directory
umount: can't forcibly umount /data/local/ubmnt: Invalid argument
Welcome back to your android.
Click to expand...
Click to collapse
I am running as root, BusyBox free has been installed. My terminal app has been granted root privileges. The path to the USB stick is sdcard/usbStorage/sda1.
Any help/guidance would be greatly appreciated! :fingers-crossed:

GetMeIn : One time rooting/jailbreaking tool for webOS LG TV's

Hello XDA,
After a long thinking i've decided to create a root or jailbreak tool for LG's awesome webOS, today am stating this thread to release this new root tool, but before that! am gonna ask you for some logs from webOS 3.5 and lower.
Everyone in this thread must know about webOS if not do your homework then get back again, LG did a great work on this operating system after HP and Palm's versions. they even supported Raspberry Pi module B. but webOS OSE aka Open Source Edition is really different from TV's version.
LG think about Security and frequently release updates that doesn't have anything new except some patches to close down known holes, one of my favorites was a directory traversal that can replace in tv files and binaries during install (partially closed recently).
let'stake a look at LG's partition filesystem types, on tv's they chooses to use ext4 for writable partitions (/var, some of /mnt/lg/*, /home and /media) everything else is using squashfs which is a read only compressed filesystem you cannot modify it.
If you can dump the squashfs partition unshquash it then recompress you will face another problem of hashes and crc checks (checkout the update binary for more details) if you dd it back to block device without kernel and/or bootloader patches. so this is not gonna just work easily.
What we can really do it play on the RW parts of the system, one of the design flaws on webOS is the devmode aka Developer Mode, they ship it in a Read Write partition so that's easy to be modified.
To do that you must have root access or some powerful exploits to achieve your goal.
This method is using memory access vulnerability to get root and then jailbreak the tv. i ported some parts of the other root thread even if some are not even needed.
To jailbreak connect to your tv via prisoner user after uploading GetMeIn binary into it then :
Code:
chmod +x GetMeIn
./GetMeIn
if root succeed and you saw some errors do this :
Code:
mkdir -p /media/cryptofs/root/etc
mkdir -p /media/cryptofs/root/lib
After that just reboot and enjoy your root with same ssh key, or use password "alpine".
there is some old pictures attached, i did some modifications after those.
Hope this is good enough.:angel:
HOW-TO
To use this GetMeIn webOS Jailbreak tool please create a developer account on LG's developer portal, install developer mode application on your TV and connect with your recently created account.
Open dev mode app please set the Dev Mode Status to ON and Key Server to ON.
grab your ssh key with ares then connect to your tv using ssh :
Code:
[email protected]:~# ssh -i ~/.ssh/webOS_TV [email protected] -p 9922
when you get connected you just follow the steps on the thread.
Please test and share back screen shouts and logs from tv in both cases failure or success.
I need informations from your webOS v 3.5 and lower, TV model and webOS version and some commands from the tv.
okay first of all create a dir named logs :
Code:
mkdir logs
TV Infos :
Code:
cat /var/run/nyx/device_info.json > logs/device_info.json
(delete your nduid serial number and mac addresses)
webOS Infos :
Code:
cat /var/run/nyx/os_info.json > logs/os_info.json
Code:
cat /proc/cpuinfo > logs/cpu.log
Code:
ls -arls /var/log/ > logs/logdir.log
Code:
ls -arls /usr/lib/ > logs/libsdir.log
Code:
ls -arls /proc/ > logs/procdir.log
Code:
ls -arls /dev/ > logs/devices.log
In case the jailbreak works restart and run this additional commands :
Code:
mount > logs/mounts.log
i think that's everything i need, upload the logs dir somewhere and put a link here.
Reserved again.
So this only works on webOS 3.5 and below?
MishaalRahman said:
So this only works on webOS 3.5 and below?
Click to expand...
Click to collapse
that's what i think yes, but you can test
MishaalRahman it's confirmed, also some lower versions are not supported like 3.3.3
BTW, can you check up your PM.
Hi,
unfortunately it does not work for me, I get the following output:
Code:
---------------------------------------------------------------
MerrukTechnolog < webOS privelage escalation (www.merruk.com)
---------------------------------------------------------------
GetMeIn: #* Opening memory IO!
GetMeIn: #! Cannot map memory data!
---------------------------------------------------------------
I already posted some logs of my LG OLED55B7D (05.80.15) in the other thread:
https://www.dropbox.com/s/ie5ix8vtscxjr3n/LG55B7D_05_80_15.zip?dl=0
Maybe some of this helps to improve your script.
blenni said:
Hi,
unfortunately it does not work for me, I get the following output:
Code:
---------------------------------------------------------------
MerrukTechnolog < webOS privelage escalation (www.merruk.com)
---------------------------------------------------------------
GetMeIn: #* Opening memory IO!
GetMeIn: #! Cannot map memory data!
---------------------------------------------------------------
I already posted some logs of my LG OLED55B7D (05.80.15) in the other thread:
https://www.dropbox.com/s/ie5ix8vtscxjr3n/LG55B7D_05_80_15.zip?dl=0
Maybe some of this helps to improve your script.
Click to expand...
Click to collapse
Your version is not supported by this tool, you have webos 3.8 unfortunately, and i really cannot help without access to tv with new api version, & i will need testers for newer devices.
@Maroc-OS
WebOS has the web socket endpoints to control the TV like
Code:
ssap://tv/getChannelList
After rooting the TV is possible to find out all the available endpoints on the TV? LG unfortunately has absolutely no documentation about it except the endpoints in the examples they provide.
If it is not too much work, could you please provide a list of all the available endpoints? I guess those needs to be defined somewhere in a config file...
Lg oled65g6v
Code:
/media/developer$ uname -a
Linux LGwebOSTV 3.16.7-77.deua.4 #1 SMP PREEMPT Thu Jun 21 17:26:37 KST 2018 armv7l GNU/Linux
/media/developer$ ./GetMeIn
---------------------------------------------------------------
MerrukTechnolog < webOS privelage escalation (www.merruk.com)
---------------------------------------------------------------
GetMeIn: #* Opening memory IO!
GetMeIn: #! Cannot map memory data!
---------------------------------------------------------------
/media/developer$ cat /var/run/nyx/os_info.json
{
"core_os_kernel_version": "3.16.7-77.deua.4",
"core_os_name": "Rockhopper",
"core_os_release": "3.3.3-3807",
"core_os_release_codename": "dreadlocks-dharug",
"encryption_key_type": "prodkey",
"webos_api_version": "4.1.0",
"webos_build_datetime": "20180621081934",
"webos_build_id": "3807",
"webos_imagename": "starfish-dvb-secured",
"webos_manufacturing_version": "05.30.25",
"webos_name": "webOS TV",
"webos_prerelease": "",
"webos_release": "3.3.3",
"webos_release_codename": "dreadlocks-dharug"
}
If I can be of any help to get this working on LG's 2016 OLED models gladly I would help...
Thank you for this awesomely fun opportunity to get into my panel! While I understand this is in its infancy, would you know a way of downgrading OS version? (Im on 4.x.x.x)
I hope sideload and extract creds in the best future. Thank you one again for the time and sharing of this. ?
What would be a good reason to root a smart tv? What can I do afterward?
now THIS is interesting! well done!
Same will we be able to download apps like Showbox or shadow tech(cloud gaming service)? After rooting we are all familiar with root on the phone side but rooting tv is definitely a first
lucaterpirla said:
What would be a good reason to root a smart tv? What can I do afterward?
Click to expand...
Click to collapse
thats what i'm asking myself too.
or was this the first step and now homebrew apps will rise?
please enlighten me someone. :laugh:
Sorry if this is a dumb question, but does this mean that Android TV could be ported over? That would be fantastic.
Fuking crazy
I'm about to root today after work.
Hope we get Android apps soon
This is awesome! and coming from someone from my home country. Genius!
Would it be possible to install Android TV after using this method?
Thank you very much!
I haven't tried the jailbreak yet, but here are the logs from two of my LG TVs:
LG EF9500: mediafire.com/file/8da335aynddi4se/LG_EF9500_Logs.zip
LG UF6400: mediafire.com/file/8045q0d0o6j8453/LG_UF6400_Logs.zip
XDA wont let me add hyperlinks so you'll have to copy and paste.
Wow seems there is some reactions to this topic.
first of all thank you for testing and reacting to this subject.
i will replay to every post one by one after this post.
thanks for you all.
wybielacz said:
@Maroc-OS
WebOS has the web socket endpoints to control the TV like
Code:
ssap://tv/getChannelList
After rooting the TV is possible to find out all the available endpoints on the TV? LG unfortunately has absolutely no documentation about it except the endpoints in the examples they provide.
If it is not too much work, could you please provide a list of all the available endpoints? I guess those needs to be defined somewhere in a config file...
Click to expand...
Click to collapse
Interesting. i did not knew about this, i will let you know once check this out.

Categories

Resources