Monday, January 23, 2012

How to install software into your Iomega StorCenter ix4-200d


This tutorial uses unsupported features of the IOMEGA Storcenter ix4-200d. It worked for me but use it at your own risk! It should work (again, it is unsupported) on the ix2 Storcenter as well.
Tutorial tested on IOMEGA Storcenter ix4-200d firmware 3.1.14.995
The aim of the tutorial is to be able to add programs to you NAS without having to go too deep in the system. This is also helpful to compile natively on the NAS without needing to cross compile for your architecture....


1. SSH into your NAS
See my other post: How to ssh into your Iomega StorCenter ix4-200d


2. Directory Structure on the NAS
The Lifeline OS (Iomega's OS) does put most of the root file system in read only mode. It is not much use to try to put stuff there anyway because the partitition is very small
You can type:
df
Filesystem           1K-blocks      Used Available Use% Mounted on
rootfs                   51200      5652     45548  12% /
/dev/root.old             6613      2119      4494  33% /initrd
none                     51200      5652     45548  12% /
/dev/md0_vg/BFDlv      4128448    619496   3299240  16% /boot
/dev/loop0              587077    580124      6953  99% /mnt/apps
/dev/loop1                4959      2230      2473  48% /etc
/dev/loop2                 216       216         0 100% /oem
tmpfs                   255748         0    255748   0% /mnt/apps/lib/init/rw
tmpfs                   255748         0    255748   0% /dev/shm
/dev/mapper/md0_vg-vol1
                      16775168   3283704  13491464  20% /mnt/system
/dev/mapper/2602b0ce_vg-lv43ec31bd
                     2867212288 1169119852 1698092436  41% /mnt/pools/A/A0
to see the partitions and their mountpoint.
The idea seems to be that third party programs should be installed in the /opt/ directory, which has ample storage (16GB) whereas root (/) only has 50MB.


3. Use ipkg
ipkg is intalled by default in the Iomega storcenter. We just need to specify the right place to find the packages:
vi /etc/ipkg.conf
src cross http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable
src cross http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable
Then type:
ipkg update
to build the list of available packages.


The problem of this setup is that you won't be able to install some packages because installation will fail because part of the filesystem is readonly.
Thanks to ipkg, there is an easy fix:
ipkg install ipkg-opt
This installs the binary /opt/bin/ipkg-opt. The idea is then to use this binary instead of the regular ipkg: as a result all packages will be installed in /opt/ and you won't run into problems with the read only filesystem.
The only drawback is that /opt/bin/ is not in your path... There is a simple remedy for that:
PATH=/opt/bin:$PATH
Note: this is not persistent (if you start another shell, you will need to do that again).
Also, as a one time persistent thing, I recommand to do
vi /etc/ld.so.conf
and add
/opt/lib/
at the end. That's the main problem with /opt installed software: you might end up to get duplicated libraries between /lib and /opt/lib (ldd and ldconfig are your friends).

You also need to do:
mv /opt/etc/ipkg.conf /opt/etc/ipkg.conf.old
ln -s /etc/ipkg.conf /opt/etc/ipkg.conf
so that you config in /etc/ipkg.conf remains useable with /opt/bin/ipkg and /opt/bin/ipkg-opt

Then type:
/opt/bin/ipkg update
to setup the list of available packages for /opt/bin/ipkg /opt/bin/ipkg-opt

4. Install utilities and optware-devel
First install the utilities you miss to do some actual linux stuff:
ipkg-opt install zip unzip bzip2 gzip

If you want a full gcc toolchain to compile your own applications from source.
ipkg-opt install optware-devel
The compilation can be slow but this allows you to natively compile on your NAS (I think it is simpler because there is no need to set up cross compiling on another box)...

5. Install armel/debian compiled software
Unfortunately, you will soon discover that some of the packages you want are not available for ipkg.
You can then either compile your own software (see next point) or get some ready-made debian archives....
In this case, I suggest to use the following command (for example for libsigc++-2.0-dev):
cd /opt/tmp/
wget http://ftp.de.debian.org/debian/pool/main/libs/libsigc++-2.0/libsigc++-2.0-dev_2.0.18-2_armel.deb
dpkg --instdir=/opt/ --admindir=/opt/dpkg/ -i libsigc++-2.0-dev_2.0.18-2_armel.deb
Note: do not use /tmp/ as the space available there is very small...
Note2: be careful to choose packages compiled for your architecture (armel in my case)! The above command will install your soft as if /opt/ was the root directory (you will end up with /opt/usr/lib directories and the like). As a result, you might need to add stuff in your PATH or edit /etc/ld.so.conf.
Be careful not to make a mess of your system or you will soon end up with several times the same library (with different versions) at different locations... You will need to sort this manually(ln, rm...)


6. Compile from source
For example, a very classic install for libnfnetlink:
cd /opt/tmp/
wget http://www.netfilter.org/projects/libnfnetlink/files/libnfnetlink-1.0.0.tar.bz2
tar -xvf libnfnetlink-1.0.0.tar.bz2
cd libnfnetlink-1.0.0
PATH=$PATH:/opt/bin
./configure --prefix=/opt/
make
make install
Note: to get bzip2 to work I had to do before the tar -xvf:
ln -s /opt/bin/bzip2-bzip2 /opt/bin/bzip2
Another example using svn
cd /opt/tmp/
PAH=/opt/bin:$PATH
svn checkout http://xmlrpc-c.svn.sourceforge.net/svnroot/xmlrpc-c/stable xmlrpc-c    
cd xmlrpc-c/
./configure --prefix=/opt
make
make install
Don't forget the --prefix=/opt to specifiy you want to install your package.

When compiling from source, you run into the usual complation problems you can get with linux (libraries/includes not found etc...). It gets even more annoying because default stuff does not work well anymore (package manager is not where expected etc), and sometimes you end up having to specify the complie flags yourself.
For example, I recently had to edit the configure script of a source tarball to add:
sigc_LIBS='-L/opt/lib/ -lsigc-2.0 -L/lib/'
sigc_CFLAGS='-I/opt/usr/include/sigc++-2.0/ -I/opt/usr/lib/sigc++-2.0/include -I/opt/include/ncurses'
libcurl_LIBS='-L/opt/lib/ -lcurl'
libcurl_CFLAGS='-I/opt/include/'
libtorrent_LIBS='-L/opt/lib/ -ltorrent'
libtorrent_CFLAGS='-I/opt/include/'
-dev packages can be difficult to find with ipkg, this is where you often need to get a .deb package or compile the library from source just to get the header files right...

7. Conclusion
As you noticed, it is just a matter of using the tools (and using them right). It just gets a little bit more complicated because the usual package manager does not work out of the box, the procedure is unsupported by the hardware vendor and precompiled packages can be difficult to find for armel...

52 comments:

  1. nice post!

    BUT i had a problem on step 3

    it seems that if i use "/usr/bin/ipkg list" every thing is working ok

    but if I use "/opt/bin/ipkg list" or "/opt/bin/ipkg-opt list" i get no package, I suppose that ipkg in opt/bin are not taking any configuration file

    so in step 3 if I run
    ipkg-opt install optware

    I get an error saying the package do not exist

    ReplyDelete
    Replies
    1. Thanks for the comment.
      It seems like I forgot a step... sorry about that.
      You should run the commands
      mv /opt/etc/ipkg.conf /opt/etc/ipkg.conf.old
      ln -s /etc/ipkg.conf /opt/etc/ipkg.conf
      (the tutorial is now updated)

      Delete
  2. 3 more corrections:

    step 3 is labeled twice

    before doing the ipkg-opt install stuff you should use ipkg-opt update

    and

    the ipkg-opt install optware didn worked for me... but ipkg-opt install optware-devel worked fine...

    ReplyDelete
    Replies
    1. I changed the numbering. You are right about the need to do update before doing install for ipkg-opt: I updated the post. You are also right regarding the optware pacakage: it does not exist... I updated the post as well. Thanks for improving the post!

      Delete
  3. once again thank you for this and other posts!

    now i'm fighting on installing a postgresql server

    everything seems to be working wit ipgk-opt install postgresql and i have edited the pg_hba.conf on opt/var/pgsql/data to trust all the network

    but i have some problems when trying to connect from a client in other computer


    other things it can be perfect to install in the NAS is a SVN server.

    ReplyDelete
    Replies
    1. I am pretty sure the NAS isn't blocking any port: your postgres problem must be linked to a postgres config issue. You should be able to get some help on a postgres forum...

      Delete
  4. i can't seem to get sabnzbd to run it needs cheetah and i can't get that working, was hoping to install that plus sick beard and couch potato ;)

    ReplyDelete
    Replies
    1. did you try:
      /opt/bin/ipkg-opt install sabnzbdplus
      ?
      I am not sure it works as I don't use the package myself... let me know if you get an error message.

      Delete
    2. thanks it installed but now i don't know where it is? lol

      Delete
    3. Actually, I may have an interest in the package so I looked into it a bit...

      in this case, you can run:
      /opt/bin/ipkg-opt files sabnzbdplus
      after installing.
      you'll see that the soft is in:
      /opt/share/SABnzbd#
      do
      cd /opt/share/SABnzbd
      ./SABnzbd.py -s 0.0.0.0:8080
      to start

      you need to put 0.0.0.0 so that the web service can be accessed from other computers (it is just accessible locally otherwise).
      Then, point your browser to http://ip.of.your.nas:8080/sabnzbd or even http://nas_name:8080/sabnzbd

      you might want to look at:
      http://kevin.vanzonneveld.net/techblog/article/install_sabnzbd_on_your_synology/
      for the startup scripts and Sickbeard/Couchpotato install

      Delete
    4. it needs an update bad if you decide to compile and make a package could you let me know ;)

      Delete
  5. hmm might be better to hack together nzbget to do like sabnzb my download speeds were pretty slow i mean i guess 4mins for a 800mb movie is not bad lol, but I'm used to 8 to 10 MB/s

    ReplyDelete
  6. yes i believe nzbget is the way to go ;) just need to figure how to make it start in in demon mode and then i need to test is i can use the par and unrar stuff

    http://kevin.vanzonneveld.net/techblog/article/optimize_your_synology_for_downloading/ has lots of good info ;)

    ReplyDelete
  7. any ideas?

    python SickBeard.py
    Traceback (most recent call last):
    File "SickBeard.py", line 44, in
    from sickbeard.webserveInit import initWebServer
    File "/mnt/system/opt/bin/sickbeard/sickbeard/webserveInit.py", line 26, in
    from sickbeard.webserve import WebInterface
    File "/mnt/system/opt/bin/sickbeard/sickbeard/webserve.py", line 30, in
    from Cheetah.Template import Template
    ImportError: No module named Cheetah.Template

    ReplyDelete
    Replies
    1. did you try to use /opt/bin/python intead of just python (which is the one installed by iomega)?

      Delete
    2. maybe i will just leave sick beard and couch potato on the mac and then they can send the stuff to nzbget, tho there have been some issues with nzb being sent to nzbget

      Delete
  8. /opt/bin/python2.5 SABnzbd.py
    Traceback (most recent call last):
    File "SABnzbd.py", line 65, in
    import sabnzbd
    File "/mnt/system/opt/bin/SABnzbd/sabnzbd/__init__.py", line 85, in
    import sabnzbd.api
    File "/mnt/system/opt/bin/SABnzbd/sabnzbd/api.py", line 29, in
    locale.setlocale(locale.LC_ALL, "")
    File "/opt/lib/python2.5/locale.py", line 478, in setlocale
    return _setlocale(category, locale)
    locale.Error: unsupported locale setting

    ReplyDelete
    Replies
    1. Sorry Dade, I don't have any ideas on the top of my head and I won't be able to look into it for a while because I have a family emergency I need to attend to....

      Delete
    2. hope everything is ok

      Delete
  9. hey hope all is well,

    curious if you would try to install newznab a usenet indexer on the storcenter ;p

    ReplyDelete
  10. nm last comment lol i just setup a linux box for this would be too slow for storcenter

    ReplyDelete
  11. hello, I got follwing error :
    Collected errors:
    ipkg_download: ERROR: Command failed with return value 127: `wget --passive-ftp -q -P /opt/ipkg-wOqpSc http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/Packages'

    .. but the package is there ...any idea ?
    thx

    ReplyDelete
    Replies
    1. Can you try:
      wget --passive-ftp -P /tmp/ http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/Packages

      from the command line and tell me if you get a more detailed error message?

      Delete
    2. wget --passive-ftp -P /tmp/ http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/Packages
      --2012-05-18 14:52:00-- http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/Packages
      Resolving ipkg.nslu2-linux.org... 140.211.169.161
      Connecting to ipkg.nslu2-linux.org|140.211.169.161|:80... connected.
      HTTP request sent, awaiting response... 200 OK
      Length: 517504 (505K) [text/plain]
      Saving to: `/tmp/Packages'

      100%[======================================>] 517,504 387K/s in 1.3s

      2012-05-18 14:52:03 (387 KB/s) - `/tmp/Packages' saved [517504/517504]

      Johan

      Delete
  12. Hello VDM,

    It's working I changed to de /opt/bin and executed with ./ipkg-opt install lighttpd and it's working ..

    No idea why, yesterdaf this wasn't working .. but perhaps I made a mistake.

    So , no need to investigate but my respect for the quick effort to help !!!

    ReplyDelete
  13. I've followd this thread but i have some problems after restarting nas.

    1st i've to manualy start "etc/rc2.d/S99Sickbeard.sh start"
    2nd is that al my settings are gone from sickbeard and sabnzbd
    3rd is that par2, unrar and unzip are gone to

    what am i doing wrong?

    ReplyDelete
    Replies
    1. I suppose you have an IOMEGA storcenter.

      1. did you look at my tutorial: http://vincesoft.blogspot.com/2012/01/how-to-run-program-at-boot-on-iomega.html ?
      you need to add your command to /opt/init-opt.sh to have it start automatically at boot. rc2.d is not run at boot in an IOMEGA storcenter....
      2. all the config files have to be in /opt : most of the file system is cleaned/refreshed on reboot. where were the files that are gone?
      3. are you saying that /opt/bin/unzip is gone? if you are just typing unzip at the invite, make sure /opt/bin is in the PATH (to do that, PATH=$PATH:/opt/bin).
      I don't have unrar on my system, but I guess the problem is the same.

      Delete
    2. Thanks, another problem occured after the tut. from 1)
      after editing the sohoprocs the ix4 wont but up anymore and hangs on 75%. I can restore from usb stick and it wil work again. tried it several times now als i with other firmware but stil crashes at 75%.

      3) where exactly do i put the path command? if i do this in cosole and i close the console, the patch is gone after reboot.

      2)if the path is set, the programs wil work. but settings still wont be saved. the files are in /opt/.

      I'am just looking into linux the past 2 days, its al new to me...

      Delete
    3. 1. sorry, no idea on this one. just glad you were able to restart the NAS

      3. as of myself, I just set the PATH every time I start a console. If I want to have the correct PATH in a script, I just add PATH=$PATH:/opt/bin at the begining of the script (you can edit a init.d script and add this in the first line)

      2. that's strange. were you able to override the location of the setting file to /opt ? If you stop the process and restart it without rebooting the NAS, are your settings ok?

      Delete
  14. I dont suppose there is a way to get a vpn server running on this box?

    ReplyDelete
    Replies
    1. Actually, I don't see why not....
      PATH=$PATH:/opt/bin
      ipkg-opt install lzo
      ipkg-opt install openvpn

      I get the warning
      openvpn: unsatisfied recommendation for kernel-module-tun
      but I don't know if that's really a problem.
      Let us know how it works!

      Delete
    2. just to finish the discussion, openvpn won't work without the tun kernel module....
      You could always try to recompile the module from the kernel sources.... Last time I tried (for another module), I failed....

      Delete
  15. Hi there,

    is there a way to install a NZB-Grabber or Usenet-Client or something?
    If yes, how exactly?
    I don't want to mess up my system because I am not _that_ good on linux boxes.

    Thanks in advance!

    Jan

    ReplyDelete
  16. Just right now I am testing on the ix2, works fine so far (Steps 1-4), just have to think about what packages i want to install :)

    ReplyDelete
  17. somebody tried to install "autosub" from bierdopje.com to install on the ix4-200d. i've managed to install sichbeard + sabnzbd with these tutorials but if someone can write a tut to install autosub as wel?

    then the only thing i have to do is put my tv on and my ix4 to watch tv :P

    ReplyDelete
  18. finally i decided what i want to do with my ix2, but i am somehow stuck. I am trying to set up a mysql server. so far i have been able to install it and i copied the startup-script to
    /etc/init.d/mysql.server
    update-rc.d mysql.server defaults
    created the correct symlinks, calling the script manually
    /etc/init.d/mysql.server start
    starts the server just fine, but booting won't. /opt/bin is not added to PATH either, but the script should do it by
    PATH=/sbin:/usr/sbin:/bin:/usr/bin:/opt/bin:$PATH

    Any ideas what causes this? Starting the Server manually works, but doing so manually everyday (tiny appartement, NAS is shut down over night) can't be the only solution

    ReplyDelete
    Replies
    1. if the ix2 works like the ix4, you can follow this tutorial:
      http://vincesoft.blogspot.fr/2012/01/how-to-run-program-at-boot-on-iomega.html

      Delete
  19. You can actually install the MySQL Server for ix4-300d lifeline app.
    It seems to work fine on my ix2-dl, I just need to figure out how to configure remote access.

    ReplyDelete
  20. Hi Vince,

    Please can you help me?
    I'm trying to install openjdk-6-jre-headless, openjdk-6-jre, openjdk-6-jdk following your clue but I'm receiving the following error:

    root@ix2-200:/var/cache/apt/archives# dpkg --instdir=/opt/ --admindir=/opt/dpkg/ -i openjdk-6-jre_6b18-1.8.13-0+squeeze2_armel.deb
    (Reading database ...
    dpkg: serious warning: files list file for package `openjdk-6-jre-headless' missing, assuming package has no files currently installed.

    dpkg: serious warning: files list file for package `openjdk-6-jre' missing, assuming package has no files currently installed.
    24210 files and directories currently installed.)
    Preparing to replace openjdk-6-jre 6b18-1.8.13-0+squeeze2 (using openjdk-6-jre_6b18-1.8.13-0+squeeze2_armel.deb) ...
    dpkg (subprocess): unable to execute new pre-installation script: No such file or directory
    dpkg: error processing openjdk-6-jre_6b18-1.8.13-0+squeeze2_armel.deb (--install):
    subprocess pre-installation script returned error exit status 2
    dpkg (subprocess): unable to execute new post-removal script: No such file or directory
    dpkg: error while cleaning up:
    subprocess post-removal script returned error exit status 2
    Errors were encountered while processing:
    openjdk-6-jre_6b18-1.8.13-0+squeeze2_armel.deb

    Regards,
    Pierre

    ReplyDelete
  21. 3.1.14.995 gibt es nicht für Iomega StorCenter ix4-200d

    ReplyDelete
    Replies
    1. I have a Storcenter ix4-200d cloud edition and that was the version on it when I bought it. I would not be surprised if there there are newer versions now...

      Delete
  22. 3.1.14.995 is for the ix4-200D Cloud Edition

    Without the cloud edition the latest is 2.1.42.18967

    don't know the difference only and if the cloud firmware is compatible

    ReplyDelete
  23. I can't get past the last part of step 3.
    I don't have the cloud edition.
    What to do?
    Its a problem with libidn.so.11? Can I install this manually?


    root@NAS:/# /opt/bin/ipkg update

    Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/Packages
    wget: error while loading shared libraries: libidn.so.11: cannot open shared object file: No such file or directory
    An error ocurred, return value: 1.
    Collected errors:
    ipkg_download: ERROR: Command failed with return value 127: `wget --passive-ftp -q -P /opt/ipkg-ExgmfJ http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/Packages'

    root@NAS:/# ipkg-opt install optware-devel
    Installing optware-devel (6.8-10) to root...
    Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/optware-devel_6.8-10_arm.ipk
    wget: error while loading shared libraries: libidn.so.11: cannot open shared object file: No such file or directory
    Nothing to be done
    An error ocurred, return value: 22.
    Collected errors:
    ipkg_download: ERROR: Command failed with return value 127: `wget --passive-ftp -q -P /opt/ipkg-o9cx3g http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/optware-devel_6.8-10_arm.ipk'
    Failed to download optware-devel. Perhaps you need to run 'ipkg update'?
    root@NAS:/#

    ReplyDelete
  24. On the Standard edition (not Cloud) you also have to install libidn!!!

    ipkg install libidn

    ReplyDelete
    Replies
    1. hi guy ,
      I have a similar problem that :
      AQuablogMarch 30, 2013 at 6:57 PM

      at the stage :
      "4. Install utilities and optware-devel"

      ...
      An error ocurred, return value: 22.
      Collected errors:
      ipkg_download: ERROR: Command failed with return value 127: `wget --passive-ftp -q -P /opt/ipkg-zA0d3x http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/libidn_1.25-1_arm.ipk'
      Failed to download libidn. Perhaps you need to run 'ipkg update'?
      -----------------------------------------
      I try to fixe it with :
      ipkg install libidn
      but it doesn't work :
      root@storage:/# ipkg install libidn
      Installing libidn (1.25-1) to root...
      Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/libidn_1.25-1_arm.ipk
      wget: error while loading shared libraries: libidn.so.11: cannot open shared object file: No such file or directory
      Nothing to be done
      An error ocurred, return value: 22.
      Collected errors:
      ipkg_download: ERROR: Command failed with return value 127: `wget --passive-ftp -q -P /opt/ipkg-qWMRlA http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/libidn_1.25-1_arm.ipk'
      Failed to download libidn. Perhaps you need to run 'ipkg update'?
      root@storage:/#

      do you have an idea ?
      have a nice day

      Delete
  25. Thank you so much!, it works like a charm in my ix2-200 ce

    ReplyDelete
  26. Hello & Thanx for this topic,

    I'm french and I don't all understand about this topic, how can I do to type the different lines on my NAS ?? I've got an IX2 and I try to install an EASYPHP on it in order to put on it a website on my local network ...

    Thanx for the answer

    ReplyDelete
  27. Hi, thank you for your post!

    I try to configure my ix4-300d NAS as a SVN Server, but i am not sure how to do it. It is possible with this device, or it is better if i buy a diffrent hardware?

    ReplyDelete
  28. If I update to latest firmware I have to do again this installation?

    ReplyDelete
    Replies
    1. I did not try to upgrade, but I would expect you would need to re-do some of the steps....

      Delete