使用Ubuntu 20.04。我可以通过手动调用创建 shell 的命令,然后从这个新 shell 中调用第二个脚本来禁用覆盖文件系统。不过我希望能够编写脚本,这样我就可以自动更新电脑。
以下是我运行来禁用 OverlayFS 的两个脚本:
脚本1:打开一个允许永久更改的shell(overlayroot-chroot创建一个新的shell)
#!/bin/bash
# Enter chroot mode, which allows one to make permanent changes to / parition
echo "Enter mood to make permanent changes"
echo "Press CTRL+D to exit when finished editing"
sudo overlayroot-chroot
脚本 2:进行更改
#!/bin/bash
# Disable OverlayFS
echo "Disable overlayfs (read only file system at /)"
FILE=/etc/overlayroot.conf
cat << EOF | sudo tee $FILE
overlayroot_cfgdisk="disabled"
overlayroot=""
EOF
echo "COMPLETE."
echo "Press CTRL+D to exit chroot mode."
echo "Then 'sudo reboot' for the changes to take effect."
脚本 2 需要在脚本 1 创建的 shell 内运行。
但是如何传递命令来运行到新创建的 shell 中呢?
答案1
那是行不通的。每个脚本都会生成一个具有自己 PID 的新 shell。
我将在 script2.sh 中创建一个 bash 函数,并在 script1 中创建源 script2。
在 script1 中调用 script2 中的函数。
脚本1
source ./script2.sh
# call the function
do_stuff
脚本2
do_stuff() {
echo "hello world"
}
答案2
通过简单地回显命令来运行overlayroot-chroot(我之前没有成功过)来解决这个问题:
echo "source /home/path/to/overlayfs/disable.sh" | sudo overlayroot-chroot