脚本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
命令。