介绍

chroot 这个玩意最早可以追溯到Unix时代,为了保障数据安全而用于隔离文件系统的“套娃”。它比虚拟机这种套娃不同的是:

  • 虚拟机是完全隔离(虚拟的)硬件,而 chroot 共用 Kernel(内核)、设备及其驱动程序、进程空间
  • 由于 chroot 只隔离文件系统,而VM要模拟一整个硬件系统,故chroot套娃损耗远比VM少
  • chroot 不能跨大架构,就像 arm64 跨 x86_64 就得通过 Exagear/Box64/qemu-user (前两者只有arm64可用)来跨架构,且有较大的转译损耗

它需要root权限,像一些不给root权限的安卓手机就只能用proot了。

chroot有以下几种用法:

  • 在Live CD(救援系统)中进入机器上已有的Linux环境
  • 在上面的基础上,修复bootloader引导或恢复受损的系统
  • 由于使用的是宿主机的Kernel,甚至还可以进入已受损内核的Linux环境进行“苟活”,本站曾经这样玩过一次:由于某服务商所带的Ubuntu 22.04内核不稳定(应该是没设SWAP而导致系统老被撑爆了,但是这个原因存疑),索性直接进救援系统挂载原有的分区,chroot进去后,进入“变态”面板开启N(ginx)M(ySQL)P(HP)服务进行“苟活”。同样的,服务器的救援系统也是炸(艾草到黑洞)了。
  • 在安卓手机上单独跑个Linux环境
  • 自己定制镜像,作者曾经定制过属于自己的Kali Linux(但由于种种原因用回原版)
  • 隔离服务所在的文件系统以确保服务被渗透后无事可做

等。

进入 chroot 套娃的步骤

以下均需要root权限,若没有root权限,请以proot代替chroot。

进入原有的Linux环境

创建文件夹以容放rootfs,作者推荐使用 /target/ (Debian系安装系统时的特色)

mkdir /target/

需要先挂载好原有的文件系统和 /dev /sys /proc /run ,命令如下

mount -t ext4 -o rw [原有的Linux根分区名] /target/
mount -t proc /proc /target/proc/
mount -t sysfs /sys /target/sys/
mount -o bind /dev /target/dev/
mount -o bind /run /target/run/

还得解决 /etc/resolv.conf

rm -f /target/etc/resolv.conf
unlink /target/etc/resolv.conf
vim /target/etc/resolv.conf

加入 nameserver 8.8.8.8保存并退出就行

准备工作就是这样,接下来就是chroot的时间了!

chroot /target/

如果无误,就会出现套娃中的Shell

root@Rescue-LuoTianyi:~#

然后你就可以打入 bt启动面板服务,进入“变态”面板以进行“苟活” 或者 修复受损的系统

安卓手机的chroot/proot也是一样的道理,但不允许使用 /target ,推荐有root权限的丢到/data/linux,没有的那就Termux的家目录下建个文件夹,后面就是找个rootfs解压进去的事,最后把上面的步骤做一下就行。

斩事

  • 一些手机可以使用chroot访问屏幕设备以开启真正的X Window,但目前大部分手机不行了。
  • “变态”面板 等应用的获取的发行版信息以套娃内的信息为准