How to set bash as login shell?
The login shell is the firmware login shell. If you installed Entware-ng using one of my scripts the Entware environment is injected through /opt/etc/profile.d/* (which is injected by /opt/etc/init.d/S99ProfileHook in /etc/profile).
The shell is specified in /etc/passwd, and is /bin/sh. So you have 2 options, change /etc/passwd or change /bin/sh (a symlink).
Simply changing the symlink to bash might break firmware, as all internal scripts also use /bin/sh. A work-around might be to change /bin/sh to a script which exec's bash or busybox, depending on caller. That could be
[ -t 1 ] && exec /opt/bin/bash "$@"
exec /bin/busybox sh "$@"
This checks if stdout is a console, and exec's bash if that's true.
Both options have the problem that both /etc and /bin are inside the initramfs, and so it's volatile. The changes have to be made on each boot. You can add a startscript to /opt/etc/init.d/ for that.
How can I change /root default folder to for example /opt/home/root
By changing /etc/passwd. The package 'Tweaks' has an option for that.
And by the way, it's a bad habit to use root as default login.