我想知道我是否在脚本的一部分中,如果不是,chroot
则不允许安装(与中的情况不同)/proc
我如何知道我正在 chroot 中运行?)。如何判断我是否处于chroot
即使/proc
未安装状态?
我确实有 root 访问权限。这是在 Fedora 上。该解决方案不应依赖于所使用的文件系统。
答案1
Debian chroot 将特定文件放入/etc
,但这需要合作。
但如果它像正常的根一样,那就像正常的根一样。因此,如果您没有发现差异,请假设您不在 chroot 中(无论如何它都是等效的)。
困难的方法是检查是否/
与安装根设备时得到的相同,但这需要您是根设备。其他方法需要/proc
(或root)。
答案2
使用systemd-detect-virt -r
。 (必须是根)
答案3
与其他答案不同,这个答案不需要您成为 root。跑步unshare -U true
。如果成功,那么您就不再处于 chroot 状态。如果失败并显示unshare: unshare failed: Operation not permitted
,那么你就失败了。这有效是因为commit 3151527ee007b73a0ebd296010f1c0454a919c7d
: userns: 如果用户已 chroot,则不允许创建。
警告:unshare
也可能因其他一些原因而失败。如果成功,那么您肯定不在 chroot 中,但如果失败,那么您很可能是在 chroot 中。