zoukankan      html  css  js  c++  java
  • chroot

    chroot概念

    chroot是操作系统级的“虚拟机”,其功能是切换程序运行时的根目录,将程序限制在指定的根目录中,从而隔离应用程序,这个目录叫作 chroot jail

    在chroot中运行的程序实际上使用的是真实系统的内核和资源,所以性能不会有损耗。

    chroot 目的

    切换根目录通常为了系统维护:

    • 重新安装 bootloader.
    • 重建 initramfs 镜像.
    • 更新或 降级软件包.
    • 重置 忘记的密码.
    • 在干净的 chroot 中构建软件包

    chroot必要条件

    • root 权限
    • 另一个 linux 环境,例如 liveCD、USB 闪存介质或者一个已经安装的另一个 linux 发行版。
    • 匹配的架构,chroot 前后的环境架构要一致(例如均为 i686 或 x86_64)。可以用  uname –m  命令查看当前环境的架构
    • 提前加载 chroot 环境需要的内核模块
    • 如果需要 swap, chroot 前先启用 swap (swapon /dev/sdxY)
    • 如果需要网络,chroot 之前先建立好网络连接。

    两种使用 chroot 的方式

    >> arch-chroot bash 脚本是软件包 arch-install-scripts 的一部分,在运行 /usr/bin/chroot 前,这个脚本会挂载 /proc api 文件系统,建立可用的 /etc/resolv.conf。

    • 进入 chroot

     # arch-chroot /location/of/new/root 

    例如在 安装指南 中,chroot 到 /mnt:

     # arch-chroot /mnt 

    • 退出 chroot:

     # exit 

    • 运行一个命令并退出

     # arch-chroot /location/of/new/root mycommand 

    例如要在 /mnt/arch 中运行 mkinitcpio -p linux 并退出:

     # arch-chroot /mnt/arch mkinitcpio -p linux 

    >> 使用 chroot

    警告: 使用 --rbind 选项时,将无法卸载某些 dev/ 和 sys/ 的子目录,用 umount -l 卸载将会破坏会话并需要重启,所以请尽可能使用 -o bind。

    作为 root 挂载 api 文件系统:

    # cd /location/of/new/root
    
    # mount -t proc proc proc/
    
    # mount --rbind /sys sys/
    
    # mount --rbind /dev dev/

    可选挂载:

     # mount --rbind /run run/ 

    如果已经建立了一个网络连接并且想在 chroot 环境中继续使用,将 DNS 服务器配置复制到新环境:

     # cp -L /etc/resolv.conf etc/resolv.conf 

    chroot 到新环境中并启用指定 shell

     # chroot /mnt/arch /usr/bin/bash 

    建立一个最小的chroot环境:

    1.在 /home 目录下建立一个 rootfs目录,作为 chroot 的根目录  

    2.建立 bin 目录,并拷贝默认的 bash 命令和用于测试的 ls 命令:

    3. ldd 找到两个命令的依赖,拷贝到相应的位置:

    4. chroot . 改变根目录,并使用 ls -a 测试,完成后exit退出:

     

  • 相关阅读:
    Codeforces Round #548
    省选前的th题
    省选前多项式的挣扎
    2019.3.18考试&2019.3.19考试&2019.3.21考试
    省选前的反演抢救计划
    2019.3.16 noiac的原题模拟赛
    AtCoder Regular Contest 069 F
    Atcoder Grand 012 C
    Atcoder Grand 011 C
    Atcoder Grand 006 C-Rabbit Exercise
  • 原文地址:https://www.cnblogs.com/tongyishu/p/11815437.html
Copyright © 2011-2022 走看看