unraid /root目录持久化方案
由于unraind是安装在U盘里,启动后再加载到内存中的,所以对系统做的一些改变都不是持久化的,重启后就会丢失,其中就包括对/root目录的修改,但很多软件的配置都会存放在家目录,比如zsh的配置,ssh的认证文件等,所以需要对/root目录的修改进行持久化。
我的解决方案是在阵列里新建一个目录/mnt/user/root,阵列启动后把原有的/root目录删除,然后将/root软链接到/mnt/user/root目录上,这样/root目录其实就是阵列里的一个文件夹了,而对阵列的修改是持久化的,问题得以解决。下面是我的脚本
#!/bin/bash
#如果 /root已经是一个软链接则直接退出
if [ -L "/root" ]; then
rootRealPath=$(realpath "/root")
echo "already set root path to $rootRealPath"
exit 0
fi
count=0
while [ ! -d "/mnt/user/root" ]; do
echo "/mnt/user/root doesn't exist"
sleep 5s
count=$((count + 1))
if [ $count -ge 10 ]; then
echo "set root path to /mnt/user/root failed"
break
fi
done
rm -rf /root
ln -s /mnt/user/root /root
# 因为安装了zsh,顺便把默认的sh程序改为zsh
if [ -f "/bin/zsh" ]; then
chsh -s /bin/zsh
fi
将上面的脚本加入到user script插件任务列表里,执行时机设置为 at startup of array
