Piszki Lab

Analiza przypadku w języku przodków…

Instalacja IPKG na Synology DS213J

| 0 comments

Cierpliwość to cnota Uśmiech

W końcu pojawiła się możliwość zainstalowania ipkg (optware) na naszym NASie. Ten wpis będzie taką bardziej rozbudowaną formą tej instrukcji (z wyjaśnieniami i przykładami). Z góry też zaznaczam, że nie jest to pełny bootstrap, działać będzie tylko to, co jest skompilowane, od siebie nic nie dodamy. Ale i tak jest to ogromny postęp.

Pierwsze co musimy zrobić to oczywiście zalogować się na użytkownika root poprzez SSH (hasło na roota jest takie samo jakie nadaliśmy użytkownikowi admin w trakcie instalacji NASa). Następnie wydajemy polecenia:

DiskStation> mkdir /volume1/@optware
DiskStation> mkdir /opt
DiskStation> mount -o bind /volume1/@optware /opt
DiskStation> mount
/dev/root on / type ext4 (rw,relatime,user_xattr,barrier=1,journal_checksum,data=ordered)
none on /dev/pts type devpts (gid=4,mode=620)
/sys on /sys type sysfs (0)
/tmp on /tmp type tmpfs (0)
/proc/bus/usb on /proc/bus/usb type usbfs (0)
/dev/vg1000/lv on /volume1 type ext4 (usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0,synoacl)
/volume1/@optware on /opt type bind (bind)

Linuks (BusyBox) jaki jest sercem naszego NASa, nie pozwala na użycie polecenia ln (bez –s), polecenie mount –o bind jest odpowiednikiem hardlinka.

W pliku /etc/profile dodajemy na końcu linii katalogi z /opt (odświeżenie globalne zmiennej PATH wymaga niestety restartu NASa, możemy sobie też oczywiście z ręki ustawić to dla lokalnej sesji):

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin:/opt/bin:/opt/sbin
export PATH

DiskStation> feed=http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable
DiskStation> ipk_name=`wget -qO- $feed/Packages | awk '/^Filename: ipkg-opt/ {print $2}'`
DiskStation> wget $feed/$ipk_name
--08:36:57-- 
http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/ipkg-opt_0.99.163-10_arm.ipk
           => `ipkg-opt_0.99.163-10_arm.ipk'
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: 74,474 (73K) [text/plain]

100%[==================================================================================================>]

DiskStation> tar -xOvzf $ipk_name ./data.tar.gz | tar -C / -xzvf -
./
./opt/
./opt/bin/
./opt/bin/ipkg
./opt/bin/ipkg-opt
./opt/bin/update-alternatives
./opt/etc/
./opt/etc/ipkg.conf
./opt/lib/
./opt/lib/libipkg.so
./opt/lib/libipkg.so.0
./opt/lib/libipkg.so.0.0.0
./opt/share/
./opt/share/ipkg/
./opt/share/ipkg/intercept/
./opt/share/ipkg/intercept/depmod
./opt/share/ipkg/intercept/ldconfig
./opt/share/ipkg/intercept/update-modules
DiskStation>  mkdir -p /opt/etc/ipkg
DiskStation> echo "src cross $feed" > /opt/etc/ipkg/feeds.conf
DiskStation>

Skrypt “startowy”:

DiskStation> vi /etc/rc.local
#!/bin/sh

# Optware setup
[ -x /etc/rc.optware ] && /etc/rc.optware start

DiskStation> chmod 755 /etc/rc.local
DiskStation>

DiskStation> vi /etc/rc.optware
#! /bin/sh

if test -z "${REAL_OPT_DIR}"; then
# next line to be replaced according to OPTWARE_TARGET
REAL_OPT_DIR=/volume1/@optware
fi

case "$1" in
start)
echo "Starting Optware."
if test -n "${REAL_OPT_DIR}"; then
if ! grep ' /opt ' /proc/mounts >/dev/null 2>&1 ; then
mkdir -p /opt
mount -o bind ${REAL_OPT_DIR} /opt
fi
fi
[ -x /opt/etc/rc.optware ] && /opt/etc/rc.optware
;;
reconfig)
true
;;
stop)
echo "Shutting down Optware."
true
;;
*)
echo "Usage: $0 {start|stop|reconfig}"
exit 1
esac

exit 0

~
DiskStation> chmod 755 /etc/rc.optware
DiskStation>

Oczywiście IPKG nie wymaga tak naprawdę skryptu startowego, jedyne co robimy to odświeżamy katalog /opt. Następnie odświeżamy katalog pakietów:

DiskStation> ipkg update
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/Packages
Updated list of available packages in /opt/lib/ipkg/lists/cross
Successfully terminated.
DiskStation>

Czy to działa? Ależ oczywiście!!!

DiskStation> ipkg install mc
Installing mc (4.7.5.5-1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/mc_4.7.5.5-1_arm.ipk
package slang suggests installing pcre
package slang suggests installing libpng
Installing glib (2.20.4-1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/glib_2.20.4-1_arm.ipk
Installing slang (2.2.3-2) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/slang_2.2.3-2_arm.ipk
Installing e2fslibs (1.41.14-1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/e2fslibs_1.41.14-1_arm.ipk
Configuring e2fslibs
Configuring glib
Configuring mc
Configuring slang
Successfully terminated.
DiskStation>

mc

Ktoś nieświadomy może zapytać: ale co mi to daje? Ano to, że możemy “przerobić” naszego NASa na “pełnosprawnego” linkusa. Dostajemy dostęp do ogromnej liczby pakietów, z góry uprzedzam jednak, nie da się nic skompilować, tu już musimy poczekać na pełnego bootstrapa. Miłego dłubania :)

Oceń ten artykuł:
[Total: 7 Average: 4.1]

Dodaj komentarz

Required fields are marked *.