Installing Debian Squeeze on Android Optimus S - Walk-throughs
This is slowly becoming a larger topic. So for now i will post various ways proven to work on the Optimus S and V as links below:
Installing Debian Squeeze on Android Optimus - Walk-through Compiled by uamadman
Install Debian Squeeze - non-loop sd-ext chroot method (prebuilt!) By bigsupersquid
ALL-Thumbs GUI to replace LXDE By bigsupersquid
4 Steps to Linux on your Optimus S - written by uamadman hosted by uamadman
All of this work was done by other people. I am simply compiling information and specializing it to the Optimus S.
This method does not require a pc, and everything is done through your android interface.
Current Abilities I've tested with success.
Play Sound
Surf the web
Access entire SD Card
Currently Working on:
Flash Support through IceWeasel
Completed:
Making this a simple download and phone restore - Done
Needs:
A GUI with bigger buttons and scaled for 480x320 - Done thanks bigsupersquid
Transparent Keyboard
Sources:
Howto Install Ubuntu by NexusOneHacks.net
secret hidden note to self psychocats.net/ubuntu/nonfree
Lets begin.
You need the following requirements:
Recommended: 2+ gigabytes of free SD card Space (Minimum 1.25gb)
A Rooted Optimus S
Kernel/Recovery: Xionia CWMA v1.2518.6
ROM:The Scott Pilgrim ROM (CM7 Gingerbread, Zefie Edition)
BusyBox Installer - You can get this from google apps store by JRummy16
Linux Installer – You can get this from google apps store by Galoula
Items worth having to things that make this easier:
A Wifi Internet Connection
A fully Charged Battery and a Wall Charger ^.^
2 Bottles of Mountian Dew
Your favorite Movie
and
The Patience to NOT Touch/use your phone for the 2 hours needed to complete the initial install process.
I started this endeavor with a clean install of the ROM listed above.
!!Make backups if you MUST save your data before you proceed any further!!
Warning: In The Simplest Terms(More detail will be in the final walkthrough)
Sometimes the Linux Installer doesn't work or if it is working and the process is interrupted while creating the .LOOP or extracting the build. The Linux Installer will stop working. I've found two (2) ways to fix the issues. The first is to go into setting and clear the cache for Linux Installer, Then open the superuser app and forget the permissions assigned to Linux Installer (Note: Try this a few times before resorting to a clean wipe, this method sometimes takes a few tries). The second is a clean wipe/recovery of the phone. Additionally if for some reason there is a interruption and the process stops. reboot the phone delete linux.loop off your sdcard and start from scratch. BEWARNED
*Walk-through - Under Construction*
To clarify any confusion the button names I use from left to right:
Home : Menu : Back : Search
Pre-Install Check List for Formatting/Reloading Rom
install sdcard with ROM/Recovery's
Reboot > Recovery
wipe data/factory reset
mounts and storage> format system
install zip from sdcard >choose zip from sdcard > update-cm-7-04282011-NIGHTLY
install zip from sdcard >choose zip from sdcard > gapps-gb-20110120
Remove sdcard with ROMS
Install sdcard marked for Linux
mounts and storage > format sdcard
reboot system now
Pre-install Checklist phone prep. (If you choose to overclock your phone this would be a great time to do it)
Wait 2 minutes for phone to fully load
tap droid
tap skip
tap next/done
Settings > Display > Screen timeout > 30 minutes
Settings > Applications > Check Unknown sources (not sure if nessesary)
Settings > Applications > Development > Check Stay awake (Required!!!!)
Settings > Accounts & Sync > Add Account (Go Through Menu's should take you though Market Install)
Market > Search Busy Box > tap BusyBox Installer by JRummy16 > free > ok
Market > Search Linux Installer > tap Linux Installer by Galoula > free > ok
Market > Search vnc > tap android-vnc-viewer Installer by androidVNC team + antlersoft > free > ok
Press Home Key
Apps> Busybox Installer >Allow Permissions> OK > Install
Install Check List
Warning
DO NOT ROTATE YOUR PHONE
ALLOW THE SCREEN TO SHUT OFF
LOCK THE PHONE
WHILE THIS APP IS OPEN UNLESS STATED
(you will see bad things if you do)
For Debian
Apps > Linux Installer > Allow SU Permissions > Allow SU Permissions > Allow SU Permissions > Click OK (First time start up, Yes 3 Approvals. If you don't recieve 3 notifications from super user it means Linux Installer is bugged. Go Settings>Applications>Manage Applications> under the Downloaded tab find Linux Installer > Select > Clear Data > Try step again. May take a few tries.)
Press Menu Key > Tap Setup > Tap File Size > Set to 1250 or more but must be less than the size of your SD Card.> ok > Press The Back Key (Linux installer will exit to your apps menu)
For Ubuntu - Currently bugged. I would avoid this. The source.list seems to have issues and won't download packages.
REQUIRED: Set you phone some where flat plugged into power Do Not Let The Screen Rotate!!!!!Apps>Linux Installer > Tap 1) Create target loop
Be Patient Wait until the Creating LOOP menu disappears. The length of time is dependent on the size of Megabytes set in the File Size option. About 10 minutes for 1500 Mb
Tap Liberate Loop -- Really Fast
Tap Format target loop (ext2) - This is the Buggy Part. If you get an Error message everything is most likely ok. Pickup your phone and Physically Rotate it so the screen rotates. Two additional menu's should appear. [3) Copy and Extract into loop and Install Linux Boot Script]
Lay your phone back down flat it doesn't matter if the screen rotates back to its original.
From here on DO NOT let the Screen Rotate Again! The process will be interrupted and you will get to start from step 1
Tap 3) Copy and Extract into Loop (it will start downloading and extracting the packages necessary to install Linux) This can take up to an hour. On a good 3g connection less than 45minutes.
Tap 4) Install into loop (This takes less than 10 minutes)
Tap Install Linux boot script
30 Seconds Later you officially have a version of Linux installed on your phone
CONGRATS
Verify Install Works
Apps > Terminal Emulator > Type: su > Enter > Grant Permissions > Type: linuxboot > Enter
You should get a string of code then get something like:
[email protected]:/
Most of the next portion comes from the Nexusonehecks.net
Setting up VNC and LXDE (so you don't have to look at terminal lines all day)
Apps > Terminal Emulator > Type: linuxboot > Enter <---If your not already in already.
Type > apt-get update > enter --- 5 minutes
Tight VNC Server
Type > apt-get install tightvncserver > Type y > Press enter --10 minutes
LXDE
Type > apt-get install lxde > type y > Press enter - 30 Minutes+
After a while you should get this screen
Press Menu > Preferences > Control key > Choose Camera Key > Back key > Back Key
Fully Depress the Camera Button Down and Tap the number 9 on the soft key board > Release Camera key > Tap Space Bar -- now two times more
Fully Depress the Camera Button Down and Tap the number 9 on the soft key board > Release Camera key > Tap Space Bar
Fully Depress the Camera Button Down and Tap the number 9 on the soft key board > Release Camera key > Tap Space Bar
The process should continue installing LXDE
tightvncserver Setup
Type> export USER=root > enter
Type> vncserver -geometry 1024x800 > enter
enter password > enter (use something simple you can remember i used 123123123 like they did on the nexusonehacks.net writeup)
verify password > enter
Press Enter after typing each line of the following code. Be Very Slow and Deliberate. Double Check Each line for Capitalization and accuracy before pressing Enter! I do not know how to edit this again --hidden note-->Perhaps some one can show me/tell me how
cat > /root/.vnc/xtartup
#!/bin/sh
xrdb $HOME/.Xresources
xsetroot -solid grey
icewm &
lxsession
Now Press and Hold the Camera Key and Tap D twice on the soft keyboard > Press Enter (it may ask to press 1 do not and only press enter)
If your camera key wasn't set look here to set it again--->Press Menu > Preferences > Control key > Choose Camera Key > Back key > Back Key
Setting up VNC on android ... After all those command lines I'm sure this is a very very nice change xD
Press Home Screen
Apps > androidVNCviewer > For Password enter 123123123 (Or whatever you set it to in the previous server setup)
Scroll to Port and enter 5901
Change the Color Format if you wish. It runs rather nicely on 24bit color but consumes more cpu cycles.
Tap Connect -- A Very Pretty LXDE should appear with a working CPU Monitor and everything nice
I know you want to play but we have a little more work to do this next step uses Terminal Emulator as the auto start/config file to boot linux and start and configure tightvncserver
Press Home
Open Termial > Menu Key > Preferences > Initial Command > Tap to Edit
Make Edit look like this
export PATH=/data/local/bin:$PATH
linuxboot
vncserver -geometry 600x480
Tap OK > Back out of Teminal to home
vncserver -geometry 600x480<--- this is where you change your screen size. you need a minimum of 600x480 to use the synaptic package manager and a few other things. but when i'm surfing the net or other things I prefer 480x320 (The Exact Size of the Optimus S Screen)
Now whenever you want to run linux simply open the Terminal Emulator. Wait 60 seconds for the code to run.
open androidVNCviewer and click Connect
DONE
Extra things go here
apt-get install synaptic - installs synaptic manager a nice GUI interface for the apt-get command
I have been running a Debian chroot on my optimus V for a few months now, squeeze and sid both work fine. I did it manually without the stuff from the market, and I use the sd-ext partition instead of a loop file
per your GUI issues:
I like xfce4 better than lxde on my optimus V.
Code:
apt-get install xfce4 xfce4-goodies
instead of lxde.
oh, also, the OP pointed out to me that
Code:
apt-get install xfce4-goodies
alone will also pull down xfce4 as a dependency (and that I left out the word install which is now corrected.)
modify the /root/.vnc/xstartup accordingly.
replace
Code:
icewm&
lxsession
with
Code:
xfce4-session&
or, you can cut-and paste my complete file here:
Code:
echo "#!/bin/sh
xrdb $HOME/.Xresources
xsetroot -solid grey
export XKL_XMODMAP_DISABLE=1
xfce4-session&" > /root/.vnc/xstartup
I have modified a theme for xfce to be more finger-friendly.
see attachment
decompress that file, it contains a folder, Xfce_large.
place the folder in /usr/share/themes
tap on the rat in the lower-left of the desktop (opens menu)
select Settings by tapping its arrow (xfce is twitchy about the menu through the VNC, it may take a few tries to select items on the main menu.)
select Appearance. Then Style.
Scroll down to Xfce_large and tap it, then tap Close at the bottom.
Voila, oversized scrollbars and menu bar buttons!
If you don't like the size, the settings I modified are in the gtk-2.0 subfolder of Xfce_large in the file gtkrc
the modified settings are not tabbed over like the rest of the settings in the file.
I also changed the default font size, icon size, icon font size, and DPI settings, but that has to be done in the settings menus.
The optimus display is about 120 DPI, the default is 75. 120 looks much nicer I think.
You are awesome
good luck with flash. gnash only plays ads on my V, not whole videos.
get-flash-videos from google code works nicely, but it's a capture utility.
it does try to play with mplayer, but only shows a couple of frames per few seconds because the VNC display method of manually copying the framebuffer is very slow.
using a bandwidth meter (debian package cbm to be exact) the vnc uses from 14 to 80Kb per second of system bandwith on device l0.
I don't know what's pegging your CPU use, mine only tops out when the debian system is doing something. I built my chroot with debootstrap instead of using the market installer, no telling what is preinstalled on the image it downloads.
I am going to try this out once i'm finished trying to get the ubuntu side of the house working.
Can I append this to my post here and androidcentral with proper credits due to you so all may share?
uamadman said:
...Can I append this to my post here and androidcentral with proper credits due to you so all may share?
Click to expand...
Click to collapse
certainly. just test the instructions for functionality before adding them in.
I considered starting a thread on this myself but never got around to it.
I'll continue to contribute info as this develops.
as an extra, here's a link I've posted, a few places on both forums, with a clean debootstrapped debian filesystem, tarred up to shrink it for download.
I goofed a bit when compressing it though, when decompressed it's a single folder containing the filesystem.
http://www.4shared.com/file/iWuUtZgS/squeeze_05_2011tar.html
uncompressed, 9645 items, totalling 264.3 MB
compressed, 116.3 MB (121929580 Bytes)
this will either need the contents of the freshsqueeze folder it contains copied to an ext2 (or ext3/ext4 if you want to brave the damage from journalling on a SD card, which seemed to cause corruption when I tried ext4) partition on your SD card, or, copied into a blank loop ext filesystem if you prefer.
with an empty debian img file mounted as a loop filesystem on a linux box, you can copy everything from the freshsqueeze folder to the loop filesystem by:
Code:
cp -av /path/to/freshsqueeze/* /path/to/loopmountedimg
the loop filesystem method should allow you to continue using your startup scripts as-is, they'll need slight modifications to work with an ext partition like I'm using.
its resolv.conf and sources.list are already configured for 3g access and the main Debian repository, so it's pretty much plug-n-play. no extra packages are installed, you'll need to apt-get tightvncserver and a window manager of your choice, unless you just want the bash shell.
the first time you chroot in, you should use passwd to set a root password, and adduser to get a non-root account on there.
this is not a loop filesystem like what you are using. it is a full directory tree of a base squeeze install.
I would like to see this on the V.its my only phone right now.if I had 2 I would try it.
Sent from my BumbleV using XDA Premium App.
ummkiper said:
I would like to see this on the V.its my only phone right now.if I had 2 I would try it.
Sent from my BumbleV using XDA Premium App.
Click to expand...
Click to collapse
I don't think a chroot can hurt your phone. I even run mine bind-mounted into the root filesystem, with system r/w, and haven't ever had any problems a reboot didn't solve. and it's been since April since I had a forced reboot from running stuff in debian.
now, I don't know about the installer from the market, if it asks for root access multiple times, I'm not sure just what it's doing. I'll post my sd-ext startup script and instructions for using it here after dinner if you want to try it that way instead of with the installer app.
honestly, it's a much simpler process than the OP, but, hey, if it works, I'm not one to dismiss the method out-of-hand.
bigsupersquid said:
I don't think a chroot can hurt your phone. I even run mine bind-mounted into the root filesystem, with system r/w, and haven't ever had any problems a reboot didn't solve. and it's been since April since I had a forced reboot from running stuff in debian.
now, I don't know about the installer from the market, if it asks for root access multiple times, I'm not sure just what it's doing. I'll post my sd-ext startup script and instructions for using it here after dinner if you want to try it that way instead of with the installer app.
honestly, it's a much simpler process than the OP, but, hey, if it works, I'm not one to dismiss the method out-of-hand.
Click to expand...
Click to collapse
Sounds good to me.
non-loop sd-ext chroot method (prebuilt!)
Standard disclaimer:
These scripts and chroot method may bork up your phone, trash your userdata, destroy system files, get you slapped by your mother, make your phone catch fire and/or explode, and etc., ad nauseum.
Use at your own risk.
MAKE A NANDROID BACKUP BEFORE DOING THIS!
You'll probably be just fine, but it's nice to have a backup in case something goes haywire.
Disclaimer aside, it's worked great for me since March, hasn't crashed for months, and I use it multiple times per day.
My main inspiration was Saurik and his Debian & Android together on G1.
I'm sorry that I can't point to all the many, many sources I read through over the couple weeks it took me to get this set up, I took little bits from here, there, and everywhere, but Saurik's work was the main core of this system.
Apologies if you see some tidbit of your work in this... let me know and I'll be happy to give you credit.
Dysfunctions:
things that don't work while the chroot is running:
wifi hotspot in aospCmod and Bumblebee won't initialize; does work during chroot in aospCmod if turned on before chroot, though.
network info II app won't start during chroot; if opened before chroot it's fine.
ringtones on SDcard don't work in Bumblebee; but OI File Manager can read the sdcard during chroot.
these things still work ok once the chroot is exited on aospCmod. The chroot borks wifi on Bumblebee until reboot.
Click to expand...
Click to collapse
Info:
This script remounts / and /system both read/write and leaves them that way until you type exit in the bash shell of the chroot. Without r/w mounting of the / directory, installing Debian packages gives some errors, since it's running in the real root filesystem. Also, the / directory is wiped out on a reboot, so it's relatively safe to have mounted r/w. /system doesn't need to be r/w, I just like it that way, and I haven't had trouble with it since I was first experimenting with this. Feel free to modify the 'boot' script if having /system mounted r/w makes you nervous.
This has been tested on Zefie'sCM7 (outdated) and aospCmodOV ROMs.
It also worked on Bumblebee, but not as effectively.
The chroot will not stop Android from functioning. If Debian is busy with something, it will slow Android down, though.
You will still get/can make phone calls, text messages, etc. You can send the VNC viewer to the background and use Android apps while the Debian system is in the background.
Click to expand...
Click to collapse
On to the meat of the matter. I'm using an 8Gb SD card. I advise no smaller than 4Gb unless you just want to do command-line work in Debian and don't need a GUI.
First, these instructions require a Linux pc. On M$ Windoze? Use a Live CD or a virtual box, or you're on your own.
The first part of these instructions is to be completed on your pc. I'll let you know when to switch to the phone.
1) Mount your <empty> SD card on the pc. If it's not empty, back it up, because this will wipe it out. You'll need at least two partitions on it, three if you're using something like apps2sd (which I'm not using, and not really familiar with, so this tutorial is set up assuming you don't need to dodge an existing ext partition,) and another if you have a swap-enabled kernel and want to use it.
2) Use Gparted or a similar tool to partition the SD card. First partition FAT32 for Android, whatever size you feel you need. I'm using 1Gb.
Second partition is an ext2, ext3, or ext4 partition. Apps2SD style, you know what size and filesystem type you need here, I don't. For Debian on the 2nd partition, I advise 3Gb or more, ext2. ext4 corrupted my files, so I switched back to ext2. If you need an apps2sd partition, Debian will go on the 3rd partition, and you'll have to modify the two attached scripts accordingly.
If you're lucky enough to have a swap-enabled kernel, you can make a swap partition; it'll go last, whatever size is left. 256Mb-1Gb should be plenty depending on whether you use image processing or large compiling projects or some other memory hogging programs.
3) Mount the sd FAT32 and Debian ext partitions on the pc.
4) Download to your pc the base Debian Squeeze filesystem which I've debootstrapped, configured, and uploaded for you to save hours of hassle.
Also download to the same directory the two attached script files.
boot.txt
firstrun.txt
5) Open a ROOT shell. You need root privleges to untar the filesystem and retain its permissions. If you don't have a root shell, put sudo in front of the tar and cp-av commands.
6) cd to the directory you downloaded the squeeze_05_2011.tar.gz into. then type
Code:
tar -zxvf squeeze_05_2011.tar.gz
cp -av ./freshsqueeze/* /full/path/to/sdextDebianpartition
sync
and wait for it to finish.
7) type
Code:
cp ./boot.txt /full/path/to/sdFAT32partition/boot
cp ./firstrun.txt /full/path/to/sdFAT32partition/firstrun
sync
8) Now is the time to copy back the stuff you backed up from the SD card to the FAT32 partition, and any apps2sd style stuff if you have it. Then unmount your SD card and put it in the phone.
Now all remaining steps are done on your Optimus. You're finished with the desktop pc.
9) Open a terminal on your Optimus. I like SL4A, but Terminal Emulator works well too. Both are free.
10) Next step merges your existing Android system files into the Debian partition. This is neccesary because I haven't compiled a kernel and don't know of one for the Optimus with UFS enabled. So, Debian gets bind-mounted over the Android rootfs ( / directory) and having the Android system files accessible in the Debian filesystem is required to keep them playing nicely together, while protecting the original Android files from Debian at the same time.
Code:
sh /sdcard/firstrun
You won't need this script ever again unless you change ROMs and/or need to reinstall Debian. Changing ROMS without reinstalling a fresh copy of Debian may mess things up a bit since system files vary between ROMs and you'll still have the Android files from your previous ROM in your Debian filesystem.
This script and the 'boot' script are both listed at the bottom of this post if you want to read 'em.
11) Next, remount system r/w, copy the 'boot' file to /system/xbin and chmod 4755 /system/xbin/boot. If scripts are in /system/xbin and executable, you can run them with 'su -c'
Code:
su
mount -o remount,rw /system /system
cp /sdcard/boot /system/xbin
chmod 4755 /system/xbin/boot
mount -o remount,ro /system /system
OK, a basic Debian filesystem with no extra packages is now installed!
my Debian filesystem is on my 2nd sdcard partition. The comments in the 'boot' script should explain how to use another partition if you have apps2sd running or somesuch (I don't have many Android apps on my phone so don't need/use apps2sd function)
to use the script as-is, your linux flavor should be in the 2nd card partition. I use Debian, but any Debian-based distro should work, for example Ubuntu or DSL.
open a terminal and type
Code:
su -c boot
don't kill the terminal app... leave it running in the background.
when you're finished with linux, reopen the same terminal and type
Code:
exit
to cleanly dismount your linux. No reboot required!
Before you exit the first run of your new Debian system, you should download some packages. I advise tightvncserver, xfce4 (and xfce4-goodies if you want the extra glitz like a cpu monitor, bandwidth monitor, and such, without hunting the individual packages) and iceweasel so you can have a real rebranded firefox on your Optimus.
Code:
apt-get update
apt-get install tightvncserver xfce4 xfce4-goodies iceweasel
It'll take a while to download all that. Lots of data.
Once it's done downloading, configure tightvncserver.
Code:
vncserver
It'll ask you for a password. Choose one that's easy to remember. You'll need to enter it in the VNC viewer as well (next step)
IMPORTANT!
tightvncserver will ask you if you want a view-only password. Tell it no!
next:
Code:
vncserver -kill :1
to politely exit the vncserver. Otherwise you'll have to exit the chroot, reboot the phone, and run the 'boot' script again or it'll open server :2, :3, and so on each time you type vncserver. Each instance will eat more CPU, RAM, etc.
configure /root/.vnc/xstartup
Code:
echo '#!/bin/sh
xrdb $HOME/.Xresources
xsetroot -solid grey
export XKL_XMODMAP_DISABLE=1
xfce4-session&' > /root/.vnc/xstartup
after that,
you should use
Code:
passwd
to set a root password, and
Code:
adduser
to get a non-root account on there.
Code:
exit
will close the chroot. You can close the terminal after that until you're finished setting up the VNCviewer and want to start your lovely GUI.
Now, set up the VNC viewer like in the OP. Make sure your password matches the one you gave tightvncserver!
I advise 24 bit color. It slows things down ever so slightly, but to me, it's well worth the increase in eye candy you get over 8 bit.
most of the tutorials on the VNC suggest modifying the /root/.bashrc file to start the vncserver automatically (like here on xda) but I don't like that myself. I use the shell a lot, and the vncserver eats system resources. So, I manually start and stop the vncserver from the command line.
Code:
vncserver
to start, it defaults to a 1024x768 which seems to make programs happier than the 480x320 phone native resolution.
Code:
vncserver -kill :1
to stop it politely. Otherwise a phone reboot is required to get rid of vncserver files (by clearing out everything in the / directory which isn't replaced by the boot.img ramdisk) which make it open desktop :2, :3, and so on each time you run the program.
One major advantage to the bind-mounting in the rootfs is that Thunar works as a root explorer, and has access to the entire Android filesystem (except for the bind-mounted Debian directories, which hide the Android directories underneath, including /system/etc which is symlinked to /etc by the boot.img ramdisk,) as well as the complete Debian filesystem.
Pretty much everything I've tried works, unless it wants speed from the display. The VNC just slows that down way to much to use for video or games or suchlike. I'm working on native window support for X, but I need more practice in C to get it done.
Iceweasel works great, if a little slow, a rebranded full firefox on an ARMv6 device that mozilla won't release an apk for its wussy mobile version on. Go figure. The biggest problem is finding plugins compiled for ARM, the 'get plugin' button send you to sites offering x386 versions of the plugins. Yuk.
Icedtea open source java works fine.
Gnash plays ads but not videos.
Gimp works well.
Qemu works!
Eclipse even installs and runs (very slowly)
get-flash-videos captures flash exceptionally well. combined with an Android video player for .mp4 files, you can download and watch flash from lots of places, just not streaming.
alsa audio works through Iceweasel. Played audio clips from yodajeff.com just to test it.
3g works great.
Wifi detects the connection with iwconfig, I haven't tried sending data through it but the way 3g plugs right in I bet that wifi works equally well.
Since wifi and 3g work out of the box, I bet bluetooth would too with some config, but it needs extra packages to see the functionality.
The network meter plugin for xfce works. The device is rmnet0.
The cpu meter plugin also works.
At one point I had the battery meter from xfce-power-manager working but my last install broke it somehow. Ah, well.
once it's all together
open a terminal
to start it up:
Code:
su -c boot
for a gui,
Code:
vncserver
to kill the GUI,
Code:
vncserver -kill :1
to exit the chroot,
Code:
exit
the first time you run the GUI, you might want to add my Xfce_large theme to make the scrollbars and menubars easier to hit on the touchscreen. See the earlier post.
hopefully this helps people out. I spent quite a while getting it just how I wanted it, many googlings and picking bits from here and there.
contents of the scripts follow.
firstrun
Code:
#make /sd-ext directory if it doesn't exist
if [ ! -d /sd-ext ]
then
mkdir /sd-ext
fi
# mount 2nd sdcard partition
# if your linux is on a different partition than 2, substitute that number for the 2 in .../mmcblk0p2 below
# first unmount it; if not already mounted, system will echo 'umount: can't forcibly umount /dev/block/mmcblk0p2: Invalid argument' but this isn't an error to worry about
umount -l /dev/block/mmcblk0p2
mount -o noatime,exec,suid /dev/block/mmcblk0p2 /sd-ext
#copy files from Android to Debian without overwriting anything
yes n | cp -aiv /etc/* /sd-ext/etc
yes n | cp -aiv /root/* /sd-ext/root
yes n | cp -aiv /sbin/* /sd-ext/sbin
yes n | cp -aiv /sys/* /sd-ext/sys
boot
Code:
# debian lives here
export mnt=/sd-ext
# remount / and /system rw
mount -o remount,rw / /
mount -o remount,rw /system /system
# make new subdirectories in / for binding
for x in \
bin boot home lib media \
opt selinux tmp usr var
do
mkdir /$x
done
#make $mnt directory if it doesn't exist
if [ ! -d $mnt ]
then
mkdir $mnt
fi
# mount 2nd sdcard partition
# if your linux is on a different partition than 2, substitute that number for the 2 in .../mmcblk0p2 below
# first unmount it; if not already mounted, system will echo 'umount: can't forcibly umount /dev/block/mmcblk0p2: Invalid argument' but this isn't an error to worry about
umount -l /dev/block/mmcblk0p2
mount -o noatime,exec,suid /dev/block/mmcblk0p2 $mnt
# cleanup last session's tmp files, including last VNC session
rm -r -f $mnt/tmp
mkdir $mnt/tmp
# bind mount debian directories to /
for x in \
bin boot home lib media \
opt selinux tmp usr var \
etc root sbin
do
mount --bind $mnt/$x /$x
done
# set some system variables
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/etc:/sys:$PATH
export TERM=linux
export USER=root
export HOME=/root
# mount proc,sys,devpts
umount -l devpts
mount -o remount -t proc proc /proc
mount -o remount -t sysfs sysfs /sys
mount -t devpts devpts /dev/pts
# softlink framebuffer (for future use,) and existing mounts
ln -s /dev/graphics/fb0 /dev/fb0
cat /proc/mounts > /etc/fstab
cat /proc/mounts > /etc/mtab
# 'boot' with chroot into debian bash shell at /
chroot / /bin/bash
# done now, clean up after exit to keep Android happy
# remove softlinks and replace backed up mtab and fstab
rm /dev/fb0
cd /
# unmount subdirectories
for x in \
bin boot home lib media \
opt selinux tmp usr var \
etc root sbin
do
umount -l /$x
done
# remove non-Android subdirectories
for x in \
bin boot home lib media \
opt selinux tmp usr var
do
rmdir /$x
done
# remount / and /system ro
mount -o remount,ro / /
mount -o remount,ro /system /system
That is an excellent write up. Link added to first post.
appreciate the compliment.
it took two hours to type up and another two to redo it all after firefox crashed on my pc right as I was finishing.
if anyone notices issues or errors in it, let me know and I'll try to fix 'em.
I'll try to help out if anyone has problems getting it working, odds are I missed some detail or typo.
well it took me all day to install ubuntu on this pc to find out it was my video card so im using the built in video on the mb and it worked.I will be doing this tomorrow as its 2am here now.ive never had a problem installing ubuntu before lol.the live cd would just freeze no matter which flavor of linux i used.
ummkiper said:
well it took me all day to install ubuntu on this pc to find out it was my video card so im using the built in video on the mb and it worked.I will be doing this tomorrow as its 2am here now.ive never had a problem installing ubuntu before lol.the live cd would just freeze no matter which flavor of linux i used.
Click to expand...
Click to collapse
eek.
I don't really like ubuntu much, it reminds me too much of Windoze, all bloated up and running a bunch of stuff I never told it to
but I put it on after reading dev reccomendations to use it when making the final switch from windoze, and now I only use it for watching dvds and the stupid digital tv the broadcasters switched to a while back to obsolete everyone's receivers (use an hvr950 usb tuner, which I had to force an older driver into the kernel to get working.)
put debian on the pc to dev with, much less gripey and intrusive, but trickier to configure.
ummkiper said:
well it took me all day to install ubuntu on this pc to find out it was my video card so im using the built in video on the mb and it worked.I will be doing this tomorrow as its 2am here now.ive never had a problem installing ubuntu before lol.the live cd would just freeze no matter which flavor of linux i used.
Click to expand...
Click to collapse
I have yet to get Ubuntu running nicely on a android. I'm sure i'll figure it out soon enough. I'm donating close to 2-4 hours a day to this right now. I hope i can get everything running how i like without learning how to write my own code... which would take forever ...
oh i dont want it on android i just wanted it on my desktop but it appears my desktop has issues while everything works fine in windows ubuntu still freezes or restarts the gui.i have xubuntu on my ibm thinkpad its slow but runs its ubuntu with xfce so i guess ill use my laptop to do this and keep win on my desktop.
ummkiper said:
oh i dont want it on android i just wanted it on my desktop but it appears my desktop has issues while everything works fine in windows ubuntu still freezes or restarts the gui.i have xubuntu on my ibm thinkpad its slow but runs its ubuntu with xfce so i guess ill use my laptop to do this and keep win on my desktop.
Click to expand...
Click to collapse
it shouldn't really matter too much what machine you use to set things up, the key things you need are a way to untar the premade filesystem, ext2 support, and a usb port to transfer files to the phone.
you could download the files in windoze if your laptop lack web access.
you <might> be able to use a windoze utility to format the first part of the SD card with a small FAT32 partition, then use CWMA recovery to add an ext2 partition to the card, then extract with 7zip on windoze into the ext partition.
I used to have a freeware program to add ext2 support to windoze, but it's buried on one of my old 500Mb harddrives in a box somewhere. bet you could google something like that up if your laptop gives you trouble.
cp ./boot.txt /media/disk/boot
cp ./firstrun.txt /media/disk/firstrun
sync
cp: cannot stat `./boot.txt': no such file or directory
cp: cannot stat `./firstrun.txt': no such file or directory
yeah um i dont see these files in the tar and this is the errorr im getting so where do i get these 2 files from
ummkiper said:
cp ./boot.txt /media/disk/boot
cp ./firstrun.txt /media/disk/firstrun
sync
cp: cannot stat `./boot.txt': no such file or directory
cp: cannot stat `./firstrun.txt': no such file or directory
yeah um i dont see these files in the tar and this is the errorr im getting so where do i get these 2 files from
Click to expand...
Click to collapse
I made the tar some time back.
boot.txt and firstrun.txt are attached to the bottom of the instructions.
edit: per ummkiper's suggestion I have also linked the attachments right after the filesystem link.
Related
Until we get a dedicated forum, at that time this thread can be moved, we can talk about development and progress aside from rooting. I'll start off with remapping the buttons on the front of the device.
In DOS you can pull the keyboard map file below
Code:
adb pull /system/usr/keylayout/TWL4030_Keypad.kl
Once pulled you can edit it in a program like Notepad++ and edit the following lines
Code:
key 407 RIGHT_NEXTPAGE
key 412 LEFT_NEXTPAGE
key 139 LEFT_PREVPAGE
key 158 RIGHT_PREVPAGE
You can change LEFT_NEXTPAGE to MENU and LEFT_PREVPAGE to BACK and now you have hard mapped Menu and Back buttons. I have ordered my own nook I've just been messing with a co-workers so I haven't found the Power button or "n" button mappings if they are in fact in the file.
Finally you can push the file back to the nook
Code:
adb shell mount -o rw,remount -t ext2 /dev/block/mmcblk0p5 /system
adb push TWL4030_Keypad.kl /system/usr/keylayout/
adb shell chmod 644 /system/usr/keylayout/TWL4030_Keypad.kl
zonyl said:
I've locked it up before when trying to boot nookie. Called tech support and they told me that holding down power button more than 20 secs, does a hardware reboot. Works.
Click to expand...
Click to collapse
elmonica said:
I installed the Android app store, but I am receiving the following error message:
"For security your phone is set to block installation of applications not sourced in Android Market"
How do I turn that off?
Thanks.
Click to expand...
Click to collapse
This will allow non-market installs [unzip sqlite3.zip]
Code:
adb shell mount -o rw,remount -t ext2 /dev/block/mmcblk0p5 /system
adb pull /data/data/com.android.providers.settings/databases/settings.db settings.db
sqlite3 settings.db "update secure set value=1 where name='install_non_market_apps';"
adb push settings.db /data/data/com.android.providers.settings/databases/settings.db
del settings.db
Also if you want to install SQLite3 to the N2E you can just push it to the device. [unzip sqlite3 (push to n2e).zip]
Code:
adb shell mount -o rw,remount -t ext2 /dev/block/mmcblk0p5 /system
adb push sqlite3 /system/bin
hey, i dont own nook touch, but this should work, just as on Nook color (from video I seen):
to go BACK, you dont need to remap key, just swipe with finger from right-to-left in clock area (on nook color it was at bottom, but on nook touch it should be at top position).
post results..
xmas_spirit said:
hey, i dont own nook touch, but this should work, just as on Nook color (from video I seen):
to go BACK, you dont need to remap key, just swipe with finger from right-to-left in clock area (on nook color it was at bottom, but on nook touch it should be at top position).
post results..
Click to expand...
Click to collapse
Yes, I've been doing this.
Nook 2nd Ed. Touch --from an SD card?
(First, sorry if this isn't the perfect place to post this...so feel free to move it if there's a better place.)
Ahem...uh, well...this question comes up because I happen to work at a business that is currently selling Nooks, and we've just received the new Touch version. However, for some brilliant (<<sarcasm) reason the demo units we've received are not really demo's, they only play a little presentation that shows how what the features are, and it loops over and over. So, we're very surprised that with this new touch sensitive Nook the user really doesn't have any chance to see how it actually works. No ability to test it, read, use the touch screen..nada! Wtf??
I'm curious whether someone might be able to make a bootable copy of the Touch software that will run off a SD card? If we could at least boot off the SD card so customers could at least see how the thing really functions, then it sure would make selling them easier...and no harm done afterward
-JTT
jttraverse said:
(First, sorry if this isn't the perfect place to post this...so feel free to move it if there's a better place.)
Ahem...uh, well...this question comes up because I happen to work at a business that is currently selling Nooks, and we've just received the new Touch version. However, for some brilliant (<<sarcasm) reason the demo units we've received are not really demo's, they only play a little presentation that shows how what the features are, and it loops over and over. So, we're very surprised that with this new touch sensitive Nook the user really doesn't have any chance to see how it actually works. No ability to test it, read, use the touch screen..nada! Wtf??
I'm curious whether someone might be able to make a bootable copy of the Touch software that will run off a SD card? If we could at least boot off the SD card so customers could at least see how the thing really functions, then it sure would make selling them easier...and no harm done afterward
-JTT
Click to expand...
Click to collapse
Of course this might be possible, but considering the limitations of this device (black and white, not meant to be a tablet) this would be very hard to achieve. The first step would be finding out if the thing can boot sd cards with a custom boot image.
ikingblack said:
Of course this might be possible, but considering the limitations of this device (black and white, not meant to be a tablet) this would be very hard to achieve. The first step would be finding out if the thing can boot sd cards with a custom boot image.
Click to expand...
Click to collapse
I do not see why it couldn't boot from SD since it boots from the SD to actually root it. I see ALOT of the original Nook color mod's and scripts working on this little device since it does not deviate from the Nook color design much.
Some more resources available here, including the installation for Kindle app
What does the partition shceme look like on the Nook Touch? Is it anyway similar to Nook Color? Don't have one yet, but plan on picking one up soon.
Thanks,
Racks
ikingblack said:
Of course this might be possible, but considering the limitations of this device (black and white, not meant to be a tablet) this would be very hard to achieve. The first step would be finding out if the thing can boot sd cards with a custom boot image.
Click to expand...
Click to collapse
10 char
Sent from my BAMF Thunderbolt powered by Sense 3.0
I was hoping that mapping HOME to one of the left buttons would bring up my launcher (ADW) but instead it it brings up the same menu as the N button. Any ideas how to map a button to a launcher?
I have found that Button Savior dies a lot, which means I can't get back to the launcher.
I remap the left keys as follows:
key 412 VOLUME_DOWN
key 139 VOLUME_UP
In Kindle, I set Kindle to use volume buttons for page turning. Then I can use the hard buttons for page turning in Kindle ! This also works in other reading programs for example Aldiko, NewsRob.
Does anyone know the key code of the Nook button and the action to launch the launcher ?
aruangra said:
I remap the left keys as follows:
Does anyone know the key code of the Nook button and the action to launch the launcher ?
Click to expand...
Click to collapse
Looks to be hard coded into the framework or something.
In trying to install the gapps on my NT, I've had to restore to factory twice. I started using the instructions for the NC here:
http://nookdevs.com/NookColor:Manua...gapps_google_applications_onto_your_NookColor
Code:
adb push nc_gapps.zip /media
adb shell
mount -o rw,remount -t ext2 /dev/block/mmcblk0p5 /system
cd /media
miniunz -x nc_gapps.zip -d /system/
echo "ro.config.nocheckin=no" >> /system/build.prop
exit
After installing the signed_youtube.apk I reboot.
Can someone who's done this post some details?
jocala said:
In trying to install the gapps on my NT, I've had to restore to factory twice. I started using the instructions for the NC here:
http://nookdevs.com/NookColor:Manua...gapps_google_applications_onto_your_NookColor
Code:
adb push nc_gapps.zip /media
adb shell
mount -o rw,remount -t ext2 /dev/block/mmcblk0p5 /system
cd /media
miniunz -x nc_gapps.zip -d /system/
echo "ro.config.nocheckin=no" >> /system/build.prop
exit
After installing the signed_youtube.apk I reboot.
Can someone who's done this post some details?
Click to expand...
Click to collapse
I know framework.jar does not like Nook Touch. BTW how did you factory reset?
To do a factory reset reboot x 8. Interrupt each boot with a powercycle prior to the "Nook..." screen.
It's really getting tough to find things, I'm following multiple nt threads, and I could swear someone wrote about installing gapps.
remount
Below is a handy script for mounting /system I keep in my /system/xbin directory. Originally from sdx for my epic, modified for the nook touch.
Code:
#!/system/bin/sh
case $1 in
rw)
echo "Remounting /system in read/write mode"
mount -o rw,remount -t ext2 /dev/block/mmcblk0p5 /system ;;
ro)
echo "Remounting /system in read-only mode"
mount -o ro,remount -t ext2 /dev/block/mmcblk0p5 /system ;;
*)
echo "usage: remount rw -or- remount ro";;
esac
/system/xbin does not exist, it needs creation. I keep personal scripts there, and binaries such as busybox, bash, su, etc.
Extracting the root filesystem
These instructions assume using a linux console.
The root filesystem lives in a u-boot/PPCboot ramdisk. These instructions tell you how to extract it.
Boot your nt with the "rooted forever" sdcard while connected with usb.
Make a copy of the boot partition. After this you may reboot your nt normally.
$ tar -cf boot.tar boot/
$ tar xvf boot.tar
$ cd boot
Extract the uRamdisk file. first 64 bytes is the u-boot header, we need to skip it.
$ dd if=URamdisk bs=64 skip=1 of=ramdisk.gz
ramdisk.gz now contains the root file system.
Copy ramdisk.gz to a empty directory, then extract it:
gunzip -v ramdisk.gz
cpio -iv < ramdisk
Now the root file system has populated your work dir. Delete the file ramdisk. You can now make changes to the root file system, and using mkimage (in theory) reconstruct the uRamdisk.
That part I haven't done yet.
racks11479 said:
What does the partition shceme look like on the Nook Touch? Is it anyway similar to Nook Color? Don't have one yet, but plan on picking one up soon.
Thanks,
Racks
Click to expand...
Click to collapse
Code:
Filesystem Size Used Available Use% Mounted on
tmpfs 113.8M 0 113.8M 0% /dev
tmpfs 4.0M 0 4.0M 0% /sqlite_stmt_journals
/dev/block/mmcblk0p2 15.7M 118.5K 15.6M 1% /rom
/dev/block/mmcblk0p5 278.9M 187.2M 88.8M 68% /system
/dev/block/mmcblk0p8 789.3M 80.2M 701.1M 10% /data
/dev/block/mmcblk0p7 232.4M 6.1M 223.9M 3% /cache
/dev/block//vold/179:6
236.3M 682.0K 235.6M 0% /media
/dev/block//vold/179:17
7.4G 3.1G 4.3G 42% /sdcard
dropbear & rsync
Dropbear and rsync are installed and working well on the nt. This setup allows me sync the libraries on most of my reading devices (exceptions PlayBook & iPad - walled gardens).
Hi! From a few months, since I started flashing new ROMs, my gnex became slower and very laggy. The real problem is that it is very slow even when flashing ROMs and other stuffs in recovery mode. I'm currently using CM10 with Franco kernel and ClockworkMod recovery. Changing kernel and wiping didn't solved anything. What could be the reason?
Try to download eMMC brickbug check, is an app that check if your memory chip is affected by a factory bug (since there's a series of chip afflicted), this bug slow down all the system and makes it very laggy. Try to take a shot, and if the result is that you are afflicted in the forum there's the solution!
No bug and no errors in memory test
1 - Backup all files on your SD card .dont include /android/ Directory.
2 - Flash Google Factory Image for 4.1.2
2.1 - Flash Latest TWRP
3 - Download "Forever Gone"
4 - Start it and let it run through your empty SD card (it'll overwrite it with 0s, it helped fix a problem on the nexus 7 and helped me with some SD card IO lags, And it removes all traces of what once was, so...)
5 - Download Rasbeanjelly 11-6 (the 4.1.2 version ) It's pure AOSP, Blazing fast and the standby drain is amazing (and notifications don't delay even when asleep )
6 - Download Trinity Kernel latest stable (Link http://goo.gl/jl1Ga )
7 - Flash the above and set up your ROM.
SECTION TWO
8 - Go to Google maps >> Location settings & turn everything off.
8.1 - If you still want location history use backitude instead of latitude
9 - Use one chat app instead of many (especially FB messenger it sucks battery big time, use IMO . It's the best, has file transfer, audio/video call, lovely interface and supports most networks even skype.
10 - Sign out of Google talk
11 - Turn off Google+ Sync
12 - Turn off Google Backup
13 - If you don't use it, Turn off Google now (i think it's nice actually).
14 - Install Betterbatterystats & BatteryMonitorWidget to keep watch of any batter hogs should they come along.
15 - Install Velis Auto Brightness
Trust me on this one with trinity & rasbeanjelly
Set the CPU to 1000thingy max/600 thingy minimum
I believe that when i get a quality phone for this kind of cash i shouldn't compromise functionality c: so i don't use battery saving apps, i need my data on and always, I get about 17 hours with ~3 hours screen time, Pm me if you need anything else ^_^
[Edit] Optional : Turn off screen touch sounds/Vibration, if you want to...
-----------------------------------------------------------------------------------
Silencing maps (preventing non user caused wakelocks)
1. Sign out and /or freeze latitude.
That's it!
Additional information:
-manual startup of maps will work anyhow, don't worry,
-navigation still works
-toggling gps on will show your current position on the map
Do you format partition cache and Dalvik cache before flashing ROM?If no then this is the problem you are facing..coz i've flashed 100's of ROMs but no problem yet!!
Wait wait wait (xD)..it's very slow even WHILE FLASHING anything (or making backups) in recovery mode (when there's the green android with the rotating blue frame inside). I can't see how changing ROM or changing settings inside the OS can solve the problem...I'm not an expert but I think it's a problem at a lower lever..like kernel, drivers, chips..something like that :silly:
..anyway..cause not an expert I tried the Trinity kernel and didn't make any difference..and I will try to use Forever Gone after I made a backup and restored to factory image..
This may and probably applies.
http://forum.xda-developers.com/showthread.php?t=1971852
Sent from my Galaxy Nexus using Tapatalk 2
tiny4579 said:
This may and probably applies.
http://forum.xda-developers.com/showthread.php?t=1971852
Click to expand...
Click to collapse
Ok I made a bench and I had horrible results. This night I'll try to fix this...
Restore all to stock and these are the results:
Seems that you have the same buggy eMMC chip of type V3U00M.
The phone might slowdown again after writing some data on it. You should add discard to your mount options.
Guide (filling the partition using dd and rm is optional for you)
I don't know how to run the code of the step 3: I tried to install Android Termina Emulator and run the commands here..."su" worked and the dialog box of SuperSU appeared asking me the permission, but when I wrote "mount -o remount,discard /data" nothing appened. Sorry men..I don't know what I'm doing
He says:
Type the following commands in a Terminal or preferably an adb shell:
Click to expand...
Click to collapse
and than
Therefore using adb would be better... Some users also reported a speedup when this is done in recovery mode (CWM/TWRP) via adb.
Click to expand...
Click to collapse
How can I do that? Like...reboot into recovery mode, connect the phone to the pc, move to the folder of adb.exe and run the command as "adb su" and "adb mount -o remount,discard /data" ? ...I don't think :silly:
nicari92 said:
I don't know how to run the code of the step 3: I tried to install Android Termina Emulator and run the commands here..."su" worked and the dialog box of SuperSU appeared asking me the permission, but when I wrote "mount -o remount,discard /data" nothing appened. Sorry men..I don't know what I'm doing
Click to expand...
Click to collapse
The command did add the discard option, but it is not showing any output
nicari92 said:
[...] How can I do that? Like...reboot into recovery mode, connect the phone to the pc, move to the folder of adb.exe and run the command as "adb su" and "adb mount -o remount,discard /data" ? ...I don't think :silly:
Click to expand...
Click to collapse
Nearly right: You have to open an adb shell (using the command adb shell) and then type the commands
Well, as you don't really know what you're doing, I think that it's not such a great idea to experiment with the command line in superuser mode...
You can get the same results doing the following:
Install Script Manager from Play Store.
Download the following text file to your internal memory: remount.sh
Browse to the script in Script Manager and add it to be run at boot (Open as... Script/Executable). Make sure you check both the Boot and Su options, then press Save and Run.
Now you should be done if you don't already experience huge slowdowns of your memory (0.4-0.5 MiB/s random write is OK)
If you HAVE slowdowns, install Forever Gone. Fill your sdcard (aka securely erase deleted files) and then free the filled space. Done.
Install and run LagFix (fstrim) from Play Store. Done.
---
FYI: The code in remount.sh is the following:
Code:
#!/system/bin/sh
mount -o remount,discard /data
mount -o remount,discard /cache
Ok thanks!
Do I have to relaunch the command (or recreate the script) every time I flash a new ROM?
nicari92 said:
Ok thanks!
Do I have to relaunch the command (or recreate the script) every time I flash a new ROM?
Click to expand...
Click to collapse
After a full wipe you have to re-install the app and configure the script again to make sure it is launched on every boot.
Install seeder v1.4 too.
Look for it in XDA(free) or the Play store(paid)
--------------------------------------------------
If I have helped you.... hit that sexy thanks button. ^_^
AW: [Q] Very slow and laggy Nexus
I don't think that waiting for the random source is the problem here...
The thread I linked has an app that can run the trim command which should help io.
Sent from my Galaxy Nexus using Tapatalk 2
Direct Link
You can use it instead of dd&rm / Forever Gone. The tool does this job better and is faster, I would say it's the preferred method now.
Doesn't permanently solve the problem, though (unless you run it periodically) ...
So maybe the best is using the discard init script plus this app once.
once you have run the remount script why do you need the lagfree app?
ph4zrd said:
The command did add the discard option, but it is not showing any output
Nearly right: You have to open an adb shell (using the command adb shell) and then type the commands
Well, as you don't really know what you're doing, I think that it's not such a great idea to experiment with the command line in superuser mode...
You can get the same results doing the following:
Install Script Manager from Play Store.
Download the following text file to your internal memory: remount.sh
Browse to the script in Script Manager and add it to be run at boot (Open as... Script/Executable). Make sure you check both the Boot and Su options, then press Save and Run.
Now you should be done if you don't already experience huge slowdowns of your memory (0.4-0.5 MiB/s random write is OK)
If you HAVE slowdowns, install Forever Gone. Fill your sdcard (aka securely erase deleted files) and then free the filled space. Done.
Install and run LagFix (fstrim) from Play Store. Done.
---
FYI: The code in remount.sh is the following:
Code:
#!/system/bin/sh
mount -o remount,discard /data
mount -o remount,discard /cache
Click to expand...
Click to collapse
Thanks a million... Works like a charm.
Please rate this thread whether good or bad, I like feedback as this is my first in depth guide I have written. Thanks!
I know there are apps that make it as easy as a download and a button press to install linux on an Android phone, but I had hardly any room on my 8GB SD card, and I wanted to have a safe, reliable, and fast installation (my cards class 4). Also, this creates a lightweight and customisable installation, as all you start off with is the Debian shell, which is a 50MB download.
This guide will take you through downloading the app, to installing Debian in the loop file on your phone, to installing a VNC server and getting a GUI (in this case LXDE) up and running. So, without further ado....
PREREQUISITES
Your phone
Free space on /data/ , I would recommend at least 768MB for this. Unfortunately....
No apps to sd script... I'm not sure on this, prior to setting this up, I installed an a2sd script and my Debian shell would not work. Coincidence? You try it. I don't know.
I would have thought a lightweight ROM would help. This works fine for me, and I'm running Andromadus CM10.1 build 10. I don't know how Sense (which imo is pretty heavy) compares to Android 4.2.1, but I reckon AOSP is a good bet for any version of Android.
Terminal Emulator
Your brain. Of course, don't be afraid to ask questions, I'm sure I'll miss something
The recognition that I take NO RESPONSIBILITY AT ALL for cracked screens, disappearing keyboards, or gravitational collapses of the Vision's awesomeness creating a black hole and / or supernova which obliterates Earth and the Milky Way, although would look spectacular. Please bear in mind that this could genuinely mess up your device pretty bad, although only really badly if you try... yes, you can brick your phone or wipe EVERYTHING. So make a Nandroid. But once again, I'm the one that's laughing.
Click to expand...
Click to collapse
INSTALLING AND SETTING UP THE APP
Download Linux Installer STANDARD from the Play Store, or the ADVANCED version if you wish to contribute to the devs/ although you only need the STANDARD version for this.
I would suggest reading through their own guide first, although be aware this only covers getting a Debian shell up and running. Especially the bit towards the end which tells you how to muck up your device.
Anyway, the bit where you install the shell is here. I'll take you through what I suggest now, though.
Open the app
Menu > Setup
Install in a block device = [TICK]
Use loop file = [TICK]
Preferred distribution = Debian (Ubuntu doesn't work, according to the devs.)
Distribution version = I use Stable, I would've thought any Squeeze variant will do.
CPU architecture = armel by default, Don't change this.
Hostname = This is used for VNC. Default is fine.
Domain name = This is used for VNC. Default is fine.
Chroot point = /data/local/mnt/Linux . DO NOT USE /data/data/ EVER.
Name of chroot launcher script = linuxchroot . This is the command used to start the Debian shell
Server = blank by default. Don't know what this is used for, but is not important to us.
IP Version = IPv4 by default. I don't see any need to change this.
Loop file = /data/local/tmp/Linux.loop . DO NOT USE /data/data/ EVER.
File Size = 768MB . This is what I use, it's enough for VNC server, LXDE, C++ compiler, but not much else. I would not recommend any less.
Maximum loop dev = errrm. I don't know what this does. I've seen people use 32. Default is 8. I've tried both, and can't tell the difference. Stick to 8 to be safe.
Ext version = Default. This is checked automagically
Console refresh latency = Default (10). I don't know what this does.
Choose start panel = Default (Installer). This is just the screen the app starts on. Installer is easier.
Bind Android = [TICK] if needed, [BLANK] for safety. This means you can access your whole phone, that is, all the directories, root, sd card, of your phone, from your Linux installation. Could be useful, but probablyt not worth risking if you won't use it.
Send debug logs = [TICK] Default
Screen always on = [TICK] Default
Use embedded Busybox = [TICK] Default
Allow write to /system = [TICK] I suggest using this, I got problems with this disabled
Allow remount with dev/exec = [TICK] Once again, I'm not sure, I've seen people use it, but it's not essential
Click to expand...
Click to collapse
CREATING AND MOUNTING YOUR LINUX.LOOP, AND INSTALLING DEBIAN INTO IT
I think the original instructions are fine for this. I'll quote them here just in case you can't find them (red text is my input)
click create target loop (takes 2mn to write 500M on class 4 card)
click format target loop (50s)
click mount loop
click install distribution in loop. Installation should take between 15 and 50 mn depending on your Internet connection speed, and phone specifications (Flash and CPU speed). Installation process will temporally disable screen saver so that the phone will stay awake, and Internet connection will not be automatically disabled or put in sleep mode.
click Update launcher script.
You can now connect to your phone using any local console, via ConnectBot or adb shell You won't do this, instead open up Terminal emulator.
type su into the console
type linuxchroot in this console
you are now in a standard GNU/Debian environment, created via debootstrap. Network is already configured; you shall type aptitude update, then you can install any package you want.
Read messages carefully, and read the full tutorial on our website. URL is given in the About pop-up
Well done, you're running Debian shell on your Vision yay!
Click to expand...
Click to collapse
INSTALLING A VNC SERVER, X.ORG AND LXDE
This is the fun bit. We can now get LXDE up and running and access it via VNC (Don't worry, still on the phone... you'll see )
First, install android-vnc-viewer
Open up terminal emulator
Type su to be superuser
Type linuxchroot
This is what got me confused. I couldn't use apt-get, I got all sorts of errors. In order to fix these, WHENEVER YOU WANT TO INSTALL ANYTHING, type the following:
Code:
export PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin
Now you can install your vnc server:
Code:
apt-get install tightvncserver
and now the X Windows System (this is needed for the GUI)
Code:
apt-get install xorg
and now LXDE.
The minimum set of elements, without recommended apps like file manager (this is lightest, but not particularly useful:
Code:
aptitude install --without-recommends lxde-core
The minimum set of elements (I suggest using this):
Code:
apt-get install lxde-core
A complete set of elements:
Code:
apt-get install lxde
A complete Debian LXDE desktop environment (Don't use this, it'll be heavy and you'll use up all your space (unless you had much more than 768MB))
Code:
apt-get install task-lxde-desktop
Unfortunately, you cannot use the LXDE desktop just yet. We need to set up the VNC server.
Code:
vncserver
This will start up an X-Windows session and create a vnc startup file. Type in your password (if you're a n00b, be aware that you won't be able to see stars or anything). You don't need the second password it asks for.
Now kill the VNC session:
Code:
vncserver -kill :1
Now we need to set up the VNC startup file:
Code:
cd /root/.vnc/
nano xstartup
Use the trackpad to navigate, type as normal.
Comment out etc/X11/xsession :
Code:
#etc/X11/xsession
At the bottom, add the lines to start up LXDE:
Code:
startlxde &
lxsession
Now save the file: Hold down vol-down, then y, then o .
Exit nano: Hold down vol-down, then y, then x .
Now we need to edit the .bashrc file:
Code:
cd /root
nano .bashrc
After all the comments, add the following lines:
Code:
export USER=root
cd /
rm -r -f tmp
mkdir tmp
cd /
vncserver -geometry 800x480
If you know how to use VNC on a tablet, just change vncserver -geometry to that resolution:
Code:
vncserver -geometry heightxwidth
Now save the file: Hold down vol-down, then y, then o .
Exit nano: Hold down vol-down, then y, then x .
Type exit to exit the Debian Shell. Close terminal emulator, and reboot.
Click to expand...
Click to collapse
RUNNING OUR NEWLY INSTALLED LXDE GUI
Now we've rebooted, open terminal emulator and run the Debian shell as normal (linuxchroot).
This time, you'll see some text about the X server running. If not, something's gone wrong.
Leave terminal emulator running, and go and open android-vnc-server from your app drawer.
Set up the app as follows:
Nickname = whateveryouwant
Remeber the password you entered before, when we were running the shell? No? D'oh!
Address = localhost
Port = 5901
Click connect... yay ! You should have LXDE up and running, if not, go over this guide, and if you think you've done everything, either hate on me or send me a useful PM outlining your problem.
Click to expand...
Click to collapse
SETTING UP TERMINAL EMULATOR
I've written a really quick script which asks you whether yo want to start linuxchroot upon opening Terminal Emulator. It's really small and quick, I've attached the actual script, here's how you set it up:
Download the attached "startup.txt" script, and put it on the root of your SD card ( /sdcard/startup )
Rename it to "startup" (without the quotes, and no extension, basically just get rid of the ".txt" bit on the end)
Open Terminal Emulator, and type the following:
Code:
su
mount -o rw,remount /system
cp /sdcard/startup /system/xbin/
chmod 700 /system/xbin/startup
chown root.root /system/xbin/startup
Now open Terminal Emulator preferences, scroll down to "Initial command" and set it as follows:
Code:
su
startup
Restart Terminal Emulator
You should be greeted with "Start linuxchroot?" and some options, Yes or No
Type 1 to say yes, this executes linuxchroot, starting the Debian shell
Type 2 to say no, this exits the script and does not mount Debian, allowing you to use Terminal Emulator as normal
I like this arrangement, as it means I don't have to type "linuxchroot" to start it every time or to auto start it and have to exit when I don't want to use it. It's especially quick if you use SuperSU, I find this generally faster than ChainsDD's "normal" Superuser, so su is executed instantly and you can quickly type "1" or "2" and you're off!
Click to expand...
Click to collapse
OTHER IDEAS
compile C++ programs:
Code:
export PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin
apt-get install g++
Write your program, save as program.cc
Code:
g++ -o program program.cc
./program
Click to expand...
Click to collapse
Thanks for reading, I hope this helped !
Very nice. I will be trying this later.
About how much memory is being used (with and without LXDE session started)?
Thanks for your efforts.
pepar0 said:
Very nice. I will be trying this later.
About how much memory is being used (with and without LXDE session started)?
Thanks for your efforts.
Click to expand...
Click to collapse
Hi, sorry for the late reply.
TBH I don't think much memory is used at all really, to put it into perspective I've still got 140MB of RAM free whilst running this.
I haven't actually tested memory usage, but I expect you'd need over 100MB free RAM if you're planning on running LXDE. I have tried this in various situations however, and I would not recommend running zeppelinrox's V6 SUpercharger, or any other memory management script. This is because they meddle with VM heap sizes and minfrees and other RAM stuff, and ideally you should use the default 128MMB VM Heap size. This means you can use up a whole 128MB of RAM just for Linux (I don't know how processes are spread though, so you may be using more).
If you're running Sense, I'd be interested to know which version and how well this runs. If your using AOSP (CyanogenMod, AOKP, anything like that) you should be fine, as this works perfectly on Andromadus CM10.1 build 11, which is JB4.2, and presumably the heaviest version of Android.
Hope this helps, and I'd encourage you to try this, it's really cool once it's set up, even if it's not particularly useful to you
It's stuck for me right after I create the loop file. It asks me to tap the "format loop target" button but it's nowhere to be found. I'm only presented with the create target loop one.
crestofawave said:
It's stuck for me right after I create the loop file. It asks me to tap the "format loop target" button but it's nowhere to be found. I'm only presented with the create target loop one.
Click to expand...
Click to collapse
That sounds odd. Not to sound patronising, but this is all I can think of:
Have you got enough space on /data ?
Did you enable write to /system ?
Perhaps there was a Superuser error?
Have you left it long enough to finish? If it says "please wait" at the top, it's still doing it's thing. I expect this is the most likely cause, as the app doesn't make it very clear when it's finished an operation.
D'you mind sending a screenshot before and after creating the loop file, if the problem persists? Thanks, hope you sort it out
Maybe we should use Lubuntu? It takes 100-120mb at startup and it have pretty good configured LXDE and other *candy's* for touch installable.
And how about E17? it's more lightweight than LXDE. Look to Bodhi Linux *maybe we should use ARM vertion?*. It based on ububntu and It have a touch vertion too.
sergeikaspd said:
Maybe we should use Lubuntu? It takes 100-120mb at startup and it have pretty good configured LXDE and other *candy's* for touch installable.
And how about E17? it's more lightweight than LXDE. Look to Bodhi Linux *maybe we should use ARM vertion?*. It based on ububntu and It have a touch vertion too.
Click to expand...
Click to collapse
I do not know of any apps that allow you to install Lubuntu, although if you knew how you could get the IMG and do it yourself. I wrote this guide because it allows you to start from the ground up, with a simple Debian shell to installing whatever GUI and apps you want, or no GUI at all and just some terminal apps (if you can call them that).
Tat means you could install Gnome if you were so inclined, or any other window manager, desktop suite or anything, really. If you had room you could get the Android SDK. Just cause I used LXDE in my example doesn't mean you have to. Just install E17 or whatever you want and in the vnc startup file just tell it to run that instead of LXDE.
Hi!
I'm trying to install Debian Squeeze using your guide but with "linux.loop" file being on the SD-Card (I have like 100 MB free space on /data). When I clicked "Mount loop", Linux Installer after a few seconds just crashed. Then I turned it on again - I was able to start the installation anyway and now I'm installing it.
Was that crash something that could make Debian not working?
Hi there,
so this is a guide how to install the Sugar Learning Platform ( http://www.sugarlabs.org/ ), which might be known from the OLPC project ( http://one.laptop.org/ ) on a low cost tablet using Android. In this example I used the Zync Z930 ( http://www.zync.in/index.php/our-products/tablet-phablets/zync-z930-detail ), but generally spoken it should be possible on every tablet / device running Android.
Software requirements
Complete Linux Installer ( https://play.google.com/store/apps/...linuxonandroid&feature=search_result&hl=en_GB )
android-vnc-viewer ( https://play.google.com/store/apps/details?id=android.androidVNC&feature=search_result&hl=en_GB )
Android Terminal Emulator ( https://play.google.com/store/apps/details?id=jackpal.androidterm&feature=search_result&hl=en_GB )
All the software above should be free of cost (at least at the time this is written). Technically we will have running a special Fedora-ARM-Image in a chroot environment on the top of Android. But you will need root rights for this, so be aware of warranty conditions and other things as it might harm your device and make it unusable.
To root your device, you must find a method that works for your device. Many devices can be rooted according to that method , for my device I used simply adb commands as described by arunal_123 in this thread: http://forum.xda-developers.com/showthread.php?t=2093663
I did not use the files he offered as I had my own, but I think this should not change a thing. However, be aware what rooting means and if you do not know it, DO NOT DO IT.
OK, so I expect you to have downloaded the 3 applications I suggested, now that we have a rooted device, let us start the real work!
First, download the Fedora-Image file from here As you can read, this is an ALPHA version, and in fact there are some bugs, however, it should work for us, so do not worry.
Now I expect that you have the image file at /user/home/fedora.img
First you might want to enlarge the image file to allow us to install all the applications we want. You can do that like this. I used method 1. If you face some trouble that the mount-point does not exist, feel free to create it by yourself manually like that as root on terminal (I expect you to run a GNU/Linux on your computer, if you do not have one, just load down an image of for example Ubuntu and put it on your USB drive ( http://www.ubuntu.com/download/help/try-ubuntu-before-you-install )):
mkdir /media/fedoranew
OK, now that you have enlarged your image file (maybe to 2GB), let´s proceed.
Open the terminal app and type su. Now there should be a # instead of a $. If this does not work, you have not successfully rooted your device, go back to step one, if you face trouble, make a specific thread for your device, but search on the forum before. Now you can already start up fedora using the following command:
Code:
sh /data/data/com.zpwebsites.linuxonandroid/files/bootscript.sh /mnt/sdcard/fedora/fedora.img
(your image file would be on your sd-card in the folder fedora named fedora.img, on some devices the real extern sdcard might be available under ext_sd instead of sdcard).
Now some errors will popup, let us ignore them right now. So we are in fedora right now, but without graphical view. First, we can update all the stuff by using yum. Just type yum update (that might take some time, take a cup of coffee or realize that you should repaint your wall again)
Alright, so now let us install the programs we need, that is the tightvnc-server and the sugar-desktop, therefore type
Code:
yum install tightvnc-server
yum groupinstall sugar-desktop
yum install sugar-emulator
OK, now we must change the xstartup file of our vnc-server to use our own version. I actually prefer the nano-editor (you can install it with yum install nano, but vi is pre-installed, to use it, type: vi /home/fedora/.vnc/xstartup In the case it does not exist, just recreate the user fedora by deleting it by userdel fedora, also erase all files by rm -r /home/fedora and create it again by adduser fedora, just ignore any warnings. Now you should change the file like that:
Code:
#!/bin/sh
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
dbus-launch --session sugar &
Right now if you would try to start it, you would find various errors in the logfile in /home/fedora/.vnc, that is due to some strange rights for some folders and some missing devices. So here is how to fix this issue:
Code:
chmod 666 /dev/null
chmod 777 /tmp
yum install MAKEDEV
cd /dev
MAKEDEV tty
MAKEDEV pts
So now you should have all devices and sufficient permissions, but you might not have a vnc-user-password for fedora, so change to the user and make a dummy start of the vnc-server
Code:
su - fedora
vncserver
...and choose your favorite password.
Alright, go back to root via exit and shut the hole thing down via exit again.
So start Fedora again by pressing the Vol-Up button and w on the terminal, press enter.
OK, now we should have a more or less graphical interface, so start android-vnc-viewer, use the following settings:
Code:
Port-Number: 5900
Username: fedora
Password: <your_choice>
24bit colours
And connect....
Now you should see some terminal, type
Code:
sugar-emulator
Wait a second and sugar should power up. Now you should be able to start activities and also install new ones.
Enjoy Sugar on your tablet and tell me about your experiences and problems.
I just wrote this hole post out of my memory, so probability is high I forgot something, just tell me about your issues and I will update the guide.
Happy hacking!
Sugar Learning Platform on Inexpensive Chinese Tablet
I was very happy to find a post on this topic. I have a couple of Yeahpad Pillbox7 inexpensive Chinese tablets, which I purchased specifically because they are the only thing I can afford and my 4 year old twin boy and girl need a real learning computer.
I believe this topic is of the highest importance as successful implementation means making the original goal of the $100 Sugar computer a reality to the individual user who doesn't necessarily need the specifications of the XO machine.
I have been as detailed as I can be - perhaps painfully so - because I don't know what I am missing that could make the difference in turning this from a lengthy set of failed directions and notes into a functional demonstration project that proves that it is possible to reach this goal, which has been more than a decade in the making, albeit by taking some shortcuts with the lofty hardware goals and in this case running in a virtual environment which hampers performance and functionality.
If you want to start reading where following your directions starts to go haywire then skip to the dotted line of astrixs "* * * * * * * * *" and the heading in capital letters that says, "YUM UPDATE, INSTALLING TIGHTVNC-SERVER, SUGAR-DESKTOP, & SUGAR EMULATOR - RESULTING UNFOUND FILE DEPENDENCIES NOT AT ANY MIRROR"
The specifications of the Yeahpad Pillbox7 are about identical to the machine you used.
SPECIFICATIONS ON THE YEAHPAD PILLBOX7
Android Ice Cream Sandwich
Allwinner A13 CPU and Mali-400 GPU - which is ARM Cortex-A8 architecture
512 Mb RAM
4 GB internal memory
7" capacitive touch screen
some kind of wifi - supposedly 802.11n
I have a 16GB miniSDHC card I am using with a microSD adapter
I have a USB hub and have connected a mouse and keyboard to make the work easier.
PREVIOUS EXPERIENCE RELEVANT TO THIS ENDEAVOUR
I have been using the Linux On Android / Complete Linux Installer app with Terminal Emulator app and Android VNC Viewer app all from the Play store.I have successfully chroot virtualized a very basic Debian with XFCE, and also Ubuntu 12 with LXDE with these tools.
I also have been spending some time on the Linux on Android IRC channel and have Zac the creator of the app on my FaceBook page. Zac has been helpful and is very curious as to how this project goes.
My device the Yeahpad Pillbox7 is pre-rooted and only requires a "su" at terminal to get the "#" prompt.
Despite any details that indicate otherwise, I am a complete Android noob and my experience in linux is just as a distro-hopping enthusiast with no professional experience and almost no understanding. Nonetheless I try to enjoy what I do with these consumer devices and my emphasis has always been on the lower end economically, saving old machines often when there is not any funds for a new one, and for about 5 years now also getting ahold of consumer devices from China at the lowest price that can be had new and trying to modify the stock "computer" into something useful. This is my third attempt to do so in that category.
This type of chroot linux virtualization has shown the most promise as of late in the absence of driver availabilty for installing linux natively on a category of device where the manufacturers, the components they use, and the architecture has been in constant flux - but at this point in the market they are all aiming for Android v4 and up with Play store access. Since these devices are small, they seem to lend themselves to the application of young children, and also since the largest percentage of very poor users without access are young children, the application of a learning environment that emphasizes classical computer literacy with such allegories as turtle graphics to teach programming at a young age is a worthwhile lofty goal for the community to apply to the flood of inexpensive tablet computers coming our way now.
ALPHA VS BETA VERSION OF FEDORA CORE IMAGE FOR LINUX ON ANDROID
Perhaps this is where I went wrong I am using the BETA version of the Linux on Android Fedora Core image. It wasn't available when you wrote this post. Perhaps I was mistaken in thinking that the BETA would be the better image to start with. I will go back and do it with the ALPHA version next, which is per your instructions, and I will post my results again. Anyhow I took the Fedora Core image for Linux on Android and I unzipped it using 7zip, I verified the md5sum using fileverifier++ and I put on the miniSDHC card under a folder called /fedora/ and the file I named fedora.img. So I put it at /fedora/fedora.img on the miniSDHC card.
CONFIGURING MY PC TO BE ABLE TO DO IMAGE PREPARATION
I downloaded a the alternate version of xubuntu 12.04.b for 64 bit. Did an md5sum check and burned it to a CD-ROM. Then after updating the VirtualBox install on the PC I have access to is an Acer Aspire 5733-6838 which runs Windows 7 Home Premium SP1 on an Intel Core i5 with 4GB of DDR3 RAM - I installed the Xubuntu as a Guest OS on VirtualBox successfully and applied all the latest updates. Then I also installed Guest Additions and made the Drag'n;Drop and Clipboard functions bi-directional because I like being able to copy and paste in and out of my host OS while I do my work. I was able to mount the 16GB miniSDHC card onto the Guest Xubuntu OS using the USB Devices options on the VirtualBox control bar.
I did all that (installing Xubuntu) because the Linux I've been virtualizing and enjoying lately, Mageia2, did not execute the "cp -r fedoraold/* fedoranew" command which I derived from the 'expand the image directions' you referenced without generating a plethora of "cp: cannot create symbolic link" errors!
EXPANDING THE FEDORA IMAGE TO 2GB
Having switched to Xubuntu 12.04b 64bit alternate - I was able to execute the directions derived from
the directions from the linuxonandroid resource you referenced (I am not allowed to post outside links because I am a new xda forum member)
and enlarge the fedora image file to 2GB. I used these commands from terminal:
dd if=/dev/zero of=fedoranew.img bs=1M count=0 seek=2048
mke2fs -F fedoranew.img
so then I created two folders on the miniSDHC card at /fedora/ one called "fedoraold" and one called "fedorabang"
and then mounted the folders from the terminal using these commands
sudo mount -o loop fedora.img fedoraold
sudo mount -o loop fedoranew.img fedorabang
then I did the copy to the larger 2GB image file using this command from the terminal:
sudo cp -r fedoraold/* fedorabang
and finally I unmounted the folders using these terminal commands
sudo umount fedoraold
sudo umount fedorabang[/B]
I then shut down xubuntu and used the remove usb device icon from the Windows 7 taskbar to get a safe to remove the SDCard message.
I removed the miniSDHC card from the microSD adapter and inserted it into the Yeahpad Pillbox7 while powered off.
TRYING TO MODIFY THE FEDORA IMAGE ON THE TABLET TO RUN SUGAR LEARNING PLATFORM USING LINUX ON ANDROID AND ANDROID VNC VIEWER
I already have Linux on Android / Terminal Emulator / and Android VNC Viewer Apps installed on the Android Tablet.
Using File Manager I see that the newly made image is at: mnt/extsd/fedora/fedoranew.img
So after confirming that the bootscript.sh file is where it is supposed to be I use this command from the terminal to launch Linux on Android with the 2GB FedoraCore image
sh /data/data/com.zpwebsites.linuxonandroid/files/bootscript.sh /mnt/extsd/fedroa/fedoranew.img
I take the advice to ignore the errors, I've seen them before on LinuxOnAndroid during successful launches of other images.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
YUM UPDATE, INSTALLING TIGHTVNC-SERVER, SUGAR-DESKTOP, & SUGAR EMULATOR - RESULTING UNFOUND FILE DEPENDENCIES NOT AT ANY MIRROR
So I continue by trying to get all the current updates for fedora using the terminal command:
yum update
At the Transaction summary - I also respond with: "y" and [ENTER].
This is where I ran into my first set of snags - summarizing the errors Yum couldn't find these files:
bind-license-9.9.2-5.P1.fc17.noarch.rpm
dosfstools-3.0.14-1.fc17.armv5tel.rpm
selinux-policy-3.10.0-167.fc17.noarch.rpm
bind-libs-9.9.2-5.P1.fc17.armv5tel.rpm
dnsmasq-2.65-4.fc17.armv5tel.rpm
coreutils-8.15-9.fc17.armv5tel.rpm
libsss_sudo-1.8.6-1.fc17.armv5tel.rpm
iproute-3.3.0-5.fc17.armv5tel.rpm
bind-utils-9.9.2-5.P1.fc17.arm5tel.rpm
bash-4.2.39-2.fc17.arm5tel.rpm
bind-libs-lite-9.9.2-5.P1.fc17.armv5tel.rpm
selinux-policy-targeted-3.10.0-167.fc17.noarch.rpm
at any of these mirror sites:
apparently I can't post these here because I am a new xda forum member
I tried "yum update" more than once and ran into the identical set up errors, so I continued on hoping that substitute files were found, or that none of those files were essential.
So I conintued to try and install the programs your post says that I need, starting with tightvnc-server, so I use the terminal command:
yum install tightvnc-server
At the Transaction summary - I also respond with: "y" and [ENTER].
This is a summary of the files that Yum couldn't find from the errors:
perl-PathTools-3.33-221.fc17.armv5tel.rpm
perl-Pod-simple-3.16-221.fc17.noarch.rpm
perl-macros-5.14.3-221.fc17.armv5tel.rpm
perl-libs-5.14.3-221.fc17.armv5tel.rpm
perl-Pod-Escapes-1.04-221.fc17.noarch.rpm
perl-Module-Pluggable-3.90-221.fc17.noarch.rpm
perl-5.14.3-221.fc17.armv5tel.rpm
gnutls-2.12.20-4.fc17.armv5tel.rpm
I believe that Yum had tried all the mirror sites listed earlier.
As before, I have nothing else to go on, so I hope that either substitute files were found, or that none of those files were essential.
So I continue to try and install the progams your post says that I need, the next one being the sugar-desktop, so I use the terminal command:
yum groupinstall sugar-desktop
At the Transaction summary - I also respond with: "y" and [ENTER].
This is a summary of the files that Yum couldn't find from the errors:
libarchive-3.0.4-2.fc17.armv5tel.rpm
libproxy-0.4.10-1.fc17.armv5tel.rpm
gnutls-2.12.20-4.fc17.armv5tel.rpm (see above - already not found before)
I believe that Yum had tried all the mirror sites listed earlier.
As before, I have nothing else to go on, so I hope that either substitute files were found, or that none of those files were essential.
So I continue to try and install the programs your post says that I need, the next one being the sugar-emulator, so I use the terminal command:
yum install sugar-emulator
At the Transaction summary - I also respond with: "y" and [ENTER].
This is a summary of the files that Yum couldn't find from the errors:
libproxy-0.4.10-1.fc17.armv5tel.rpm (see above - already not found before)
gnutls-2.12.20-4.fc17.armv5tel.rpm (see above - already not found before)
I believe that Yum had tried all the mirror sites listed earlier.
As before, I have nothing else to go on, so I hope that either substitute files were found, or that none of those files were essential.
All in all from I read that there were 22 .rpm files missing that were not found at any of the relevant mirrors between the general yum update (12 missing files) and dependencies from tightvnc-server, sugar-desktop, and sugar-emulator (10 more missing files)
CUSTOMIZING THE XSTARTUP FILE AT /home/fedora/.vnc/xstartup FOR OUR PURPOSES
So I continud on with the instruction in your post, next on the agenda is an xstartup file for vnc-server.
You describe it as changing the xstartup file - I could used the "ls -a" command on the directory /home/fedora/ and could not find a directory called .vnc and could not find an existing file at /home/fedora/.vnc/xstartup
I too don't seem to have the talent for the vi editor so I take your suggestion and install nano using this terminal command:
yum install nano
At the Transaction summary - I also respond with: "y" and [ENTER].
There were some other files starting with "." that I found in the /home/fedora/ directory - I looked at them with the text editor and I didn't see any information that I could figure was specific to this use instance - but I am no expert. So I did the following strictly on your instructions advice.
It said if I could not find the xstartup file in existance to do the following from the terminal command line, ignoring any warnings.
userdel fedora
rm -r /home/fedora
adduser fedora
I tried the least destructive choices it gave me upon the "rm -r /home/fedora command" but it did not result in a .vnc directory or xtartup file that I could detect when completing the instructions to the "adduser fedora" command - so I repeated the commands but answered the resulting question with removal of even the /home/fedora directory. nonetheless all of that failed in creating a .vnc directory that I could detect (using the 'ls -a' command) or of an xstartup file.
So I went ahead and ad libbed the following from the terminal because otherwise anything I were to write in nano for /home/fedora/.vnc/xstartup would not save for lack of a directory for it to go in.
mkdir /home/fedora/.vnc
For some reason even after I execute the make directory command, "ls -a" from the /home/fedora/ directory still doesn't show it, but I can cd into, /home/fedora/.vnc/
From there I simply followed the directions and from the terminal:
nano /home/fedora/.vnc/xstartup
And from there entered the script given and saved it with ctrl-o and/or ctrl-x nano commands:
#!/bin/sh
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
dbus-launch --session sugar &
ADDITIONAL PERMISSIONS AND MISSING DEVICES
So refering to your instructions once again: it says that I need to execute the following to give certain rights and take care of missing devices. So from the terminal:
chmod 666 /dev/null
chmod 777 /tmp
yum install MAKEDEV
At the Transaction summary - I also respond with: "y" and [ENTER].
Terminal responds "Complete!"
cd /dev
MAKEDEV tty
Then I enter according to your instructions
MAKEDEV pts
And the terminal responds:
don't know how to make device "pts"
So I do some research into the "Makedev" command - I can't post this url here because I am a new xda forum member.
Granted the page I find is not from the same flavor of linux but I don't see a "pts" option and it seems perhaps this is a typo.
So I need to guess what you were trying to accomplish. I decide on the following terminal command:
MAKEDEV pty
And at least there are no errors - but was it what you intended - I have no clue? also was there any reason for the Makedev command to be capitalized either when asking yum to install it or in its usage. Again I am a noob so I have no clue.
VNC-USER-PASSWORD AND DUMMY START OF VNC-SERVER AND OTHER FINISHING TOUCHES (unresolved)
From the terminal the next command in your directions gives no problems:
su - fedora
The result is the changed the prompt from [[email protected] dev]# to [[email protected] ~]$
but the next command:
vncserver
is unrecognized or any variants I try "vnc-server" "tightvnc-server" and I look for anything promising in the /bin/ and /sbin/ directories but fail to find anything.
So the part about 'choosing my favorite password' which I know I will need to use the Android VNC Viewer app to see the graphical install of the sugar learning platform, is sadly not a reality. This is confusing to me as I know the command must be available somehow as everytime one tries to launch the Linux On Android app it is a question on the user dialog, something like "start the vnc-server (y/n)" or some words along those lines, so I know there is a command to do this available.
So to shut everything down requires from the terminal:
exit
and then also again from the terminal:
exit
I am equally perplexed by the whole set of directions instructing to press "Vol-Up" button and w on the terminal.
I try it. and the Vol-Up button does register some symbol in the terminal, and I follow it with the letter "w" on the terminal and enter.
and also I try to do the two actions in conjunction, but nothing I do with those directions seems to restart Fedora that I can tell.
Can you explain that part of the directions in more detail?
I try various combinations of things I know to try but I Android VNC Viewer is failing to connect even if there is something to connect with for lack of a password
that I have not been able to set or already know. Also even after getting Linux on Android to launch the fedoranew.img that has been modified it the terminal is not
responsive on the command line to:
sugar-emulator (does nothing)
AN INVITATION TO ALL THOSE WHO KNOW BETTER AS TO WHAT I CAN OR SHOULD TRY TO DO TO MAKE THE SUGAR LEARNING PLATFORM WORK WITH LINUX ON ANDROID AND ANDROID VNC VIEWER.
I have not been able to enjoy Sugar on the Yeahpad Pillbox7 tablet,
and I am taking you up on your offer to tell you about my experiences and problems.
I know you said you wrote the post out of memory but if you could do it again taking notes while you do it so that others can try to get the same result, please comment on what you think I am doing right or wrong, or if you can remember more that might be helpful - then the world will owe you a debt as there in is in my humble opinion many many people who don't even know that they need this information yet.
OK, so what I think is that this image is somehow messed up as these unresolved dependencies indicate - in my opinion - some mis-configured setup.
Maybe the fastest solution might be to try the alpha-Image I used - if you still face trouble, please feel free to describe it as precisely and well as you did this time.
Good luck
I am about to repeat the process with the ALPHA image but..
I am about to repeat the process with the ALPHA image. But...it would help if you made comment on more than the dependency problems...
These three areas in your instructions and my comments are areas I am particularly curious about and think your input would be valuable in.
1)
For instance it would be helpful to know about what you think about what you think about my comments with the strange behavior around the /home/fedora/.vnc/xstartup file and the del and add of the fedora user.
Wouldn't it be better just to add the .vnc folder and xtartup file and doesn't the lack of a .vnc folder at all seem to indicate a step that wasn't documented?
2)
Please examine what I wrote about the MAKEDEV command. Was I correct about the typo?
3)
Please enlighten me further about your instructions regarding "Vol-up" and "w" - I can't find any information anywhere that gives me a clue about what you were trying to do there. I wasn't able to reproduce the result you got - maybe if I understood more I will be able to replicate what you were trying to do there and or find another way to do it.
Thanks so much in advance... I appreciate your interest in this topic!
For instance it would be helpful to know about what you think about what you think about my comments with the strange behavior around the /home/fedora/.vnc/xstartup file and the del and add of the fedora user.
Wouldn't it be better just to add the .vnc folder and xtartup file and doesn't the lack of a .vnc folder at all seem to indicate a step that wasn't documented?
Click to expand...
Click to collapse
As I understood you, yum install tightvnc-server fails due to unresolved dependencies. Therefore, no such folder will be created as the program is not installed. That is also why you will not get such a folder after recreating the user.
Please examine what I wrote about the MAKEDEV command. Was I correct about the typo?
Click to expand...
Click to collapse
It might be the case that it was in fact pty, not pts, I am not sure about that anymore. You can check for the success by changing into the /dev directory ( cd /dev ) and then list all entries of pty ( ls pty* ) to see whether the device was created successfully.
Please enlighten me further about your instructions regarding "Vol-up" and "w" - I can't find any information anywhere that gives me a clue about what you were trying to do there. I wasn't able to reproduce the result you got - maybe if I understood more I will be able to replicate what you were trying to do there and or find another way to do it.
Click to expand...
Click to collapse
This is only for convenience so that you do not have to write the hole command again. So when you are in the terminal emulator, by default, you should be able to go up in your bash history by pressing "Vol-up" and "w", similar to the "arrow-up" on your PC.
I hope I could help you, good luck.
Thank you.
Thank you, those are some very useful replies!
I will be sure to post the results of my next binge of effort on this project.
Debian “Chatter” Phone
Screenshot: http://www.mediafire.com/view/ljgv724r57tnx5y/2015-11-03-104935_480x800_scrot.png
Debian. Not run as a tack on, not emulated, not on top of Android, but standalone. That's my goal. That's what I've been working on. Turning an old Glide into a computer. After some careful thought, I figured some other people might be interested in that too, so I thought I'd post it here. Perhaps we can even work together to get it finished.
Why Debian “Chatter”? Well, all Debian versions are given a name from a toy in the Pixar film Toy Story. Chatter happens to be the toy telephone in Toy Story 3. I put Chatter in quotes because it actually is not an official release. Technically, at least at the moment, I am using Debian Jessie. Since becoming a release of Debian would be nearly impossible to spearhead from the ground level, it would most likely become an offshoot of Debian.
What I have done so far is utilize the internal “sdcard” partition as the root file system for Debian Jessie.
What's working:
- Standard Linux functions (mostly)
- Boot up to the X server (XFCE window manager currently)
- Screen, orientation and display
- Physical keyboard (Only the qwerty part)
- Touch-screen as a touch pad to move the mouse pointer
- Battery indication including if it is charging or not
- Audio with ALSA.
- Volume buttons
- Front soft keys
Flashing instructions if your Captivate Glide already has TWRP.
http://www.mediafire.com/download/z9fzrw68rio8sq9/recoveryTWRP.img
1. Download my TWRP backup, and put under the /TWRP/BACKUPS/<SERIALNUMBER>/ folder.
https://www.mediafire.com/folder/9vifxpouh9voc/2015-10-20
2. Restore the image through the Restore function in TWRP.
3. Download my tar.gz file to your computer and extract it.
http://www.mediafire.com/download/716x1oxcglythhk/20151102.tar.gz
Or,
http://www.mediafire.com/download/88r6sr3u33bs532/20151106.tar.gz
4. Put your phone into the TWRP recovery, and choose the Mount option and select “sdcard”
5. Place the extracted contents of the dated folder onto the sdcard partition, but not the dated folder itself, just what is in it.
6. Reboot your phone into the ODIN download mode.
7. Download my 2ndboot.img file and i927.pit file.
http://www.mediafire.com/download/mudjm3j3304vt77/2nboot.img
http://www.mediafire.com/download/793j89i277rggpa/i927.pit
8. Using Heimdall-frontend, select the pit file, and flash the LNX partition with the 2ndboot.img file.
9. Reboot and Linux on!
Flashing instructions if your Captivate Glide already has Clockworkmod.
http://www.mediafire.com/download/f64i073d65e0ug1/recoverycwm.img
1. Download my copy of Bio360Rom.zip and move it to your phones sdcard.
http://www.mediafire.com/download/1u2v6aac19fzh97/Bio360ROM.zip
2. Reboot into recovery mode (Clockworkmod) and install the Bio360Rom.zip
3. Reboot your phone into the ODIN download mode.
4. Download my 2ndboot.img file, my recovery.img file, and i927.pit file.
http://www.mediafire.com/download/mudjm3j3304vt77/2nboot.img
http://www.mediafire.com/download/z9fzrw68rio8sq9/recoveryTWRP.img
http://www.mediafire.com/download/793j89i277rggpa/i927.pit
5. Using Heimdall-frontend, select the pit file, and flash the LNX partition with the 2ndboot.img file.
6. Again using Heimdall-frontend, select the pit file, and flash the SOS partition with the recovery.img file.
7. Put your phone into the TWRP recovery, and choose the Mount option and select “sdcard”
8. Download my tar.gz file to your computer and extract it. Place the extracted contents of the dated folder onto the sdcard partition, but not the dated folder itself, just what is in it.
http://www.mediafire.com/download/716x1oxcglythhk/20151102.tar.gz
Or,
http://www.mediafire.com/download/88r6sr3u33bs532/20151106.tar.gz
9. Reboot and Linux on!
Optional instructions:
If you want to, head over to the Debian Jessie download page and download the arm version of the DVD's 1 and/or 2. In the following posts I describe how you can rip these cd's to set up a personal repository, one that you can strictly control all of the packages, which may be useful at this time.
Changelog:
Code:
Changelog - Debian "Chatter" using Canium Kernel
20151106
- Added shutdown.sh and reboot.sh to launcher for *better* handling of shutdown.
20151102
- Mapped soft keys: search - xfce-appfinder
- Mapped soft keys: back - xfce-next workspace
- Mapped soft keys: home - xfce showdesktop
- Mapped soft keys: menu - xfce-showmenu
- Mapped volume up/down to amixer Master +/- 5db.
- Added "event2" to xorg.conf. Volume buttons and power button are recognized and can now be mapped to an action.
- Added "event7" to xorg.conf. front soft keys are recognized and can now be mapped to an action.
- Enabled xfce splash screen (like a boot animation.) Also enabled text update of status during start of xfce.
20151101
- Edited xfce panel and options for display of information.
20151020-2
- Moved entire system off of sdcard and onto mmcblk0p4, the "internal sdcard" of the phone.
20151020
- Due to errors with Pulseaudio, removed pavucontrol/pulseaudio. Installed all Alsa controls.
- Installed LXMusic/xmms2 for mp3 player.
- Mixer and alsa mixer can properly set volume to path SPK_HP (the speaker or headphone) and adjust the volume. However, it will mute after a few moments of inactivity. A work in progress.
20151019 Continuing the current fork of Cranium Kernel.
- Udevd is not working due to lack of devtmpfs support in kernel. Added mdev support for hotplug items by editing init.stage2 with:
/sbin/busybox echo /sbin/busybox mdev > /proc/sys/kernel/hotplug
20151018
- Backed up entire system, forking to other kernels. This backup will remain with all that is done so far. The fork has a seperate changelog.
20151016
- Enabled usb0 as a network interface in /etc/network/interfaces, can start with ~# ifup usb0.
-On receiving computer, ensure that you insmod "mii.ko" and "usbnet.ko" if not already built into your kernel. -cannot figure out how to attach to it!
^-- I now realize that I would need to recompile my desktop computer kernel to support this endevour. This would distract from the process at hand. Scrapped.
- Added second armhf dvd from Debian Jessie to my local repository, and edited /etc/apt/sources to match.
20151015
- Edited xbattbar.sh script to accurately reflect if the phone is plugged in or not. - Put into 20151014 folder.
20151014
- Needed battery indicator. Added xbattbar as it is the only battery indicator with user scriptable inputs.
- Wrote script for xbattbar to work, now accurately reflects battery capacity.
- Put xbattbar in .xsession and removed xclock from .xsession
20151013
- Added XFCE4 and set as default for root in /root/.xsession file with xclock on startup for fun.
20151010
- Added local repository under folder /repo/all
- Used dpkg-scan to create Packages.gz
- Added local repository to /etc/apt/sources.list
20151008
- Added Keyboard to xorg.conf, some keys work, some do not.
20151005
- Added touchscreen to xorg.conf as "corepointer", works to move mouse.
20150924
- Created new initramfs.cpio.gz
- Created new_boot.img
- Copied another init script and init.stage2 script onto sdcard and edited for my purposes.
- Originally booted to Linux, then started Android, and Android was what you saw.
- Edited init and init.stage2 script so that it now boots Linux, and you see Linux. Android is running in chroot env. but cannot start fully due to /dev/graphics/fb0 is in use.
20150921
- Started with debootstrap base image of Debian Jessie
- Added openssh, vnc, lxde, jwm, and some other programs through emulator.
- Broke down Biorom kernel and initramfs. Using Cranium Kernel.
As for me, I plan to keep working on this project, if you are interested in working on this project as well, please feel free to work on it! You can work independently or with me on this if you would like. You are welcome to post here, or to contact me through XDA's message service. Please see the next posts on what still needs to be done (which is a lot).
The current passwords are:
root = root
trondroid = trondroid
me = me
Enjoy!
Thanks to these people for their time and knowledge!
As with any project, it starts somewhere, and I want to thank the following individuals for their prior work that I used as the basis of this project. These individuals may not know that their tools were used here, but I would like to thank them for posting their knowledge and or files or programs for people like me to be able to read and use:
XDA developer bubor – Seriously, this person has a lot of great material on this site. I borrowed their TWRP recovery.img.
XDA developer mdubb2341 - I used this person's Bio360Rom as the chrooted Android environment, due to it's small size and resource requirements (e.g. no zRam).
Mikael Q Kuisma - http://whiteboard.ping.se/Android/Debian – This guy helped tremendously with the breakdown of the boot.img and hijacking init to do what I want instead. He explains how to start Linux then Android, and use your Android phone with Linux underneath.
Eryk Wdowiak - http://www.wdowiak.me/anX11phone/ - This gentleman had some great material on starting Linux after starting Android and running Linux on top of Android.
Ivan Davidov - http://minimal.linux-bg.org/ - The tutorials on setting up minimalistic Linux environments and boot script examples were priceless.
To do list
Phone specific things to do: (Wow this is a big list!)
GPS – I have put FoxtrotGPS and gpsd in the image. I know that /dev/ttyHS0 is the GPS output, but it appears that the GPS is of course off, because it has not been started yet. I either need to echo the appropriate digits into the /sys files, or tell the chrooted Android to turn it on. I also found that it relies on gpsd, and uses standard output to it, which is a huge plus for a Linux phone.
Phone calls/text messaging/radio control – I have not even started on that. My goal was to run a chrooted Android environment and “tell it” from Debian to make a phone call or send and receive messages.
Bluetooth – The module for the bluetooth is already loaded, and I have put the bluez and other bluetooth tools on the phone, I just cannot figure out how to connect to it. It may be powered off also.
Wifi – The modules for this are in the /android/lib/modules directory, but once I insmod them, it does not appear as a connection. I believe that I need to do some sort of mknod to create a node or socket to connect to it, or have the chrooted Android turn it on.
Camera – I have not even looked at this yet.
Accelerometer/compass - I have not even looked at this yet.
Slide switch – I am hoping to use xranr and event input to rotate the screen and change the resolution if you slide out the keyboard.
Code:
Available devices:
/dev/input/event0: STMPE_keypad – The physical keyboard.
/dev/input/event1: mpu-accel
/dev/input/event2: sec_key – Physical keys – Volume +/- and power.
/dev/input/event3: sec_touchscreen – The touchscreen input.
/dev/input/event4: proximity_sensor – Sensor that turns off the screen when your face is against it.
/dev/input/event5: light_sensor – Ambient light sensor to control screen brightness and keyboard lights.
/dev/input/event6: HALL – Opening the slide out keyboard.
/dev/input/event7: sec_touchkey – front face soft keys - home, back, search, menu.
/dev/input/event8: compass_sensor
Linux specific things to do: (Wow, this is also a big list!)
lspci – lspci does not work, which hampers the ability to figure out control of some of the devices. This is a problem (I think) with the kernel / arm hardware and the way the arm ARCH is set up. It uses AMBA.
lsusb - Fixed!
- I also got an OTG cable and can plug stuff in and see it show up with lsusb!
Audio – Pulse audio fails, so I replaced it with alsa. While alsa does work, it has the uniqe problem of turning off the path to device when there is no sound playing. Currently, if you want to listen to music, you open a music player, start the music, open the alsa volume mixer, set the path to SPK_HP, and adjust the volume as desired. Once the song or play list is done, pressing play again will yield no sound until you go to the volume mixer and choose SPK_HP again.
Init – Systemd is the standard init for Debian Jessie, but it causes too many problems on the phone. It either needs to be redone, or replaced. Currently, I am using the rc.local script to start some selected services, as a userspace init, so to speak.
Dbus – dbus can be started after you enter the X window environment, e.g. after the chrooted Android is done starting. I don't know that it is working properly.
Graphics – Currently Debian is just drawing straight to the frame buffer, it would be nice to get the nVidia drivers working for 3d acceleration.
Chrooted Android specific problems: (Not as big of a list.)
ADB – Fixed, ADB now works to connect to the chrooted Android from your computer using ADB as usual.
AM – The activity manager cannot start because we have stolen /dev/graphics/fb0 for the Debian x-server, so you cannot access the AM. If the AM can get up and running, then it would be possible to script orders to it, such as make phone calls, start wifi, etc.
SurfaceFlinger - SF is waiting for the /dev/graphics/fb0 to become available. It would be beneficial to have it "start" without it, perhaps to a virtual frame buffer, which requires a new kernel, or user-space tools like xvfb.
If you have any ideas or thoughts on how to do these things, or if you would like to tackle one of these projects, please let me know! I'd be happy to post your work and let everyone know that you came up with the solution!
Optional Instructions
Optional instructions:
If you want to, head over to the Debian Jessie download page and download the arm version of the DVD's 1 and/or 2. In this post I describe how you can rip these cd's to set up a personal repository, one that you can strictly control all of the packages, which may be useful at this time.
Here are the links for the DVD's:
http://cdimage.debian.org/debian-cd/8.2.0/armhf/iso-dvd/debian-8.2.0-armhf-DVD-1.iso
http://cdimage.debian.org/debian-cd/8.2.0/armhf/iso-dvd/debian-update-8.2.0-armhf-DVD-1.iso
Then, on your computer:
Code:
~$ cd {to your download directory}
~$ mkdir disk1
~$ mkdir disk2
~$ sudo mount ./debian-8.2.0-armhf-DVD-1.iso ./disk1
~$ sudo mount ./debian-update-8.2.0-armhf-DVD-1.iso ./disk2
~$ mkdir repo1
~$ mkdir repo2
~$ cd disk1
~$ find . -name *deb -exec mv '{}' ../repo1/ \;
~$ cd ..
~$ cd disk2
~$ find . -name *deb -exec mv '{}' ../repo2/ \;
~$ cd ..
~$ sudo umount ./disk1
~$ sudo umount ./disk2
~$ rmdir ./disk1
~$ rmdir ./disk2
~$ cd repo1
~$ sudo dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
~$ cd ..
~$ cd repo2
~$ sudo dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
~$ cd ..
Now you can copy those files to your external sdcard, mount it and add these custom repositories to your /etc/apt/sources.list.
Enjoy!
Really great to see that! Please continue working on this I like the idea maybe I participate instead of trying to port ubuntu touch...
In the meanwhile keep up your work and thanks for sharing!
-----
Sent from my SGH-I927 using XDA Android mobile app
Thanks!
xdajog said:
Really great to see that! Please continue working on this I like the idea maybe I participate instead of trying to port ubuntu touch...
In the meanwhile keep up your work and thanks for sharing!
-----
Sent from my SGH-I927 using XDA Android mobile app
Click to expand...
Click to collapse
Thanks xdajog!
I also tried to port Ubuntu Touch, but the recovery drive is too big for the standard size. I broke down the recovery image and tried to shrink it, I could make it smaller, but I could not get it small enough. Then I attempted to change the pit and re-partition, but ended up having to recover the phone. That is when I started working on this project.
I appreciate the encouragement, and I will be posting more soon! I hope
20151102 update.
Just a quick post on the updates. The first post has been updated with new links to the new files, and the change log gives the basics. Here is a little more detail:
Essentially I was able to add support for the /dev/input/event7 (soft keys) and /dev/input/event2 (the physical buttons).
Now the front soft keys work:
Menu - essentially the right click menu of whatever the mouse pointer is on.
Home - clears the desktop, pressing this again will reveal all of your windows again.
Back - I used this as the switch between desktops.
Search - This now brings up the xfce app finder.
The volume keys now are bound with "amixer set Master 5dB+" or "amixer set Master 5dB-" to adjust the volume.
20151106 update.
Just a few things added in this update:
Created new shutdown.sh and reboot.sh scripts and linked them to a launcher menu on the panel. It was needed to make sure the system is properly shut down, including the chrooted android system.
Also purged and re-installed lsusb, and now it works. After plugging anything into the OTG cable, they will show up on lsusb and things like a mouse are added as /dev/input/event8.
Several failed attempts, but much was learned about the GPS, particularly the use of gpsd. I can now link gpsd to the GPS, however I still need to turn power for the GPS on. However, the Activity Manager for Android is not up and running because Surface Flinger fails to start due to /dev/graphics/fb0 or fb1 being in use by the X server for Debian.
20151109 update.
One of the principle problems with the phone setup was the lack of udev support, which is very important in Debian Jessie.
The problem with udev was the lack of "devtmpfs" file system support in the kernels for the Samsung i927.
So after *many* painful attempts, I was able to load a computer with Ubuntu 12.04, download all of the source code, and compile a custom kernel for the i927. This kernel includes devtmpfs and a few other Linux related things.
The output of uname -a:
Code:
Linux localhost 3.1.10 #2 SMP PREEMPT Mon Nov 9 11:25:41 AKST 2015 armv7l GNU/Linux
And after remaking a boot image, I flashed it to the phone, and to my surprise, this time it worked! Perhaps tomorrow I can update the top post with the new boot image.
It caught me by surprise also because it re-arranged the order of /dev/input/event#'s moving the touchscreen to 1, where before it was 2, but that was easily overcome by editing /etc/X11/xorg.conf.
I do not know that my new kernel is "better" overall, but it is more "useful" as it includes the devtmpfs support needed to continue with this project.
New Kernel.
Still having trouble fine tuning the kernel to be just right, which is why I have not updated the top post with this information yet, but for those interested, here it is.
The new kernel:
http://www.mediafire.com/download/orkbt7kcx16z0or/20151110ALUboot.img
Flash the boot.img with Odin to the LNX partition.
Edit the xorg.conf file /etc/X11/xorg.conf with the following. The reason for this is that the new kernel has a different order of "events" for device inputs.
Code:
Section "ServerLayout"
Identifier "Layout0"
Screen "Screen0"
InputDevice "touchscreen" "CorePointer"
InputDevice "keyboard"
InputDevice "mediakeys"
InputDevice "frontkeys"
EndSection
Section "Monitor"
Identifier "Monitor0"
ModelName "Monitor Model"
DisplaySize 800 480
EndSection
Section "InputDevice"
Identifier "touchscreen"
Driver "evdrv"
Option "Device" "/dev/input/event2"
Driver "multitouch"
EndSection
Section "InputDevice"
Identifier "keyboard"
Driver "evdev"
Option "Device" "/dev/input/event0"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "us"
EndSection
Section "InputDevice"
Identifier "keyboard"
Driver "evdev"
Option "Device" "/dev/input/event8"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "us"
EndSection
Section "InputDevice"
Identifier "mediakeys"
Driver "evdev"
Option "Device" "/dev/input/event3"
EndSection
Section "InputDevice"
Identifier "frontkeys"
Driver "evdev"
Option "Device" "/dev/input/event7"
EndSection
Section "Device"
Identifier "Card0"
Driver "fbdev"
Option "fbdev" "/dev/graphics/fb0"
Option "Rotate" "left"
Option "VertRefresh" "60"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Card0"
DefaultDepth 16
SubSection "Display"
Depth 16
EndSubSection
EndSection
Otherwise, your touchscreen will not function.
Phone is broken.
Unfortunately, my spare Captivate Glide finally bit the dust. :crying:
Regardless of what rom/software I put on it, it cannot sustain itself for more than a minute or so before it simply stops working. The screen turns grainy, gets lines through it, and then it reboots itself. Perhaps if I get another phone or motherboard I can continue working on this further.
AlaskaLinuxUser said:
Unfortunately, my spare Captivate Glide finally bit the dust. :crying:
Regardless of what rom/software I put on it, it cannot sustain itself for more than a minute or so before it simply stops working. The screen turns grainy, gets lines through it, and then it reboots itself. Perhaps if I get another phone or motherboard I can continue working on this further.
Click to expand...
Click to collapse
bad news. Nevertheless thanks for all your work!
The problem you describing may because of the power button. There is a known issue which is also with my dev phone (and others out there). Whenever I press it after the phone booted up it will crash the same way then yours. To be able to develop I avoid using the power button to do so I use the highest display timeout value and if I need to wake up the phone I use an adb command to do so.
.
tim241 said:
Any idea how to port this to an other device?
Click to expand...
Click to collapse
Tim241, sorry, I didn't watch this forum anymore, but I will be glad too if you want to ask questions.
Yes, I can tell you how to port this to another device, but I cannot guarantee success. What device do you wish to port it too?
Also, everything I did I wrote in my blog, which is in my signature. I will gladly answer questions here or there.
-AlaskaLinuxUser https://thealaskalinuxuser.wordpress.com/
tim241 said:
my device is the Samsung Galaxy Core 2 SM-G355HN
Click to expand...
Click to collapse
Okay, so the next thing we need are some ROMs to break down the boot image from. What ROMs are available for your phone?
Older is better, stock or custom is okay.
Preferably Android 2.3.* is best because it uses the least amount of processing power and ram.
Android 4.4+ will not work as well, as you will not be able to " hold " onto the screen. It is okay that it is older Android, since you will not actually see the Android part, you are just using it to initialize firmware, etc.
What we will do, as I can explain in more detail as we go along, is break down the boot image and make our own init script that will start Debian Linux. Then Debian will be the boss. Debian will start Android, but Debian will control the screen and inputs.
-AlaskaLinuxUser https://thealaskalinuxuser.wordpress.com/
tim241 said:
we only have cyanogenmod 11 :-/ here http://forum.xda-developers.com/gal...cyanogenmod-11-samsung-galaxy-core-2-t3308697
Click to expand...
Click to collapse
Bummer. So, we can still proceed, but we may have screen trouble with 4.4. Do you want to continue?
-AlaskaLinuxUser https://thealaskalinuxuser.wordpress.com
Great attitude! Let's try!
tim241 said:
We can try
Click to expand...
Click to collapse
Okay, so first things first, STEP 1: downloads!
Download these things:
http://www.mediafire.com/download/zl80gh0t310trla/unpack-bootimg.pl
http://www.mediafire.com/download/xdmd278n17gm58h/unmkbootimg
http://www.mediafire.com/download/byf0tw4ga2mqtw0/repack-bootimg.pl
http://www.mediafire.com/download/7cmi548pzetc6c4/mkbootimg
And download CM11, if you have not already.
I am using Linux, Ubuntu 14.04. I did this previously from Debian Wheezy, so any Linux should work. You can also use a VM, virtualbox, etc. if you are on a Windows computer.
STEP 2: Unzip!
Go ahead and unzip the CM11 that you downloaded. Preferably in its very own folder. For my work, I made a folder called "playground" in my home directory to play around in. I will reference the "playground" meaning the main folder with everything in it. Now, in the playground, make a new folder called "bootimage". In the playground folder, copy the boot.img file to the bootimage folder.
STEP 3: Tools setup!
Copy the downloaded above tools into a new folder called "tools" in the playground folder. Open a terminal here and give these files executable permissions and copy them again to the bootimage folder:
Code:
$ cd ~/playground/tools
$ chmod 777 ./*
$ cp ./ ../bootimage
We copy this twice so we have backups of the tools in case we delete them accidentally.
STEP 4: Unpack the boot image!
Open a terminal and go to the bootimage folder, and start typing:
Code:
$ cd ~/playground/bootimage
$ ./unmkbootimg ./bootimage
You will see some output in the terminal that looks *kind of* like this:
Code:
$ ./unmkbootimg ./boot.img
unmkbootimg version 1.2 - Mikael Q Kuisma <[email protected]>
Kernel size 2992704
Kernel address 0x10008000
Ramdisk size 2196028
Ramdisk address 0x11000000
Secondary size 0
Secondary address 0x10f00000
Kernel tags address 0x10000100
Flash page size 2048
Board name is ""
Command line ""
This image is built using standard mkbootimg
Extracting kernel to file zImage ...
Extracting root filesystem to file initramfs.cpio.gz ...
All done.
---------------
To recompile this image, use:
mkbootimg --kernel zImage --ramdisk initramfs.cpio.gz -o new_boot.img
---------------
Whatever it says, copy and paste it, hand type it, screenshot, whatever it takes, write the output down, because this is the key to re-making your boot image! I recommend that you post the output here on XDA so we can look at it together.
Then, unpack it like so:
Code:
$ ./unpack-bootimg.pl ./boot.img
You should see something *like* this:
Code:
$ ./unpack-bootimg.pl ./boot.img
kernel written to ./boot.img-kernel.gz
ramdisk written to ./boot.img-ramdisk.cpio.gz
7607 blocks
extracted ramdisk contents to directory ./boot.img-ramdisk/
You will now have folders and files to play with. After you report back the outcome of this, we will make our init script and continue on.
Good luck! I will wait for your reply!
tim241 said:
Also I need to warn you about the disk space from the device(galaxy core 2 SM-G355HN):
http://www.gsmarena.com/samsung_galaxy_core_ii-6331.php.
Click to expand...
Click to collapse
Great! Good work.
Now for today's steps:
#1. Download:
Debian system (WARNING - this is almost 700 mb!)
http://www.mediafire.com/download/88r6sr3u33bs532/20151106.tar.gz
Very tiny busybox (1.06 mb)
http://www.mediafire.com/download/4uhu93prdtlqdmr/busybox
NOTE: These files will get you started. Later, you can build your own busybox and Linux root file system if you want, these worked for me, so I think it is best to start by using a known working source.
#2. Partition sdcard:
I use a computer to do this, but there are many phone tools available also. You can later transfer all of this internally, and do this without an sdcard, but this is the best way to get started, as you learn, you can move it all to the phone.
So, my computer has an sdcard slot, you may use an adapter, or use your phone, it really doesn't matter. The sizes here are a suggestion, but you will need 2 partitions on the card. I am using an 8 GB card as my example.
Partition Type Size Notes
1 fat32/vfat 2 GB (or more if your card is bigger)
2 ext4 6 GB (or the remainder)
Now, the first partition will be "seen" by Android. The second partition will not typically be seen by Android.
#3. Unzip the Debian system.
First, make a folder in your playgroup folder called sdcard. (~/playgroup/sdcard)
Right clicking on it will most likely work, depending on your distro, but if you use the terminal, the command unzip should do it. When you unzip the file, it may error after completing the task, that is usually okay. It is a difference in zip endings for Linux/Windows. All the 97151 files should be there, you can right click on the folder to verify. It will be in a folder called 20151106, in that folder, you will see a bunch of folders, such as android, proc, lib, etc, and so on. Copy all of those files to your ~/playgroup/sdcard folder.
Now you have a basic Debian Linux system with an XFCE desktop and a user all ready to go. We will need to change a few things that are specific to your phone though, to make this work right.
#4. Copy the original boot stuff to your sdcard folder.
In that ~/playgroup/sdcard folder, is a folder called android (~/playgroup/sdcard/android). This folder currently contains all of the ramdisk for the Cranium Kernel on an i927. You will go ahead and delete everything in the ~/playgroup/sdcard/android folder. It is useless to you.
When you broke down your boot.img file, you were given a new folder called "./boot.img-ramdisk/" this is the contents of your ramdisk for your kernel. Copy all of the files in the boot.img-ramdisk folder to the android folder. Make sure you copy, not move, you will need the other copy for modification shortly.
#5. Gather some information.
Install CM11 to your phone, if you have not already done so. Insert your sdcard. Turn on your phone. Once done, we need to get some information from it. Install a terminal app and give it root permission, or use adb shell from you computer, either way works. Now gather the following information:
Code:
$ su
# mount
.....info you need.....
Write down, copy, or screenshot all of this information.
Code:
$ su
# ls /dev
.....info you need.....
# ls /dev/input
.....info you need.....
# ls /dev/graphic <-----(or graphics depending on your phone)
.....info you need.....
Write down, copy, or screenshot all of this information. You may need some of it later.
WHY:
We will need the partition details and the framebuffer details.
Turn off your phone and remove the sdcard.
#6. Make some changes to init.stage2 file.
There should be a file called init.stage2 in the etc folder: ~/playgroup/sdcard/etc/init.stage2
Open that file with a text editor. Line 43 should say this:
Code:
export FRAMEBUFFER=/dev/graphics/fb1
Change the last part "fb1" to be the earliest fb you wrote down from step 5: "# ls /dev/graphic". So if you have an fb0, put that here. If it starts at fb1, put that here. save the file. You can close that now.
WHY:
Currently, it was set to the framebuffer I was using. We need the framebuffer (screen) for your phone.
#7. Edit your rc.local file.
Open the ~/playgroup/sdcard/etc/rc.local file.
NOTE: There is also an ~/playgroup/sdcard/etc/init.d/rc.local file, that is not the file you want.
It should say:
Code:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Start the ssh client, in the event you need it.
/etc/init.d/hostname.sh start
/etc/init.d/ssh start
# Clean up bad crash before starting x server.
# /sbin/busybox mkdir -p /tmp/.X11-unix/remove
# /sbin/busybox rmdir /tmp/.X11-unix/remove
# /sbin/busybox rmdir /tmp/.X11-unix/
# Start the x server, warning, if the touchscreen or keypad doesn't work
# then you cannot escape without killing power!
/usr/bin/startx &
#export USER=root
#vncserver :5000
exit 0
At this time, change it to say:
Code:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Start the ssh client, in the event you need it.
/etc/init.d/hostname.sh start
/etc/init.d/ssh start
# Clean up bad crash before starting x server.
# /sbin/busybox mkdir -p /tmp/.X11-unix/remove
# /sbin/busybox rmdir /tmp/.X11-unix/remove
# /sbin/busybox rmdir /tmp/.X11-unix/
# Start the x server, warning, if the touchscreen or keypad doesn't work
# then you cannot escape without killing power!
#/usr/bin/startx &
#export USER=root
#vncserver :5000
exit 0
Save the file, and you may now close that window.
WHY:
Currently, it was set to start the openssh server, then the x server. We want to only start the ssh server so we can get the proper information for the x server. We will change this file back later when we have the information.
#8. Put Debian Linux on the sdcard's second partition:
Here is where things will differ for you and me. I don't know where your card will mount, your system may auto-mount your sdcard when you put it in, but here is what you need to do:
-Mount the second partition to /mnt, or figure out where it is mounted.
Code:
$ cd ~/playgroup/sdcard/
$ sudo su
<enter your password>
# cp -Rav ./* /mnt
# sync
# exit
$ exit
WHY:
If you drag and drop, some files will not copy right. We need all files to have the proper permissions and the proper file attributes.
Now you can unmount the partitions and remove the sdcard from the computer/adapter.
#9. Prep your new boot image.
Okay, here is where rubber meets the road. Follow close, because this is really important.
The
Code:
<---
are my comments, don't type those (obviously).
Code:
$ cd ~/playgroup/bootimage/boot.img-ramdisk/ <---to get to the right place.
$ rm -rf * <---to empty out the ramdisk
$ mkdir data
$ mkdir dev
$ mkdir mnt
$ mkdir proc
$ mkdir sbin
$ mkdir sys
$ mkdir system
$ touch init
$ mkdir ./mnt/root
WHY:
This makes the empty directory that you need. Most of this will be populated when the phone starts by busybox.
Remember that busybox file you downloaded? copy it into the sbin folder. THis busybox will actually be the heart and soul of your computer/phone during startup. The Kernel will only interface with it at first.
Now open the init file with gedit or some other text editor, and fill it in with this:
Code:
#!/sbin/busybox sh
# initramfs pre-boot init script
# Mount the /proc and /sys filesystems
/sbin/busybox mount -t proc none /proc
/sbin/busybox mount -t sysfs none /sys
/sbin/busybox mount -t tmpfs none /dev
# System needs a few cycles here
/sbin/busybox sleep 1
# Populate /dev
/sbin/busybox mdev -s
# Mount the root filesystem, second partition on micro SDcard
/sbin/busybox mount -t ext4 -o noatime,nodiratime,errors=panic /dev/mmcblk1p2 /mnt/root
# Clean up
/sbin/busybox umount /proc
/sbin/busybox umount /sys
/sbin/busybox umount /dev
# Transfer root to SDcard
exec /sbin/busybox switch_root /mnt/root /etc/init
Save the file and close it. Now, this only works if your step 5: "ls /dev" has /dev/mmcblk1p1 and /dev/mmcblk1p2, and no higher /dev/mmcblk1p* numbers. There should also be a bunch of /dev/mmcblk0p* numbers, that is okay, that is your phone's internal storage. This should be correct, but if you do not have that in step 5, then let me know and we will look at your output from step 5.
Code:
$ cd ~/playgroup/bootimage
$ rm initramfs.cpio.gz
$ cd ./boot.img-ramdisk/
$ sudo su
<enter your password>
# chmod a+x ./init
# chmod a+x ./sbin/busybox
# find . | cpio --quiet -H newc -o | gzip > ../initramfs.cpio.gz
# cd ..
# mkbootimg --kernel zImage --ramdisk initramfs.cpio.gz --base 0x0 --cmdline 'console=ttyS1,115200n8 androidboot.selinux=permissive' -o new_boot.img
-With heimdall, heimdall-frontend, or Odin, flash the new_boot.img to the boot partition of your phone. Make sure you already have your prepared sdcard in your phone. If it auto rebooted, proceed to step 10. If not, power off when done, then power on and go to the next step.
#10. Reboot your phone.
So, make sure your prepared sdcard is in the phone. Your phone probably rebooted when you flashed the new boot image. For the most part, if this worked, boot up will look normal. If it did not work. It should not have booted. CM11 will start and you will have no idea that anything is different. However, if it booted, there is a difference now, there are a few easy ways to see it.
Install an ssh app on your phone from the playstore or with adb. Remember in step 7, we left the openssh server running. This is your ticket "in" to the Linux that is actually in charge of your phone.
open-ssh is installed and running, so using the ssh app, set it for: [email protected]
username is trondroid, password is trondroid
If successful, it should log into the command line of your Debian Linux powered phone! A couple things to remember:
root user has a password of root.
me has a password of me.
trondroid has a password of trondroid. trondroid also has sudo permission.
If you turn on the WiFi in CM11, and your computer is on the same network, you can run this in your computer's terminal to access the phone:
ssh [email protected] (ipaddress of phone, get from settings menu)
Debian actually is CM11's boss. Debian can delete/move/modify anything in CM11's world. BE CAREFUL! This is the ultimate root! You can even resize CM11's partitions from here. SO BE CAREFUL!
Apt-get works to download any Debian programs you want. We will get into the graphical stuff next time.
Congratulations! You made it work. Now we just have to set up the buttons, keys, xorg.config, and sound for the Debian part, which we will do next. Let me know how it went, and if you have any trouble! Play around and have fun! You are IN!
Part 3 of 3. The final instructions.
Well, I don't know what happened to Tim, but for any interested (probably not many, but for any who are) here are the final instructions.
If you are still with me, then you have already set up your phone to first boot Debian Linux, and then Linux will start Android in a chroot environment. Your phone is actually already running Debian Linux, just with Android being run and displayed on the screen. At any moment, you can actually stop or kill Android. At this point, you also have the power to mess Andriod up, so do be careful!
If you just tuned in, I recommend that you go back to the previous posts, as there is a lot of critical information you need.
Right now, you should be able SSH into your own Linux from the Android gui by using any ssh app to yourself as the local host, since our SSH deamon is running. What we want, though, is for your screen to display the Linux screen, instead of the Android that is running in a chroot environment.
A key part of all of this, is that Android, other than through services like SSH, does not know that Debian Linux exists and it does not have any control over the Linux system or functions. One problem with this is that Android may occaisionally crash due to memory problems, if your Linux environment is using too much RAM. Ironically, if you SSH into your Linux environment, you can use ps aux, or top to see all of Android's running processes. Your Linux environment is now the ultimate root, because even Android doesn't know it exists. You can log anything from Android and save it, you can stop any Android process. You have complete control over your Android system.
However, before making the "plunge" to a Linux only phone, you need a few details. The easiest way to get these is to do some research on your phone. Through SSH, run the ls command in your /dev folder, and look for "input"
Code:
$ cd /dev
$ ls |grep input
/dev/input
/dev/input/event7
/dev/input/event6
/dev/input/event5
/dev/input/event4
/dev/input/event3
/dev/input/event1
/dev/input/event0
/dev/input/event2
On my Samsung Captivate Glide, these are all the available inputs. But what are they? Well, there are several tools to check this. The easiest way, however, is to SSH into Linux, start x11vnc in Linux, and use an app like bvncfree in Android to bring up a visual screen to work with. How you need to do this is a bit tough to describe, because it is so dependent upon your phone and setup. However, if you are using my files, the user trondroid should have a shell script in the home folder for starting jwm in this fashion.
Another way is to start the XserverXDSL app in Android, and then startx in Linux through SSH. That should get you to the same place.
Once you have established a "visual" screen, you now should open up a terminal in your Linux screen. Remember, all input commands that you input right now are from the Android app you are using. That means the "mouse", "click", and "keyboard" are all virtual. You need to set up your real screen as a mouse, for motion and clicking. You also need to set up your physical buttons from your phone, and your keyboard if you have one. With your terminal open, use evtest, like so:
Code:
$ sudo evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0: STMPE_keypad
/dev/input/event1: mpu-accel
/dev/input/event2: sec_key
/dev/input/event3: sec_touchscreen
/dev/input/event4: proximity_sensor
/dev/input/event5: light_sensor
/dev/input/event6: HALL
/dev/input/event7: sec_touchkey
/dev/input/event8: compass_sensor
This even works on your home computer. For instance, here is my laptop:
Code:
$ sudo evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0: Sleep Button
/dev/input/event1: Lid Switch
/dev/input/event2: Power Button
/dev/input/event3: AT Translated Set 2 keyboard
/dev/input/event4: Logitech USB Optical Mouse
/dev/input/event5: SynPS/2 Synaptics TouchPad
/dev/input/event6: Video Bus
/dev/input/event7: ST LIS3LV02DL Accelerometer
/dev/input/event8: HDA ATI SB Mic
/dev/input/event9: HDA ATI SB Line
/dev/input/event10: HDA ATI SB Headphone
/dev/input/event11: HP WMI hotkeys
Select the device event number [0-11]:
But we will focus on the phone. Great! Now we know what event is what input! For instance, event3 is the touchscreen. Now we have something to work with. In my case, event0 is the physical keyboard, but those are rare these days.
You can also test those inputs, by choosing a number for the device, and then using that function. Here you can see me test the "menu key" on the keyboard:
Code:
Menu Key on keyboard
Event: time 25170.575766, type 4 (EV_MSC), code 4 (MSC_SCAN), value 8b
Event: time 25170.575844, type 1 (EV_KEY), code 139 (KEY_MENU), value 0
Event: time 25170.575854, -------------- EV_SYN ------------
Another great tool is called xev, again, open up a terminal and use it like this:
Code:
$ xev
ButtonRelease event, serial 33, synthetic NO, window 0x1e00001,
root 0x26f, subw 0x0, time 156984900, (175,123), root:(228,195),
state 0x100, button 1, same_screen YES
MotionNotify event, serial 33, synthetic NO, window 0x1e00001,
root 0x26f, subw 0x0, time 156985076, (177,123), root:(230,195),
state 0x0, is_hint 0, same_screen YES
There is also xinput, here is an output from my computer:
Code:
$ xinput test-xi2
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Logitech USB Optical Mouse id=9 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=11 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Sleep Button id=8 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=10 [slave keyboard (3)]
↳ HP WMI hotkeys id=12 [slave keyboard (3)]
EVENT type 13 (RawKeyPress)
device: 3 (10)
detail: 54
valuators:
cEVENT type 14 (RawKeyRelease)
device: 3 (10)
detail: 54
valuators:
EVENT type 13 (RawKeyPress)
device: 3 (10)
detail: 40
valuators:
The overall idea, though, is that you need to open up an x session, so you can then see what x inputs are matched to which event. Once you have all of this information, you can edit the /etc/X11/xorg.conf file to match. Here is the one I made for the Samsung Captivate Glide:
Code:
Section "ServerLayout"
Identifier "Layout0"
Screen "Screen0"
InputDevice "touchscreen" "CorePointer"
InputDevice "keyboard"
InputDevice "mediakeys"
InputDevice "frontkeys"
EndSection
Section "Monitor"
Identifier "Monitor0"
ModelName "Monitor Model"
DisplaySize 800 480
EndSection
Section "InputDevice"
Identifier "touchscreen"
Driver "evdrv"
Option "Device" "/dev/input/event3"
Driver "multitouch"
EndSection
Section "InputDevice"
Identifier "keyboard"
Driver "evdev"
Option "Device" "/dev/input/event0"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "us"
EndSection
Section "InputDevice"
Identifier "keyboard"
Driver "evdev"
Option "Device" "/dev/input/event8"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "us"
EndSection
Section "InputDevice"
Identifier "mediakeys"
Driver "evdev"
Option "Device" "/dev/input/event2"
EndSection
Section "InputDevice"
Identifier "frontkeys"
Driver "evdev"
Option "Device" "/dev/input/event7"
EndSection
Section "Device"
Identifier "Card0"
Driver "fbdev"
Option "fbdev" "/dev/graphics/fb0"
Option "Rotate" "left"
Option "VertRefresh" "60"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Card0"
DefaultDepth 16
SubSection "Display"
Depth 16
EndSubSection
EndSection
Notice how you must declare a screen, a monitor, and then the card that controls it. /dev/graphics/fb0 is the framebuffer that you got the other day, if you were following along with these posts. You will also notice, that for each section, a driver is declared. The drivers used here are generic drivers. You may have different hardware, and use different drivers. So, if one doesn't work, google the xorg.conf section and the word drivers to see some of the different drivers available. You may even need proprietary drivers specific for your device. Like I said though, these generic drivers worked great for me. So I would try those first.
Once you have your drivers and xorg.conf file all set, it is time to take the plung. Be sure to back up your system first. Remember, TWRP or CWM are your freinds, as they work outside of all of the other work you are doing. So you can always start over or go back to something else.
Now, go back to your /etc/rc.local file. It should say:
Code:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Start the ssh client, in the event you need it.
/etc/init.d/hostname.sh start
/etc/init.d/ssh start
# Clean up bad crash before starting x server.
# /sbin/busybox mkdir -p /tmp/.X11-unix/remove
# /sbin/busybox rmdir /tmp/.X11-unix/remove
# /sbin/busybox rmdir /tmp/.X11-unix/
# Start the x server, warning, if the touchscreen or keypad doesn't work
# then you cannot escape without killing power!
#/usr/bin/startx &
#export USER=root
#vncserver :5000
exit 0
And change the last part to say this:
Code:
# Start the x server, warning, if the touchscreen or keypad doesn't work
# then you cannot escape without killing power!
/usr/bin/startx &
#export USER=root
#vncserver :5000
exit 0
Now you have told it to startx on the next startup. If all goes well, reboot your phone, and you should see the XFCE desktop. If not, then you need to figure out how to edit the xorg.conf file to make it work right. You may also need to uncomment the lines about rmdir /tmp/.X11-unix, and the other lines like it, if your xserver ever crashes.
I have noticed several variants, especially on Android 4.4 and newer, that it will startx, but also start Android. You will see one normally, and then a small, pink version of the other overlayed on part of the screen. Almost like a picture in picture TV, but very dificult to understand or use. In these cases, you may need to add a command to kill surfaceflinger, or stop zygote to get Android to "clear out". You actually could just skip Android altogether, but having the chrooted Android is great for playing with making phone calls, etc, as I do not know how to do that from Linux yet.
If you made this work then you do have some pretty good Linux skills, if I may be so bold. This is not an easy task, and not for the faint of heart. So great job! Now it is up to you to improve upon this and make it useful. Who knows, you might be giving Ubuntu Touch a run for the money!
tim241 said:
Sorry, I needed to remove linux because I needed space for windows. Sorry , maybe I will take some time later to redo everything
Click to expand...
Click to collapse
No problem! I just hadn't heard from you in a while.
AlaskaLinuxUser said:
No problem! I just hadn't heard from you in a while.
Click to expand...
Click to collapse
Hey uh, I tried following your instructions but I'm stuck on step 9.
From what I can tell from a ton of debugging, it gets stuck at this line.
Code:
/sbin/busybox mount -t ext4 -o noatime,nodiratime,errors=panic /dev/mmcblk1p2 /mnt/root
It seems to be unable to mount it, I've no idea why though because I have no way of seeing any results aside from 'phone boots up' or 'phone loops' which makes debugging a bit hard heh.
Mounting it in Android and recovery (TWRP) works just fine so I'm pretty certain that '/dev/mmcblk1p2' is the right address and I've tried to mount the fat32 partition of the sd card so I could redirect the output of the mount command to a file but mounting the fat32 partition fails as well.
Maybe it's the population of /dev that's failing?
Code:
/sbin/busybox mdev -s
I tried manually creating the node as well to see if that'd help fix anything
Code:
/sbin/busybox mknod /dev/logs b 179 33
Alas, it didn't work for unknown reasons or of course, mdev and mknod could have worked but the mount failed for other unknown reasons. No idea and as far as I can think, no way of figuring it out to my knowledge.
P.s
My phone is the HTC One m8, earliest Android version I could find was 4.4, Cyanogenmod 11. 64 GB class 10 micro SD Card
P.p.s
Thank you for making such a comprehensive guide!
p.p.p.s
It's 12:26am and I'm so very very tired. I spent at about 9 hours on this wow