chroot介绍:


chroot 就是 change-root,可以说是最简单和古老的容器化软件之一,它允许用户安全地将应用程序和服务隔离。

chroot 通过更改程序的根目录,限制访问和可见性,从而提供了额外的隔离和安全层级。

将程序设置为 chroot 环境是一种在安全空间中测试其可靠性的好方法,而不会改变实际系统的文件。此外,在 chroot 环境中,您还可以减少受到受损软件包引起的安全风险,因为在 chroot 环境中,受损的软件包将无法访问和修改敏感系统文件。

程序只能访问和查看导入到 chroot 目录中的文件,也被称为”chroot监狱”。这样可以防止程序及其子进程干扰基本系统的运行。


chroot


测试环境
chroot
提取 casper 目录的 filesystem.squashfs 文件


cd /opt;sudo mkdir mnt livecd tool

sudo cp /media/ss/Ventoy/Kylin-Desktop-V10-SP1-RC5-Build02-210521-arm64.iso tool/

sudo mount /opt/tool/Kylin-Desktop-V10-SP1-RC5-Build02-210521-arm64.iso /opt/mnt/

sudo cp -rp /opt/mnt//opt/livecd/

sudo umount /opt/mnt/


解压 filesystem.squashfs 文件到当前目录,解压出来的目录为 squashfs-root (解压 2 份,一份用来测试,一份用来做
还原点)


cd /opt/livecd/casper/

sudo unsquashfs filesystem.squashfs

mv squashfs-root squashfs-root_backup(提示无权限时,添加sudo,再不行使用此命令sudo rsync -avz --delete squashfs-root/ squashfs-root_backup/)

sudo unsquashfs filesystem.squashfs


参考当前系统做初始化配置:


cp -rf /etc/apt/sources.list squashfs-root/etc/apt/sources.list

rm -rf squashfs-root/etc/apt/sources.list.d/

echo 127.0.0.1 `hostname` >> squashfs-root/etc/hosts

rm squashfs-root/etc/resolv.conf

echo "nameserver 10.41.162.100" >> squashfs-root/etc/resolv.conf

xhost +local# 为了让 chroot 执行图形化界面,开启 xhosts 监听若chroot环境无法重定向到屏幕则使用xhost +命令


进入新系统做一次 aptupdate :


sudo chroot squashfs-root

mount -t proc none /proc

mount -t sysfs none /sys

mount -t devpts none /dev/pts

apt update


退出新系统:


umount /proc

umount /sys

umount /dev/pts

exit


将 squashfs-root 同步到 squashfs-root_backup 用来做还原点:


sudo rsync -avz --delete squashfs-root/ squashfs-root_backup/


使用 squashfs-root 做测试:将 blazers 和待测文件复制到系统内:


cp -rpf blazers/ squashfs-root/tmp/

cp -rpf xxx.deb squashfs-root/tmp/


进入到 squashfs-root 系统执行测试:


sudo chroot squashfs-root

mount -t proc none /proc

mount -t sysfs none /sys

mount -t devpts none /dev/pts

export DISPLAY=:0

cd /tmp/blazers

./run.sh -p qwer1234 --include opensource --pkg /tmp/xxx.deb


# 测试结束后退出:


umount /proc

umount /sys

umount /dev/pts

exit



测试完成后取测试报告


cp squashfs-root/tmp/blazers/report /home/kylin/



用还原点进行系统还原:


sudo rsync -avz --delete squashfs-root_backup/ squashfs-root/




No protocol specified
Can't open display :0
执行如下命令
export XAUTHORITY=/home/<user>/.Xauthority
再次执行xrandr可正常输出