脚本chroot,怎么样?

所以我在看:

https://help.ubuntu.com/community/LiveCDCustomizationFromScratch

并在bash脚本中尝试以下内容:

sudo chroot chroot mount none -t proc /proc mount none -t sysfs /sys mount none -t devpts /dev/pts 

运行脚本会在sudo chroot chroot到shell。 当我exit ,我收到有关mount需要root的预期警告。 有没有办法可以将所有这些保留在一个shell脚本中?

编辑:我希望这是一个可重复的过程,这就是为什么我想编写整个脚本而不是一次又一次地输入它。

创建第二个脚本(例如chroot.sh )并将其放在chroot/文件夹中。

现在将原始脚本中的命令编辑为:

 chroot chroot/ ./chroot.sh 

现在, chroot.sh脚本将在你的chroot执行。

你应该像管道一样使用简单的解决方案:

 cat << EOF | chroot chroot rm -rf / EOF 

PS。 开玩笑说rm -rf;),你在EOF中运行的任何内容 - EOF都是在chrooted目录中运行的,如果你喜欢的话你也可以使用sudo

 cat << EOF | sudo chroot chroot ls / EOF 

关于chroot/proc/sys/dev/pts的事情是这三个文件系统是由内核提供的,所以无论你是在chroot中安装还是从没有安装,它们都保持不变。 事实上,你会在之前的指示中看到:

 sudo mount --bind /dev chroot/dev 

/dev由内核填充,但不是内核提供的文件系统,因此必须绑定挂载。 因此,在实践中,您将看到在进入chroot之前使用绑定装载(或其他方式)安装它同样适用(假设为sudo ):

 for i in dev proc sys dev/pts do mount -o bind /$i chroot/$i done chroot chroot for i in dev/pts proc sys dev do umount -chroot/$i done # or mount -o bind /dev chroot/dev mount -t sysfs none chroot/sys mount -t proc none chroot/proc mount -t devpts none chroot/dev/pts chroot chroot for i in dev/pts proc sys dev do umount -chroot/$i done 

相关阅读:

  • 在chroot环境中mount dev,proc,sys?
  • 当chroot到“替换”发行版时,应该绑定(或不挂载)proc,sys等中的哪一个?
  • 将chroot自动化为破碎的系统

您可以创建一个.bashrc脚本或类似的东西,它附加到chroot env的/root/.bashrc,它可以完成所有安装等工作。您可以在/ root中恢复备份的.bashrc并退出chroot:

主要脚本:

 #!/usr/bin/env bash cp bashrcscript chroot/root/ if [ -a chroot/root/.bashrc ]; then cp chroot/root/.bashrc chroot/root/.bashrc.bak fi echo "./bashrcscript" >> chroot/root/.bashrc chroot chroot/ rm chroot/root/.bashrc rm chroot/root/bashrcscript if [ -a chroot/root/.bashrc.bak ]; then mv chroot/root/.bashrc.bak chroot/root/.bashrc fi 

bashrcscript:

 mount none -t proc /proc mount none -t sysfs /sys mount none -t devpts /dev/pts # Anything else you like to do 

然后在启动根控制台时执行bashrcscript。 确保它是可执行的。

您甚至可以将resolv.conf复制到主脚本等。

我认为这并不是说您应该将这些命令放入脚本中,而是应该键入它们 ; 即,在sudo shell中键入mount命令。