{"id":195,"date":"2013-12-10T14:26:00","date_gmt":"2013-12-10T13:26:00","guid":{"rendered":"http:\/\/vm.piszki.pl\/instalacja-ipkg-na-synology-ds213j"},"modified":"2014-03-24T14:28:47","modified_gmt":"2014-03-24T13:28:47","slug":"instalacja-ipkg-na-synology-ds213j","status":"publish","type":"post","link":"https:\/\/vm.piszki.pl\/?p=195","title":{"rendered":"Instalacja IPKG na Synology DS213J"},"content":{"rendered":"<p>Cierpliwo\u015b\u0107 to cnota <img decoding=\"async\" class=\"wlEmoticon wlEmoticon-smile\" style=\"border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none\" alt=\"U\u015bmiech\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/03\/wlEmoticon-smile12.png\"><\/p>\n<p align=\"justify\">W ko\u0144cu pojawi\u0142a si\u0119 mo\u017cliwo\u015b\u0107 zainstalowania ipkg (<a href=\"http:\/\/www.nslu2-linux.org\/wiki\/Optware\/HomePage\">optware<\/a>) na naszym NASie. Ten wpis b\u0119dzie tak\u0105 bardziej rozbudowan\u0105 form\u0105 <a href=\"https:\/\/github.com\/trepmag\/ds213j-optware-bootstrap\">tej<\/a> instrukcji (z wyja\u015bnieniami i przyk\u0142adami). Z g\u00f3ry te\u017c zaznaczam, \u017ce nie jest to pe\u0142ny bootstrap, dzia\u0142a\u0107 b\u0119dzie tylko to, co jest skompilowane, od siebie nic nie dodamy. Ale i tak jest to ogromny post\u0119p.<\/p>\n<p align=\"justify\">Pierwsze co musimy zrobi\u0107 to oczywi\u015bcie zalogowa\u0107 si\u0119 na u\u017cytkownika root poprzez SSH (has\u0142o na roota jest takie samo jakie nadali\u015bmy u\u017cytkownikowi admin w trakcie instalacji NASa). Nast\u0119pnie wydajemy polecenia:<\/p>\n<pre style=\"overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; width: 650px; border-bottom: #cecece 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; min-height: 40px; border-left: #cecece 1px solid; padding-right: 5px; background-color: #fbfbfb\"><span style=\"font-size: xx-small\">DiskStation&gt; mkdir \/volume1\/@optware\nDiskStation&gt; mkdir \/opt\nDiskStation&gt; mount -o bind \/volume1\/@optware \/opt\nDiskStation&gt; mount\n\/dev\/root on \/ type ext4 (rw,relatime,user_xattr,barrier=1,journal_checksum,data=ordered)\nnone on \/dev\/pts type devpts (gid=4,mode=620)\n\/sys on \/sys type sysfs (0)\n\/tmp on \/tmp type tmpfs (0)\n\/proc\/bus\/usb on \/proc\/bus\/usb type usbfs (0)\n\/dev\/vg1000\/lv on \/volume1 type ext4 (usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0,synoacl)\n\/volume1\/@optware on \/opt type bind (bind)<\/span><\/pre>\n<p align=\"justify\">\n<p><!--more--><\/p>\n<p align=\"justify\">Linuks (BusyBox) jaki jest sercem naszego NASa, nie pozwala na u\u017cycie polecenia ln (bez \u2013s), polecenie mount \u2013o bind jest odpowiednikiem <a href=\"http:\/\/aplawrence.com\/Linux\/mount_bind.html\">hardlinka<\/a>.<\/p>\n<p align=\"justify\">W pliku \/etc\/profile dodajemy na ko\u0144cu linii katalogi z \/opt (od\u015bwie\u017cenie globalne zmiennej PATH wymaga niestety restartu NASa, mo\u017cemy sobie te\u017c oczywi\u015bcie z r\u0119ki ustawi\u0107 to dla lokalnej sesji):<\/p>\n<pre style=\"overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; width: 650px; border-bottom: #cecece 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; min-height: 40px; border-left: #cecece 1px solid; padding-right: 5px; background-color: #fbfbfb\"><span style=\"font-size: xx-small\">PATH=\/sbin:\/bin:\/usr\/sbin:\/usr\/bin:\/usr\/syno\/sbin:\/usr\/syno\/bin:\/usr\/local\/sbin:\/usr\/local\/bin:\/opt\/bin:\/opt\/sbin\nexport PATH<\/span><\/pre>\n<pre style=\"overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; width: 650px; border-bottom: #cecece 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; min-height: 40px; border-left: #cecece 1px solid; padding-right: 5px; background-color: #fbfbfb\"><p><span style=\"font-size: xx-small\">DiskStation&gt; feed=<\/span><a href=\"http:\/\/ipkg.nslu2-linux.org\/feeds\/optware\/cs08q1armel\/cross\/unstable\"><span style=\"font-size: xx-small\">http:\/\/ipkg.nslu2-linux.org\/feeds\/optware\/cs08q1armel\/cross\/unstable<\/span><\/a><br><span style=\"font-size: xx-small\">DiskStation&gt; ipk_name=`wget -qO- $feed\/Packages | awk '\/^Filename: ipkg-opt\/ {print $2}'`<br>DiskStation&gt; wget $feed\/$ipk_name<br>--08:36:57--&nbsp; <\/span><a href=\"http:\/\/ipkg.nslu2-linux.org\/feeds\/optware\/cs08q1armel\/cross\/unstable\/ipkg-opt_0.99.163-10_arm.ipk\"><span style=\"font-size: xx-small\">http:\/\/ipkg.nslu2-linux.org\/feeds\/optware\/cs08q1armel\/cross\/unstable\/ipkg-opt_0.99.163-10_arm.ipk<\/span><\/a><br><span style=\"font-size: xx-small\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; `ipkg-opt_0.99.163-10_arm.ipk'<br>Resolving ipkg.nslu2-linux.org... 140.211.169.161<br>Connecting to ipkg.nslu2-linux.org|140.211.169.161|:80... connected.<br>HTTP request sent, awaiting response... 200 OK<br>Length: 74,474 (73K) [text\/plain]<\/span><\/p><p><span style=\"font-size: xx-small\">100%[==================================================================================================&gt;] <\/span><\/p><p><span style=\"font-size: xx-small\">DiskStation&gt; tar -xOvzf $ipk_name .\/data.tar.gz | tar -C \/ -xzvf -<br>.\/<br>.\/opt\/<br>.\/opt\/bin\/<br>.\/opt\/bin\/ipkg<br>.\/opt\/bin\/ipkg-opt<br>.\/opt\/bin\/update-alternatives<br>.\/opt\/etc\/<br>.\/opt\/etc\/ipkg.conf<br>.\/opt\/lib\/<br>.\/opt\/lib\/libipkg.so<br>.\/opt\/lib\/libipkg.so.0<br>.\/opt\/lib\/libipkg.so.0.0.0<br>.\/opt\/share\/<br>.\/opt\/share\/ipkg\/<br>.\/opt\/share\/ipkg\/intercept\/<br>.\/opt\/share\/ipkg\/intercept\/depmod<br>.\/opt\/share\/ipkg\/intercept\/ldconfig<br>.\/opt\/share\/ipkg\/intercept\/update-modules<br>DiskStation&gt;&nbsp; mkdir -p \/opt\/etc\/ipkg<br>DiskStation&gt; echo \"src cross $feed\" &gt; \/opt\/etc\/ipkg\/feeds.conf<br>DiskStation&gt;<\/span><\/p><\/pre>\n<p>Skrypt \u201cstartowy\u201d:<\/p>\n<pre style=\"overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; width: 650px; border-bottom: #cecece 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; min-height: 40px; border-left: #cecece 1px solid; padding-right: 5px; background-color: #fbfbfb\"><p><span style=\"font-size: xx-small\">DiskStation&gt; vi \/etc\/rc.local<br>#!\/bin\/sh<\/span><\/p><p><span style=\"font-size: xx-small\"># Optware setup<br>[ -x \/etc\/rc.optware ] &amp;&amp; \/etc\/rc.optware start<\/span><\/p><p><span style=\"font-size: xx-small\">DiskStation&gt; chmod 755 \/etc\/rc.local<br>DiskStation&gt;<\/span><\/p><p><span style=\"font-size: xx-small\">DiskStation&gt; vi \/etc\/rc.optware<br>#! \/bin\/sh<\/span><\/p><blockquote><p><span style=\"font-size: xx-small\">if test -z \"${REAL_OPT_DIR}\"; then<br># next line to be replaced according to OPTWARE_TARGET<br>REAL_OPT_DIR=\/volume1\/@optware<br>fi<\/span><\/p><\/blockquote><blockquote><p><span style=\"font-size: xx-small\">case \"$1\" in<br>start)<br>echo \"Starting Optware.\"<br>if test -n \"${REAL_OPT_DIR}\"; then<br>if ! grep ' \/opt ' \/proc\/mounts &gt;\/dev\/null 2&gt;&amp;1 ; then<br>mkdir -p \/opt<br>mount -o bind ${REAL_OPT_DIR} \/opt<br>fi<br>fi<br>[ -x \/opt\/etc\/rc.optware ] &amp;&amp; \/opt\/etc\/rc.optware<br>;;<br>reconfig)<br>true<br>;;<br>stop)<br>echo \"Shutting down Optware.\"<br>true<br>;;<br>*)<br>echo \"Usage: $0 {start|stop|reconfig}\"<br>exit 1<br>esac<\/span><\/p><\/blockquote><p><span style=\"font-size: xx-small\">exit 0<\/span><\/p><p>~<br><span style=\"font-size: xx-small\">DiskStation&gt; chmod 755 \/etc\/rc.optware<br>DiskStation&gt;<\/span><\/p><\/pre>\n<p align=\"justify\">Oczywi\u015bcie IPKG nie wymaga tak naprawd\u0119 skryptu startowego, jedyne co robimy to od\u015bwie\u017camy katalog \/opt. Nast\u0119pnie od\u015bwie\u017camy katalog pakiet\u00f3w:<\/p>\n<pre style=\"overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; width: 650px; border-bottom: #cecece 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; min-height: 40px; border-left: #cecece 1px solid; padding-right: 5px; background-color: #fbfbfb\"><span style=\"font-size: xx-small\">DiskStation&gt; ipkg update\nDownloading <\/span><a href=\"http:\/\/ipkg.nslu2-linux.org\/feeds\/optware\/cs08q1armel\/cross\/unstable\/Packages\"><span style=\"font-size: xx-small\">http:\/\/ipkg.nslu2-linux.org\/feeds\/optware\/cs08q1armel\/cross\/unstable\/Packages<\/span><\/a>\n<span style=\"font-size: xx-small\">Updated list of available packages in \/opt\/lib\/ipkg\/lists\/cross\nSuccessfully terminated.\nDiskStation&gt;<\/span><\/pre>\n<p>Czy to dzia\u0142a? Ale\u017c oczywi\u015bcie!!!<\/p>\n<pre style=\"overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; width: 650px; border-bottom: #cecece 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; min-height: 40px; border-left: #cecece 1px solid; padding-right: 5px; background-color: #fbfbfb\"><span style=\"font-size: xx-small\">DiskStation&gt; ipkg install mc\nInstalling mc (4.7.5.5-1) to root...\nDownloading <\/span><a href=\"http:\/\/ipkg.nslu2-linux.org\/feeds\/optware\/cs08q1armel\/cross\/unstable\/mc_4.7.5.5-1_arm.ipk\"><span style=\"font-size: xx-small\">http:\/\/ipkg.nslu2-linux.org\/feeds\/optware\/cs08q1armel\/cross\/unstable\/mc_4.7.5.5-1_arm.ipk<\/span><\/a>\n<span style=\"font-size: xx-small\">package slang suggests installing pcre\npackage slang suggests installing libpng\nInstalling glib (2.20.4-1) to root...\nDownloading <\/span><a href=\"http:\/\/ipkg.nslu2-linux.org\/feeds\/optware\/cs08q1armel\/cross\/unstable\/glib_2.20.4-1_arm.ipk\"><span style=\"font-size: xx-small\">http:\/\/ipkg.nslu2-linux.org\/feeds\/optware\/cs08q1armel\/cross\/unstable\/glib_2.20.4-1_arm.ipk<\/span><\/a>\n<span style=\"font-size: xx-small\">Installing slang (2.2.3-2) to root...\nDownloading <\/span><a href=\"http:\/\/ipkg.nslu2-linux.org\/feeds\/optware\/cs08q1armel\/cross\/unstable\/slang_2.2.3-2_arm.ipk\"><span style=\"font-size: xx-small\">http:\/\/ipkg.nslu2-linux.org\/feeds\/optware\/cs08q1armel\/cross\/unstable\/slang_2.2.3-2_arm.ipk<\/span><\/a>\n<span style=\"font-size: xx-small\">Installing e2fslibs (1.41.14-1) to root...\nDownloading <\/span><a href=\"http:\/\/ipkg.nslu2-linux.org\/feeds\/optware\/cs08q1armel\/cross\/unstable\/e2fslibs_1.41.14-1_arm.ipk\"><span style=\"font-size: xx-small\">http:\/\/ipkg.nslu2-linux.org\/feeds\/optware\/cs08q1armel\/cross\/unstable\/e2fslibs_1.41.14-1_arm.ipk<\/span><\/a>\n<span style=\"font-size: xx-small\">Configuring e2fslibs\nConfiguring glib\nConfiguring mc\nConfiguring slang\nSuccessfully terminated.\nDiskStation&gt;<\/span><\/pre>\n<p><a href=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/03\/mc.png\"><img loading=\"lazy\" decoding=\"async\" title=\"mc\" style=\"border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; border-left: 0px; display: block; padding-right: 0px; margin-right: auto\" border=\"0\" alt=\"mc\" src=\"https:\/\/vm.piszki.pl\/wp-content\/uploads\/2014\/03\/mc_thumb.png\" width=\"457\" height=\"259\"><\/a><\/p>\n<p align=\"justify\">Kto\u015b nie\u015bwiadomy mo\u017ce zapyta\u0107: ale co mi to daje? Ano to, \u017ce mo\u017cemy \u201cprzerobi\u0107\u201d naszego NASa na \u201cpe\u0142nosprawnego\u201d linkusa. Dostajemy dost\u0119p do <a href=\"http:\/\/ipkg.nslu2-linux.org\/feeds\/optware\/cs08q1armel\/cross\/unstable\/\">ogromnej<\/a> liczby pakiet\u00f3w, z g\u00f3ry uprzedzam jednak, nie da si\u0119 nic skompilowa\u0107, tu ju\u017c musimy poczeka\u0107 na pe\u0142nego bootstrapa. Mi\u0142ego d\u0142ubania :)<\/p>\n<div style='text-align:left' class='yasr-auto-insert-visitor'><\/div>","protected":false},"excerpt":{"rendered":"<p>Cierpliwo\u015b\u0107 to cnota W ko\u0144cu pojawi\u0142a si\u0119 mo\u017cliwo\u015b\u0107 zainstalowania ipkg (optware) na naszym NASie. Ten wpis b\u0119dzie tak\u0105 bardziej rozbudowan\u0105 form\u0105 tej instrukcji (z wyja\u015bnieniami i przyk\u0142adami). Z g\u00f3ry te\u017c zaznaczam, \u017ce nie jest to pe\u0142ny bootstrap, dzia\u0142a\u0107 b\u0119dzie tylko &hellip; <a href=\"https:\/\/vm.piszki.pl\/?p=195\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1527,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"yasr_overall_rating":0,"yasr_post_is_review":"","yasr_auto_insert_disabled":"","yasr_review_type":"","footnotes":""},"categories":[36],"tags":[7],"class_list":["post-195","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-analiza","tag-nas"],"yasr_visitor_votes":{"stars_attributes":{"read_only":false,"span_bottom":false},"number_of_votes":7,"sum_votes":29},"_links":{"self":[{"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=\/wp\/v2\/posts\/195"}],"collection":[{"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=195"}],"version-history":[{"count":13,"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=\/wp\/v2\/posts\/195\/revisions"}],"predecessor-version":[{"id":766,"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=\/wp\/v2\/posts\/195\/revisions\/766"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=\/wp\/v2\/media\/1527"}],"wp:attachment":[{"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=195"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=195"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vm.piszki.pl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=195"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}