关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » Linux »在Ubuntu系统中配置chroot环境的教程

    在Ubuntu系统中配置chroot环境的教程

    2006-09-01 18:20:52 出处:ITJS
    分享

    你可能会有很多理由想要把一个应用、一个用户或者一个环境与你的 linux 系统隔离开来。不同的操作系统有不同的实现方式,而在 linux 中,一个典型的方式就是 chroot 环境。

    在这份教程中,我会一步一步指导你怎么使用 chroot 命令去配置一个与真实系统分离出来的独立环境。这个功能主要可以用于测试项目,以下这些步骤都在 Ubuntu 14.04 虚拟专用服务器(VPS)上执行。

    学会快速搭建一个简单的 chroot 环境是一项非常实用的技能,绝大多数系统管理员都能从中受益。

    Chroot 环境

    一个 chroot 环境就是通过系统调用,将一个本地目录临时变成根目录。一般所说的系统根目录就是挂载点"/",然而使用 chroot 命令后,你可以使用其它目录作为根目录。

    原则上,任何运行在 chroot 环境内的应用都不能访问系统中其他信息(LCTT译注:使用 chroot 把一个目录变成根目录,在里面运行的应用只能访问本目录内的文件,无法访问到目录外的文件。然而,运行在 chroot 环境的应用可以通过 sysfs 文件系统访问到环境外的信息,所以,这里有个“原则上”的修饰语)。

    Chroot 环境的用处

            测试一个不稳定的应用服务不会影响到整个主机系统。         就算使用 root 权限做了些不当的操作,把 chroot 环境搞得一塌糊涂,也不会影响到主机系统。         可以在你的系统中运行另外一个操作系统。

    举个例子,你可以在 chroot 环境中编译、安装、测试软件,而不去动真实的系统。你也可以在64位环境下使用 chroot 创建一个32位环境,然后运行一个32位的程序(LCTT泽注:假如你的真实环境是32位的,那就不能 chroot 一个64位的环境了)。

    但是为了安全考虑,chroot 环境为非特权用户设立了非常严格的限制,而不是提供完整的安全策略。假如你需要的是有完善的安全策略的隔离方案,可以考虑下 LXC、Docker、vservers等等。

    Debootstrap 和 Schroot

    使用 chroot 环境需要安装 debootstrap 和 schroot,这两个软件都在 Ubuntu 的镜像源中。其中 schroot 用于创建 chroot 环境。

    Debootstrap 可以让你通过镜像源安装任何 Debian(或基于 Debian 的)系统,装好的系统会包含最基本的命令。

    Schroot 命令允许用户使用相同的机制去创建 chroot 环境,但在访问 chroot 环境时会做些权限检查,并且会允许用户做些额外的自动设置,比如挂载一些文件系统。

    在 Ubuntu 14.04 LTS 上,我们可以通过两步来实现这个功能:

    1. 安装软件包

    第一步,在Ubuntu 14.04 LTS 主机系统上安装 debootstrap 和 schroot:


    复制代码代码如下:$ sudo apt-get install debootstrap

    $ sudo apt-get install schroot

    2. 配置 Schroot

    现在我们有工具在手,需要指定一个目录作为我们的 chroot 环境。这里创建一个目录先:


    复制代码代码如下:sudo mkdir /linoxide

    编辑 schroot 的配置文件:


    复制代码代码如下:sudo nano /etc/schroot/schroot.conf

    再提醒一下,我们现在是在 Ubuntu 14.04 LTS 系统上。假如我们想测试一个软件包能不能在 Ubuntu 13.10(代号是“Saucy Salamander”) 上运行,就可以在配置文件中添加下面的内容:


    复制代码代码如下: [saucy]

    description=Ubuntu Saucy

    location=/linoxide

    priority=3

    users=arun

    root-groups=root

    201569182432964.png (649×429)

    根据你的系统要求,调整上面的配置信息。

    3. 使用 debootstrap 安装32位 Ubuntu 系统

    Debootstrap 命令会在你的 chroot 环境里面下载安装一个最小系统。只要你能访问镜像源,你就可以安装任何基于 Debian 的系统版本。

    前面我们已经创建了 /linoxide 目录用于放置 chroot 环境,现在我们可以在这个目录里面运行 debootstrap 了:


    复制代码代码如下:cd /linoxide

    sudo debootstrap --variant=buildd --arch amd64 saucy /linoxide/ http://archive.ubuntu.com/ubuntu/

    sudo chroot /linoxide /debootstrap/debootstrap --second-stage

    你可以将 --arch 的参数换成 i386 或其他架构,只要存在这种架构的镜像源。你也可以把镜像源 http://archive.ubuntu.com/ubuntu/ 换成离你最近的镜像源,具体可参考 Ubuntu 官方镜像主页。

    注意:假如你是在64位系统中创建32位系统,你需要在上面第3行命令中加入 --foreign 选项,就像下面的命令:


    复制代码代码如下:sudo debootstrap --variant=buildd --foreign --arch i386 saucy /linoxide/ http://archive.ubuntu.com/ubuntu/

    下载需要一段时间,看你网络带宽性能。最小系统大概有500M。

    4. 完成 chroot 环境

    安装完系统后,我们需要做一些收尾工作,确保系统运行正常。首先,保证主机的 fstab 程序能意识到 chroot 环境的存在:


    复制代码代码如下: sudo nano /etc/fstab

    在文件最后面添加下面的配置:


    复制代码代码如下:proc /linoxide/proc proc defaults 0 0

    sysfs /linoxide/sys sysfs defaults 0 0

    保存并关闭文件。

    挂载一些文件系统到 chroot 环境:


    复制代码代码如下:$ sudo mount proc /linoxide/proc -t proc

    $ sudo mount sysfs /linoxide/sys -t sysfs

    复制 /etc/hosts 文件到 chroot 环境,这样 chroot 环境就可以使用网络了:


    复制代码代码如下:$ sudo cp /etc/hosts /linoxide/etc/hosts

    最后使用 schroot -l 命令列出系统上所有的 chroot 环境:


    复制代码代码如下:$ schroot -l

    使用下面的命令进入 chroot 环境:


    复制代码代码如下:$ sudo chroot /linoxide/ /bin/bash

    测试安装的版本:


    复制代码代码如下:# lsb_release -a

    # uname -a

    为了在 chroot 环境中使用图形界面,你需要设置 DISPLAY 环境变量:


    复制代码代码如下:$ DISPLAY=:0.0 ./apps

    目前为止,我已经成功地在 Ubuntu 14.04 LTS 上安装了 Ubuntu 13.10。

    退出 chroot 环境:


    复制代码代码如下:# exit

    清理一下,卸载文件系统:


    复制代码代码如下:$ sudo umount /test/proc

    $ sudo umount /test/sys

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    hiberfil.sys文件可以删除吗?了解该文件并手把手教你删除C盘的hiberfil.sys文件

    Window 10和 Windows 11哪个好?答案是:看你自己的需求

    盗版软件成公司里的“隐形炸弹”?老板们的“法务噩梦” 有救了!

    帝国CMS7.5编辑器上传图片取消宽高的三种方法

    帝国cms如何自动生成缩略图的实现方法

    Windows 12即将到来,将彻底改变人机交互

    帝国CMS 7.5忘记登陆账号密码怎么办?可以phpmyadmin中重置管理员密码

    帝国CMS 7.5 后台编辑器换行,修改回车键br换行为p标签

    Windows 11 版本与 Windows 10比较,新功能一览

    Windows 11激活产品密钥收集及专业版激活方法

    IT头条

    智能手机市场风云:iPhone领跑销量榜,华为缺席引争议

    15:43

    大数据算法和“老师傅”经验叠加 智慧化收储粮食尽显“科技范”

    15:17

    严重缩水!NVIDIA将推中国特供RTX 5090 DD:只剩24GB显存

    00:17

    无线路由大厂 TP-Link突然大裁员:补偿N+3

    02:39

    Meta 千万美金招募AI高级人才

    00:22

    技术热点

    微软已修复windows 7/windows 8.1媒体中心严重漏洞 用户可下载安

    卸载MySQL数据库,用rpm如何实现

    windows 7中使用网上银行或支付宝支付时总是打不开支付页面

    一致性哈希算法原理设计

    MySQL数字类型中的三种常用种类

    如何解决SQL Server中传入select语句in范围参数

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。