For anyone actively working with and on the webtop portion of these phones, you'll have noticed that webtop suffers greatly from sluggish response. I decided to experiment and through that, managed to alleviate a large portion of my problems. By creating and enabling a swap partition, I gained a very noticeable increase in performance on my webtop.
1: Remove SD card from phone and mount onto a computer capable of formating as Linux Swap.
Linux machines can obviously do this with any partition manager.
Windows machines can do so with: Paragon Partition Manager
Mac: I'm not currently sure what tool can handle creating swap partitions.
2: Create Swap partition on SD Card. (I personally made mine 1.5 GB)
3: Put SD Card back into phone and boot fully into webtop.
4: In Synaptic, download Partitionmanager. (This is the only partition manager package I have found to do anything at all in the webtop. If anyone has any luck with others, please post what lead to your success.)
(Path Method):
5: Inside Partitionmanager, navigate to the swap partition of your SD card and take notice of the "Device:" line underneath the the bar Volumes bar.
6: If in gnome, Alt+F2 and type
Code:
gksudo gedit /etc/fstab
If in any other desktop environment, open a terminal and type
Code:
sudo gedit /etc/fstab
7: Append the following line to fstab replacing "<path>" with the value in the "Device:" line of partitionmanager:
Code:
<path> none swap sw 0 0
(UUID Method)
5: Inside either Webtop terminal or phone Terminal Emulator type:
Code:
su
blkid
Look for the line which contains
Code:
TYPE="swap"
.
Alongside "TYPE" should be a
Code:
UUID="xxxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx"
.
(If no "UUDI" is listed, take the path of the device from the same line and do the following replacing "<path>" with the path value from above.)
Code:
sudo mkswap <path>
6: If in gnome, Alt+F2 and type [code]gksudo gedit /etc/fstab
If in any other desktop environment, open a terminal and type
Code:
sudo gedit /etc/fstab
7: Append the following line to fstab replacing "<UUID>" with the value in the "UUID=" line of blkid:
Code:
UUID=<UUID> none swap sw 0 0
8: Reboot phone
9: Download Script Manager from the android market.
10: Download View attachment swap.sh.zip and unzip it to a directory of your SD Card where you won't erase it.
11: In Script Manager, navigate to the directory you placed the script and select "swap.sh".
12: Check:
Code:
"Run as root" and "Run at boot"
13: Click "Run"
14: Profit!
To see if it is working, open terminal emulator or a terminal window on either phone or webtop. Type the command "free". and take notice of the "Swap" line. It should tell you the partition size, amount used, and amount free.
Hope this helps someone.
**Tested Working Phones**
Motorola Droid Bionic
Motorola Milestone A854 (Nearly Identical to A855) {blkid is not compiled on this phone. /etc/fstab is non-existent. Easiest way of making the proper /etc/fstab is to partition the swap as the 2nd partition on the card and only have 2 partitions total. This will ensure that the path for the swap is "/dev/block/mmcblk0p2"}
Motorola Atrix 4G using faux123's 2.4beta (Several kernels for the Atrix 4G do not support swap. faux123's 2.4beta does, however) thanks nabicat
If anyone has any other phones that they can confirm working, PM me and I'll add them to the list. If anyone has a phone that requires any special steps, be sure to list the steps taken along with the PM.
*UPDATE!! 06/23/12*
I am currently running the ICS leak 2033 on my Bionic. Webtop is running ICS Tablet. For starters, even without swap space, this version of webtop runs smooth as butter. Swap space IS still capable, though, and does still improve performance. To those who are leery about having android instead of ubuntu for webtop, I challenge you to try it. Some will like it (I certainly do). Others will hate it.
One change that needs to be noted: ICS kernel doesn't support the -a tag on "swapon" instead of using "-a" you'll need to put the path in the command script instead. In my case, the script now reads "swapon /dev/block/mmcblk0p2". It still needs to be run as root. Webtop picks up immediately when you run the script, so no extra steps there. Chrome beta is sexual on webtop 3.0, btw.
Special Thanks:
Sogarth: Fantastic work with webtop2sd across multiple platforms. Opened monstrous doors for all of this.
tallnerd1985: Compiling a great guide for multiple steps of unlocking webtop
[mbm]: Fixing what Moto broke
Natronics: Providing the UUID solution in this guide
Very nice, I will have to test this out tomorrow. Webtop is working well minus some hiccups with Bluetooth mice not clicking properly and display.
But if I want to use this for Citrix receiver and OpenOffice, will definitely want to get this going.
hey bang, an easier way to find the UUID of the swap partition is to run blkid from terminal....it should actually list it as TYPE="swap".
Awesome thanks! I'll give this a try right now and report back!
Natronics said:
hey bang, an easier way to find the UUID of the swap partition is to run blkid from terminal....it should actually list it as TYPE="swap".
Click to expand...
Click to collapse
Very nice. I'll update the guide when I get a chance to reflect that. I'm guessing from either terminal emulator on phone and terminal in webtop?
I ran it on the webtop terminal. it showed the UUID with the quotations after the UUID. so I removed the quotations and entered the UUID into fstab.
---------- Post added at 05:40 PM ---------- Previous post was at 05:17 PM ----------
this is what it looks like in blkid:
/dev/block/mmcblk0p2: UUID="a0a11111-a94e-4fa1-ada0-69186b667b1e" TYPE="swap"
The UUID should look like this when you paste it in fstab:
UUID=a0a11111-a94e-4fa1-ada0-69186b667b1e
this is what the finished product looks like in fstab:
UUID=a0a11111-a94e-4fa1-ada0-69186b667b1e none swap sw 0 0
If you don't see a UUID when you do blkid...
get the location of the partition using blkid... mine was /dev/block/mmcblk0p2
then do a:
sudo mkswap /dev/block/mmcblk0p2
replace the /dev/block/mmcblk0p2 with your sdcards path if it is different than mine. That will set a UUID to the swap partition.
Just a note to those who aren't familiar with linux and/or UUIDs. YOUR actual UUID will be different. You'll have to actually run blkid in either the webtop terminal or terminal emulator (both work. run as super user).
UUID has benefits and drawbacks when compared with the device paths:
UUID values won't change unless the partition is destroyed and recreated. If it's moved around and/or resized, it'll remain the same.
Paths are easier to determine and remember for the less knowledgeable.
Thanks for clarifying the uuid being different for everyone. Forgot to mention that part.
Sent from my HTC Flyer P510e using XDA App
Oops, got distracted half way though. Anyways, works great! Noticeably snappier right away. Thank you so much for noticing this! Seems like Motorola should have had this on from the get go...
I have Paragon installed on my computer but I am still fuzzy on how to make this swap partition. Can anyone help me?
dB Zac said:
I have Paragon installed on my computer but I am still fuzzy on how to make this swap partition. Can anyone help me?
Click to expand...
Click to collapse
delete or resize the existing partition to create blank space. Make a new partition the size you want for swap. Choose "Linux Swap" as the partition type.
I couldn't find an option for swap partition. I made the space but couldn't get past that step
dB Zac said:
I couldn't find an option for swap partition. I made the space but couldn't get past that step
Click to expand...
Click to collapse
It's called "File System Type" or "Partition Type". It's the same option as where you'll find "FAT32" and "NTFS" file systems. You're looking for either "Linux Swap" or "Swap Space"
Banggugyangu said:
It's called "File System Type" or "Partition Type". It's the same option as where you'll find "FAT32" and "NTFS" file systems. You're looking for either "Linux Swap" or "Swap Space"
Click to expand...
Click to collapse
Man, that is weird. I found all those options but there is no option that says swap.....
Sent from my DROID BIONIC using Tapatalk
dB Zac said:
Man, that is weird. I found all those options but there is no option that says swap.....
Sent from my DROID BIONIC using Tapatalk
Click to expand...
Click to collapse
I'm not using it myself, so I don't know for sure what options you have. Perhaps you can list them or post a screenshot of them so I can know more of what's going on?
NTFS, FAT16, FAT32 and none is all it offers
dB Zac said:
NTFS, FAT16, FAT32 and none is all it offers
Click to expand...
Click to collapse
Hmm that must be a limitation on the free version. You could always download a live CD of ubuntu and use GParted inside that to do the job.
Banggugyangu said:
Hmm that must be a limitation on the free version. You could always download a live CD of ubuntu and use GParted inside that to do the job.
Click to expand...
Click to collapse
confirmed. the free version did not have the "swap" partition options but the paid one does
If you paid for it, that's a little foolish, as downloading ubuntu is free and comes w/ GParted on the live CD.
Related
Hi all!
I want to share the way i have to run Debian on Nexus One
I'm editing my own install of deb-armel and ill upload to everyone but first i need to finish it
By now, we will use a qemu image ready and edit it to your needs
You'll need a SD parted with Amon_RA recovery, few files i'll upload later and some skills with Debian, of course hehe
Partition could be user-alike but i recommend:
Im using a microsdhc 8gb class-2 from my magic
- EXT3: 2gb (nice for install a lot of stuff)
- SWAP: 150MB
- The rest as fat32
You need also a rom with app2sd or mount ETX3 partition under /system/sd, im using Modaco's 1.3
First of all, im working on archlinux but this can be done on windows too using the qemu version for windows
Install qemu on your machine.
NOTE: Also you can start a new installation from 0 using images (iso) and info found on google
Now we will use the following QEMU images:
http://people.debian.org/~aurel32/qemu/armel/
We will download the followings Of course you can choose the small or normal version with X preinstalled (the X version preinstalled is not tested by me and i dont know if works)
debian_lenny_armel_small.qcow2 150M
initrd.img-2.6.26-1-versatile 2.1M
vmlinuz-2.6.26-1-versatile 1.2M
Put they in your home folder or where u want.
Now, lets run it.
Use the following command (run it from the folder you have the downloaded files) :
qemu-system-arm -M versatilepb -kernel vmlinuz-2.6.26-1-versatile -initrd initrd.img-2.6.26-1-versatile -hda debian_lenny_armel_small.qcow2 -append "root=/dev/sda1"
Wait a moment... Debian-armel running under qemu
Here are the configuration by default:
- Keyboard: British English
- Language: English
- Mirror: ftp.uk.debian.org
- Hostname: debian-armel
- Root password: root
- User account: user
- User password: user
Edit the system to fit your needs, im not going to explain how to do this, im asumming you know how to. If u don't, use the debian reference guide:
http://www.debian.org/doc/manuals/debian-reference/
Of course, you'll need to edit basic things as locales, network, ssh preferences, etc...
Edit your system, update, configure packages, etc...
Once edited and configured, quit you virtual machine.
Now, we are going to convert the qemu image to a raw image, mount the fs and copy to your SD
Assuming you still in the same folder as the qcow2 image of debian (for windows, google a little, im sure there are something to do the same):
qemu-img convert -O raw debian_lenny_armel_small.qcow2 debian.raw
With this will obtain the qcow2 converted to a raw file (without touching the original qcow2 file)
Now mount it where u want or follow this steps:
sudo mkdir /media/debian
Before mount, lets see where start the partition on the raw file:
sfdisk -l -uS debian.raw
U will see a list of partions under the raw file, use the first, like this one:
debian.raw1 * 63 20225834 20225772 83 Linux
Now, we know the / starts at 63, mount this partition
sudo mount -o loop,offset=$((63*512)) debian.raw /media/debian
Ok, we have our partition mounted now, lets make a copy in our EXT3 partition on SD.
Use the USB Storage function from android, sd card reader... and mount the EXT3 partition
Once mounted, copy everything from /media/debian to /media/yourSDext3mounted
cd /media/debian
sudo cp -a * /media/yourSDext3mounted/
If everithing works as expected, umount the systems /media/debian/ and /media/yourSDext3mounted or use the Android notif to disconnect the USB storage function
Check if everything is now in the SD EXT3. Open a terminal and adb shell
adb shell
cd /system/sd
ls
U'll see the Debian / extructure and the app & app-private
Of course dont worry about this, u can still using apps2sd and debian at the same time
Now, it's time to boot debian
We need some modded files from the G1 version to boot it:
Download from Megaupload: http://www.megaupload.com/?d=Q67SNOBC
Download from MediaFire: http://www.mediafire.com/?mxgcyk3whdt
Also, files attached to post (rename the extension to tar.gz)
Put the files into your FAT32 SD partition, no in a folder just in "/"
Now, it's time to give it a try
U have two ways:
Open a terminal window in your PC
adb shell
cd /sdcard/
sh installer.sh
sh bootdeb
Or:
Open up a terminal in your N1, like Terminal Emulator on Market
cd /sdcard/
sh installer.sh
sh bootdeb
PROFIT!!!
Enjoy your debian-armel on your N1
For the next chapter, how to run X with VNC Viewer
Bye and thanks for reading!
Looks like Klingon to me.
I have Debian running too now
Nice! Cant wait to try it out!
nice, i've been looking for a n1 debian how-to
Installing debian is pretty much the same as running it on your g1. I had it working the day after I got mine using the g1 instructions.
So, what's the reason or running debian on your phone?
Jst wondering
u
The reason by now is just fun hehe
But, if we can run it natively via fastboot, would be awesome hehe
Sorry for the delay guys, ill do it now, the last night was too late for me 4am here hehe
EDIT: Just give some time more, i going to try it with the Cm 5.0 beta 1
jairuncaloth said:
Installing debian is pretty much the same as running it on your g1. I had it working the day after I got mine using the g1 instructions.
Click to expand...
Click to collapse
I couldnt get chmod or installer.sh from the g1 instructions to work. I tried it both with bacon and modaco 1.3. I skipped the jesusfreak part though so maybe thats why. Anyway seeing confirming instructions would be nice.
Because the g1 files need to be modded first
I have it running it under modaco 1.3 and now im going to try it with the new b1 from cyanogen
Guide ready
Enjoy it!
Hi,
i have one question about debian. Is the network traffic routed trough android, or does debian has direct access to the wlan adapter for monitor mode and aircrack ?
meld0
it's using the same ip and mac, so is shared for both
If there are the apropiate drivers maybe, don't really know
Calling Linux Experts!!! hehe
Is there any way to create a boot.img bootable via fastboot to run the ext3 partition of sdcard with debian?
Driskol said:
Calling Linux Experts!!! hehe
Is there any way to create a boot.img bootable via fastboot to run the ext3 partition of sdcard with debian?
Click to expand...
Click to collapse
sorry for being noob in this matter but, why do i need debian on my phone? what does it give me?
amir
The answer is a choice, Android or a Full Desktop OS with Firefox, Thunderbird, OpenOffice, etc...
When its booting I'm getting an error:
/system/bin/bootdeb: line 61: chroot: command not found
Doing "find / -name chroot" only returns binaries within the debian image.
Any ideas?
Driskol said:
The answer is a choice, Android or a Full Desktop OS with Firefox, Thunderbird, OpenOffice, etc...
Click to expand...
Click to collapse
How well does Firefox run?
Can anyone take some pics or video?
Any instructions for creating and mounting linux as an img file instead of using separate partitions?
tetlee said:
When its booting I'm getting an error:
/system/bin/bootdeb: line 61: chroot: command not found
Doing "find / -name chroot" only returns binaries within the debian image.
Any ideas?
Click to expand...
Click to collapse
Maybe your rom doesn't have Busybox
EDIT: Im going to make a img version tutorial
Of course, this version was without the highmem kernel, now with more ram, more flawlessly
----- Announcements -----
Closed in favour of this thread.
As noted in the poll, interest is high enough in a union filesystem that it will be the next thing investigated. Unfortunately, anybody who wants to move from any version 1.x or earlier of this script will probably need to re-install everything for version 2.x, as the way the target filesystem is designed is going to change dramatically. Sorry.
There's a typo that jdkramar found, but I expect that most of you won't hit it (unless you've modified your /etc/sudoers), and those that will know enough to fix the script.
----- Your regularly scheduled post below. -----
For those users who have requested a full Linux on their Android device, I now present a relatively easily upgradable Ubuntu on the Motorola Atrix. It's not perfect, but it's surprisingly good.
There are a number of problems we have with the webtop environment that we would like to address in order to have "proper" Ubuntu, including (additional explanation below about each of these points):
The restrictiveness of the environment Motorola's set up (easy to bypass).
A lack of disk space to do anything (only having ~80 MB free really hurts).
An unwillingness to create a third Linux-based environment.
A non-functional apt/aptitude (easy to fix).
Note: This is different than the "webtop over HDMI sans dock" effort. If you're looking for that, please look at this other thread instead. Although unrelated, they shouldn't conflict with each other.
Caveats:
You will be hacking your device. The base script that modifies your device has been reasonably well tested and operates with a decent level of paranoia, so it is highly unlikely that the script will break anything. However, any software you install after you have access to a full Ubuntu presents a very real chance that you will either soft-brick your device or get it into an infinite reboot loop, particularly if you don't know what you're doing. Having a decent knowledge of Unix/Linux is recommended if you wish to proceed. You take full responsibility for what may happen to your device if you execute this script.
You'll need a rooted Atrix in order to do this*, although I doubt anyone's surprised about that. The attached setup script takes care of the steps in post #4, but you should note a few things:
Before you execute the script:
In response to the request that threads indicate whether or not this will work on any Motorola Atrix, it should. If you'd like verification, send me the output of "/usr/bin/dpkg-query -l" on your Atrix's unmodified Ubuntu, and I can double-check. So far, this is verified to work on:
AT&T (me! )
Bell
The script will create a 1 GB filesystem file in /data, so you'll need to have at least that much free space there.
Before running the install script, you'll need to have seven or less apps in the Media area. You can check this by going to Settings → Applications → Manage applications, then checking the Media area tab. The number of apps there will need to be seven or less. If you have more than that, temporarily uninstall apps or move them back to the phone (you can move them back after the script runs and reboots).
While you execute the script:
When the script asks question, it offers reasonably "sane" options by default (although it does try to be safe).
Resetting a filesystem file means that it will use the file that's already there, but set it back to match your original /osh partition. It's generally quite a bit faster than deleting it and recreating it, but deleting it is sometimes the right decision (like if you want to change its size).
The script asks about your MAC (mandatory access control) files because it can't be sure that you haven't altered your original files to your taste. If you have no idea what that sentence just said, pick either the very permissive or somewhat permissive MAC configuration files (the former should cause you fewer headaches).
If you haven't altered your AWN configuration (the tray at the bottom), I suggest you install the modified app launcher configuration (which is the default). If you have altered the configuration, the script won't ask, assuming that you'd like to keep your current one.
Since the setup script downloads Ubuntu packages on the fly (it made more sense than trying to have a giant archive with all of the packages embedded in it), the quality of your connection may result in the script dying partway through. If this happens, you should just be able to restart the script; it'll start again from the beginning, but nothing bad should happen as a result. If enough people report problems with downloading packages, I'll look into a workaround.
After you execute the script:
I've seen a couple of instances where on the first reboot to the alternate /osh partition where MotoBlur thinks that the SIM card has changed. Another reboot fixes this.
For those users who have used a previous version of the script, an upgrade script(s) are included to bring you up to the current level of what's automated.
For those users who have used a previous version of the script and made changes after that, the upgrade script(s) should be able to handle those changes gracefully.
If you want to uninstall:
Using adb with root access:
adb shell
su
cd /system/bin
mv mountosh mountosh.new
mv mountosh.orig mountosh
cd /data
rm ubuntu.disk
cd /home/adas/.gconf/apps/avant-window-manager
rm -r window_navigator
reboot
Once installation is complete, you can start playing with synaptic to install packages. You may need to be careful upgrading any of the -mot/~mot versioned packages, as that can break functionality. I'm still compiling a list of which packages can be upgraded versus which can be left alone (listed below).
Here's a brief runthrough of the type of operations you can do afterwards. Upon rebooting, the webtop screen now looks like this (note the altered set of icons in the tray):
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Running synaptic brings up a list of available packages:
If we're looking for a decent image viewer, eog should do the trick:
Once we install it, Nautilus (the file manager) now has an interesting option in the menu for pictures, Open with "Image Viewer":
Selecting that brings up what you would expect (moved off to the side so that it doesn't take up the entire desktop):
I haven't yet tested upgrading to Ubuntu 9.10 yet (let alone Ubuntu 10.x), but everything else looks to work fine, with the usual caveats. Further updates to come as they're available!
Changelog:
1.0.6: "By default, Wget will assume a value of 10 seconds." my foot!
1.0.5: More fixes:
Having a space in the directory structure should no longer be disruptive to the script's behaviour.
Questions are now case-insensitive.
More tweaks to the somewhat permissive TOMOYO configuration files.
If the LXTerminal binary has been deleted (as appears to be the case on Bell), it is now re-installed.
The built-in package tester is now more resilient. It supports 1.4.26 and 1.4.52 properly.
The script now asks whether the dock should just be blown away with the replacement, rather than trying to make assumptions.
1.0.4: Quite a few fixes:
Rename upgrade scripts, so that people get less confused (hopefully!).
Tweak the check for whether it's already running from the filesystem file, since the earlier check didn't actually work (doh!).
/osh/data doesn't exist by default, so have the script stop assuming that.
Tweak the pulseaudio re-install so that it's a bit more reliable.
The expected list of packages to manipulate doesn't work for 4.1.26. Set it to the 4.1.26 numbers for now, and re-factor for 4.1.52 with the next revision.
Reroute /bin/ps' stderr to /dev/null so that it doesn't pollute stdout.
The set of unmount instructions at the end need to be split up, since you can rightfully get to the end while skipping some of the mount instructions.
Prior to attempting to alter /system, ensure that it's mounted read/write.
1.0.3: Not everybody runs batch files from the command line, so add a "pause" at the end so that users can see what happened.
1.0.2: Apparently, relying on the score that aptitude returns as the check for whether or not it's okay to auto-fix things is too unreliable. So, instead, opt for the (somewhat riskier, but should be reasonable) check of the number of packages to remove/install/upgrade/downgrade. The check can be made package-specific if need be, but I'd rather have a script that I can re-use later for other upgrades if I need it.
1.0.1: If the package management auto-fix doesn't go through, it's not likely that the script will be able to install gksu or synaptic either, so those steps need to be fixed.
1.0: The "very permissive" MAC option was broken. That's now been fixed, along with completing the automation of the entire process.
0.7.2: Added a check for having a free loop device, and also re-added a "very permissive" MAC option.
0.7.1: Removing /sbin/tomoyo-init appears to cause the X environment not to load at all, so disallow that option for now.
0.7: In addition to making it slightly more user-friendly (by adding questions for when the script isn't sure how to handle a situation), it now handles through to the initial dpkg installation.
0.5.2: Dump rsync's output to /tmp/rsync.out since it takes a really long time, allowing for users to tail the output if they know how. Also, run adb kill-server at the end of the script so that the adb daemon doesn't continue to run (which makes it really annoying to try and delete the directory).
0.5.1: 0.5 had a bug where it tried to check for a return from psneuter, which kills the adb connection (so no return value could be obtained). Instead, use whoami to verify whether or not psneuter succeeded in running.
0.5: The attached script should handle up through to the rsync phase automatically. There's a considerable amount of error checking, so it should be safe to use (I've uploaded a version of the script that should take you as far as the mountosh swapping, which means that you'll now be using a different Ubuntu partition than the default).
* This is a technicality, since the script hacks your device to be able to run commands over ADB as root.
----- Donation notes -----
If you want to donate, rather than to me, why not donate to the Japanese earthquake/tsunami relief effort instead? Here are a couple of (non-attributed) pointers if you don't know where else to look:
International Federation of Red Cross and Red Crescent Societies: no minimum; USD, CHF, EUR; Visa/MC
American Red Cross: $10 minimum (ouch); USD; Visa/MC/AmEx/Discover/Amazon
Canadian Red Cross: no minimum (?); CAD; Visa/MC/AmEx/PayPal
In regards to the above list, a bit of explanation:
The restrictiveness of the environment Motorola's set up (easy to bypass).
As shown in the above steps, renaming and/or removing /sbin/tomoyo-init is all it takes to disable TOMOYO Linux. Leaving it in place isn't necessarily a bad idea, since it means that any of the standard entry points into an Atrix are reasonably locked down. The TOMOYO configuration file that I'll shortly be attaching leaves certain executables completely unlocked (those that need to be able to run anything), but finding out what's hitting up against the limits is a simple matter of setting everything to run_level 2 and checking dmesg.
A lack of disk space to do anything (only having ~80 MB free really hurts).
As I note above, 1 GB isn't much either. On the other hand, what I'm going to look into when I have that mythical thing called free time is to use my internal contacts to get a copy of the kernel source code and then see if I can build myself a FUSE module. At that point, I should be able to pull off a union mount, which should help dramatically.
We haven't figured out how to repartition the Atrix's partition scheme, so we don't have much flexibility on making the existing partition larger. Creating a filesystem file in the Internal Storage would be nice, but a) that partition (p18) isn't available when mountosh runs, and b) it'd make it difficult, if not impossible, to cleanly USB mount the partition. Creating a partition on the SD card would be nice, but a) mmcblk1 isn't available when mountosh runs either, and b) there would be similar constraints if a user ever wanted to pull the SD card.
An unwillingness to create a third Linux-based environment.
I respect what the people who are trying to create a "clean" chrooted environment are trying to do, but it feels to me that there's the whole "throwing the baby out with the bathwater" aspect here, since there really isn't that much more to do beyond what Motorola's provided. Besides of which, some of what Motorola has done with their environment isn't possible to duplicate without taking the files (like the aiw (Android In Window) package). So I would prefer to take the approach of taking the chains off the existing system.
A non-functional apt/aptitude (easy to fix).
Not much to say here, right?
The script builds a larger disk using /data as its home. The primary advantage is that we have access to it at the right point during boot. The primary disadvantage is that we don't have anywhere as much as we'd like to have (since /data is 2 GB total). But, you work with what you've got!
Known package issues:
Be careful upgrading any of the -mot/~mot packages, as that can break functionality. I'm still compiling a list of which packages can be upgraded versus which can be left alone.
Can be upgraded with loss of functionality:
libnautilus-extension1-1:2.26.2-0ubuntu1-mot1
nautilus-1:2.26.2-0ubuntu1-mot1
nautilus-data-1:2.26.2-0ubuntu1-mot1
Upgrading these packages plus at least one additional package I've not yet fully identified breaks viewing mountable storage and the ability to unmount it.
xserver-xorg-core-2:1.6.0-0ubuntu14
Using the stock xserver-xorg-core 2:1.6.0-0ubuntu14 that's already installed without recovering /usr/bin/Xorg appears to lead to a loss of the status bar at the top. This particular issue is now handled by the script.
Cannot be upgraded:
gtk2-engines-1:2.18.1-0ubuntu1~mot1
This breaks aiw (Android In Window) so that there's no frame around the window and it can no longer be manipulated in any way.
xscreensaver-5.10-6-motorola1?
xscreensaver-data-5.10-6-motorola1?
xscreensaver-data-extra-5.10-6-motorola1?
This will likely break displaying aiw (Android In Window) as the unlocking mechanism for the screensaver. Still needs to be tested.
Archived notes:
The below steps are performed by the script in the first post, but in case you really wanted to know what's going on behind the scenes....
----- The setup script takes care of steps starting here. -----
From here on until noted otherwise, all commands are assumed to be run as root (so you either are root, or you're calling every command via sudo).
First, we should make sure that there's enough free space on the device:
/bin/df -h /data
There should be at least 1.0G under the Used column. If not, you won't have enough to create a decent disk. If so, then you can keep going:
/bin/dd if=/dev/zero of=/data/ubuntu.disk bs=1024 count=1048576
/sbin/losetup /dev/block/loop7 /data/ubuntu.disk
/sbin/mkfs -t ext3 -m 1 -b 2048 /dev/block/loop7
mkdir /tmp/osh
/bin/mount -t ext3 /dev/block/loop7 /tmp/osh
At this point, we've created a 1 GB disk file (1,024×1,024=1,048,576), formatted it as ext3, and mounted it in /tmp/osh. The next step is that we need to grab a copy of rsync so that we can perform our copy. I'll assume that rync is in /mnt/sdcard-ext for now:
mkdir /tmp/deb
/usr/bin/dpkg-deb -x /mnt/sdcard-ext/rsync* /tmp/deb
/tmp/deb/usr/bin/rsync -avx /osh/ /tmp/osh/
And now we have a duplicate of our /osh partition, but with more space this time (1 GB instead of 756 MB, which isn't great, but is a hell of a lot better). And, we know how to intercept the point in init.rc where /osh is mounted so that we can redirect it. Put the following into a file named mountosh.new, then copy it to /mnt/sdcard-ext. Here's the file:
Code:
#!/system/bin/sh
# Run mountosh.orig
/system/bin/mountosh.orig "[email protected]"
# Then, mount the filesystem file over the existing /osh
# partition.
/sbin/losetup /dev/block/loop7 /data/ubuntu.disk
/system/bin/mount -t ext3 /dev/block/loop7 /osh
After that:
mv /system/bin/mountosh /system/bin/mountosh.orig
cp /mnt/sdcard-ext/mountosh.new /system/bin/mountosh
chmod 0755 /system/bin/mountosh
chown 0 /system/bin/mountosh
chgrp 2000 /system/bin/mountosh
You can now reboot your device, and you should now boot into the new partition we've just created.
----- The 0.5 version of the setup script performs up through here. -----
Here, an interesting question pops up: do you want mandatory access control (MAC) in place? In my case, I don't have a problem with it, so I can provide updated TOMOYO configuration files that reflect that. If you would prefer to disable it completely, run the following commands:
rm osh/etc/tomoyo/exception_policy.conf
touch osh/etc/tomoyo/exception_policy.conf
rm osh/etc/tomoyo/domain_policy.conf
touch osh/etc/tomoyo/domain_policy.conf
and then reboot your device again. This configures TOMOYO so that it monitors nothing.
Next, we go through and install a series of packages which are either loaded in a broken state (because Motorola force-installed conflicting packages afterward) or packages which are expected to be present. Some of these packages have specific paths listed afterward; if there are, then those files need to be backed up before package reinstallation, then restored afterward. This is important.
coreutils
cpio
dbus
/etc/init.d/dbus
dbus-x11
/etc/X11/Xsession.d/75dbus_dbus-launch
dhcp3-client
findutils
gpgv
pulseaudio
/etc/pulse/daemon.conf
/etc/pulse/default.pa
udev
/etc/init.d/udev
xserver-xorg-core
/usr/bin/Xorg
You'll need to install each package with:
dpkg -i --root=/osh --force-overwrite <package>
At this point, we can now update the list of APT sources so that we can start querying the public Ubuntu depots. Edit your /etc/apt/sources.list to have these entries:
Code:
deb http://ports.ubuntu.com jaunty main universe multiverse restricted
deb http://ports.ubuntu.com jaunty-security main universe multiverse restricted
deb http://ports.ubuntu.com jaunty-updates main universe multiverse restricted
I would also recommend that you add this line to the bottom of your /etc/apt/apt.conf.d/05aptitude file, since the reality of the situation is that we still don't have much space (it'll turn off auto-installing packages that aren't necessary but are recommended):
Code:
Apt::Install-Recommends "false";
At this point, you should be able to run the following with no problems:
apt-get update
----- The 0.7 version of the setup script performs up through here. -----
If this succeeds, we can move on to running aptitude:
aptitude
It will complain that a number of package installations are broken. This is expected, as that's how Motorola built out the distribution. The current script executes the "default" solution, which at the time of writing is four uninstallations, one downgrade, and ten installs. Also make sure that no "unnecessary" packages are uninstalled, since some of them are actually necessary.
We can then install gksu and aptitude so that we have graphical access to the package repositories from aptitude.
----- The 1.0 version of the setup script performs up through here. -----
You my friend are incredibly good. This is insane
Edit: removed huge quote...
Might be a good idea to not quote the entire massive post.
Looking forward to seeing where this goes... How well does it run?
This is great. Can't wait to try it monday. Keep up the good work.
Sent from my MB860 using XDA Premium App
how does this perform vs the included webtop mode?
CC Lemon said:
Looking forward to seeing where this goes... How well does it run?
Click to expand...
Click to collapse
lasersocks said:
how does this perform vs the included webtop mode?
Click to expand...
Click to collapse
It is the included webtop mode - it's just a matter of pulling off some of the restrictions that Motorola put on it. I should probably tweak it just a bit more to where I'm happy with it, and then I'll be able to start making suggestions on what to install. One of the things that people would probably want most is synaptic (graphical package manager), for example, and I should just have a script that installs it for people.
if you get this working, can you make a video please? would be nice to see how it is.
pure genius
can u post a video about your work ? =)
Very good work! You should join the irc sometime.
freenode
#moto-atrix
Now with more scripting!
I've added a version 0.5 of a setup script that automates some of what happens (I've denoted how far in the process it performs right now). It should print out a user-friendly version of what it's doing, in addition to what it's failing on if it fails. Appropriate notes added in the first post as well.
Sogarth said:
Now with more scripting!
I've added a version 0.5 of a setup script that automates some of what happens (I've denoted how far in the process it performs right now). It should print out a user-friendly version of what it's doing, in addition to what it's failing on if it fails. Appropriate notes added in the first post as well.
Click to expand...
Click to collapse
I'll try again. Got up until mounting new partition. Created mountosh.new copied over to phone rebooted. Didn't mount. Didn't have anything in /sbin dir. Like losetup.
Back to .sbf now. Going to try script and give it another go.
I cant wait for my Atrix I'm getting more and more excited every day seeing whats happening here
Thanks a lot for this, especially that I'm not very advanced linux user
Does the usb mice and keyboard work properly? Or other usb-stuff?
dicksteele said:
I'll try again. Got up until mounting new partition. Created mountosh.new copied over to phone rebooted. Didn't mount. Didn't have anything in /sbin dir. Like losetup.
Back to .sbf now. Going to try script and give it another go.
Click to expand...
Click to collapse
Hmm... that's really, really strange.
Edit ubuntu.bad and comment out the reboot line, then. Should just be a matter of adding rem at the beginning of that line.
Also, you shouldn't have to use the sbf. Using the soft brick recovery instructions should be enough, since all you would need to do would be to rename mountosh to mountosh.new, then rename mountosh.orig back to mountosh to get the original state back.
Sogarth said:
Now with more scripting!
I've added a version 0.5 of a setup script that automates some of what happens (I've denoted how far in the process it performs right now). It should print out a user-friendly version of what it's doing, in addition to what it's failing on if it fails. Appropriate notes added in the first post as well.
Click to expand...
Click to collapse
Shouldn't for /f "tokens=*" %%l in ('%~dp0adb.exe shell "chmod 6755 /tmp/psneuter > /dev/null 2>&1 && echo PASS"') do set retval=%%l
be chmod 0755 ? Getting error can't execute psneuter. First I thought it was because I already had one in tmp from AROOT. Trying again now.
Sogarth said:
Hmm... that's really, really strange.
Edit ubuntu.bad and comment out the reboot line, then. Should just be a matter of adding rem at the beginning of that line.
Also, you shouldn't have to use the sbf. Using the soft brick recovery instructions should be enough, since all you would need to do would be to rename mountosh to mountosh.new, then rename mountosh.orig back to mountosh to get the original state back.
Click to expand...
Click to collapse
I was running Gingerblur. Wanted to start fresh. And it wasn't from running batch file. It was before you creating batch. Tried from first post instructions. No biggie. I'm having fun !!!
dicksteele said:
Shouldn't for /f "tokens=*" %%l in ('%~dp0adb.exe shell "chmod 6755 /tmp/psneuter > /dev/null 2>&1 && echo PASS"') do set retval=%%l
be chmod 0755 ? Getting error can't execute psneuter. First I thought it was because I already had one in tmp from AROOT. Trying again now.
Click to expand...
Click to collapse
No, it's actually chmod 6755 since it's setting u+s. What's a bug in there (and I'm about to upload a fixed version) is that /tmp/psneuter actually kills the connection immediately, so it can never return "PASS". I added in a user check afterward instead.
A fixed 0.5.1 uploaded.
I currently have my touchpad split (16 GB to each) between the stock WebOS and an Ubuntu chroot partition. I don't really use the Ubunut partition all that often and was wondering if there is a way to use that existing partition for a CM install. All of the CM install instructions I have seen involve working with the single stock partition. Is there a way for me to install and dual boot to a CM on my old ubuntu partition, or do I have to Doctor the device back to it's original partition? I would prefer to give CM a full 16 GB to work within (I think from what I read the basic install gives it 1.5 GB). Thanks for the help.
the answer is no. the ubuntu chroot that you setup used a ext3fs. you will need to remove that store-ext3fs partition, extend your logical volume /dev/store/media to use all of the free space, and resize your fat32 partition back to its original size, which should be approx 26G. all your commands such as lvresize, resizefat, lvscan, df, mount, umount etc. can all be done through novaterm.
after you get your volume back to size then you can go ahead and throw the android of your choice on it. if you need detailed help let me know and ill post a more detailed walk through.
Thanks a lot for the response. If you have a method that I could wipe out the ubuntu partition without doctoring i would appreciate it. If I do not have to loose all of my WebOS stuff it would be much more convenient. I am reasonably familiar with linux command line, but less so with novaterm and WebOS structure.
QUOTE=funkbuqet;35322160]Thanks a lot for the response. If you have a method that I could wipe out the ubuntu partition without doctoring i would appreciate it. If I do not have to loose all of my WebOS stuff it would be much more convenient. I am reasonably familiar with linux command line, but less so with novaterm and WebOS structure.[/QUOTE]
Have you considered Taylor on preware http://forums.webosnation.com/webos...partition-filesystem-editor-beta-testing.html .
Features include:
Unmount Partition
Check Filesystem
Repair Filesystem
Corrupt Filesystem
Resize Filesystem
Resize Partition
Mount Partition
Create Partition
Delete Partition
Install instructions can be found here http://en.m.webos-internals.org/wiki/Testing_Feeds?wasRedirected=true . It may be just what you are looking for.
funkbuqet said:
Thanks a lot for the response. If you have a method that I could wipe out the ubuntu partition without doctoring i would appreciate it. If I do not have to loose all of my WebOS stuff it would be much more convenient. I am reasonably familiar with linux command line, but less so with novaterm and WebOS structure.
Click to expand...
Click to collapse
http://www.webos-internals.org/wiki/Application:MetaDoctor#How_to_remove_the_ext3fs_partition
heres a link to help you step by step.
when you get to the resize part of this guide it might get a little confusing. there is an easier way to extend the logical volume size and then resizefat.
instead of writing down the size of the ext3fs before you remove it and then adding that number to the size of the store-media you can just remove the ext3fs then run
# lvresize -l +100%FREE /dev/mapper/store-media
you can check to see if it added all the free space to the logical volume with
# lvscan and/or #lvdisplay
then you can run
# resizefat /dev/mapper/store-media 26G
this will resize the fatpartition to 26Gig which is right about what it should be. you can fine tune it down to the M (megabyte) or even the K (kilobyte) to make sure you get every last bit of space if you want. just make sure that you dont try to resize fat to a size that is larger than the logical volume. if what i just said is confusing then just follow the guide in the link exactly.
one more thing. before you start making any changes run
# cat /etc/fstab
if yo usee a line like.. /dev/mapper/store-ext3fs /media/ext3fs auto noatime 0 0
then you need to remove it before going too far other wise it will attempt to automatically mount the ext3fs partition on reboot because it doesnt know that you removed it.
i hope this helps some, i've had a few beers and got a little buzz going on so if im not making sense i apologize.
haxin said:
http://www.webos-internals.org/wiki/Application:MetaDoctor#How_to_remove_the_ext3fs_partition
heres a link to help you step by step.
when you get to the resize part of this guide it might get a little confusing. there is an easier way to extend the logical volume size and then resizefat.
instead of writing down the size of the ext3fs before you remove it and then adding that number to the size of the store-media you can just remove the ext3fs then run
# lvresize -l +100%FREE /dev/mapper/store-media
you can check to see if it added all the free space to the logical volume with
# lvscan and/or #lvdisplay
then you can run
# resizefat /dev/mapper/store-media 26G
this will resize the fatpartition to 26Gig which is right about what it should be. you can fine tune it down to the M (megabyte) or even the K (kilobyte) to make sure you get every last bit of space if you want. just make sure that you dont try to resize fat to a size that is larger than the logical volume. if what i just said is confusing then just follow the guide in the link exactly.
one more thing. before you start making any changes run
# cat /etc/fstab
if yo usee a line like.. /dev/mapper/store-ext3fs /media/ext3fs auto noatime 0 0
then you need to remove it before going too far other wise it will attempt to automatically mount the ext3fs partition on reboot because it doesnt know that you removed it.
i hope this helps some, i've had a few beers and got a little buzz going on so if im not making sense i apologize.
Click to expand...
Click to collapse
That look pretty easy. Thanks for all of the help I will try this when I get home this evening.
Everything seems to have worked fine. Thanks for all your help.
basic question - If i use Acme3 to install CM9 or 10, where does it install and can I change how much disk space is allocated to android?
funkbuqet said:
Everything seems to have worked fine. Thanks for all your help.
basic question - If i use Acme3 to install CM9 or 10, where does it install and can I change how much disk space is allocated to android?
Click to expand...
Click to collapse
you dont need to worry about that really. what happens is when you install Cyanogenmod 9 for example on the touchpad it creates 3 seperate logical volumes /dev/store/cm-system [304 MB] approx
/dev/store/cm-cache [200 MB] approx /dev/store/cm-data [1.50 GB] approx for a total of just about 2GIGs of space. cyanogenmod now thinks that the 1.5gigs is the internal storage and that the rest of the media partition is "sdcard" even though technically all of it is internal storage. this way you dont have to take any storage away from webos and webos wont take any storage away from android. its shared.
once you have android installed 1.5gigs of space is usually plenty to install all the apps you want, but you can always choose to install apps to sdcard as well. youll see when you get everything up and running and you start exploring the file system with a decent browser like es file explorer or root file browser by jrummy. so basically both operating systems will have access to all of the storage. hope this helps.
Excellent. Thanks again for all your help.
Sent from my SPH-L710 using xda app-developers app
[Project dormant unless someone else picks it up]
NOTE: This is a chroot for the Webtop, not the Android+VNC chroot method.
Hi everyone, this is my first guide (I'm not sure I can call it that yet, or if this is in the right section) so bear with me.
I tried the Debian chroot guide (http://forum.xda-developers.com/showthread.php?t=1093790), and I really liked the idea, but I had too many apt-get issues and it often crashed my Webtop, so I tried building my own Ubuntu Lucid chroot using rootstock, but internet didn't work.
I later saw this: http://forum.xda-developers.com/showthread.php?t=1184161, but the links were dead and the scripts it referenced were out of date. I'll sort of combine the two guides here since Backtrack actually works surprisingly well.
Just on a side note though, I haven't fully tested the Backtrack tools, but the only thing I haven't found to work are the wireless tools.
Let's start!
Required:
-Rooted Atrix (with Blur based ROM)
-LXTerminal installed on Webtop
-Enough free space (around 4 GB just for room)
-7-Zip
-Some Linux/Unix distro native or in a VM
1. Install the easy-signed.zip from the Debian chroot guide:
http://forum.xda-developers.com/showthread.php?t=1093790
but the other files aren't needed.
Make a folder called WebTopMOD (case-sensitive) on either external or internal memory for later.
2. Look here for reference: http://forum.xda-developers.com/showthread.php?t=1184161, but the links are dead. Active links are here:
Part 1: http://www.mediafire.com/?x9cgxzdx84vc6uj
Part 2: http://www.mediafire.com/?xaoidipkg1o7vgo
Part 3: http://www.mediafire.com/?po3nznbxgvdipur
Use 7-Zip to uncompress the three files (called bt.7z.001,002,003) and you'll get a bt.img.
Full bt.img in a zip:
DL from Mega or from Google Drive
3. The image isn't usable in this state yet, since the image is formatted with ext2, and we need ext3.
Copy the image over to your Linux VM or computer on a easy-to-find directory, and open up a Terminal window (usually CTRL+ALT+T).
In Terminal, type this in:
Code:
cd <directory where you put bt.img>
mkdir tmp tmpbt
sudo mount -o loop bt.img tmpbt
dd if=/dev/zero of=linuxdisk count=0 bs=1MB seek=4096 (This is the size of the chroot image you want, in MB)
mkfs.ext3 linuxdisk (just type y when it asks)
sudo mount -o loop linuxdisk tmp
sudo cp -rf tmpbt/* tmp
sudo umount tmp
sudo umount tmpbt
[Sorry, made a mistake twice] Copy the newly made linuxdisk file to a directory named WebTopMOD on your internal memory or sdcard-ext (folder and file names are case-sensitive).
4. Start Webtop, then open LXTerminal, then start the chroot by typing in:
Code:
/usr/sbin/linux
and after it loads for a bit, you'll get an xterm window with the shell for Backtrack!
If you want to quit the Gnome session, closing xterm doesn't work, since by issuing the commands to kill the webtop processes, it also kills the webtop window manager, and if you do close it there's some kind of weird glitch with a small popup window constantly disappearing and reappearing. (It'll be a WIP for now I guess, the only full solution is to reboot your Atrix). It seems to have to do with the way the linux command mounts the chroot disk under loop50, I'll try and make something to fix this later.
-----------------Extras moved below-----------------------
Pictures:
Chromium Running
BT Desktop (Gnome)
BT Desktop with AIW
THANKS TO:
k.taylor89 for the original Backtop Method
SystemR89 for the Debian chroot and scripts to make this work
The original developers of the Backtop chroot image
And any others I may have forgotten!
Extras:
If you want a GUI (Gnome):
k.taylor89 said:
You first need to kill off all the webtop crap do this by typing the following in xterm.
"ps ax|grep awn|awk '{print $1}'|xargs kill"
"ps ax|grep panel|awk '{print $1}'|xargs kill"
Then start gnome by typing "gnome-session" in xterm.
Click to expand...
Click to collapse
If you want to take it step further and start Gnome after bootup, this isn't a full solution yet but you could edit your start-oshwt-1.sh and 2 scripts so that the chroot automatically starts on bootup without anything else in Webtop, and from there start gnome-session. I'm testing that now.
Installing Apps:
Since this is based off of Ubuntu Lucid, you can install anything from the Lucid repos, you just have to fix the sources list since the Backtrack sources don't seem to work.
Code:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.old (Backup just in case)
sudo nano -w /etc/apt/sources.list
Comment out (#) any line with the backtrack servers, and uncomment any line with the Ubuntu repos.
Press Control+X, Y, then Enter, then run apt-get update to update the repos.
Apps like Chromium install and run without a hassle (just run apt-get install chromium-browser), but I actually get the error "Bus error" for some reason when Chromium remains idle, it seems to be an unsolved bug in the version of Chromium for armel devices in the Lucid repos, if anyone else has a fix, please do tell.
First.
I think its only for lapdock ..........
3n3rg1c said:
First.
I think its only for lapdock ..........
Click to expand...
Click to collapse
Oh sorry yeah I forgot to mention that. I mean I guess if you have the mod that lets you use Webtop anywhere, that'll work too.
Hi,
The "Part 3: http://www.mediafire.com/?po3nznbxgvdipu" doesn't work.
Could you fix it.
Thank you.
sintoo said:
Hi,
The "Part 3: http://www.mediafire.com/?po3nznbxgvdipu" doesn't work.
Could you fix it.
Thank you.
Click to expand...
Click to collapse
Oh sorry I copied the link incorrectly, updated in OP.
i've gotten it running on my ubuntop model, when i ran it from the terminal it would not give me any issues when closing it back up. is there a way to only launch the gnome panel? running: gnome-panel in the terminal didn't work
etruj said:
i've gotten it running on my ubuntop model, when i ran it from the terminal it would not give me any issues when closing it back up. is there a way to only launch the gnome panel? running: gnome-panel in the terminal didn't work
Click to expand...
Click to collapse
I'm not sure if there is a way to start just gnome panel because of the way the chroot is implemented, since to run gnome-panel, an X session must already be running within the chroot and I need to figure that out.
My first two times i lUnched the session the wallpaper would flicker and then just the panels would come up. Now i get hit with the errors and loop pop ups. Maybe there is a way to launch the session then kill everything but the panel?
Sent from my MB860 using xda app-developers app
etruj said:
My first two times i lUnched the session the wallpaper would flicker and then just the panels would come up. Now i get hit with the errors and loop pop ups. Maybe there is a way to launch the session then kill everything but the panel?
Sent from my MB860 using xda app-developers app
Click to expand...
Click to collapse
The workaround I found worked so far was to modify the start-oshwt-2 script so that it would run a very slightly modified version of the script that automatically starts gnome-session (gnome-panel alone is really stubborn, still haven't figured that out) and doesn't start whatever window manager in WebTop to avoid flickering errors and panel only errors (but of course you don't have access to anything from the actual WebTop, but you could also have start-oshwt open a Terminal window from WebTop too).
Can you attach the script?
Sent from my MB860 using xda app-developers app
etruj said:
Can you attach the script?
Sent from my MB860 using xda app-developers app
Click to expand...
Click to collapse
Just rename it to linux, and copy it to wherever you like on your Atrix. You can also copy it to a directory within your terminal path.
This isn't my script, it's from the Debian chroot, just modified to automatically start gnome-session (credit to SystemR89)
You might need to chmod +x the file.
Also, if you want to start it automatically from start-oshwt-2.sh, make sure you copy the file to a directory within the terminal path, and add the line
Code:
sfalv -i "linux"
and comment out any other line that starts a different X window manager.
running "sudo gnome-panel" gives me the panel while staying inside the original ubuntop. i think i can just swap out that one line in your script to get it working. thanks! also noticed my chrome crashes after a few minutes, ill post the error code and screen grabs soon but was wondering if you ever experienced anything like it?
etruj said:
running "sudo gnome-panel" gives me the panel while staying inside the original ubuntop. i think i can just swap out that one line in your script to get it working. thanks! also noticed my chrome crashes after a few minutes, ill post the error code and screen grabs soon but was wondering if you ever experienced anything like it?
Click to expand...
Click to collapse
Yes, in fact. It's a bus error, and I tried to fix it, but the fix doesn't work (and it only seems to affect Chromium).
Sorry for bumping such an old thread, but I was wondering if anyone wanted to take this project over, since I don't have an Atrix anymore and don't have anything to work with.
Thanks.
This guide is intend to help you with "installing" Ubuntu 14.04 (12.04 also works) on the Amazon Fire TV 2 after @rbox recovery has been setup. Only headless mode is possible, similar to Ubuntu Server, but it still makes a nice little ARMv8 development box. Starting X.org or running systemd based Linux distributions will likely never be possible due to features missing from the Amazon kernel. Creative use of the framebuffer is possible if desired, maybe eventually a terminal emulator could be started. As long as you don't mount and modify mmcblk0pX there should be no possible way to mess up Android or brick the device. It's 100% reversible by just removing the SD card. You accept all responsibility for what you do with this work should something go wrong and the device becomes inoperable. With disclaimers and precursor knowledge out of the way let's get started.
To follow this guide you will need:
A micro SD card (2 GB+ recommended)
A Linux system
To login into Ubuntu you will need either:
A 1.8 V TTY USB serial device connected to the UART
A pair of USB serial devices and a null modem cable
I actually used a pair of Xbee's for testing the ttyUSB0 stuff, so hence a pair of FTDI chips would also work.
Preparing the SD Card
To get started you need to first partition the micro SD card:
Type = MBR
Part 1 = 100 MB, Fat32 (vfat)
Part 2 = Remainder, Ext4
Extract the attached zip file to the root of the first partition (extracted filename must be "ramdisk-recovery.cpio.lzma"). This is an alternative initramfs that simply uses busybox to clean up from the partial Android boot and prepare the filesystem for regular Linux. Extract an Ubuntu core root filesystem archive, ubuntu-core-14.04.4-core-arm64.tar.gz, to the root of the second partition as the root user (to preserve ownership/permissions). Make sure you sync or eject the device when done with this work so the data gets flushed to the SD card.
Now we need to make a few changes to the root filesystem to avoid usability issues and allow logins.
Replace /etc/fstab with the following contents to correct some mount options. This "disables" SELinux which fixes dpkg errors and some other login annoyances.
Code:
/dev/mmcblk1p2 / ext4 defaults,relatime 0 0
selinuxfs /sys/fs/selinux selinuxfs ro,relatime 0 0
Replace /etc/init/console.conf with the following contents to allow logins from the UART. Once the root password has been set (root is disabled by default) you can remove "-a root" if desired.
Code:
# console - getty
#
# This service maintains a getty on console from the point the system is
# started until it is shut down again.
start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]
respawn
exec /sbin/getty -s -a root console
Create /etc/init/ttyUSB0.conf with the following contents to allow logins from an attached USB serial device. This should help people who don't want to take apart their device to solder wires onto the UART test points. SSH would of course be an alternative but it's not installed by default in Ubuntu core and this guide is about the building blocks not providing pre-made images (yet). Since udev doesn't work due to devtmpfs not being enabled in the kernel you will need to attach the USB serial device before booting for this to work. As before you can remove "-a root" later if desired once the root password is set. Also you should change the baud rate if needed.
Code:
start on (tty-device-added ttyUSB0)
stop on (runlevel [!2345] or tty-device-removed ttyUSB0)
respawn
exec /sbin/getty -L -a root 115200 ttyUSB0 vt102
Preparing the Fire TV
Until the search order for the initramfs file is changed by @rbox you will need to rename the initramfs on the system partition so it will continue to search for one on the SD card or USB stick. You need to connect to the device using adb either over USB or the network to execute the following commands.
Code:
adb$ su
adb# mount -o remount,rw /system
adb# mv /system/recovery/ramdisk-recovery.cpio.lzma /system/recovery/ramdisk-recovery.cpio.lzma.bak
adb# mount -o remount,ro /system
Right now this prevents "su" from working, which should be fixed by @rbox in due time. To get "su" working again you should extract the original recovery initramfs file to a USB stick and boot the device with that USB stick inserted instead of the previously created SD card. Then to restore "su" you can repeat the above steps just swapping the order of the files in the "mv" command.
Booting Ubuntu
After connecting your serial device of choice simply insert the SD card and power on the device. It's that easy! With luck you should get a shell prompt that is already logged in as root. It's a good idea to set the root password before going much further. The device isn't too useful without networking, so you can install more packages. To solve that connect an ethernet cable (since it's simpler) and type "dhclient eth0" to get online. At this point you can install openssh-server using apt-get or do anything else you'd normally do on an Ubuntu VM or headless Ubuntu system. I'm interested in hearing what people plan to do with a more-or-less high-end ARM development system.
Tips and Tricks
NOTE: These changes, unless otherwise noted, are performed while logged into the target Ubuntu system.
Setting the Hostname
You can change the hostname using the following command:
Code:
echo sloane > /etc/hostname
You should also create a simple /etc/hosts file that matches the chosen hostname.
Code:
127.0.0.1 localhost
127.0.1.1 sloane
Enable Ethernet at Boot
Create the file /etc/network/interfaces.d/eth0 with the following contents:
Code:
auto eth0
iface eth0 inet dhcp
Allow Users Network Access
Since we are stuck running an Android kernel you need to create the following group and add users who need network access (such as ping) to this special group.
Code:
groupadd -g 3003 aid_inet
usermod -G aid_inet -a root
usermod -G aid_inet -a <username>
Removing Failed Services
There are a few services that fail to start due to hardware limitations. We should just prevent them from starting in the first place. We have no VT support enabled in the kernel (boo) so we can just remove the ttyX login prompt services. Also the console setup doesn't work since our console is a serial device not a virtual terminal or other "graphical" type terminal emulator.
Code:
rm /etc/init/tty?.conf
echo manual > /etc/init/console-font.override
echo manual > /etc/init/console-setup.override
Fix /dev Hotplug
As stated before udev doesn't work due to missing kernel features. The busybox applet mdev is a simple replacement for most users. After installing the "busybox-static" package run the following command:
Code:
ln -s /bin/busybox /sbin/mdev
Now add the following line to /etc/rc.local before "exit 0".
Code:
echo /sbin/mdev > /proc/sys/kernel/hotplug
Pre-installing SSH
See: http://forum.xda-developers.com/showpost.php?p=65595013&postcount=13 (thanks @segfault1978)
Thanks a lot, that was exactly the thing I was searching for. Since before today the Raspi3 came out, this box is the cheapest ARMv8 development machine available. With your instruction I was able to login via SSH and install all required software for my development environment. No GUI needed for that, I'm doing all remotely via SSH. Again, thank you!
segfault1978 said:
Thanks a lot, that was exactly the thing I was searching for. Since before today the Raspi3 came out, this box is the cheapest ARMv8 development machine available. With your instruction I was able to login via SSH and install all required software for my development environment. No GUI needed for that, I'm doing all remotely via SSH. Again, thank you!
Click to expand...
Click to collapse
Awesome to hear that it worked for you. Just curious if you went the USB serial route or soldered to the UART pins.
There is also the Dragonboard 410c which is a quad core A53 but has a bit more than the raspberry pi. The price is higher though but it has been out probably a year or so. Just FYI. The raspberry pi 3 is a good deal.
zeroepoch said:
Awesome to hear that it worked for you. Just curious if you went the USB serial route or soldered to the UART pins.
Click to expand...
Click to collapse
None of these methods (since I was in my weekend and all cables and adapters reside in my office)
I placed all .deb-files for openssh-server including all requiremens onto the microSD card, and placed a call "dpkg -i /*.deb" with logging options in /etc/rc.local. I also configured network by mounting the sd card, editing /etc/network/interfaces, and last changed /etc/shadow to have a valid root account for login. It took my some try-and-error loops, but finally it worked as expected. Call me crazy, but I succeeded without any hardware.
---------- Post added at 09:09 PM ---------- Previous post was at 09:03 PM ----------
zeroepoch said:
There is also the Dragonboard 410c which is a quad core A53 but has a bit more than the raspberry pi. The price is higher though but it has been out probably a year or so. Just FYI. The raspberry pi 3 is a good deal.
Click to expand...
Click to collapse
Thank you for the hint, I'll have a look for the availability of this board in germany.
I'm facing a memory problem, resulting in a reboot of the device when all RAM is being used. My compile session takes more than 1.x GB of RAM for the quite complex compilation of all required packages. I can reproduce the situation where all memory is consumed and the device instantly reboots when hitting "no memory left" situation. Since "swapon" is not supported by the kernel (really?): is there any way to enable swap functionality, i.e. via a kernel module? How to overcome this situation where more memory is needed?
segfault1978 said:
None of these methods (since I was in my weekend and all cables and adapters reside in my office)
I placed all .deb-files for openssh-server including all requiremens onto the microSD card, and placed a call "dpkg -i /*.deb" with logging options in /etc/rc.local. I also configured network by mounting the sd card, editing /etc/network/interfaces, and last changed /etc/shadow to have a valid root account for login. It took my some try-and-error loops, but finally it worked as expected. Call me crazy, but I succeeded without any hardware.
Click to expand...
Click to collapse
That is pretty crazy, but since you knew the changes required it worked Not everyone I expected to have such experience. I figured someone might even try to do a qemu chroot or debbootstrap to preinstall openssh. Multiple ways to solve the same problem I guess.
segfault1978 said:
I'm facing a memory problem, resulting in a reboot of the device when all RAM is being used. My compile session takes more than 1.x GB of RAM for the quite complex compilation of all required packages. I can reproduce the situation where all memory is consumed and the device instantly reboots when hitting "no memory left" situation. Since "swapon" is not supported by the kernel (really?): is there any way to enable swap functionality, i.e. via a kernel module? How to overcome this situation where more memory is needed?
Click to expand...
Click to collapse
Looking at the default kernel config from the source code drop from Amazon I see:
Code:
# CONFIG_SWAP is not set
Swap can not be compiled as a module. Even if you chose to use a USB stick or something as the swap device It wouldn't work. Given that we can't change the kernel we can't try stuff like zram or zswap either. The only other suggestion I might have is if you're using "-j4" or something while compiling just remove that so it does a single threaded compile. I'm sure you already tried that. Beyond that you could look at using the Linaro AArch64 toolchain and cross compile. Since we're running Ubuntu you shouldn't need to worry about static binaries.
zeroepoch said:
Looking at the default kernel config from the source code drop from Amazon I see:
Code:
# CONFIG_SWAP is not set
Swap can not be compiled as a module. Even if you chose to use a USB stick or something as the swap device It wouldn't work. Given that we can't change the kernel we can't try stuff like zram or zswap either. The only other suggestion I might have is if you're using "-j4" or something while compiling just remove that so it does a single threaded compile. I'm sure you already tried that. Beyond that you could look at using the Linaro AArch64 toolchain and cross compile. Since we're running Ubuntu you shouldn't need to worry about static binaries.
Click to expand...
Click to collapse
Unfortunately, I'm not compiling with parallel processes (I'm compilig Icinga2 for arm64), I'm running
Code:
dpkg-buildpackage -us -uc
within the source package. One single cpp call consumes so much memory (which is crazy in my eyes, never seen such a big compiler process until today), so I'll investigate the option of cross compiling and afterwards creating the deb file outside of the machine.
Code:
cd /root/icinga2-2.4.3/obj-aarch64-linux-gnu/lib/base && /usr/bin/aarch64-linux-gnu-g++ -DI2_BASE_BUILD -Doverride="" -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -g -pthread -std=c++11 -Wno-inconsistent-missing-override -fPIC -I/root/icinga2-2.4.3 -I/root/icinga2-2.4.3/lib -I/root/icinga2-2.4.3/obj-aarch64-linux-gnu -I/root/icinga2-2.4.3/obj-aarch64-linux-gnu/lib -I/root/icinga2-2.4.3/third-party/execvpe -I/root/icinga2-2.4.3/third-party/mmatch -I/root/icinga2-2.4.3/third-party/socketpair -o CMakeFiles/base.dir/base_unity.cpp.o -c /root/icinga2-2.4.3/obj-aarch64-linux-gnu/lib/base/base_unity.cpp
I'm a novice in android devices: What would be required to use a custom kernel? A hacked boot loader, which is not available for the AFTV2?
segfault1978 said:
I'm a novice in android devices: What would be required to use a custom kernel? A hacked boot loader, which is not available for the AFTV2?
Click to expand...
Click to collapse
Yep... we need to be able to use fastboot to boot an unsigned kernel and initramfs (boot.img). I tried at one point to overwrite the boot partition with own image and it failed to boot. Since I had the preloader stuff worked out already I was able to restore the original boot image and get it working again.
On a side note, if you don't mind could you post the list of packages needed to install SSH server from rc.local? Others might find that useful. To get around the unset password issue you could have also saved a public key in /root/.ssh/authorized_keys which would also avoid you needing to change /etc/ssh/sshd_config to allow password logins as root.
segfault1978 said:
within the source package. One single cpp call consumes so much memory (which is crazy in my eyes, never seen such a big compiler process until today), so I'll investigate the option of cross compiling and afterwards creating the deb file outside of the machine.
Code:
cd /root/icinga2-2.4.3/obj-aarch64-linux-gnu/lib/base && /usr/bin/aarch64-linux-gnu-g++ -DI2_BASE_BUILD -Doverride="" -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -g -pthread -std=c++11 -Wno-inconsistent-missing-override -fPIC -I/root/icinga2-2.4.3 -I/root/icinga2-2.4.3/lib -I/root/icinga2-2.4.3/obj-aarch64-linux-gnu -I/root/icinga2-2.4.3/obj-aarch64-linux-gnu/lib -I/root/icinga2-2.4.3/third-party/execvpe -I/root/icinga2-2.4.3/third-party/mmatch -I/root/icinga2-2.4.3/third-party/socketpair -o CMakeFiles/base.dir/base_unity.cpp.o -c /root/icinga2-2.4.3/obj-aarch64-linux-gnu/lib/base/base_unity.cpp
Click to expand...
Click to collapse
I see you are not using -pipe which is good, but a quick search suggested something that might not be simple since this package has it's own build system but changing from -O2 to -O1 might help.
I noticed that Debian has the package available for the same version and already built for arm64.
https://packages.debian.org/sid/icinga2
Maybe you already tried that. You could try going back to jessie which is probably an older version but I think most jessie packages work with Ubuntu 14.04.
zeroepoch said:
Yep... we need to be able to use fastboot to boot an unsigned kernel and initramfs (boot.img). I tried at one point to overwrite the boot partition with own image and it failed to boot. Since I had the preloader stuff worked out already I was able to restore the original boot image and get it working again.
On a side note, if you don't mind could you post the list of packages needed to install SSH server from rc.local? Others might find that useful. To get around the unset password issue you could have also saved a public key in /root/.ssh/authorized_keys which would also avoid you needing to change /etc/ssh/sshd_config to allow password logins as root.
Click to expand...
Click to collapse
This is the list of packages I manually downloaded for ARM64 (unfortunately I used Debian packages which worked first, but leads to a hell situation afterwards when dealing with other dependencies; be sure to use Ubuntu packages in order to avoid problems afterwards):
Code:
busybox_1.22.0
libedit2_3.1
libgssapi-krb5
libk5crypto3
libkeyutils1
libkrb5
libkrb5support0
libwrap0
openssh-client
openssh-server
openssh-sftp-server
This is the piece of calls in /etc/rc.local, right before the exit:
Code:
dpkg --force-all -i /*.deb > /install.log 2>/install.err
echo $? >> /install.log
echo "installation finished" >> /install.log
It took about 1-2 minutes before SSH started to work automatically, you can mount the SD card afterwards in another system in order to check the written logfiles.
Here are some notes for getting wireless working. In addition to the normal OS steps (installing wpasupplicant or wireless-tools and editing /etc/network/interfaces or using wicd) you will need some firmware files from /system (/dev/mmcblk0p13).
Code:
mount -o ro /dev/mmcblk0p13 /mnt
cp -r /mnt/etc/firmware/ /lib/
cp -r /mnt/etc/Wireless /etc/
umount /mnt
segfault1978 said:
None of these methods (since I was in my weekend and all cables and adapters reside in my office)
I placed all .deb-files for openssh-server including all requiremens onto the microSD card, and placed a call "dpkg -i /*.deb" with logging options in /etc/rc.local. I also configured network by mounting the sd card, editing /etc/network/interfaces, and last changed /etc/shadow to have a valid root account for login. It took my some try-and-error loops, but finally it worked as expected. Call me crazy, but I succeeded without any hardware.
Thank you for the the fire tv guide.
Click to expand...
Click to collapse
So, what's the verdict on this? I want to use my firetv 2 as an emby server. Is it worth it trying to get Ubuntu to run?
Sent from my Mi A1 using Tapatalk
mrchrister said:
So, what's the verdict on this? I want to use my firetv 2 as an emby server. Is it worth it trying to get Ubuntu to run?
Click to expand...
Click to collapse
If it has arm64 packages and headless you can give it a try. If you don't like it you can just revert the ramdisk and go back to Android.
Ok sweet, thanks for the reply
Sent from my Mi A1 using Tapatalk
Just curious if anyone's tried running Plex server on this?
I've been looking for a better solution without shelling out $500+ for a dedicated NAS. AFTV is tiny so I could hardwire it and hide it away.
Thanks
I got the same idea. Right now the firetv is still being used as a media streamer but I'm thinking of doing this soon