| #!/bin/sh |
| |
| nfsrootfs_enabled() { |
| if [ ${bootparam_root} != "/dev/nfs" ] || [ -z ${bootparam_nfsroot} ]; then |
| return 1 |
| fi |
| return 0 |
| } |
| |
| nfsrootfs_run() { |
| local nfs_opts |
| local location |
| local flags |
| local server_ip |
| |
| nfs_opts="" |
| if [ "${bootparam_nfsroot#*,}" != "${bootparam_nfsroot}" ]; then |
| nfs_opts="-o ${bootparam_nfsroot#*,}" |
| fi |
| |
| location="${bootparam_nfsroot%%,*}" |
| if [ "${location#*:}" = "${location}" ]; then |
| # server-ip not given. Get server ip from ip option |
| server_ip="" |
| if [ "${bootparam_ip#*:}" != "${bootparam_ip}" ]; then |
| server_ip=$(echo "$bootparam_ip" | cut -d: -f2) |
| fi |
| |
| if [ -z "$server_ip" ]; then |
| fatal "Server IP is not set. Update ip or nfsroot options." |
| fi |
| location=${server_ip}:${location} |
| fi |
| |
| flags="-o nolock" |
| if [ -n "$bootparam_ro" ] && ! echo "$bootparam_rootflags" | grep -w -q "ro"; then |
| if [ -n "$bootparam_rootflags" ]; then |
| bootparam_rootflags="$bootparam_rootflags," |
| fi |
| bootparam_rootflags="${bootparam_rootflags}ro" |
| fi |
| if [ -n "$bootparam_rootflags" ]; then |
| flags="$flags -o $bootparam_rootflags" |
| fi |
| |
| mount -t nfs ${flags} ${nfs_opts} ${location} ${ROOTFS_DIR} |
| } |
| |