August 28, 2025Aug 28 Hi fellow UNRAIDers!I've tried a bunch of different approaches to get zsh and ohmyzsh running with UNRAID. Most of these approaches are difficult due to /root being temporal. I started to think about what would happen if I changed /root to be persistent via a file image.You can't just link /root to /boot because /boot is FAT which doesn't understand unix permissions. So I decided to try to create an image, format it with ext4, copy the default unraid /root contents, and then mount it over top of /root. It seems to work great! I then created a script to mount my image on boot and update the root shell to zsh. I created a git repo to house the scripts, including setting up the image, downloading zfs, and another script that runs on startup that will mount the new persisted root and update the root login shell to be zsh.I have not done a lot of testing and would appreciate any feedback on this. I can't really think of a way this could do damage given you can just delete the newly created root image, reboot, and unraid will go back to the built in default /root.This script depends on the user scripts plugin to run the mount and zsh shell update on boot.Here's the link:GitHubGitHub - kevinherzig/Unraid7-ohmyzsh: Guide on how to ins...Guide on how to install Oh my zsh on Unraid with persistent root directory - kevinherzig/Unraid7-ohmyzshKevin
October 7, 2025Oct 7 I did it a little bit different, but i like the idea with a user script so that you can temporarily disable without having to change config files.For reference, i'll write how i did it (i read a tutorial "back-in-the-day", about 7 years ago) :edit the /boot/config/go file and add the following lines :# Persistent /root folderif [ -f /boot/config/root.persist ]; then mkdir /tmp/overlay mount /boot/config/root.persist /tmp/overlay mount -t overlay -o lowerdir=/root,upperdir=/tmp/overlay/upper,workdir=/tmp/overlay/workdir none /rootfiI have some other stuff, but that is the only relevant part. You need to create the root.persist file, that will be your root folder, for that you can execute : dd if=/dev/zero of=/boot/config/root.persist bs=1M count=2000 (2000 means aobut 2Gb of space, i don't think you need more).The major difference is i use the go file to mount the file if it's present, while you use a userscript, yours is better because you can disable mounting the root folder.Also a note, the /boot/config/go file is the hearth of starting UnRaid, make sure you don't break it 😅
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.