|
|
(12 intermediate revisions by the same user not shown) |
Line 3: |
Line 3: |
| When I ran llink on my CS-406 I did have some optware installed already; the bootstrap and toolchain from NSLU2-linux,org and the SSODS3 packages (which include the ELDK). Perhaps it influenced the successful installation? Maybe more things are needed apart from the telnet/SSH-patch currently listed? | | When I ran llink on my CS-406 I did have some optware installed already; the bootstrap and toolchain from NSLU2-linux,org and the SSODS3 packages (which include the ELDK). Perhaps it influenced the successful installation? Maybe more things are needed apart from the telnet/SSH-patch currently listed? |
| <br> / [[User:Dc11ab|dc11ab]] 00:09, 5 January 2008 (JST) | | <br> / [[User:Dc11ab|dc11ab]] 00:09, 5 January 2008 (JST) |
| | |
| | UPDATE: Not needed. All is well. / [[User:Dc11ab|dc11ab]] 18:36, 19 June 2008 (JST) |
|
| |
|
| === Slimserver/SqueezeCenter hickup's === | | === Slimserver/SqueezeCenter hickup's === |
Line 52: |
Line 54: |
|
| |
|
| === Autostart === | | === Autostart === |
| I'm not sure where to start and what to do in order to get llink autostart on boot. After poking around I decided to post some rc-files that might make some sense for someone who knows *nix better than me. | | After some more Googling and poking in the Synology forum and wiki, I might have found a way? |
| | Copy the start file to the autostart directory with prefix of the startup shellscript, "S99": |
|
| |
|
| / [[User:Dc11ab|dc11ab]] 21:37, 5 January 2008 (JST) | | <code> |
| | vi /usr/syno/etc/rc.d/S99llink.sh |
| | </code> |
|
| |
|
| Heres the '''/etc/rc'''
| | Set the PATH and LD_LIBRARY_PATH to the llink directory.: |
| <pre> | | <code> |
| CubeStation> cat rc
| | PATH=/volume1/path/to/llink-X.Y/llink/src/ |
| #!/bin/sh
| | LD_LIBRARY_PATH=/volume1/llink-X.Y/llink/src/ |
| # Copyright (c) 2000-2006 Synology Inc. All rights reserved.
| | </code> |
|
| |
|
| HOME=/
| | Then export them: |
| PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin
| | <code> |
| export HOME PATH | | export PATH |
| | | export LD_LIBRARY_PATH |
| BOOT_SEQ_FILE="/tmp/boot_seq.tmp"
| | <code> |
| #SEQ_BOOT_NONE=0 no use here
| |
| SEQ_START_ETCRC=1
| |
| SEQ_CHECK_FS=2
| |
| SEQ_START_SERVICE=3
| |
| #SEQ_BOOT_DONE=4 is echo by /usr/syno/etc/rc.d/S99Zbootok.sh
| |
| | |
| ###################################################
| |
| echo "STEP=$SEQ_START_ETCRC" > ${BOOT_SEQ_FILE}
| |
| echo "Starting /etc/rc ..."
| |
| ###################################################
| |
| | |
| LinuxVersion=`/bin/uname -r | /usr/bin/cut -c1-3`
| |
| SYNOLoadModule()
| |
| {
| |
| for MODULE in ${KERNEL_MODULES}
| |
| do
| |
| MODULE_PATH=/lib/modules/${MODULE}
| |
| if [ -f ${MODULE_PATH} ]; then
| |
| echo "Load ${MODULE}... "
| |
| insmod ${MODULE_PATH}
| |
| fi
| |
| done
| |
| }
| |
| | |
| SupportRAID=`/bin/get_key_value /etc.defaults/synoinfo.conf supportraid`
| |
| ResRAID=$?
| |
| if [ $ResRAID -ne 1 ]; then
| |
| SupportRAID="no"
| |
| fi
| |
| | |
| FStab="fstab"
| |
| | |
| mount -o remount,rw /
| |
| echo "Mounting proc filesystem..."
| |
| mount -n -t proc /proc /proc
| |
| grep /dev/root /proc/mounts > /etc/mtab
| |
| rm -rf /var/tmp
| |
| ln -s /tmp /var/tmp
| |
| mount -t tmpfs /tmp /tmp
| |
| | |
| [ -f /initrd/tmp/usbinfoall ] && cp -f /initrd/tmp/usbinfoall /tmp/usbinfoall
| |
| [ -d /initrd ] && [ ! -f /.nofree ] && /bin/umount /initrd && /sbin/freeramdisk /dev/ram0
| |
| | |
| dmesg > /var/run/dmesg.boot
| |
| | |
| # see if need repartitioning
| |
| /etc/newdisk.sh
| |
| | |
| # turn swap on
| |
| if [ "$SupportRAID" = "yes" ]; then
| |
| SwapDevice="/dev/md1"
| |
| else
| |
| SwapDevice="/dev/hda2"
| |
| fi
| |
| | |
| swapon $SwapDevice
| |
| RetSWAPON=$?
| |
| if [ "$RetSWAPON" -ne 0 ]; then
| |
| if [ -d /initrd ]; then
| |
| echo "RetSWAPON=$RetSWAPON, doing mkswap..."
| |
| mkswap ${SwapDevice}
| |
| RetMKSWAP=$?
| |
| if [ "$RetMKSWAP" -ne 0 ]; then
| |
| echo "RetMKSWAP=$RetMKSWAP, doing mkswap..."
| |
| else
| |
| swapon $SwapDevice
| |
| fi
| |
| fi
| |
| fi
| |
| | |
| # remount root as readonly
| |
| mount -ro /
| |
| | |
| #ConfList="/etc/defaults/rc.conf /etc/rc.conf"
| |
| ConfList="/etc/sysconfig/network"
| |
| for ThisConfig in $ConfList;
| |
| do
| |
| if [ -r "$ThisConfig" ]; then
| |
| . $ThisConfig
| |
| fi
| |
| done
| |
| | |
| if [ -n "${GATEWAY}" -a "${NETWORKING}" = "yes" ]; then
| |
| defaultrouter=$GATEWAY
| |
| fi
| |
| | |
| # Set the host name
| |
| #
| |
| if [ -z "${HOSTNAME}" ]; then
| |
| HOSTNAME="${hostname:-diskstation}"
| |
| fi
| |
| hostname ${HOSTNAME}
| |
| echo -n "Hostname "
| |
| hostname
| |
| | |
| grep ${HOSTNAME} /etc/hosts
| |
| if [ "$?" != "0" ]; then
| |
| echo "0.0.0.0 ${HOSTNAME}" >> /etc/hosts
| |
| fi
| |
| | |
| CWD=`pwd`
| |
| cd /etc/sysconfig/network-scripts
| |
| | |
| network_interfaces=`ls ifcfg* | cut -d'-' -f 2`
| |
| echo -n "Network interfaces: "
| |
| for thisif in $network_interfaces;
| |
| do
| |
| echo -n "$thisif "
| |
| ThisIfConf="/etc/sysconfig/network-scripts/ifcfg-${thisif}"
| |
| BOOTPROTO=`grep -s ^BOOTPROTO ${ThisIfConf} | cut -d'=' -f 2`
| |
| if [ "${BOOTPROTO}" = "static" -o "${thisif}" = "lo" ]; then
| |
| IPADDR=`grep -s ^IPADDR ${ThisIfConf} | cut -d'=' -f 2`
| |
| NETMASK=`grep -s ^NETMASK ${ThisIfConf} | cut -d'=' -f 2`
| |
| thisvalue="inet ${IPADDR} netmask ${NETMASK}"
| |
| eval \ifconfig_${thisif}='$thisvalue'
| |
| else
| |
| eval \ifconfig_${thisif}='dhcp'
| |
| fi
| |
| done
| |
| echo
| |
| cd $CWD
| |
| | |
| ThisMachine=`uname -m`
| |
| if [ "x${LinuxVersion}" != "x2.6" ]; then
| |
| KERNEL_MODULES="appletalk.o fat.o netlink_dev.o reiserfs.o vfat.o ntfs.o scsi_mod.o sd_mod.o sg.o usbcore.o quota_v2.o slhc.o ppp_generic.o ppp_async.o nfsd.o"
| |
| if [ "${ThisMachine}" = "ppc" ]; then
| |
| KERNEL_MODULES="${KERNEL_MODULES} soundcore.o snd-page-alloc.o snd.o snd-seq-device.o snd-rawmidi.o snd-usb-lib.o snd-hwdep.o snd-timer.o snd-pcm.o snd-usb-audio.o snd-mixer-oss.o snd-pcm-oss.o"
| |
| fi
| |
| else
| |
| KERNEL_MODULES="llc.ko psnap.ko appletalk.ko fat.ko vfat.ko ntfs.ko sg.ko usbcore.ko quota_v2.ko soundcore.ko snd-page-alloc.ko snd.ko snd-rawmidi.ko snd-usb-lib.ko snd-hwdep.ko snd-timer.ko snd-pcm.ko snd-usb-audio.ko snd-mixer-oss.ko snd-pcm-oss.ko slhc.ko ppp_generic.ko crc-ccitt.ko ppp_async.ko exportfs.ko nfsd.ko"
| |
| fi
| |
| | |
| SYNOLoadModule
| |
| | |
| if [ "x${LinuxVersion}" != "x2.6" ]; then
| |
| echo "Mounting usbdevfs..."
| |
| mount -t usbdevfs /proc/bus/usb /proc/bus/usb
| |
| else
| |
| echo "Mounting sysfs..."
| |
| mount -t sysfs /sys /sys
| |
| echo "Mounting usbfs..."
| |
| mount -t usbfs /proc/bus/usb /proc/bus/usb
| |
| fi
| |
| | |
| case "${ThisMachine}" in
| |
| armv5b)
| |
| #ModuleList="csr ixp425_eth eepro100"
| |
| ModuleList="ixp400 ixp425_eth"
| |
| for ThisModule in $ModuleList;
| |
| do
| |
| insmod /lib/modules/${ThisModule}.o
| |
| done
| |
| ;;
| |
| ppc)
| |
| if [ "x${LinuxVersion}" != "x2.6" ]; then
| |
| insmod /lib/modules/sk98lin.o
| |
| else
| |
| if [ -f /lib/modules/sk98lin.ko ]; then
| |
| insmod /lib/modules/sk98lin.ko
| |
| elif [ -f /lib/modules/skge.ko ]; then
| |
| insmod /lib/modules/skge.ko
| |
| fi
| |
| fi
| |
| ;;
| |
| esac
| |
| | |
| case "${ThisMachine}" in
| |
| *86)
| |
| echo "Skip loading synobios"
| |
| ;;
| |
| *)
| |
| RunSynoBios=`/bin/get_key_value /etc/synoinfo.conf synobios`
| |
| if [ "no" != "$RunSynoBios" ]; then
| |
| echo "Load synobios...."
| |
| if [ "x${LinuxVersion}" != "x2.6" ]; then
| |
| insmod /lib/modules/synobios.o
| |
| else
| |
| insmod /lib/modules/synobios.ko
| |
| fi
| |
| cd /dev
| |
| /bin/mknod synobios c 201 0
| |
| cd $CWD
| |
| fi
| |
| ;;
| |
| esac
| |
| | |
| for PidDir in /var/run /etc/dhcpc;
| |
| do
| |
| rm -rf ${PidDir}/*.pid
| |
| done
| |
| | |
| ## remove samba's tdb of usbprinter.tdb in each reboot to clean out of control job ##
| |
| ## see DS20 #1340
| |
| if [ -e "/var/run/printing/usbprinter.tdb" ]; then
| |
| rm -rf /var/run/printing/usbprinter.tdb
| |
| fi
| |
| | |
| #if [ -r /etc/rc.network ]; then
| |
| if [ -r /etc/rc.network -a "${NETWORKING}" = "yes" ]; then
| |
| . /etc/rc.network
| |
| start_network
| |
| fi
| |
| | |
| case "${ThisMachine}" in
| |
| armv5b)
| |
| # Third party software support
| |
| if [ -d "/writeable/usr/local" ]; then
| |
| ln -sf /writeable/usr/local /usr/local
| |
| fi
| |
| | |
| for ThisDir in /usr/local/armv5b-linux;
| |
| do
| |
| if [ -e "$ThisDir/lib" ]; then
| |
| rm -rf $ThisDir/lib
| |
| fi
| |
| mkdir -p $ThisDir
| |
| ln -sf /lib $ThisDir/lib
| |
| done
| |
| ARMTZDir="/usr/local/armv5b-linux/etc"
| |
| ARMTZ="${ARMTZDir}/localtime"
| |
| if [ ! -d "$ARMTZDir" ]; then
| |
| rm -rf $ARMTZDir
| |
| mkdir -p $ARMTZDir
| |
| fi
| |
| rm -rf $ARMTZ
| |
| ln -sf /etc/localtime $ARMTZ
| |
| ;;
| |
| *)
| |
| # Third party software support
| |
| if [ -d "/writeable/usr/local" ]; then
| |
| ln -sf /writeable/usr/local /usr/local
| |
| fi
| |
| ;;
| |
| esac
| |
| | |
| if [ -r "/etc.defaults/sysctl.conf" ]; then
| |
| /sbin/sysctl -p /etc.defaults/sysctl.conf
| |
| fi
| |
| | |
| syslogd_enable="YES"
| |
| syslogd_flags="-S"
| |
| case ${syslogd_enable} in
| |
| [Yy][Ee][Ss])
| |
| # Transitional symlink (for the next couple of years :) until all
| |
| # binaries have had a chance to move towards /var/run/log.
| |
| if [ ! -L /dev/log ]; then
| |
| # might complain for r/o root f/s
| |
| ln -sf /var/run/log /dev/log
| |
| fi
| |
| | |
| rm -f /var/run/log
| |
| echo "Starting syslogd..."
| |
| ${syslogd_program:-/sbin/syslogd} ${syslogd_flags}
| |
| /sbin/klogd
| |
| ;;
| |
| esac
| |
| | |
| for CFGEN in /usr/syno/cfgen/*;
| |
| do
| |
| if [ -x "$CFGEN" ]; then
| |
| $CFGEN
| |
| fi
| |
| done
| |
| | |
| ###################################################
| |
| echo "STEP=$SEQ_CHECK_FS" > ${BOOT_SEQ_FILE}
| |
| echo "Checking and Mounting filesystem(s) ..."
| |
| ###################################################
| |
| | |
| # initial findhostd first to report quota check progress, see DS20 bug #
| |
| /usr/syno/etc/rc.d/S98findhostd.sh start
| |
| | |
| UsrVolumeList=`grep /volume /etc/${FStab} |awk '{printf("%s:%s \n", $1, $2)}'`
| |
| | |
| rm -f /tmp/hdhealth
| |
| for ThisList in $UsrVolumeList;
| |
| do
| |
| ThisDevice=`echo $ThisList | cut -d':' -f 1 `
| |
| ThisVolume=`echo $ThisList | cut -d':' -f 2 `
| |
| DevName=`echo $ThisDevice | cut -c6-`
| |
| mkdir -p $ThisVolume
| |
| | |
| FS=`/usr/syno/bin/synogetfstype ${ThisDevice}`
| |
| ResGetFS=$?
| |
| if [ $ResGetFS -eq 1 ]; then
| |
| echo "synogetfstype read file system magic failed on $ThisDevice:$ThisVolume. errno=$ResGetFS"
| |
| echo "Trying ext3"
| |
| FS=ext3
| |
| fi
| |
| | |
| FSCK="/sbin/fsck.${FS} -pq"
| |
| | |
| | |
| DoMount=1
| |
| | |
| IsClean=`${FSCK} $ThisDevice | grep "is cleanly umounted"`
| |
| if [ -n "$IsClean" ]; then
| |
| echo "$ThisDevice. Clean. "
| |
| IsClean=1
| |
| else
| |
| IsClean=0
| |
| fi
| |
| | |
| echo "Mounting $ThisDevice on $ThisVolume."
| |
| mount -n -t ${FS} $ThisDevice $ThisVolume
| |
| ResMount=$?
| |
| if [ $ResMount -ge 1 ]; then
| |
| echo "Mount failed on $ThisDevice:$ThisVolume. errno=$ResMount"
| |
| | |
| if [ "${FS}" = "ext3" ]; then
| |
| for SB in 1 131072 393216 655360 917504 1179648 3276800 3538944
| |
| do
| |
| echo "Mounting $ThisDevice on $ThisVolume.(read only, sb=${SB})"
| |
| grep -v "${DevName}mount" /tmp/hdhealth > /tmp/hdhealth.tmp
| |
| mount -t ${FS} -o ro,sb=${SB} $ThisDevice $ThisVolume
| |
| ResMount=$?
| |
| if [ $ResMount -ge 1 ]; then
| |
| echo "Mount read only failed on $ThisDevice:$ThisVolume. errno=$ResMount"
| |
| echo "${DevName}mount=\"fail\"" >> /tmp/hdhealth.tmp
| |
| mv -f /tmp/hdhealth.tmp /tmp/hdhealth
| |
| else
| |
| echo "${DevName}mount=\"ro\"" >> /tmp/hdhealth.tmp
| |
| mv -f /tmp/hdhealth.tmp /tmp/hdhealth
| |
| MOUNT_OPT=",ro"
| |
| break
| |
| fi
| |
| done
| |
| else
| |
| echo "Mounting $ThisDevice on $ThisVolume.(read only)"
| |
| mount -t ${FS} -o ro $ThisDevice $ThisVolume
| |
| ResMount=$?
| |
| if [ $ResMount -ge 1 ]; then
| |
| echo "Mount read only failed on $ThisDevice:$ThisVolume. errno=$ResMount"
| |
| echo "${DevName}mount=\"fail\"" >> /tmp/hdhealth
| |
| else
| |
| echo "${DevName}mount=\"ro\"" >> /tmp/hdhealth
| |
| fi
| |
| fi
| |
| else
| |
| rm -rf $ThisVolume/@tmp
| |
| mkdir $ThisVolume/@tmp
| |
| chmod 777 $ThisVolume/@tmp
| |
| fi
| |
| mount -o remount,usrquota,grpquota${MOUNT_OPT} $ThisVolume
| |
| ResMount=$?
| |
| if [ $ResMount -ge 1 ]; then
| |
| echo "ReMount failed on $ThisDevice:$ThisVolume. errno=$ResMount"
| |
| fi
| |
| | |
| if [ -f "$ThisVolume/aquota.user" -a -f "$ThisVolume/aquota.group" ]; then
| |
| DoQuotaCheck=0
| |
| else
| |
| DoQuotaCheck=1
| |
| fi
| |
| | |
| if [ $IsClean -eq 0 ]; then
| |
| DoQuotaCheck=1
| |
| fi
| |
| | |
| if [ -f ${ThisVolume}/.needquotacheck ]; then
| |
| /usr/syno/bin/synologset1 sys warn 0x11100001
| |
| DoQuotaCheck=1
| |
| fi
| |
| | |
| if [ $DoQuotaCheck -eq 1 ]; then
| |
| echo "Quotacheck on $ThisVolume."
| |
| /sbin/quotacheck -g -u -F vfsv0 $ThisVolume
| |
| | |
| mount -o remount,usrquota,grpquota${MOUNT_OPT} $ThisVolume
| |
| rm -f ${ThisVolume}/.needquotacheck
| |
| fi
| |
| | |
| echo "Quotaon on $ThisVolume."
| |
| /sbin/quotaon -F vfsv0 $ThisVolume
| |
| done
| |
| | |
| #set time zone information to kernel
| |
| /usr/syno/bin/synokerneltz
| |
| | |
| /sbin/sysctl -w kernel.core_pattern=/volume1/@%e.core
| |
| | |
| if [ "x${LinuxVersion}" != "x2.6" ]; then
| |
| /sbin/sysctl -w kernel.suid_dumpable=2
| |
| else
| |
| /sbin/sysctl -w fs.suid_dumpable=2
| |
| fi
| |
| ulimit -c unlimited
| |
|
| |
|
| if [ "x${LinuxVersion}" == "x2.6" ]; then
| |
| /sbin/sysctl -w vm.min_free_kbytes=4096
| |
| fi
| |
|
| |
|
| Configured=`/bin/get_key_value /etc/synoinfo.conf configured`
| | With this fixed, the Synology NAS should start llink upon reboot. |
| if [ "$Configured" = "no" -a "$SupportRAID" = "no" ];then
| |
| CheckList="/volume1 /volume1/public"
| |
| for EachItem in $CheckList;
| |
| do
| |
| if [ ! -d "$EachItem" ]; then
| |
| /bin/mkdir -p $EachItem
| |
| fi
| |
| /bin/chmod 777 $EachItem
| |
| done
| |
| fi
| |
|
| |
|
| /usr/syno/bin/synologset1 sys info 0x11100002
| |
|
| |
|
| ###################################################
| | '''UPDATE''': This is alread fixed with a startup script called from the /etc/rc.local file. I see that Synology has introduced new firmware as of June 2008 which might require some changes. Yet to be seen. So far, all is well. |
| echo "STEP=$SEQ_START_SERVICE" > ${BOOT_SEQ_FILE}
| |
| echo "Starting scemd ..."
| |
| ###################################################
| |
|
| |
|
| /usr/syno/bin/scemd | | / [[User:Dc11ab|dc11ab]] 18:38, 19 June 2008 (JST) |
| Ret=$?
| |
| if [ $Ret -ne 0 ]; then
| |
| echo "Failed to start scemd, reboot and get into steel plan or network install mode."
| |
| touch "/.noroot"
| |
| reboot
| |
| fi
| |
|
| |
|
|
| | == Cross-compiling for the ppc and Marvell-based cpu's of Synology NAS on Intel Macbook == |
| if [ -r /etc/rc.network -a "${NETWORKING}" = "yes" ]; then
| | My intention is to set up an environment with toolchain to compile for the Synologies on my Intel based Macbook. I'm Googling as fast as time allows to figure out how to do it. Any hints are appreciated! |
| # Start PPPoE if enabled
| |
| start_pppoe
| |
| fi
| |
|
| |
|
| if [ ! -d /initrd ]; then
| | / [[User:Dc11ab|dc11ab]] 09:00, 6 January 2008 (JST) |
| # echo "Starting inetd in flash_rd..."
| |
| # /usr/sbin/inetd
| |
| echo "Starting findhostd in flash_rd..."
| |
| /usr/syno/bin/findhostd
| |
| fi
| |
|
| |
|
| # For bug 1248, probe USB device after scemd
| |
| # usb-uhci.o is for VIA, usb-ohci.o is for NEC
| |
| # KERNEL_MODULES="ehci-hcd.o usb-uhci.o usb-storage.o printer.o"
| |
| if [ "x${LinuxVersion}" != "x2.6" ]; then
| |
| KERNEL_MODULES="ehci-hcd.o usb-ohci.o usb-uhci.o usb-storage.o printer.o hid.o"
| |
| else
| |
| KERNEL_MODULES="ehci-hcd.ko ohci-hcd.ko uhci-hcd.ko usb-storage.ko usblp.ko usbhid.ko"
| |
| fi
| |
| SYNOLoadModule
| |
|
| |
|
| if [ -r /etc/rc.local ]; then
| | '''UPDATE:''' Cross-compiling wasn't as easy as I thought. Well, I didn't actually thought it was going to be easy, but as for me this project is on ice. Hopefully someone else can pick it up. |
| echo -n 'Starting local daemons:'
| |
| sh /etc/rc.local
| |
| echo '.'
| |
| fi
| |
|
| |
|
| echo -n 'Local package initialization:'
| | / [[User:Dc11ab|dc11ab]] 18:41, 19 June 2008 (JST) |
| if [ -z "${local_startup}" ]; then
| |
| local_startup="/etc/rc.d /usr/syno/etc/rc.d /usr/local/etc/rc.d"
| |
| fi
| |
|
| |
|
| startupd=`get_key_value /etc.defaults/synoinfo.conf supportstartupd`
| | == Conversation == |
| if [ "$startupd" = "yes" ]; then
| |
| echo 'startup daemons'
| |
| if [ -d /volume1/startup ]; then
| |
| for startsh in /volume1/startup/S* ; do
| |
| if [ -f $startsh ]; then
| |
| echo "start $startsh"
| |
| $startsh
| |
| fi
| |
| done
| |
| fi
| |
| fi
| |
|
| |
|
| echo '.'
| | Woah, I need to set wiki to tell me whenever there is posts in Discussions.. Any of the stuff in here still need my attention? |
|
| |
|
| echo ''
| |
|
| |
|
| echo "done."
| | Not really. Some matters are already dealt with. As for the SSODS part, it didn't really do anything to the system, someone else should report a real problem first. All is well (I suppose ;-) |
| | | /[[User:Dc11ab|dc11ab]] 18:42, 19 June 2008 (JST) |
| date
| |
| | |
| if [ ! -d /initrd ]; then
| |
| if [ -f /.nodisk ]; then
| |
| /usr/sbin/burning_test > /dev/null 2>&1 &
| |
| fi
| |
| fi
| |
| | |
| ManuTild=/usr/syno/sbin/manutild
| |
| $ManuTild
| |
| | |
| exit 0
| |
| </pre>
| |
| | |
| And the '''/etc/rc.local''' (which shows the SSODS/Slimserver)
| |
| | |
| <pre>
| |
| CubeStation> cat rc.local
| |
| /volume1/SSODS/etc/init.d/rc.ssods # SSODS3 (keep the tag)
| |
| </pre>
| |
| | |
| And the '''/volume1/SSODS/etc/intit.d/rc.ssoods''' looks like this:
| |
| | |
| <pre>
| |
| CubeStation> cat /volume1/SSODS/etc/init.d/rc.ssods
| |
| #!/volume1/SSODS/bin/bash
| |
| #
| |
| # $Id: rc.ssods,v 1.4 2007/10/03 22:27:17 flip Exp flip $
| |
| #
| |
| # this script runs the scripts ${SSODSDIR}/etc/init.d/{S,K}??*
| |
| # in (alpha)numerical order
| |
| #
| |
| # Copyright (c) 2006, 2007 Philippe Kehl <flipflip at gmx dot net>
| |
| #
| |
| # This program is free software; you can redistribute it and/or modify it under
| |
| # the terms of the GNU General Public License version 2 as published by the
| |
| # Free Software Foundation.
| |
| #
| |
| # See the documentation for details and copying conditions.
| |
| #
| |
| | |
| # get site config
| |
| source /volume1/SSODS/etc/ssods/ssods.conf || exit 1
| |
| PATH=${SSODSDIR}/sbin:${PATH}
| |
| export PATH
| |
| | |
| RCSSODS=yes
| |
| | |
| # start or stop?
| |
| case "$1" in
| |
| | |
| stop)
| |
| cmd=stop
| |
| key=K
| |
| ;;
| |
| start|*)
| |
| cmd=start
| |
| key=S
| |
| ;;
| |
| esac
| |
| | |
| for S in ${SSODSDIR}/etc/init.d/${key}*; do
| |
| | |
| # ignore broken symlinks
| |
| [ ! -f ${S} ] && continue
| |
| | |
| echo "*** ${S} ${cmd} ***"
| |
| # source (!) script
| |
| source $S ${cmd}
| |
| | |
| done
| |
| | |
| # eof
| |
| </pre>
| |
Installation pre-requisites
When I ran llink on my CS-406 I did have some optware installed already; the bootstrap and toolchain from NSLU2-linux,org and the SSODS3 packages (which include the ELDK). Perhaps it influenced the successful installation? Maybe more things are needed apart from the telnet/SSH-patch currently listed?
/ dc11ab 00:09, 5 January 2008 (JST)
UPDATE: Not needed. All is well. / dc11ab 18:36, 19 June 2008 (JST)
Slimserver/SqueezeCenter hickup's
On a Synology NAS with SSODS Slimserver installation there are unhandled http header requests from cookies seen in the llink log:
I have not idea if this something worth looking into or not.
[request] is listening
[request] New request from 192.168.1.2:64543
[request] >> 'GET / HTTP/1.1'
[request] clearnode
keepalive
[request] GET for '/' ('')
[request] >> 'Host: 192.168.1.5:8888'
[request] >> 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en; rv:1.8.1.11) Gecko/20071128 Camino/1.5.4'
[request] >> 'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'
[request] >> 'Accept-Language: en-US,en;q=0.9,sv;q=0.9,ja;q=0.8,fr;q=0.8,de;q=0.7,es;q=0.6,it;q=0.6,nl;q=0.5,nb;q=0.4,da;q=0.4,fi;q=0.3,pt;q=0.3,zh-Hans;q=0.2,zh-Hant;q=0.1,ko;q=0.1'
[request] Unhandled HTTP header 'Accept-Language:' with 'en-US,en;q=0.9,sv;q=0.9,ja;q=0.8,fr;q=0.8,de;q=0.7,es;q=0.6,it;q=0.6,nl;q=0.5,nb;q=0.4,da;q=0.4,fi;q=0.3,pt;q=0.3,zh-Hans;q=0.2,zh-Hant;q=0.1,ko;q=0.1'
[request] >> 'Accept-Encoding: gzip,deflate'
[request] Unhandled HTTP header 'Accept-Encoding:' with 'gzip,deflate'
[request] >> 'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7'
[request] Unhandled HTTP header 'Accept-Charset:' with 'ISO-8859-1,utf-8;q=0.7,*;q=0.7'
[request] >> 'Keep-Alive: 300'
[request] Unhandled HTTP header 'Keep-Alive:' with '300'
[request] >> 'Connection: keep-alive'
[request] connection type: 1
[request] >> 'Cookie: SqueezeCenter-player=00%3A04%3A20%3A06%3Af8%3Ae5; SqueezeCenter-expandPlayerControl=true; SqueezeCenter-expanded-MY_MUSIC=0; SqueezeCenter-expanded-RADIO=0; SqueezeCenter-expanded-MUSIC_SERVICES=0; SqueezeCenter-expanded-FAVORITES=0; SqueezeCenter-expanded-PLUGINS=0'
[request] Unhandled HTTP header 'Cookie:' with 'SqueezeCenter-player=00%3A04%3A20%3A06%3Af8%3Ae5; SqueezeCenter-expandPlayerControl=true; SqueezeCenter-expanded-MY_MUSIC=0; SqueezeCenter-expanded-RADIO=0; SqueezeCenter-expanded-MUSIC_SERVICES=0; SqueezeCenter-expanded-FAVORITES=0; SqueezeCenter-expanded-PLUGINS=0'
[request] >> ''
[request] actioning request for /
[request] disabling socket input for duration of process
[request] tmpname '/tmp/.llink.G69xU6'
[request] tmpfile closed
[request] reopening tmpfile
[request] actioning request for /
[request] disabling socket input for duration of process
[request] sending file
[request] sending reply code 200:OK
Found the following ports used by the SqueezeCenter7
- 3483 UDP/TCP (used by Squeezbox player for streaming traffic??))
- 9000 TCP (Server web interface)
- 9090 TCP (CLI)
I guess the ports have nothing to do with it., but I'm stuck at this,.
/ dc11ab 00:11, 5 January 2008 (JST)
Autostart
After some more Googling and poking in the Synology forum and wiki, I might have found a way?
Copy the start file to the autostart directory with prefix of the startup shellscript, "S99":
vi /usr/syno/etc/rc.d/S99llink.sh
Set the PATH and LD_LIBRARY_PATH to the llink directory.:
PATH=/volume1/path/to/llink-X.Y/llink/src/
LD_LIBRARY_PATH=/volume1/llink-X.Y/llink/src/
Then export them:
export PATH
export LD_LIBRARY_PATH
With this fixed, the Synology NAS should start llink upon reboot.
UPDATE: This is alread fixed with a startup script called from the /etc/rc.local file. I see that Synology has introduced new firmware as of June 2008 which might require some changes. Yet to be seen. So far, all is well.
/ dc11ab 18:38, 19 June 2008 (JST)
Cross-compiling for the ppc and Marvell-based cpu's of Synology NAS on Intel Macbook
My intention is to set up an environment with toolchain to compile for the Synologies on my Intel based Macbook. I'm Googling as fast as time allows to figure out how to do it. Any hints are appreciated!
/ dc11ab 09:00, 6 January 2008 (JST)
UPDATE: Cross-compiling wasn't as easy as I thought. Well, I didn't actually thought it was going to be easy, but as for me this project is on ice. Hopefully someone else can pick it up.
/ dc11ab 18:41, 19 June 2008 (JST)
Conversation
Woah, I need to set wiki to tell me whenever there is posts in Discussions.. Any of the stuff in here still need my attention?
Not really. Some matters are already dealt with. As for the SSODS part, it didn't really do anything to the system, someone else should report a real problem first. All is well (I suppose ;-)
/dc11ab 18:42, 19 June 2008 (JST)