每周一贴:chroot 简介
chroot通过将软件置于一个“jail”(监牢)中,把它与系统其他文件隔离开来。当你要测试一个可能影响你系统或者不安全的软件时,这项技术尤为有用。
从根本上说,chroot是一个特殊的目录,在这个目录中运行的程序无法访问目录外的文件。而从许多方面看,chroot就像在你的系统上安装了另一个系 统。技术上说来,chroot暂时地把根目录(通常是“/”)切换到chroot 目录(比如说“/var/chroot")。由于根目录是文件系统的顶端,应用程序无法访问高于根目录的目录,所以应用程序与其他的系统文件隔离开了。
需要注意的是,从chroot目录外访问chroot内的文件是可能的。
一、chroot的作用
1. 隔离不安全和不稳定的程序。
2. 在64位系统上运行32位的程序。
3. 在把新包安装到系统前测试它。
4. 在新版的Ubuntu/Ubuntu Kylin上运行旧版本的软件。
5. 构建新包时,能仔细地控制相关依赖。
二、创建一个chroot
1. 安装 schroot 和 debootstrap包:
$ sudo apt-get install schroot debootstrap
2. 以管理员权限为chroot创建一个新目录(这里以 ”var/chroot“为例):
$ sudo mkdir /var/chroot
3. 以管理员权限打开并编辑 /etc/schroot/schroot.conf:
$ sudo gedit /etc/schroot/schroot.conf
然后在文档中加入以下内容:
[yakkety]
description=Ubuntu Yakkety
location=/var/chroot
priority=3
user=your_username
groups=sbuild
root-groups=root
注意,这里”yakkety"是以ubuntu 1610为例,你可以替换成你想要的版本。同时,将 your_username 替换成你的用户名
4. 将Ubuntu 16.10(Yakkety yak)安装到chroot:
$ sudo debootstrap --variant=buildd --arch amd64 yakkety /var/chroot/ http://mirrors.aliyun.com/ubuntu/
这里的amd64是只下载64位的系统,如果要32位,将它替换成 i386。
5. 一个基本的chroot就创建好了,通过以下命令进入chroot:
$ sudo chroot /var/chroot
三、配置chroot
如果你在chroot环境中想配置DNS解析服务或者访问/proc,可以如下处理:
1. $ sudo cp /etc/resolv.conf /var/chroot/etc/resolv.conf
2. $ sudo mount -o bind /proc /var/chroot/proc
在chroot中,只默认安装了很少的一部分包(甚至"sudo" 也没安装),使用 apt-get install package_name 来安装某个包。
更多详情请浏览:https://help.ubuntu.com/community/DebootstrapChroot
四、在chroot中运行图形界面程序
1. 将图形界面显示到当前系统:
a) 在chroot shell 里执行:
$ export DISPLAY=:0.0
b) 然后在系统shell里执行:
$ xhost + (这条命令允许其它用户能够访问系统的Xserver.)
c) 之后你就能在chroot shell里直接启动chroot中的图形程序了,或者在系统shell中通过以下方式启动:
$ sudo chroot /var/chroot firefox -DISPLAY=:0.0
注意,由于缺少很多包,你现在可能无法成功启动这些程序,你可以通过错误信息一一去解决,或者先安装好整个桌面(sudo apt-get install ubuntu-desktop).
2. 创建自己独立的display:
a) $ sudo apt-get install xserver-xephyr
b) 确保/proc已经挂载,DNS解析服务设置完成。
c) 在系统 shell 中打开Xephyr:
$ Xephyr -ac -screen 800x600 :1 (其中800x600为你要设置的窗口大小)
d) 打开另一个终端,进入chroot:
$ sudo chroot /var/chroot
e) 在chroot shell 中设置display:
$ export DISPLAY=:1
f) 之后就可以通过上述 (四.1.c)中所说两种方式来运行chroot中的图形应用程序了。如果你喜欢,也可以在这个独立的xephyr窗口中启动整个桌面环境。
五、退出
在chroot shell 中使用 exit 来退出chroot:
$ exit
它会自动移除绑定的目录。
-
在优麒麟上使用MPV编写自己的播放器[2021-06-24]
-
优麒麟 17.04 桌面壁纸新鲜出炉[2017-03-06]
-
庆国庆,好礼七天拍-优麒麟2016积分商城活动[2016-09-30]
-
优麒麟社区助力“华梦2015”之Linux技术征文大赛[2015-10-04]
-
每周一贴:Ubuntu Kylin 14.04 版本默认启动HDMI无声音问题的修复[2014-07-18]
-
每周一贴:如何在 Ubuntu Kylin 上安装 Visual Studio Code[2015-05-10]
-
【每周一贴】如何设置 Ubuntu Kylin 中的默认应用程序[2016-07-27]
-
每周一贴:如何在优麒麟桌面上显示歌词[2014-07-22]