#!/bin/sh # This code is covered by the GNU General Public License (GPLv2 or higher) NVRAM=$(which nvram) FW_PRINTENV=$(which fw_printenv) path=$(mount | grep ext[23] | sed -n '/sda2\|md0\|disk1_1/ {s/\/dev\/\(sda2\|md0\|.*disk1_1\) on \(.*\) type.*/\2/; p}') if [ -z "$path" ]; then echo "You have to create an ext2 filesystem on the first physical partition" exit 1 fi if [ ! -e $path/uImage.buffalo ]; then echo "You have to download the uImage.buffalo file from the debian-installer for Linkstation, and put it in $path" exit 1 fi if [ ! -e $path/initrd.buffalo ]; then echo "You have to download the initrd.buffalo file from the debian-installer for Linkstation, and put it in $path" exit 1 fi if [ -n "$NVRAM" ]; then PRINTENV="$NVRAM -c printenv" SETENV="$NVRAM -c set" GETENV="$NVRAM -c get" elif [ -n "$FW_PRINTENV" ]; then if [ -z "$(which fw_setenv)" ]; then echo "Program fw_setenv not found, cannot modify U-Boot environment..." exit 1 elif [ ! -f /etc/fw_env.config ]; then echo "Configuration file for fw_printenv not found." exit 1 else PRINTENV=$FW_PRINTENV SETENV=$(which fw_setenv) GETENV="$FW_PRINTENV -n" fi else echo "No tool found for modifying U-Boot environment..." exit 1 fi BOOTVER=$($GETENV buffalo_ver | sed 's/^.*=//') if [ -z "$BOOTVER" ]; then echo "Unable to detect Buffalo bootloader version. Please ensure that your bootloader supports automatic initrd position/size detection." exit 1 else BOOTVER_MAJOR=${BOOTVER%.*} BOOTVER_MINOR=${BOOTVER#*.} if [ $BOOTVER_MAJOR -eq 1 -a $BOOTVER_MINOR -lt 10 ]; then echo "Incompatible bootloader version detected. Please update to the latest firmware version." exit 1 fi fi printf "Saving U-Boot environment to ubootenv.bak... " $PRINTENV > ubootenv.bak || exit 1 echo "done." echo "Changing U-Boot environment... " $SETENV bootargs_root "root=/dev/sda2 rw panic=5" echo "done." echo "Please reboot your Linkstation."