crouton
: ChRomium Os Universal chrooT EnvirONment
Crouton是CrOS上的一个chroot生成器。它能够自动完成对指定linux镜像的构建,并以chroot的形式启动它们。Crouton使得Ubuntu,Debian和Kali Linux系统能够与Chrome OS系统并行运行。它使用的是chroot而不是双启动的方式,允许用户同时运行不同的桌面环境:Chrome OS和用户通过crouton选择的其他环境。
在Chromium os上面通过chroot直接运行linux。此时,Chromium OS与chroot内的系统是并行运行的。
下载地址:https://goo.gl/fd3zc ;如果地址失效可以从https://github.com/dnschneid/crouton
找到最新的下载地址。
sudo sh ~/Downloads/crouton -t xfce
-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。
/mnt/stateful_partition/crouton/chroots
sudo enter-chroot startgnome
# or
sudo startgnome
该命令启动并进入chroot里面的系统。
其中启动命令对应桌面环境,如startgnome进入gnome桌面。
注意:startgnome命令的意义是启动桌面环境,它会自动启动对应的linux,但是startgnome的真正工作是启动桌面环境,也就是说,Linux系统的启动与否并不取决与是否有startxxx命令,因为可以以不启动桌面环境的形式来启动系统。
进入chroot后,如果需要修改软件包,则需先运行以下命令,否则可能出现apt install或dpkg安装失败的情况。
sudo apt-get install -f
sudo apt-get upgrade && sudo apt-get update
在CrOS和chroot之间切换:
Ctrl+Alt+Shift+F1
Ctrl+Alt+Shift+F2
sh crouton -r list
查询支持安装的发行版(包括Ubuntu、debian、kali的各种发行版)。
-t core
或-t cli-extra
只安装CLI而不安装桌面环境。
如果没有安装桌面环境,或者是安装了桌面环境但是不想启动桌面,可以直接使用enter-chroot
。在此条件下,使用startcli
来打开一个VT(虚拟终端),该终端的会话实际上由chroot里面的系统提供。
通过-u(update)参数将chroot修改为使用xiwi:
sudo crouton -u -t xiwi
# 多环境
sudo crouton -u -t xiwi,gnome
(u)pdate已有chroot内的系统;
sudo crouton -t xiwi
只安装xiwi作为唯一的显示系统,而不安装独立的桌面环境。不是首次安装,不需要-u参数。
注意:只安装xiwi,没有桌面系统,此时必须安装了crouton extension,否则无法打开Linux窗口。
如果希望使用xiwi的同时临时使用X11,可以通过-X参数:
sudo enter-chroot startgnome -X xiwi
该模式下chroot内的系统没有自己的桌面环境,只能通过xiwi在Chromium OS里面显示。
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具有更好的兼容性。
在chroot系统内使用Chromium Browser的方法:
在Chromium OS的browser中安装
crouton
extension。然后把chroot系统内的所有browser都卸载掉。这时在chroot内打开的url都会由Chromium OS的Chromium进行处理。
步骤:
sudo sh ~/Downloads/crouton -t xiwi -u -n chrootname
// # reset:
sudo sh ~/Downloads/crouton -t xorg,xiwi -u -n chrootname
命令解释:
-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处看到一些信息。
Use the Crosh Window extension to keep Chromium OS from eating standard keyboard shortcuts.
作用:
如果不安装该插件,在启动chroot内桌面环境后,单击Ctrl + t按钮不是打开chroot内系统的终端,而是打开Chromium OS的终端。
Crosh Window extension download
依赖于该插件:
Secure Shell App
当使用CLI(Command Line Interface)的时候,希望键盘组合键发送给VT,而不是给Browser处理,此时,该插件就发挥其作用了。
这是两个命令:enter-root
和startxxx
这是进入chroot的命令;值得一提的是,它后面所跟的参数基本不会对它产生影响。
sudo enter-chroot startxfce4
enter-chroot ls
enter-chroot也不会出错,在打印出进入chroot的信息后,chroot内的shell会执行这个参数并打印出命令的结果。
graph LR
enter_chroot-->chroot
enter_chroot.startxxx-->chroot_exec_startxxx
chroot_exec_startxxx-->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
这个命令所在的路径被添加到了$PATH;因此能够直接在命令行中键入使用。
sudo startxfec4 -n chrootname -X xiwi-tab
当Chromium OS通过crouton安装了xiwi后,可以不通过桌面环境,直接在一个窗口或标签页中启动chroot内的app。
# 在一个tab中启动
sudo enter-chroot xiwi -T bin
# 全屏幕启动
sudo enter-chroot xiwi -F bin
命令解析:
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不是官方名称,是我自己起的名字。
sudo edit-chroot -b chrootname
在当前目录下得到以time stamp命名的tarball,备份了整个chroot系统。
sudo edit-chroot -r chrootname
找到拥有最新time stamp的tarball并从中恢复。可以通过-f参数来指定tarball而不需要使用most recent timestamp.tar.gz。
sudo sh ~/Downloads/crouton -f mybackup.tar.gz
全新安装chroot系统;适用于从来没有执行过crouton的系统。
sudo sh ~/Downloads/crouton -d -f ~/Downloads/mybootstrap.tar.bz2
使用已经下载好的文件进行安装:(可以利用该命令来安装定制过的系统)
sudo sh ~/Downloads/crouton -f ~/Downloads/mybootstrap.tar.bz2 -t xxx
该命令在上面介绍过了,通过-f参数指定tarball进行安装。
需要注意的是:该方法可能需要追加-t参数,显式通知crouton该tarball内使用的是那种桌面环境,保证crouton已经安装了该桌面环境对应的设施。
sudo delete-chroot chrootname
等同于:
sudo edit-chroot -d chrootname
Chroot is cheap.
文档显示:Chroot开销不大。可以通过-n参数启动多个chroot。
sudo enter-chroot startunity -n
crouton的-n是指定chrootname,这里的-n是多次启动一个chroot内的系统。
为了使用户能够快速回到chroot环境,所有单击关闭按钮所得到的关闭操作,不会真正关闭chroot内的系统。只有当用户从chroot内系统logout后,才会关闭系统(chroot内关机)。
-t touch
Improves touch support.不带该参数也能支持触摸。/etc/crouton/shares
在Chromium OS和chroot之间共享目录。