关于如何使用 chroot, 为程序设置新的执行环境chroot & schroot etc.(文件系统虚拟化)

发布时间:2024-12-14 17:30

如何检查电视更新:进入设置-系统-软件更新,查看是否有可用的系统或应用程序更新。 #生活技巧# #家电维护技巧# #电视调教技巧#

文件系统的虚拟化

chroot example:

sudo chroot my_chroot_dir /bin/bash # 预先建立 my_chroot_dir/{bin,lib} 目录,并拷贝相应的可执行程序bash和库,否则会提示没有 /bin/bash. 或者安装一个可运行环境:见 debootstrap sudo chroot my_chroot_dir/ /bin/bash -c "echo 'aaa'; cd workspace; ls" # 执行多条命令123

关于使用 debootstrap 下载一个最小linux系统运行环境:

sudo debootstrap --variant=buildd --arch i386 trusty ~/my_chroot_dir http://archive.ubuntu.com/ubuntu # 安装兼容的最小系统 # 或者 --arch amd64 安装64位(如果操作系统是64位的) sudo chroot /my_chroot_dir apt-get install cmake # 安装 cmake 软件包1234

如果 apt-get install 的时候出错:E: Unable to locate package,则表示你的 /etc/apt/sources.list 文件中没有包含所有的软件包。
复制主机文件 /etc/apt/sources.list 的到 chroot 环境中,并且执行 apt-get update 即可。

# 如果需要设置某些环境变量,可以这样启动(see LFS): sudo chroot my_chroot_dir /usr/bin/env -i \ HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \ PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin \ /bin/bash --login +h12345

ref link:
http://www.linuxfromscratch.org/
http://robocomp.readthedocs.io/en/latest/How_To_Make_Chroot_Environment/
http://www.ubuntubuzz.com/2015/09/a-basic-chroot-example-in-ubuntu.html
http://www.binarytides.com/setup-chroot-ubuntu-debootstrap/

关于 chroot jail 获得外部目录:

mount --bind /var/www /home/chroot_dir/www // 其中 /var/www 为 chroot 环境外的目录, /home/chroot_dir/www 为挂载点 // 取消monut umount /home/chroot_dir/www // see link: http://www.linfo.org/umount.html1234

schroot:免 sudo 运行 chroot
使用 schroot 需要预先配置一下

1 .创建文件:
sudo gedit /etc/schroot/chroot.d/my_chroot.conf

文件内容如下: ref link https://wiki.debian.org/Schroot

[my_chroot_env] description=My first chroot env, Ubuntu trusty 14.04 for amd64 directory=/home/guowei/my_chroot_dir root-users=guowei,root type=directory users=guowei,abc 1234567

2 . 保存后,可以使用 schroot -l 查看一下是否有输出: my_chroot_env

然后就可以免sudo执行命令了:

// sudo apt-get install schroot schroot -c my_chroot_env -u guowei -- sh -c "cd foo && ls && export A=blabla" // 免 sudo 执行 chroot 命令 # 如果需要设置环境变量,如下: schroot -c my_chroot_env -- env MY_ENV_VAR=/home/guowei/robot sh -c "cd ~/workspace && make"12345

注意,该使用 env 设施的环境变量不是对当前的 sh -c 生效,是对子命令 make 生效,所以在 sh -c 中添加 echo $MY_ENV_VAR 是不会打印任何信息的,但是如果新生成一个bash,再在新的bash中 echo $MY_ENV_VAR 则可以打印该环境变量。同理, export 命令也是将 shell 的 local variable 变为子程序的环境变量,不能在当前的 shell 中生效。
see link: http://stackoverflow.com/questions/234742/setting-environment-variables-in-linux-using-bash

创建一个 session:

#!/bin/bash schroot --begin-session --session-name=test -c my_chroot_env schroot --run-session -c test -- sh -c "cd /workspace && ls && cd ~/foo/bar && make" schroot --end-session -c test #SESSION=$(schroot -b -c my_chroot_env) #echo $SESSION #schroot -r -c $SESSION -- uname -sr #schroot -r -c $SESSION -- bash -c "ls && export A=3 && cd /abcd/.. && ls && export B=abcd; cd $B && ls" #schroot -e -c $SESSION12345678910

see link:
http://linux.die.net/man/1/schroot
http://man.cx/schroot(1)
http://servertopic.com/topic/xaqb-run-commands-in-schroot-environment-from-chroot-host-outside-chroot

除了使用原始的 chroot, Vagrant, Docker, Ansible or Mock 等更高级的工具可能更适合你:

http://devo.ps/blog/vagrant-docker-and-ansible-wtf/
https://macyves.wordpress.com/2014/05/23/a-quick-primer-on-chroot-sbuild-mock-and-vagrant/

网址:关于如何使用 chroot, 为程序设置新的执行环境chroot & schroot etc.(文件系统虚拟化) https://www.yuejiaxmz.com/news/view/474657

相关内容

vsftp 设置chroot
LFS经验总结
虚拟环境:如何清理虚拟环境? – 码微
rsync使用指南
用NVIDIA Riva和Rasa创建基于语音的虚拟应用程序
8 个最佳人工智能虚拟助理应用程序
如何在Linux系统上进行开发环境的配置和优化
虚拟桌面有什么用,如何使用 Windows 11 虚拟桌面
linux 虚拟内存设置
硬件虚拟化不可用,硬件支持被禁用怎么解决,硬件虚拟化不可用,硬件支持被禁用

随便看看