crouton

crouton

在Chromium OS上运行的通用Linux环境工具

crouton是一个开源项目,旨在为Chromium OS设备提供Linux环境支持。通过chroot技术,crouton能够在不修改原有系统的前提下,让用户运行Ubuntu或Debian等Linux发行版。该工具支持环境加密、跨系统剪贴板同步和窗口集成,为开发者和高级用户提供了在Chromium OS上使用Linux工具和应用的便捷方式。crouton的设计注重易用性和灵活性,使其成为扩展Chromium OS功能的实用解决方案。

croutonChromium OSchrootLinux开发者模式Github开源项目

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 link 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...

:warning: Steps to install crouton have changed! :warning:

Chromium OS has introduced several security features over the years that impede the installation and usage of crouton. If your device is no longer receiving updates, the steps below will likely work for you. However, if you are still having trouble, please try the community-maintained instructions.

In addition, goo.gl is going away! That means the fd3zc you know and love will eventually be replaced with git.io/JZEs0. That's a zero at the end, if you were wondering. Both just point to github, so you can always just memorize the full link instead, which (fun fact) does not include any numbers at all!

"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?si=1. 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?si=1 | 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

编辑推荐精选

商汤小浣熊

商汤小浣熊

最强AI数据分析助手

小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。

imini AI

imini AI

像人一样思考的AI智能体

imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。

Keevx

Keevx

AI数字人视频创作平台

Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。

即梦AI

即梦AI

一站式AI创作平台

提供 AI 驱动的图片、视频生成及数字人等功能,助力创意创作

扣子-AI办公

扣子-AI办公

AI办公助手,复杂任务高效处理

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
下拉加载更多