Overview on modifying the Synology Server, bootstrap, ipkg etc

From SynologyWiki
Jump to: navigation, search



Welcome to the modifications section of the Synology Wiki. In the modifications section you will find content produced by users of Synology Servers enabling you to expand on or change the functionality provided by the standard Synology Firmware.

This wiki page will help you understand what is involved and help you to get started modding your Synology server. It is assumed you have already read the General Disclaimer on Modifying the Synology Server?!

Again the modifications Wiki area is produced by users like you, if you find a Wiki page unclear or lacking detail, or you find out how to do something that is not covered by a Wiki, then please improve this wiki area, it is simple to do and helps us all.

What is a Synology Server

A Synology Server is a powerful Linux-based device designed for Network Attached Storage (NAS). It is very similar to a Personal Computer running the Linux operating system, just with less RAM, less CPU power, and lacking the hardware to directly support a monitor, keyboard, mouse etc.

What can I do by Modifying a Synology Server

Despite not being a PC, using the provided management web interface and the Command Line Interface you can take full control of the device, change the way it operates and install additional software. Much of the software is available free of charge produced by users like you. There can be many advantages to using a device such as a Synology Server rather than a PC, small footprint, low power consumption, and dedication to the set tasks.

However, modifying your NAS will invalidate your software support warranty, although not normally your hardware warranty, as described in General Disclaimer on Modifying the Synology Server. Modifying your Synology Server is also not without considerable risk of making it either temporarily unstable or temporarily unuseable. In virtually all cases the Synology Server can be returned to its former as new condition (in software terms) by fully re-installing the Synology firmware. Re-installing the firmware can (but not normally) result in losing your data, so ensure you have a backup of your data before modifying the NAS.

What do I need to do

This depends on the changes you want to make or the software you want to install. Below are some common application/program types you might install and an overview of the process.

for php applications

php is a powerful server side language that is already installed on your NAS. Web pages can be written to call php scripts (programs) that reside in the web space on your NAS. Examples of common php applications are Wiki's, bulletin boards, media servers (including Synology's PhotoStation), interactive websites etc. Well written php applications are the easiest and safest (in terms of system stability) applications to install on your NAS. Because a php engine is already installed on your Synology NAS you don't normally need to install any additonal packages. php programs are also normally independant of the hardware platform, i.e. they don't need compiling to match your CPU etc.

See Compatible PHP/MySQL Applications for a list of some php apps already being used by synology users. A typical installation routine for a php application would involve starting the web service on the NAS, copying a compressed archive file containing the application files into the "web" folder, extracting the archive files, and then opening an index.php or config.php or <app_name>.php web page in your internet browser. As an example Zina covered in a Wiki at Install Zina Media Server is a php application.

As long as you didn't need to activate the Command Line Interface then installing php programs is NOT classified as a modification to your NAS.

Note: The php engine in your Synology NAS restricts (for security reasons) any php programs to only being able to access files/directories in the "web" and "photo" shared folders. If you want to install a php app and let it access files/directories in other shared folders you will need to mod the php.ini file as described in the Install Zina Media Server wiki.

for Integrated 3rd-Party Applications

With firmware 637 synology provided developers with the access and documentation to produce 3rd-Party application software that integrates with the synology web based Management GUI (see Synology_NAS_Server_3rd-Party_Application_Integration). For synology users 3rd-Party applications that have been integrated provide the potential to simplify the installation of 3rd-Party Applications and the ability to install/use/manage them via the Synology web based Managemant GUI. Since firmware 722, 3rd party software can also be installed via a more user-friendly way, using the package manager and special synology package files. For a list of available Integrated 3rd-Party Applications and other related information see Synology_NAS_Server_3rd-Party_Application_Integration.

for compiled/binary programs

Compiled/binary programs (compiled from source code programs, see below) are the most powerfull type of program you can install on the Synology Server. They can provide rich content and wide functionality but this comes with increased potential for corrupting the Server compared to php applications. The compiled programs are distributed as binaries (usually with no file name extension but sometimes with a .bin extension). Some of these binaries require other programs to be installed on your machine so they can run. If you want to use a binary it must have been compiled specifically for the processor used in your synology NAS, i.e. see What kind of CPU does my NAS have. Each of these processors require programs compiled specifically for them, i.e. a program compiled for "mv5281 ARM" processors will not work on other ARM processors such as the "Marvel Kirkwood 88F6281 ARM" processor, nor will it work on PPC processors such as the "PowerPC Freescale 8241 PPC" processor.

To install a compiled/binary program you need to copy the binary file(s) in to a folder on your NAS, give the file(s) execution permission and then execute them. You can do this process manually as described below, but in most cases it is recomended you use a package management system like ipkg (as detailed below).

Installing compiled/binary programs manualy

Once you have a correctly compiled binary file(s) for your CPU type:

  1. Drop it in a folder on your NAS e.g. "/volume1/public". If you are using an ftp client (e.g. windows file explorer) you won't see the "/volume1" path, just your shared folder name e.g. "public". Note: this directory ("public") is not created on all NAS's, if you do not have it you can create it in the web management GUI.
  2. Enable and then login using the Command Line Interface as "root"
  3. Change Directory to the folder where you put the file using the cd command, e.g. "cd /volume1/public". Note: when using the Command Line Interface all the shared directories ("music", "web", "video", "photo" etc.) are located in "/volume1"
  4. Make sure the binary file has execute permisions using the command "ls -l" (if it has execute permissions you will see an "x" in the permissions string). If it doesn't have execute permission give it execute permisison using by entering the command "chmod 755 XXXX.XXX" where XXXX.XXX is the name of the file
  5. Run/execute the progran by entering "./XXXX.XXX"

You can find compiled programs for the Marvell mv5281 ARM CPU here You can find compiled programs for the PowerPC Freescale 8241 PPC CPU here

If you compile any of your own please add them.

The compiled program "screen" which you can find here (for Marvell mv5281 ARM CPU's) is an example, it has no other dependecies, so you can just copy the single file and imediately run the program. No need for ipkg, bootstrap or anything else.

Installing compiled/binary programs using ipkg

To make the installation, update and removal process of software easier the computing industry adopted the principle of the Package Management System. ipkg is a dpkg-inspired, very lightweight Itsy Package Management System for small Linux systems and embedded devices, such as the Synology Servers. ipkg is often the easiest and most reliable way to install compiled binaries. Additionally ipkg will only use specified sources for binary packages, these sources are processor specific. Consequently you do not need to worry about "What kind of CPU does my NAS have" when selecting a program/package to install, ipkg will effectively do this for you.

As Synology products do not currently come with ipkg installed the installation of ipkg is often the first recomended step to install binary/compiled programs/applications.

How to install ipkg

ipkg is also dependant on a few other software bits and pieces that are not installed on the synology servers. Consequently to install ipkg you need to use the appropriate bootstrap which automates the installation of ipkg and the other packages it needs.

After you have installed ipkg (see the bootstrap section below), you can install ipkg packages of programs using the command "ipkg install xxxx" where xxxx is the name of the package. Once the package is installed you can run it using "xxxx" where xxxx is the name of the program you just installed (this is normally the same as the package name, but not always).

For help with ipkg commands use "ipkg -help".


A bootstrap is a script that installs ipkg. The bootstraps are specific to the processor in your Synology Server, so make sure you use a compatible one, see What kind of CPU does my NAS have.

You may want to check the forum to see if there are any latter bootstraps than those given below. However the ones below have been widely used and are known to work. If you are an experienced linux user the page How to Install Bootstrap gives clear instructions how to install ipkg, you may find it more concise and therefore quicker to follow than the more detailed information provided below for beginers.

Popular Bootstraps are:

For Intel XScale FW IXP420 BB ARM Processor http://ipkg.nslu2-linux.org/feeds/optware/ds101/cross/unstable/ds101-bootstrap_1.0-4_armeb.xsh which uses http://ipkg.nslu2-linux.org/feeds/optware/ds101/cross/unstable/ as its feed.

For Intel Atom CPU's: D410, D425, D510, D525 and D2700 Processors http://ipkg.nslu2-linux.org/feeds/optware/syno-i686/cross/unstable/syno-i686-bootstrap_1.2-7_i686.xsh which uses http://ipkg.nslu2-linux.org/feeds/optware/syno-i686/cross/unstable/ as its feed.

For 8241 PPC models http://ipkg.nslu2-linux.org/feeds/optware/ds101g/cross/stable/ds101-bootstrap_1.0-4_powerpc.xsh which uses http://ipkg.nslu2-linux.org/feeds/optware/ds101g/cross/unstable/ as its feed.

For 8533 PPC models - Please use the bootstrap for the 8543 PPC CPU (see below). That bootstrap is compatible with both 8533 and 8543 CPU's

For 8543 PPC models http://ipkg.nslu2-linux.org/feeds/optware/syno-e500/cross/unstable/syno-e500-bootstrap_1.2-7_powerpc.xsh which uses http://ipkg.nslu2-linux.org/feeds/optware/syno-e500/cross/unstable/ as its feed.

For mv5281 ARM models http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/syno-x07-bootstrap_1.2-7_arm.xsh which uses http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/ as its feed.

For Marvel Kirkwood mv6281 ARM models http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/syno-mvkw-bootstrap_1.2-7_arm.xsh which uses http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/ as its feed.

For Marvel Kirkwood mv6282 ARM models (which are compatible with the mv6281 for as far as we can tell) a modified syno-mvkw-bootstrap_1.2-7_arm.xsh with a bit more relaxed CPU checking: http://web.archive.org/web/20121005035819/http://wizjos.endofinternet.net/synology/archief/syno-mvkw-bootstrap_1.2-7_arm-ds111.xsh which uses http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/ as its feed.

For Freescale PowerPC QorIQ P1022 - Please use the same boostrap as for 8543 and 8553 PPC CPUs. Since they are all e500 CPUs, they share the same compiled binaries.

The steps to install the bootstrap (provided as .xsh files) are below, you should replace the text in bold with the relevant text for your CPU's bootstrap file (listed above).

  1. Reboot your NAS.
  2. Enable and then Login to the Command Line Interface as user "root", password is the same as for admin.
  3. Change to a directory such as "/volume1/@tmp", i.e. enter the command "cd /volume1/@tmp"
  4. Get the NAS to download the bootstrap, e.g. if you have an mv5281 ARM model enter the command "wget http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/syno-x07-bootstrap_1.2-7_arm.xsh", alternatively download the bootstrap to your PC and then copy it to a shared folder on the NAS
  5. Set the .xsh script to be executable "chmod +x syno-x07-bootstrap_1.2-7_arm.xsh"
  6. Now run the .xsh script, e.g. if you have an mv5281 ARM model and used the bootstrap above enter the command "sh syno-x07-bootstrap_1.2-7_arm.xsh"
  7. After the script has finished you can delete the script file, e.g. for mv5281 ARM users using the bootstrap above enter the command "rm syno-x07-bootstrap_1.2-7_arm.xsh"
  8. NEW: If you have DSM 4.0 there is an additional step. In the file /root/.profile you need to comment out (put a # before) the lines "PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin" and "export PATH". To do this enter the command "vi /root/.profile" to open the file in vi. Now change vi to edit mode by pressing the "i" key on your keyboard. Use the down cursor key to move the cursor to the start of the line "PATH=/sbin..." and put a "#" infront of this line so it is now "#PATH=/sbin...". Do the same for the line below so it is now "#export PATH". Now press the escape key (to exit edit mode) and type "ZZ" (note they are capitals) to tell vi to save the file and exit. For background info on why this is neccessary for DSM 4 refer to http://forum.synology.com/enu/viewtopic.php?p=185512#p185512

    (Alternatively, you can modify the PATH statement by prepending the existing $PATH. You can do this in vi by typing the following while in command mode: ":%s/PATH=/PATH=$PATH:/" and then "ZZ" to save and exit (or ESC and then ":q!" to quit without saving if you made a mistake.))

  9. Note 1: If you have the following error: "Cannot satisfy the following dependencies for wget-ssl: libidn", you need to manually download libidn and install with ipkg: Eg. for Synology DS108j: "wget http://ipkg.nslu2-linux.org/feeds/optware/ds101g/cross/unstable/libidn_1.21-1_powerpc.ipk" (wget should be already present on the system) and enter the command "ipkg install libidn_1.21-1_powerpc.ipk". Run the ipkg bootstrap process again (press yes when it asks to overwrite config file). For a procedure to install ipk packages without ipkg, see http://buffalo.nas-central.org/wiki/Install_an_.ipk_package_without_having_the_ipkg_package_management_system_(for_end-users)
  10. Note 2: When you have an error that /opt cannot be mount, unmount the previous mount ("umount -f /opt" check with command "mount") and delete both old /opt and /volume1/opt folders.
  11. Reboot the NAS and login again to the Command Line Interface as user "root"
  12. Update the ipkg list of available packages using the command "ipkg update"
  13. Note 1: When "ipkg update" fails, it can be that the older existing wget is used. Ensure that the right paths are selected in classpath with "$PATH", if not: "export PATH=$PATH:/opt/bin:/opt/sbin". Install wget manually: for Synology DS108j: "wget http://ipkg.nslu2-linux.org/feeds/optware/ds101g/cross/unstable/wget_1.12-2_powerpc.ipk" and "ipkg install wget_1.12-2_powerpc.ipk". Check version with "/opt/bin/wget -V". Check location with "which wget".
  14. Upgrade any ipkg installed packages to the latest versions using the command "ipkg upgrade"
  15. Finished, you can now install ipkg packages using the command "ipkg install xxxx" where xxxx is the name of the package. You can list all the available packages using the command "ipkg list". As this is a long list you can filter it using the command "ipkg list | grep xxxx" where xxxx is the text you want to search for. Alternatively, you view one page at a time using the "more" pipe, e.g. "ipkg list | more"

Note: ipkg expects to find your ipkg files/programs in the path "/opt". As the synology NAS's put all your files in "/volume1" the bootstraps put your IPKG files/programs in "/volume1/@optware" but then mount this directory so it ALSO appears as "/opt". Hence, do not think that "/volume1/@optware" and "/opt" are duplicated files, they are not duplicated, they are in fact exactly the same directory.

for source code programs

As stated above compiled/binary programs (compiled from source code programs) are the most powerfull type of program you can install on the Synology Server. They can provide rich content and wide functionality but this comes with increased potential for corrupting the Server compared to php applications. Source code programs are the source of compiled/binary programs (see above) but need compiling into binaries before they can be used. To compile a source code program you would need programing knowledge and a toolchain (see below) for the synology platforms.


A Toolchain is a set of tools that allows programmers to compile programs for target systems, in our case the Synology Servers.

You can now compile source code applications directly on the Synology Server. First install ipkg using the [ Bootstrap ]. Now you can log into the command line and install all the tools necessary to perform local builds in one step:
cs407> ipkg install optware-devel
When performing local builds remember that by default ./configure will set up the build to install to /usr/bin etc whereas it is sensible to make it install into the /opt root. Generally you can just get away with doing this:
cs407> ./configure --prefix=/opt
however, unfortunately, other command switches and flags may be needed (see ./configure --help).

If you do want to create your own ipkg packages, these need to be created using cross-compilation. See http://www.nslu2-linux.org/wiki/Optware/AddAPackageToOptware

Other usefull sources of info

This Synology Wiki area and the Synology forum are your main sources, however, other very usefull areas are:

Personal tools
Community Resources