crouton概述 ChRomium Os Universal chrooT EnvirONment 1 2 3 4 5 6 7 8 9 Crouton是CrOS上的一个chroot生成器。它能够自动完成对指定linux镜像的构建,并以chroot的形式启动它们。Crouton使得Ubuntu,Debian和Kali Linux系统能够与Chrome OS系统并行运行。它使用的是chroot而不是双启动的方式,允许用户同时运行不同的桌面环境:Chrome OS和用户通过crouton选择的其他环境。 ### 作用 在Chromium os上面通过chroot直接运行linux。此时,Chromium OS与chroot内的系统是并行运行的。 # 使用crouton 下载地址:https://goo.gl/fd3zc ;如果地址失效可以从```https://github.com/dnschneid/crouton```找到最新的下载地址。
sudo sh ~/Downloads/crouton -t xfce
1 2 3 4 5 6 7 8 9 10 11 12 > -t xfce表示旋转使用xfce作为桌面环境,常用的桌面环境有kde gnome xfce unity;更多桌面环境可以参考命令help。 > > -n chrootname指定chroot 的名称。 > > -u update;更新指定的chroot 。该参数用于修改、更新chroot 内的系统的设置 :如通过-u与-t xiwi的配合,将原不带xiwi的系统update为使用xiwi的系统。 > > 当然,希望尝试不同的桌面环境,可以直接使用-n chroot name来创建新的chroot ,不一定要在原有的chroot 上进行update。 - 该命令将构建Ubuntu并创建chroot ;在运行过程中会要求输入新用户的用户名密码作为chroot 系统里面的初始用户。 - chroot 的默认路径:`` `/mnt/stateful_partition/crouton/chroots` `` - 可以通过-p参数来指定chroot 的位置。==当chroot 路径不是默认路径时,在enter-chroot 或startxxx的时候注意通过-c指定路径==,否则按照默认路径进入系统。
sudo enter-chroot startgnome
or sudo startgnome
1 2 3 4 5 6 7 该命令启动并进入chroot里面的系统。 > 其中启动命令对应桌面环境,如startgnome进入gnome桌面。 > > 注意:startgnome命令的意义是启动桌面环境,它会自动启动对应的linux,但是startgnome的真正工作是启动桌面环境,也就是说,Linux系统的启动与否并不取决与是否有startxxx命令,因为可以以不启动桌面环境的形式来启动系统。 ### After crouton 进入chroot后,如果需要修改软件包,则需先运行以下命令,否则可能出现apt install或dpkg安装失败的情况。
sudo apt-get install -f sudo apt-get upgrade && sudo apt-get update
1 2 3 ### 在Chromium OS和chroot linux之间进行切换 在CrOS和chroot之间切换:
Ctrl+Alt+Shift+F1 Ctrl+Alt+Shift+F2
1 2 3 4 5 6 7 8 ```sh crouton -r list```查询支持安装的发行版(包括Ubuntu、debian、kali的各种发行版)。 ```-t core```或```-t cli-extra```只安装CLI而不安装桌面环境。 ==如果没有安装桌面环境,或者是安装了桌面环境但是不想启动桌面,可以直接使用==```enter-chroot```。在此条件下,==使用```startcli```来打开一个VT(虚拟终端),该终端的会话实际上由chroot里面的系统提供==。 ## 修改chroot内的系统使用的桌面环境 通过-u(update)参数将chroot修改为使用xiwi:
sudo crouton -u -t xiwi
多环境 sudo crouton -u -t xiwi,gnome
1 2 3 (u)pdate已有chroot内的系统; ## Single-App 单App模式
sudo crouton -t xiwi
1 2 3 4 5 6 > 只安装xiwi作为唯一的显示系统,而不安装独立的桌面环境。不是首次安装,不需要-u参数。 ==注意:只安装xiwi,没有桌面系统,此时必须安装了crouton extension,否则无法打开Linux窗口。== # 如果希望使用xiwi的同时临时使用X11,可以通过-X参数:
sudo enter-chroot startgnome -X xiwi
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 该模式下chroot内的系统没有自己的桌面环境,只能通过xiwi在Chromium OS里面显示。 # crouton extension > 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. 全称:crouton intergration;该插件在Google extension store不能成功搜索到(尝试了Linux的chrome和Chrome OS的Chrome都搜不到这个extension),只好从别的地方找到了网址,然后手动键入Chrome OS的浏览器导航栏进行下载。 当希望通过插件(crouton extension)或```xiwi``` (X11 in Window,将X11界面用一个窗口显示出来,类似Android窗口通过wayland显示到chromium OS)来进行显示的时候,可以使用crouton插件,它比直接使用crouton具有更好的兼容性。 ## crouton extension的作用 - ==允许chroot内的系统共享使用Chromium OS的设施(如剪贴板、浏览器)。==- ==允许chroot内的系统以常规Chromium OS window的形式创建会话窗口(就是说允许在Chromium OS里面显示chroot系统的窗口,在Chromium OS里面显示chroot的窗口而不需要通过Ctrl+alt+Shift进行桌面系统的切换)。==在chroot系统内使用Chromium Browser的方法: > 在Chromium OS的browser中安装```crouton```extension。然后把chroot系统内的所有browser都卸载掉。这时在chroot内打开的url都会由Chromium OS的Chromium进行处理。 ## 让chroot内的应用以窗口形式直接内嵌显示在Chromium OS - crouton extension- xiwi### Download crouton extension [crouton extension download ](https://chrome.google.com/webstore/detail/crouton-integration/gcpneefbbnfalgjniomfjknbcgkbijom ) ### 在Chromium OS中以窗口形式运行Linux 步骤: 1. Chromium OS Chrome or Chromium Browser安装插件Crouton;2. 通过crouton命令来更改chroot内的系统的默认显示server; Command as follow:
sudo sh ~/Downloads/crouton -t xiwi -u -n chrootname // # reset: sudo sh ~/Downloads/crouton -t xorg,xiwi -u -n chrootname
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 > 命令解释: - ```-t xiwi```使用xiwi(X11 in Window)作为默认的显示服务;将chroot内的系统显示到Chromium OS窗口的服务就是xiwi;Ubuntu默认的显示服务是X11,使用命令参数```-t xorg,xiwi```å³可修改为默认的X11。xorg就是常说的X显示server,Linux命令```startx```中的x就是xorg。 - ```-n chrootname```指定chroot,其中,chrootname可以在chroot内的系统中看到(进入chroot内的系统后,在终端的命令提示符内看得到)。在Chromium OS中,第一次创建chroot默认的chrootname为```xenial```。 执行完以上两个步骤后,以常规方式进入chroot或者startxxx(startunity这种带图形界面的或startcli启动Cmd Line Interface命令行界面),此时会出现一个新的窗口显示chroot,另外,可以在Chromium OS browser的crouton extension处看到一些信息。 ## Crosh Window extension > Use the Crosh Window extension to keep Chromium OS from eating standard keyboard shortcuts. 作用: 1 . 安装后在browser插件栏中单击它,打开一个新的outside chrome的crosh窗口(crosh是Chromium OS的shell的名称,打开后输入shell即可进入bash命令行);2 . 该插件确保键盘组合键不会被Chromium OS or Chromium browser处理,而是将组合键发送到shell窗口处理;(如:在browser取得屏幕焦点的情况下,Ctrl+T会打开新的Tab,在该插件打开的Crosh窗口中就会发送到系统,而不交给browser处理)==如果不安装该插件,在启动chroot内桌面环境后,单击Ctrl + t按钮不是打开chroot内系统的终端,而是打开Chromium OS的终端==。 [Crosh Window extension download](https: //chrome.google.com/webstore/detail/crosh-window/nhbmpbdladcchdhkemlojfjdknjadhmh/related)==依赖于该插件:== [Secure Shell App](https: //chrome.google.com/webstore/detail/pnhechapfaindjhompbnflcldabbghjo)### 组合键屏蔽功能与chroot的结合 当使用CLI(Command Line Interface)的时候,希望键盘组合键发送给VT,而不是给Browser处理,此时,该插件就发挥其作用了。 ## crouton 维护与更新 1 . Check for updates, download the latest version, and see what's new by running croutonversion -u -d -c from the chroot (run croutonversion -h to see what those parameters actually do).2 . Exit the chroot and run sudo sh ~/Downloads/crouton -u -n chrootname. It will update all installed targets.# enter-chroot startxxx 命令的解释 这是两个命令:```enter-root```和```startxxx``` ## enter-chroot 这是进入chroot的命令;==值得一提的是,它后面所跟的参数基本不会对它产生影响==。
sudo enter-chroot startxfce4
1 2 3 4 - enter-chroot 后面跟着的startxxx看似是enter-chroot 的参数,其实不是,enter-chroot 完全不care后面的参数,它只做两件事: - 进入chroot - 把它后面跟着的东西作为native raw command转交给进入chroot 后的shell进行执行 也就是说,即使我们后面写上一个奇奇怪怪的“参数”:
enter-chroot ls
1 enter-chroot 也不会出错,在打印出进入chroot 的信息后,chroot 内的shell会执行这个参数并打印出命令的结果。
graph LR enter_chroot–>chroot enter_chroot.startxxx–>chroot_exec_startxxx chroot_exec_startxxx–>chroot
1 2 3 ### 单独运行enter_chroot 不启动桌面环境,不保证能有窗口或tab 弹出来,在安装了crouton extension后能够弹出CLI 窗口。 > 在进入chroot后,可以通过xiwi -T/-F cmd来让app 运行在tab 或window 。
sudo enter-chroot xiwi -T /usr/local/code/code
sudo -i enter-chroot xiwi -T xxx # tab运行xxx xiwi -F xxx # FullScreen运行xxx
1 2 3 4 5 ## startxxx 这个命令所在的路径被添加到了$PATH;因此能够直接在命令行中键入使用。 # 在浏览器的Tab页中运行chroot内的桌面系统
sudo startxfec4 -n chrootname -X xiwi-tab
1 2 3 4 5 - 在tab页上跑chroot 内的桌面系统;关闭tab页后,还能在插件Crouton中再次启动。 - 只要用户没有从chroot 内的系统中logout,即使关闭标签页,也不会导致chroot 内的系统停止。 当Chromium OS通过crouton安装了xiwi后,å¯以不通过桌面环境,直接在一个窗口或标签页中启动chroot 内的app。
在一个tab中启动 sudo enter-chroot xiwi -T bin
全屏幕启动 sudo enter-chroot xiwi -F bin
1 2 3 4 5 6 7 8 9 10 命令解析: enter-chroot 后执行命令xiwi -T bin;xiwi命令根据参数将bin的界面显示到指定的位置。bin是chroot 内的可执行文件。 在tab中运行时,xiwi会将指定的进程显示到tab中,==当该进程退出时,不论他有没有fork ,或invoke其他进程,或带起了其他进程,只要它退出,tab页就会显示进程退出,画面丢失==。如果所运行的程序会启动其他进程,或者进行fork ,且希望新进程的界面继续保持显示,就必须向xiwi传递参数`` `-f` `` 。 > chroot go是对chroot 的备份打包、解包和恢复,类似于Windows的安装到U盘,成为随处可用的Windows go。chroot go不是官方名称,是我自己起的名字。 1 . backup chroot
sudo edit-chroot -b chrootname
1 2 3 在当前目录下得到以time stamp命名的tarball,备份了整个chroot系统。 2. restore from tarball
sudo edit-chroot -r chrootname
1 2 3 找到拥有最新time stamp的tarball并从中恢复。可以通过-f参数来指定tarball而不需要使用most recent timestamp.tar.gz。 3 . Everywhere chroot go
sudo sh ~/Downloads/crouton -f mybackup.tar.gz
1 2 3 4 5 6 7 全新安装chroot系统;适用于从来没有执行过crouton的系统。 # 优化用户体验,提前下载bootstrap文件,快速创建系统,免除下载等待 - 首次运行crouton安装系统,要下载大量文件,耗时,waste...- 通过crouton安装多个系统,每次安装都有下载文件,而且还是相同的重复文件,waste...## 提前下载bootstarp files
sudo sh ~/Downloads/crouton -d -f ~/Downloads/mybootstrap.tar.bz2
1 2 3 4 - 追加参数:可以通过-r来选择安装的发行版 - 追加参数:可以通过-t 来选择桌面环境(如内嵌到Chromium OS Browser使用-t xiwi;使用独立的unity:-t unity;) 使用已经下载好的文件进行安装:(可以利用该命令来安装定制过的系统)
sudo sh ~/Downloads/crouton -f ~/Downloads/mybootstrap.tar.bz2 -t xxx
1 2 3 4 5 > 该命令在上面介绍过了,通过-f参数指定tarball进行安装。 需要注意的是:该方法可能需要追加-t参数,显式通知crouton该tarball内使用的是那种桌面环境,保证crouton已经安装了该桌面环境对应的设施。 # 毁灭你的chroot
sudo delete-chroot chrootname
sudo edit-chroot -d chrootname
1 2 3 4 > Chroot is cheap. 文档显示:Chroot开销不大。可以通过-n参数启动多个chroot。
sudo enter-chroot startunity -n
- 该功能是chroot的功能,-n参数是enter-chroot命令的参数,不是startxxx的参数
- 如果不追加-n参数,存在已有chroot并且已经进入时,命令执行失败。追加-n参数,即使同一个chroot已经被进入了,仍然可以再次启å¨一个新的chroot内系统。
> crouton的-n是指定chrootname,这里的-n是多次启动一个chroot内的系统。
# 确保真正shutdown chroot内的系统
1. ==在crouton extension已经安装的情况下,所有显示chroot内的系统的tab或window在被关闭后,都不会真正退出。==
2. 在浏览器插件那里能够看到正在运行的chroot系统。
3. 关闭chroot内的系统的真正办法是:用户logout系统会话。
1. 若有桌面环境:单击logout
2. 通过chroot内命令行:键入logout命令
3. 仅CLI界面:logout命令或Ctrl + D向VT发出logout信号
## 特性
为了使用户能够快速回到chroot环境,所有单击关闭按钮所得到的关闭操作,不会真正关闭chroot内的系统。只有当用户从chroot内系统logout后,才会关闭系统(chroot内关机)。
- 确定跑了几个chroot内系统:通过crouton extension查看。
## (窗口或tab)被关闭的Chroot内系统可以通过Crouton extension重新打开而不需è¦重新启动chroot内系统
# misc
1. ```-t touch```Improves touch support.不带该参数也能支持触摸。
2. ```/etc/crouton/shares```在Chromium OS和chroot之间共享目录。