chroot通过将软件置于一个jail中,把它与Linux系统其他文件隔离开来。当你要测试一个可能影响你Linux系统或者不安全的软件时,这项技术尤为有用。 从根本上说,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 然后在文档中加入以下内容: [xenial] description=Ubuntu Xenial location=/var/chroot priority=3 user=your_username groups=sbuild root-groups=root 注意,这里”xenial"是以ubuntu 16.04为例,你可以替换成你想要的版本。同时,将 your_username 替换成你的用户名 4.将Ubuntu 16.04(Xenial xerus)安装到chroot: $ sudo debootstrap --variant=buildd --arch amd64 xenial /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 来安装某个包。
四、在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 它会自动移除绑定的目录。
相关主题 |