Code Monkey home page Code Monkey logo

crouton's Introduction

crouton: Chromium OS Universal Chroot Environment

crouton is a set of scripts that bundle up into an easy-to-use, Chromium OS-centric chroot generator. Currently Ubuntu and Debian are supported (using debootstrap behind the scenes), but "Chromium OS Debian, Ubuntu, and Probably Other Distros Eventually Chroot Environment" doesn't acronymize as well (crodupodece is admittedly pretty fun to say, though).

crouton is now maintenance-only

This means that:

  • Only bugfix and release list PRs will be accepted.
  • New distro releases will be added to the list as unsupported.
  • As xenial is EOL, crouton will (at some point) no longer have a default release. You will always have to specify -r.
  • Bugs without updates in the past year will be bulk-closed with a "stale" tag.
  • Open PRs will be left open but have the "stale" tag added. If anyone who forks crouton wants to pick up the feature work, they can build right off of those PRs.
  • For the safety of users and stability of crouton's functionality for those on EOL devices, offers to take over the dnschneid/crouton repo or Chrome extension will be declined, and requests to change the goo.gl/fd3zc or goo.gl/OVQOEt destinations will be rejected. If you would like to continue feature work on crouton, fork it, do a good job of it, and people can choose to use it at their own risk.

But first...

⚠️ Steps to install crouton have changed! ⚠️

Due to improved security within Chromium OS (yay!), the steps needed to launch the crouton installer, and the steps to run crouton from SD cards have to change a little.

Please read the relevant sections of this README carefully, and reach out to your favorite weblogger/tutorialer/videotuber to update their guides if they're behind the times. If you're successful, brag about your accomplishments in the issue tracker and earn the personal gratitude of the crouton authors*!

* limit one (1) gratitude per commenter

WHOA

Ok, back to business.

"crouton"...an acronym?

It stands for ChRomium Os Universal chrooT envirONment ...or something like that. Do capitals really matter if caps-lock has been (mostly) banished, and the keycaps are all lower-case?

Moving on...

Who's this for?

Anyone who wants to run straight Linux on their Chromium OS device, and doesn't care about physical security. You're also better off having some knowledge of Linux tools and the command line in case things go funny, but it's not strictly necessary.

What's a chroot?

Like virtualization, chroots provide the guest OS with their own, segregated file system to run in, allowing applications to run in a different binary environment from the host OS. Unlike virtualization, you are not booting a second OS; instead, the guest OS is running using the Chromium OS system. The benefit to this is that there is zero speed penalty since everything is run natively, and you aren't wasting RAM to boot two OSes at the same time. The downside is that you must be running the correct chroot for your hardware, the software must be compatible with Chromium OS's kernel, and machine resources are inextricably tied between the host Chromium OS and the guest OS. What this means is that while the chroot cannot directly access files outside of its view, it can access all of your hardware devices, including the entire contents of memory. A root exploit in your guest OS will essentially have unfettered access to the rest of Chromium OS.

...but hey, you can run TuxRacer!

What about dem crostinis though?

Crostini is an official project within Chromium OS to bring the Linux shell and apps to the platform in verified mode with clean integration, multi-layered security, and all the polish you expect from Chromium OS proper.

That means compared to crouton, Crostini has official support, competent engineers, and code that looks a little less like ramen. crouton, in its defense, has wider device compatibility, enables direct hardware access, and is named after an objectively tastier bread-based food item.

There's a solid community on Reddit if you'd like to try Crostini out. If it works for you -- great! No hard feelings. If in the end you decide that crouton suits you better, read on!

Note: you can't get the best of both worlds by installing crouton inside of Crostini. The technology (and life itself) just doesn't work that way. Not to mention a crouton Crostini would look ridiculous and be impossible to eat without getting bits everywhere.

Prerequisites

You need a device running Chromium OS that has been switched to developer mode.

For instructions on how to do that, go to this Chromium OS wiki page, click on your device model and follow the steps in the Entering Developer Mode section.

Note that developer mode, in its default configuration, is completely insecure, so don't expect a password in your chroot to keep anyone from your data. crouton does support encrypting chroots, but the encryption is only as strong as the quality of your passphrase. Consider this your warning.

It's also highly recommended that you install the crouton extension, which, when combined with the extension or xiwi targets, provides much improved integration with Chromium OS.

That's it! Surprised?

Usage

crouton is a powerful tool, and there are a lot of features, but basic usage is as simple as possible by design.

If you're just here to use crouton, you can grab the latest release from https://goo.gl/fd3zc. Download it, pop open a shell (Ctrl+Alt+T, type shell and hit enter), make the installer executable with sudo install -Dt /usr/local/bin -m 755 ~/Downloads/crouton, then launch it with sudo crouton to see the help text. See the "examples" section for some usage examples.

If you're modifying crouton, you'll probably want to clone or download the repo into a subdirectory of /usr/local and then either run installer/main.sh directly, or use make to build your very own crouton. You can also download the latest release, install it as above and run crouton -x to extract out the juicy scripts contained within, but you'll be missing build-time stuff like the Makefile. You also need to remember to place the unbundled scripts somewhere in /usr/local in order to be able to execute them.

crouton uses the concept of "targets" to decide what to install. While you will have apt-get in your chroot, some targets may need minor hacks to avoid issues when running in the chrooted environment. As such, if you expect to want something that is fulfilled by a target, install that target when you make the chroot and you'll have an easier time. Don't worry if you forget to include a target; you can always update the chroot later and add it. You can see the list of available targets by running crouton -t help.

Once you've set up your chroot, you can easily enter it using the newly-installed enter-chroot command, or one of the target-specific start* commands. Ta-da! That was easy.

Examples

The easy way (assuming you want an Ubuntu LTS with Xfce)

  1. Download crouton
  2. Open a shell (Ctrl+Alt+T, type shell and hit enter)
  3. Copy the installer to an executable location by running sudo install -Dt /usr/local/bin -m 755 ~/Downloads/crouton
  4. Now that it's executable, run the installer itself: sudo crouton -t xfce
  5. Wait patiently and answer the prompts like a good person.
  6. Done! You can jump straight to your Xfce session by running sudo enter-chroot startxfce4 or, as a special shortcut, sudo startxfce4
  7. Cycle through Chromium OS and your running graphical chroots using Ctrl+Alt+Shift+Back and Ctrl+Alt+Shift+Forward.
  8. Exit the chroot by logging out of Xfce.

With encryption!

  1. Add the -e parameter when you run crouton to create an encrypted chroot or encrypt a non-encrypted chroot.
  2. You can get some extra protection on your chroot by storing the decryption key separately from the place the chroot is stored. Use the -k parameter to specify a file or directory to store the keys in (such as a USB drive or SD card) when you create the chroot. Beware that if you lose this file, your chroot will not be decryptable. That's kind of the point, of course.

Hey now, Ubuntu 16.04 is pretty old; I'm young and hip

  1. The -r parameter specifies which distro release you want to use.
  2. Run crouton -r list to list the recognized releases and which distros they belong to.

Wasteful redundancies are wasteful: one clipboard, one browser, one window

  1. Install the crouton extension into Chromium OS.
  2. Add the extension or xiwi version to your chroot.
  3. Try some copy-pasta, or uninstall all your web browsers from the chroot.

Installing the extension and its target gives you synchronized clipboards, the option of using Chromium OS to handle URLs, and allows chroots to create graphical sessions as Chromium OS windows.

I don't always use Linux, but when I do, I use CLI

  1. You can save a chunk of space by ditching X and just installing command-line tools using -t core or -t cli-extra
  2. Enter the chroot in as many crosh shells as you want simultaneously using sudo enter-chroot
  3. Use the Crosh Window extension to keep Chromium OS from eating standard keyboard shortcuts.
  4. If you installed cli-extra, startcli will launch a new VT right into the chroot.

A new version of crouton came out; my chroot is therefore obsolete and sad

  1. Exit the chroot if you have it open.
  2. If you haven't already, download crouton, and copy it so it works: sudo install -Dt /usr/local/bin -m 755 ~/Downloads/crouton
  3. Update your chroot with sudo crouton -u -n chrootname. It will update all installed targets.

I want to open my desktop in a window or a tab but I don't have the 'xiwi' target/xmethod.

  1. Add 'xiwi' or any other target to an existing chroot with the -u option: sudo crouton -t xiwi -u -n chrootname

This will also make 'xiwi' the default xmethod.

  1. If you want to keep the 'xorg' xmethod as the default then pick it first: sudo sh crouton -t xorg,xiwi -u -n chrootname

A backup a day keeps the price-gouging data restoration services away

  1. sudo edit-chroot -b chrootname backs up your chroot to a timestamped tarball in the current directory. Chroots are named either via the -n parameter when created or by the release name if -n was not specified.
  2. sudo edit-chroot -r chrootname restores the chroot from the most recent timestamped tarball. You can explicitly specify the tarball with -f
  3. If your machine is new, powerwashed, or held upside-down and shaken, you can use the crouton installer to restore a chroot and relevant scripts: sudo crouton -f mybackup.tar.gz

Unlike with Chromium OS, the data in your chroot isn't synced to the cloud.

This chroot's name/location/password/existence sucks. How to fix?

  1. Check out the edit-chroot command; it likely does what you need it to do.
  2. If you set a Chromium OS root password, you can change it with sudo chromeos-setdevpasswd
  3. You can change the password inside your chroot with passwd

I want to install the chroot to another location

  1. Use -p to specify the directory in which to install the chroot and scripts. Be sure to quote or escape spaces.
  2. When entering the chroot for the first time each boot, you will first need to ensure the place you've installed the scripts is in a place that allows executables to run. Determine the mountpoint by running df --output=target /path/to/enter-chroot, then mark the mount exec with sudo mount -o remount,exec /path/to/mountpoint.
  3. You can then launch the chroot by specifying the full path of any of the enter-chroot or start* scripts (i.e. sudo /path/to/enter-chroot), or use the -c parameter to explicitly specify the chroots directory.

If for some reason you have to run the installer without touching the local disk, you can (for the time being) run curl -fL https://goo.gl/fd3zc | sudo sh -s -- options_for_crouton_installer. Note that this will definitely break in the near future, so don't depend on it.

Downloading bootstrap files over and over again is a waste of time

  1. Download crouton
  2. Open a shell (Ctrl+Alt+T, type shell and hit enter)
  3. Copy the installer to an executable location by running sudo install -Dt /usr/local/bin -m 755 ~/Downloads/crouton
  4. Now that it's executable, use the installer to build a bootstrap tarball: sudo crouton -d -f ~/Downloads/mybootstrap.tar.bz2
  5. Include the -r parameter if you want to specify for which release to prepare a bootstrap.
  6. You can then create chroots using the tarball by running sudo crouton -f ~/Downloads/mybootstrap.tar.bz2. Make sure you also specify the target environment with -t.

This is the quickest way to create multiple chroots at once, since you won't have to determine and download the bootstrap files every time.

Targets are cool. Abusing them for fun and profit is even cooler

  1. You can make your own target files (start by copying one of the existing ones) and then use them with any version of crouton via the -T parameter.

This is great for automating common tasks when creating chroots.

Help! I've created a monster that must be slain!

  1. The delete-chroot command is your sword, shield, and only true friend. sudo delete-chroot evilchroot
  2. It's actually just a shortcut to sudo edit-chroot -d evilchroot, which I suppose makes it a bit of a deceptive Swiss Army knife friend...still good?

Tips

  • Chroots are cheap! Create multiple ones using -n, break them, then make new, better ones!
  • You can change the distro mirror from the default by using -m
  • Want to use a proxy? -P lets you specify one (or disable it).
  • A script is installed in your chroot called brightness. You can assign this to keyboard shortcuts to adjust the brightness of the screen (e.g. brightness up) or keyboard (e.g. brightness k down).
  • Multiple monitors will work fine in the chroot, but you may have to switch to Chromium OS and back to enable them.
  • You can make commands run in the background so that you can close the terminal. This is particularly useful for desktop environments: try running sudo startxfce4 -b
  • Want to disable Chromium OS's power management? Run croutonpowerd -i
  • Only want power management disabled for the duration of a command? croutonpowerd -i command and arguments will automatically stop inhibiting power management when the command exits.
  • Have a Pixel or two or 4.352 million? -t touch improves touch support.
  • Want to share some files and/or folders between ChromeOS and your chroot?
    Check out the /etc/crouton/shares file, or read all about it in the wiki.
  • Want more tips? Check the wiki.

Issues?

Running another OS in a chroot is a pretty messy technique (although it's hidden behind very pretty scripts), and while these scripts are relatively mature, Chromium OS is changing all the time so problems are not surprising. Check the issue tracker and file a bug if your issue isn't there. When filing a new bug, include the output of croutonversion run from inside the chroot or, if you cannot mount your chroot, include the output of cat /etc/lsb-release from Crosh.

I want to be a Contributor!

That's great! But before your code can be merged, you'll need to have signed the Individual Contributor License Agreement. Don't worry, it only takes a minute and you'll definitely get to keep your firstborn, probably. If you've already signed it for contributing to Chromium or Chromium OS, you're already done.

If you don't know what to do with your time as an official Contributor, keep in mind that crouton is maintenance-only and will only be accepting a limited amount of changes. That having been said, here's some suggestions:

  • Really like a certain desktop environment? Fork crouton, add the target, and let people know in the discussions area.
  • Is your distro underrepresented? Want to contribute to the elusive and mythical beast known as "croagh"? Fork crouton, add the distro, and people will come.
  • Discovered a bug lurking within the scripts, or a papercut that bothers you just enough to make you want to actually do something about it? You guessed it: fork crouton, fix everything, and create a pull request.
  • Are most bugs too high-level for you to defeat? Grind up some EXP by using your fork to eat pie.

Are there other, non-Contributory ways I can help?

Yes!

But how?

There's a way For Everyone to help!

  • Something broken? File a bug! Bonus points if you try to fix it. It helps if you provide the output of croutonversion (or the output of cat /etc/lsb-release from Crosh) when you submit the bug.
  • Look through open issues and see if there's a topic or application you happen to have experience with. And then, preferably, share that experience with others.
  • Find issues that need wiki entries and add the relevant info to the wiki. Or just add things to/improve things in the wiki in general, but do try to keep it relevant and organized.
  • Really like a certain desktop environment, but not up for coding? Open or comment on a bug with steps to get things working well.

License

crouton (including this eloquently-written README) is copyright © 2016 The crouton Authors. All rights reserved. Use of the source code included here is governed by a BSD-style license that can be found in the LICENSE file in the source tree.

crouton's People

Contributors

arbuztw avatar cribalik avatar dennislfromga avatar divx118 avatar dnschneid avatar drinkcat avatar eyqs avatar haberda avatar icecream95 avatar jbaum98 avatar kanner avatar kennystrawnmusic avatar kindrowboat avatar lnxsrt avatar michaelorr avatar mkasick avatar mmattioli avatar mrright024 avatar myelin avatar nromsdahl avatar nxtr avatar reveman-chromium avatar rickybrent avatar stevedesmond-ca avatar tedm avatar tobbe avatar tonyxue avatar willyvvu avatar yuwash avatar zguithues avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

crouton's Issues

right button clicks issues in XFCE on Samsung ARM

I just installed xfce changeroot om Samsung ARM Chromebook. It seems the right button on the touchpad is not recognized as such. Almost all the time it behaves as the left button. Only couple of times after numerous attempts I was able to trigger the right click.

Weird XFCE hang with PyCharm

I've got crouton running on my Samsung chromebook and its pretty damn awesome. I've experienced one weird issue though - when I use the python "getpass.getpass" function to securely read a password from the console within PyCharm it crashes and takes XFCE down with it.

PyCharm seems to have a bug with getpass.getpass as it crashes on Windows, but on my Chromebook the entire desktop becomes unresponsive and I have to terminate it. If I switch back to ChromeOS I can see Java exception stacktraces from PyCharm within the XFCE log, which I thought was weird (surely they would be separate?). Any thoughts as to how PyCharm could bring down XFCE?

Failed dependency when installing

I am trying to setup crouton on a Samsung Series 5 chromebook - Intel Celeron.

When I run the script it goes through most of the process but stops with this error message:

Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
xfce4 : Depends: xfdesktop4 (>= 4.10.0) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
Unmounting /usr/local/chroots/precise...

The ChromeOS on this has been reset following a switch to developer mode so it should be a clean install.

I have also tried deleting the chroot and get the same issue when I install again.

Any suggestions? In the meantime I will try again with a different target for crouton.

Missing options for unity

I can not seem to find the log out options for unity. The Ubuntu Software Center is not available either.

No audio device

The Ubuntu chroot environment doesn't have any audio devices/can't see Chrome OS's audio device.

Result of "aplay -l" in Ubuntu:
aplay: device_list: 252: no soundcards found...

Result of "aplay -l" in Chrome OS:
**** List of PLAYBACK Hardware Devices ****
card 0: DAISYI2S [DAISY-I2S], device 0: Playback HiFi-0 []
Subdevices: 0/1
Subdevice #0: subdevice #0
card 0: DAISYI2S [DAISY-I2S], device 1: Capture HiFi-1 []
Subdevices: 1/1
Subdevice #0: subdevice #0

It would be great to use VLC in Crouton to watch video files that Chrome OS doesn't support.. but not without sound!

No $DISPLAY set for -t KDE -n quantal

This is a fresh install of quantal kde (-t kde -n quantal). An enter-chroot after the install with startkde as the executable will fail to load X, with the error

$DISPLAY is not set or cannot connect to the X server.

However, startx works fine, and it starts KDE, indeed.

Samsung 3 series dims screen after usage of xfce for a while

It looks like when I'm using xfce for a bit, Chromeos believes I'm not using itself and dims the screen for power management. Switching back to Chromeos immediately brightens it again.

I checked but I don't see any settings in the Chrome settings to turn off this power management behavior. Is there any way to get it so I don't have to switch back and forth or use some other manual control every few minutes to brighten the screen again?

Pixel and HiDPI

Crouton installed beautifully on my Pixel (including the touchscreen). Unfortunately everything is smaller than my gentleman's sausage after a quick dip in a Minnesota lake around XMas.

Do you know of any way to achieve pixel doubling or the like either for XFCE (preferred) or any of the GUIs? If there is a direction I may be pointed, I could easily whip up something for your documentation so that others don't have the same problem.

Thank you for Crouton!

errors when updating

I recently downloaded the latest crouton and also updated my local bootstrap file but I get errors when I try to update my 'precise' environment and now also when I try to enter any of my desktops.

The errors I'm getting when updating (readlink, mountpoint, mkdir) are shown in the image below:
Screenshot 2013-02-07 at 4 52 53 PM

The error I'm getting when trying to enter my xfce4 desktop (No chroots found ...) are shown in the image below:
Screenshot 2013-02-07 at 4 54 22 PM

The errors I'm getting when trying to enter my lxde desktop (chroot preparation script still exists...) are shown in the image below:
Screenshot 2013-02-07 at 4 57 43 PM

I'd be very grateful if someone could point out the error in my ways, so to speak, and get me back on the right path - my crouton environment is dead in the water....

P.S. I have scripts that I use to check for the presence of my external disk and then kick-off the desktop that you may see above, (I.E.) st-xfce4, st-lxde

Thanx
Dennis

can't execute script with ./

So, apps I'm using in the chroot have scripts that expect to be able to use ./ to execute. Using this gives permission denied errors. I assume this is because the inherited mount from chrome , that is the root mountpoint, does not appear to have exec privileges, hence why you have to execute crouton with sh -e

Any ideas to enable using ./ in the chroot? Another mount point for the chroot root maybe?

microphone support on Samsung ARM

Is it possible to enable internal microphone support in Chrouton? After setting to the maximum various input devices in alsactl at best in Audacity I got extremely quiet recording.

VPN Connection with Cisco VPN

How would you initiate a Cisco VPN Connection or is the chroot session just using the same network connection (IP address, etc) that was initiated by the Chrome session?

If that is true then the chroot session is reliant on the Chrome session for VPN connectivity and all network activity.

Is that correct?

Auto-mounting of USB stick failed

[was: Installation of chroot to USB stick failed]

I tried to install xfce chroot on the external USB stick (not SD card) using
sudo su
cd /home/chronos/user/Downloads/
sh -e crouton -t xfce -p /media/removable/USB\ Drive/
but the installation failed with the messages:
.........
I: Extracting xz-utils...
I: Extracting zlib1g...
Moving bootstrap files into the chroot...
Preparing chroot environment...
x11 target does not work on ARM. Substituting in xephyr.
Installing brightness into the chroot...
Installing host-dbus into the chroot...
Installing croutonpowerd into the chroot...
Installing croutonwheel into the chroot...
Installing croutonwm into the chroot...
Installing xinit into the chroot...
x11 target does not work on ARM. Substituting in xephyr.
x11 target does not work on ARM. Substituting in xephyr.
Installing startxfce4 into the host...
Installing enter-chroot into the host...
Installing delete-chroot into the host...
Installing mount-chroot into the host...
Installing unmount-chroot into the host...
/tmp/crouton.BML/host-bin/enter-chroot: 167: readlink: Argument list too long
/tmp/crouton.BML/host-bin/enter-chroot: 167: mountpoint: Argument list too long
/tmp/crouton.BML/host-bin/enter-chroot: 167: mkdir: Argument list too long
Unmounting /media/removable/USB Drive//chroots/precise...
localhost Downloads #

I noticed that similar messages appeared in issue #21 in somewhat different context.

The installation to the local disk was fine. Playing with this installation I noticed that the click on the touchpad does not work when I just start xfce with sudo startxfce4. I need to cycle between Chrome OS and xfce using Ctrl-Alt-Shft--> in order to get it working.

Also, I realized that I am not able to mount usb drives when in xfce. Is it the feature of this chroot or just my problem? It would be nice to have usb drives available...

At some point (when the issue with external installation will be fixed) I'd like to move the chroot from the local drive to a usb drive (or SD card). What would be a reasonable way to do that?

Unable to Start unity target

After I created a unity target I was unable to start it. I received an error saying the X Environment was not available. This was just building a -t unity version.

I was able to get xfce to work without issue, but the unity one i built the same way wouldn't start up. This was just building a -t xfce version.

I am now trying with -t xfce,unity to see if that puts everything in place as expected. It would be really great to have some additional instructions about how the targets work and how to best get the interface desired.

AWESOME project though... Love it so far!

Problems with graphics, switching between ChromeOS and Ubuntu.

I have found every second or third time I try to switch between the two using the ctrl -> alt -> shift -> back arrow/front arrow combo, the screen doesn't update. If you move the mouse the bits of the Ubuntu screen under the pointer show, and if you go back and forth a few times it comes up correctly. Just wondering if there is a proper fix/workaround?

I would dearly like to use this setup as it's pretty simple (from my perspective), but issues like this and poor font display could become show stoppers forcing me to set up my own devserver to get the packages running on the device I need.

I'm getting the graphical issue on the Samsung ARM Chromebook.

how to map keys within crouton? - to swap right alt and control key

hello, I have been swapping right alt and control key on all my computers, but when I use the similar xmodmap command in crouton, it doesn't work. Is it becuase the keys are managed by chromium os, that crouton could not change it?

I read about brightness adjustment, and 'assign a key' for it, but don't know how key assignment in crouton works.

Lastly, there's a resort for me to use the overall alt and control swap in chromium os keyboard setting, but it's not ideal, as it reset left alt, control as well.

(I swapped right alt and control is mainly for the sake of emacs)

Thanks

Is the CromeOs kernel fully multi user?

I just learned about crouton a few days ago, and it sounds very interesting.
On a cheap WM8650 netbook, that came with android, I'm running debian. But since the android 2.2 kernel is single user, I have to run everything as root in that debian installation.
Now I just want to make sure I wouldn't have such issues if I buy a chromebook and use it with ubunntu.
Also, how smooth is release upgrading ubntu with crouton?

Xephyr cannot open host display

I'm having the same issue as described in issue #17. I've reinstalled the chroot 3 times over the past few weeks with fresh crouton scripts, with no success.

sudo startxfce4 2>&1 | tee startxfce4.log

startxfce4.log:
/usr/bin/startxfce4: Starting X server

XIO: fatal IO error 2 (No such file or directory) on Xserver ":0" after 39 requests (39 known processed) with 0 events remaining.

Starting Xephyr manually results in the following:
export DISPLAY=:0
Xephyr :0 -fullscreen -ac
Fatal server error:
Server is already active for display 0
If this server is no longer running, remove /tmp/.XO-lock and start again.

export DISPLAY=:1
Xephyr :1 -fullscreen -ac
Xephyr cannot open host display. Is DISPLAY set?

Googling this error makes it seem to be a .Xauthority issue.
I tried the solution on the Debian wiki http://wiki.debian.org/XStrikeForce/FAQ#howtoxnest
with no preliminary success.

Add Gnome 2/3 and full Unity support

(originally: Can I replace XFCE with Gnome 3?)

gnome-session and some dbus stuff currently doesn't launch, preventing Gnome 2 and 3 from launching, and preventing Unity from having a logout menu and other things. This issue is to track any progress made by the community in getting them set up and working.

Corrupt packages -- couldn't download

My attempts to set up crouton are failing due to download errors with libssl1.0.0 and mawk. Here's the output, with ... lines where I snipped:

chronos@localhost ~ $ sudo sh -e Downloads/crouton -V
crouton: version 0-20130307110444~master:4945a5b9
chronos@localhost ~ $ sudo sh -e Downloads/crouton -t core
Installing precise-armhf chroot to /usr/local/chroots/precise
Downloading debootstrap...
Downloading bootstrap files...
I: Retrieving InRelease
I: Failed to retrieve InRelease
I: Retrieving Release
W: Cannot check Release signature; keyring file not available /usr/share/keyrings/ubuntu-archive-keyring.gpg
I: Retrieving Packages
I: Validating Packages
I: Resolving dependencies of required packages...
I: Resolving dependencies of base packages...
I: Checking component main on http://ports.ubuntu.com/ubuntu-ports...
I: Retrieving adduser
I: Validating adduser
I: Retrieving apt
I: Validating apt
I: Retrieving apt-utils
...
I: Retrieving libss2
I: Validating libss2
I: Retrieving libssl1.0.0
I: Validating libssl1.0.0
W: Retrying failed download of http://ports.ubuntu.com/ubuntu-ports/pool/main/o/openssl/libssl1.0.0_1.0.1-4ubuntu3_armhf.deb
I: Retrieving libssl1.0.0
I: Validating libssl1.0.0
W: Retrying failed download of http://ports.ubuntu.com/ubuntu-ports/pool/main/o/openssl/libssl1.0.0_1.0.1-4ubuntu3_armhf.deb
I: Retrieving libssl1.0.0
I: Validating libssl1.0.0
W: Retrying failed download of http://ports.ubuntu.com/ubuntu-ports/pool/main/o/openssl/libssl1.0.0_1.0.1-4ubuntu3_armhf.deb
I: Retrieving libssl1.0.0
I: Validating libssl1.0.0
W: Retrying failed download of http://ports.ubuntu.com/ubuntu-ports/pool/main/o/openssl/libssl1.0.0_1.0.1-4ubuntu3_armhf.deb
I: Retrieving libssl1.0.0
I: Validating libssl1.0.0
W: Retrying failed download of http://ports.ubuntu.com/ubuntu-ports/pool/main/o/openssl/libssl1.0.0_1.0.1-4ubuntu3_armhf.deb
I: Retrieving libssl1.0.0
I: Validating libssl1.0.0
W: Retrying failed download of http://ports.ubuntu.com/ubuntu-ports/pool/main/o/openssl/libssl1.0.0_1.0.1-4ubuntu3_armhf.deb
I: Retrieving libssl1.0.0
I: Validating libssl1.0.0
W: Retrying failed download of http://ports.ubuntu.com/ubuntu-ports/pool/main/o/openssl/libssl1.0.0_1.0.1-4ubuntu3_armhf.deb
I: Retrieving libssl1.0.0
I: Validating libssl1.0.0
W: Retrying failed download of http://ports.ubuntu.com/ubuntu-ports/pool/main/o/openssl/libssl1.0.0_1.0.1-4ubuntu3_armhf.deb
I: Retrieving libssl1.0.0
I: Validating libssl1.0.0
W: Retrying failed download of http://ports.ubuntu.com/ubuntu-ports/pool/main/o/openssl/libssl1.0.0_1.0.1-4ubuntu3_armhf.deb
I: Retrieving libssl1.0.0
I: Validating libssl1.0.0
W: Retrying failed download of http://ports.ubuntu.com/ubuntu-ports/pool/main/o/openssl/libssl1.0.0_1.0.1-4ubuntu3_armhf.deb
W: http://ports.ubuntu.com/ubuntu-ports/pool/main/o/openssl/libssl1.0.0_1.0.1-4ubuntu3_armhf.deb was corrupt
W: Couldn't download package libssl1.0.0 (ver 1.0.1-4ubuntu3 arch armhf)
I: Retrieving libstdc++6
I: Validating libstdc++6
I: Retrieving libtext-charwidth-perl
...
I: Retrieving mawk
I: Validating mawk
W: Retrying failed download of http://ports.ubuntu.com/ubuntu-ports/pool/main/m/mawk/mawk_1.3.3-17_armhf.deb
I: Retrieving mawk
I: Validating mawk
W: Retrying failed download of http://ports.ubuntu.com/ubuntu-ports/pool/main/m/mawk/mawk_1.3.3-17_armhf.deb
I: Retrieving mawk
I: Validating mawk
W: Retrying failed download of http://ports.ubuntu.com/ubuntu-ports/pool/main/m/mawk/mawk_1.3.3-17_armhf.deb
I: Retrieving mawk
I: Validating mawk
W: Retrying failed download of http://ports.ubuntu.com/ubuntu-ports/pool/main/m/mawk/mawk_1.3.3-17_armhf.deb
I: Retrieving mawk
I: Validating mawk
W: Retrying failed download of http://ports.ubuntu.com/ubuntu-ports/pool/main/m/mawk/mawk_1.3.3-17_armhf.deb
I: Retrieving mawk
I: Validating mawk
W: Retrying failed download of http://ports.ubuntu.com/ubuntu-ports/pool/main/m/mawk/mawk_1.3.3-17_armhf.deb
I: Retrieving mawk
I: Validating mawk
W: Retrying failed download of http://ports.ubuntu.com/ubuntu-ports/pool/main/m/mawk/mawk_1.3.3-17_armhf.deb
I: Retrieving mawk
I: Validating mawk
W: Retrying failed download of http://ports.ubuntu.com/ubuntu-ports/pool/main/m/mawk/mawk_1.3.3-17_armhf.deb
I: Retrieving mawk
I: Validating mawk
W: Retrying failed download of http://ports.ubuntu.com/ubuntu-ports/pool/main/m/mawk/mawk_1.3.3-17_armhf.deb
I: Retrieving mawk
I: Validating mawk
W: Retrying failed download of http://ports.ubuntu.com/ubuntu-ports/pool/main/m/mawk/mawk_1.3.3-17_armhf.deb
W: http://ports.ubuntu.com/ubuntu-ports/pool/main/m/mawk/mawk_1.3.3-17_armhf.deb was corrupt
W: Couldn't download package mawk (ver 1.3.3-17 arch armhf)
I: Retrieving mime-support
I: Validating mime-support
I: Retrieving module-init-tools
...
I: Retrieving zlib1g
I: Validating zlib1g
E: Couldn't download packages: libssl1.0.0 mawk
chronos@localhost ~ $ 

I imagine this might just be a hiccup in those packages, but figured I'd make an issue in case it could be handled better in some way by crouton. Both appear to download fine with wget:

chronos@localhost ~ $ wget http://ports.ubuntu.com/ubuntu-ports/pool/main/m/mawk/mawk_1.3.3-17_armhf.deb
--2013-03-10 10:52:58--  http://ports.ubuntu.com/ubuntu-ports/pool/main/m/mawk/mawk_1.3.3-17_armhf.deb
Resolving ports.ubuntu.com... 91.189.92.175
Connecting to ports.ubuntu.com|91.189.92.175|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 74374 (73K) [application/x-debian-package]
Saving to: `mawk_1.3.3-17_armhf.deb'

100%[================================================================================================================================>] 74,374       401K/s   in 0.2s    

2013-03-10 10:53:00 (401 KB/s) - `mawk_1.3.3-17_armhf.deb' saved [74374/74374]

chronos@localhost ~ $ wget http://ports.ubuntu.com/ubuntu-ports/pool/main/o/openssl/libssl1.0.0_1.0.1-4ubuntu3_armhf.deb
--2013-03-10 10:54:13--  http://ports.ubuntu.com/ubuntu-ports/pool/main/o/openssl/libssl1.0.0_1.0.1-4ubuntu3_armhf.deb
Resolving ports.ubuntu.com... 91.189.92.175
Connecting to ports.ubuntu.com|91.189.92.175|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 823680 (804K) [application/x-debian-package]
Saving to: `libssl1.0.0_1.0.1-4ubuntu3_armhf.deb'

100%[================================================================================================================================>] 823,680      939K/s   in 0.9s    

2013-03-10 10:54:15 (939 KB/s) - `libssl1.0.0_1.0.1-4ubuntu3_armhf.deb' saved [823680/823680]

chronos@localhost ~ $

Device Access

I have run into some issues with things that need access to devices, but the devices aren't there or can't be created.

Specifically my VPN client is trying to work with a tun device, and the kernel module seems to be loaded based on dmesg.

The other case is around getting a secure USB drive mounted in the chroot.

Anyone have any suggested reading or pointers for this?

Chromebook Pixel -t touch

Hi there,
I just tried to install a chroot using the "touch" target, and had no luck getting the thing to run. Do you have any advice/stages I can perform to further test this?

Cheers,

How can we back up croutons?

I understand that croutons are small and should be easy to back up. I want to try steam without killing my chroot. Any ideas?

Also, how do I kill all processes running on a zombie crouton?

Ill make sure to add the answers to the wiki.

updating question

I know I can use crouton's "-u" parameter to update any target(s) I specify with the "-t" but would it also update any bootstrap file I specify with "-f" at the same time ?
I hadn't thought that it would so whenever a new version of crouton comes out I have always first downloaded a new bootstrap file and then updated my chroot targets.

Acer C7 worked like a charm

Hello, this is not an issue. I just wanted to say thank you because I installed crouton on my Acer C7, and everything worked like a charm. Amazing.

except I have to use xinit /etc/X11/xinit/xinitrc instead of startx

I also installed X11 target then apt-get install dwm. Everything is working, in fact, I'm using it right now for this post. I really appreciate the effort. I guess you can go ahead and close this issue now. :)

Post-installation encryption

Hi, I recently started using Crouton and I love it! It lets me get a ton of use out of my Chromebook. Thanks for writing it!

When I initially installed my Ubuntu chroot I did it without encryption (mainly just to see if it would work at all). Now that I've spent some time setting up my dev environment, I'm realizing I should probably encrypt the chroot directory. Is this possible? Or does that need to be done at install-time?

Thanks again for making such a great tool!

trackpad configuration (not a bug)

Sorry for registering this as a bug, I was trying to find an alternative contact method..

I was interested to see how to go about configuring the mouse options in xephyr - i can see a virtual mouse driver is in use, but not sure if the config is happening inside the chroot, or as part of your launch scripts..

I'm basically just trying to pass through the "mouse wheel" (two finger scroll in chrome) to xephyr for scrolling etc..

Chrome Cannot Installed

I think Google no longer provides builds for chrome on armhf, as these links always break.
Here's an excerpt when running "sudo sh -e ~/Downloads/crouton -u -t chrome"

--2013-03-10 12:20:51--  https://dl.google.com/linux/direct/google-chrome-stable_current_armhf.deb
Resolving dl.google.com (dl.google.com)... 74.125.228.32, 74.125.228.34, 74.125.228.36, ...
Connecting to dl.google.com (dl.google.com)|74.125.228.32|:443... connected.
HTTP request sent, awaiting response... 404 Not Found
2013-03-10 12:20:51 ERROR 404: Not Found.

Is there anywhere to get an updated version of a google-chrome or chromium build for armhf? The latest version of chromium-browser provided by ubuntu is 22, which is ancient. :(

Cr-48 Mouse won't work on chroot with xfce4

I just installed crouton on my cr-48 and no matter what I try to do the mouse just sticks in the center of the screen. It will click but it will not move, anything I can do to fix this?

power management in awesome windows manager

hello, I have awesome working under crouton ... but maybe it's my suspicion, somehow I sense that awesome may consume a lot of battery even when the lid is closed. Does the awesome need its own power management when using under crouton, or it's not necessary?

I suppose that enter-chroot as command line option (no gui) there's a power management for the chroot process, right?

Thanks a lot!

Leveraging of Chrome's X server

Hi

Not an issue, more a question/feature request:
Would it be possible to use Chorme's X server to run chroot-ed X/gtk apps?
Some quirky ssh tunneling?

Cheers

Can't switch between ChromeOS and XFCE

Used the example instructions and set up chroot with XFCE on ARM Chromebook.

XFCE launches properly, but cannot switch between the Chrome Desktop and XFCE desktop.

CTRL + ALT "back" goes to the XFCE desktop

CTRL + ALT "forward" goes to the Chrome Console

CTRL + ALT "refresh" goes to a blank screen.

I remember reading previously elsewhere that the TTYs may be different on the ARM to other models. Possible cause?

Reset, Recovery and partitions

I really appreciate your Crouton script, it's been working flawlessly on my C7. My question is regarding recovery, resetting and partitions. I'm assuming that if I fully recover from the google USB image, all changes will revert to factory including HDD partitions. However, if I do a reset via toggling the dev switch will I lose my crouton install? Further, if I were to create a partition on the drive that exists apart from ChromeOS, similar to the chrubuntu partitioning in Jay Lee's script, would this be able to dodge the dev switch user reset? Lastly, is this how the existing partitioning should look? It just seems odd to me.

Screenshot - 020113 - 23:22:42

ALT + F2

The ALT + F2 (forward...) key combo on the ARM Chromebook, in the chroot should launch "run" dialog..

What actually happens:

You are thrown to the Chrome Dev Console (as if you had clicked CTRL + ALT + F2)

To get back, I have to issue: ALT + F1

where I can see the "run dialogue" has launched also.

So seems like TTY switching is happening when it shouldn't ?

Edit, extra info: xfce target, installed on internal drive

repeated prompt during couton install xfce

I got repeated prompts of this:

sudo enter-chroot startxfce4
A chroot preparation script still exists inside the chroot.
The chroot may not be fully set up.
Would you like to finish the setup? [Y/n]

each time, the install script does something, unpacking and configuration, but it keeps stating the same thing and enter into the setup repeatedly (once I try to fire up using sudo startxfce4 ...)

something wrong here? I am on samsung arm chromebook

Confused install awesome

I want to install awesome, but should i exec the command:sudo sh -e ~/Downloads/crouton -t xfce .

Proxy not apparently being handled for install or apt-get installs

The initial Crouton installation (sh -e ~/Downloads/crouton) fails due to proxy issues on the wifi. A move to a proxy-less wifi with same cached command an crouton file worked perfectly.

Apt-get installs fail similarly - even though proxy details set at ChromeOS level and that session works fine over wifi.

Question on sudo enter-chroot: powerd stop/waiting prompt

Hello, when I enter crouton using sudo enter-chroot to use commandline only, I got the prompt that powerd stop/waiting. Is this the powerd inside chrome os, or powerd insde chroot?

when running xfce through startxfce4, I don't see such a prompt. is it because I just used enter-chroot directly?

Thanks a lot

best, Isaac

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.