linux - 覆盖 FS 排除文件夹
问题描述
我有一个嵌入式设备,我想在其中覆盖 rootfs。到目前为止,我的 initramfs 脚本如下所示:
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
mount -t proc proc /proc
mount -t devtmpfs none /dev
mount -t sysfs sysfs /sys
rootdev_ro=""
rootdev_rw=""
factory_reset=""
[ ! -f /etc/platform-preboot ] || . /etc/platform-preboot
if [ -z "$rootdev_ro" ]; then
for bootarg in `cat /proc/cmdline`; do
echo "${bootarg}"
arg=`expr "x$bootarg" : 'x[^=]*=\(.*\)' || echo ''`
case "$bootarg" in
root=*) rootdev_ro="${arg}" ;;
rootrw=*) rootdev_rw="${arg}" ;;
factoryreset=*) factory_reset="yes";;
esac
done
fi
mkdir -p /mnt/lowerdev
mkdir -p /mnt/overlaydev
mkdir -p /mnt/overlay
mount -t ext4 -o "ro" "${rootdev_ro}" /mnt/lowerdev
mount -t ext4 -o "rw" "${rootdev_rw}" /mnt/overlaydev
# Here's factory reset
if [ "$factoryreset" == "yes" ]; then
echo "Applying factory defaults..."
rm -fr /mnt/overlaydev/*
fi
# Upper and work folders must be on the same mount
mkdir -p /mnt/overlaydev/upper
mkdir -p /mnt/overlaydev/work
mount -t overlay overlay -o lowerdir=/mnt/lowerdev,upperdir=/mnt/overlaydev/upper,workdir=/mnt/overlaydev/work /mnt/overlay
echo "Switching to rootfs on overlay..."
mount --move /sys /mnt/overlay/sys
mount --move /proc /mnt/overlay/proc
mount --move /dev /mnt/overlay/dev
exec switch_root /mnt/overlay /sbin/init
覆盖在那里工作得很好,但我希望能够更改lowerdir文件/boot/extlinux/extlinux.conf上的内核初始化引导参数,以便在需要时添加factoryreset参数。
如果我在系统运行修改文件时尝试挂载lowerdir分区,我得到一个错误
already mounted or mount point busy
是否可以指定 lowerdir 以排除 /boot 目录,还是必须一一覆盖文件夹?
解决方案
推荐阅读
- python-3.x - 使用python以最快的方式从postgresql中检索数据
- flutter - ParentDataWidget 的错误使用 - 行和容器
- msbuild - 应该使用什么 MSBuild 条件来检测目标操作系统?
- python - 使用带有用户输入的 if 语句
- c# - 如何通过 Google GSuite 作为应用程序发送电子邮件?
- pandas - 你如何保存一个精确到秒的pandas csv文件
- java - 排序 CommandLineRunner 执行
- c - 减去并获得秒作为 C 中的输入
- c# - 是否有必要释放从 C# 接收的 C++ 中字符串的内存?
- javascript - 谷歌表更改后重定向/打开我网站中另一个页面的选项卡