facebooktwittertwitterRSS csatorna

Weblapkészítést, keresőoptimalizálást vállalok. Bővebben...

Open-wrt csomag telepítése külső meghajtóra

Speeedfire, 2010-05-16 17:10:53

 

Mint azt biztos többen is tapasztalták elég hamar kevés lehet a routerünk "tárhelye".
Van rá megoldás.

Elöszőr is kell egy külső meghajtó, ami lehetőleg ext2/3 fájlrendszerben van formázva.
Fel kell csatolni egy tetszőleges pontra. Nálam ez a /home/progik mappa.
Jó ha van swap is, így több memóriával tud bajlódni a rendszer.

Ssh-n jelentkezzünk be a routerbe.
Majd a következő paranccsal szerkesszük meg az opkg.conf fájlt.

nano /etc/opkg.conf

Majd a következő sor adjuk hozzá:

dest kulso /home/progik

Természetesen ez lehet bármi más is.
pl: dest usb /mnt/usb

Ez a lényeges része a munkánknak.
Telepíteni a meghajtóra így tudunk:

opkg -dest kulso install csomagneve

Törölni meg így:

opkg -dest kulso remove csomagneve

Van még egy dolog amit meg kell csinálnunk.
Létre kell hozni egy fájlt a /bin mappa alatt opkg-link néven.

nano /bin/opkg-link

A tartalma a következő legyen:

#!/bin/sh

COMMAND=$1
PACKAGE=$2
setdest () {
        for i in `grep dest /etc/opkg.conf | cut -d ' ' -f 3`; do
                if [ -f $i/usr/lib/opkg/info/$PACKAGE.list ]; then
                        DEST=$i
                fi
        done
        if [ "x$DEST" = "x" ]; then
                echo "Can not locate $PACKAGE."
                echo "Check /etc/opkg.conf for correct dest listings";
                echo "Check name of requested package: $PACKAGE"
                exit 1
        fi
}
addlinks () {
        setdest;
        cat $DEST/usr/lib/opkg/info/$PACKAGE.list | while read LINE; do
                SRC=$LINE
                DST=`echo $SRC | sed "s|$DEST| "`
                DSTNAME=`basename $DST`
                DSTDIR=`echo $DST | sed "s|$DSTNAME\$| "`
                test -f "$SRC"
                if [ $? = 0 ]; then
                        test -e "$DST"
                        if [ $? = 1 ]; then
                                mkdir -p $DSTDIR
                                ln -sf $SRC $DST
                        else
                                echo "Not linking $SRC to $DST"
                                echo "$DST Already exists"
                        fi
                else
                        test -d "$SRC"
                        if [ $? = 0 ]; then
                                test -e $DST
                                if [ $? = 1 ]; then
                                        mkdir -p $DST
                                else
                                        echo "directory already exists"
                                fi
                        else
                                echo "Source directory $SRC does not exist"
                        fi
                fi
        done
}
removelinks () {
        setdest;
        cat $DEST/usr/lib/opkg/info/$PACKAGE.list | while read LINE; do
                SRC=$LINE
                DST=`echo $LINE | sed "s|$DEST| "`
                DSTNAME=`basename $DST`
                DSTDIR=`echo $DST | sed "s|$DSTNAME\$| "`
                test -f $DST
                if [ $? = 0 ]; then
                        rm -f $DST
                        test -d $DSTDIR && rmdir $DSTDIR 2>/dev/null
                else
                        test -d $DST
                        if [ $? = 0 ]; then
                                rmdir $DST
                        else
                                echo "$DST does not exist"
                        fi
                fi
        done
}
mountdest () {
        test -d $PACKAGE
        if [ $? = 1 ]; then
                echo "Mount point does not exist"
                exit 1
        fi
        for i in $PACKAGE/usr/lib/opkg/info/*.list; do
                $0 add `basename $i .list`
        done
}
umountdest () {
        test -d $PACKAGE
        if [ $? = 1 ]; then
                echo "Mount point does not exist"
                exit 1
        fi
        for i in $PACKAGE/usr/lib/opkg/info/*.list; do
                $0 remove `basename $i .list`
        done
}
case "$COMMAND" in
  add)
        addlinks
  ;;
  remove)
        removelinks
  ;;
  mount)
        mountdest
  ;;
  umount)
        umountdest
  ;;
   *)
        echo "Usage: $0  "
        echo "       Commands: add, remove, mount, umount"
        echo "       Targets: , "
        echo "Example:  $0 add kismet-server"
        echo "Example:  $0 remove kismet-server"
        echo "Example:  $0 mount /mnt/usb"
        echo "Example:  $0 umount /mnt/usb"
        exit 1
        ;;
esac 


 

Majd mentjük és futtathatóvá tesszük.

chmod a+x /bin/opkg-link

Ha egy csomagot felraktunk utána ki kell adni a következő parancsot.

opkg-link mount /home/progik

A /home/progik az amit az opkg.conf fájlban is megadtunk.

Még 1-2 parancs:

Egy csomag linkelése:

opkg-link add kismet-server

Egy csomag linkjének törlése:

opkg-link remove kismet-server

Minden linkelt csomag törlése:

opkg-link umount /mnt/usb

forrás

Tóth Szabi

Csatolmányok
ÁllományMéret
121-opkg-lin2 KB

(#1) kacsa 7 éve
kacsa
Hsz: 1
(Tag)

Szia,

neked a logreadnel kjelent mar meg valaha

"UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY."

ez minden indulasnal megjelenik a mountolas utan, ujraformazassal se szabadultam tole

mi lehet a gond?


(#2) Figura 7 éve
Figura
Hsz: 2
(Tag)

Sziasztok.
Szeretnék segítséget kérni mindent úgy csináltam ahogy a leírásban van de a külső meghajtóra telepített programokat nem tudom elindítani. Ezt az üzenetet kapom mindig. Nagyon szépen kérlek benneteket segítsetek mert már kezdek belefáradni.

UI.:Azt szeretném még megkérdezni, hogy a csomagok linkelését, hogyan és mikor kell alkalmazni?

sed: unmatched '|'
BusyBox v1.15.3 (2010-04-06 03:14:11 CEST) multi-call binary

Usage: basename FILE [SUFFIX]

Strip directory path and suffixes from FILE.
If specified, also remove any trailing SUFFIX.

sed: unmatched '|'
BusyBox v1.15.3 (2010-04-06 03:14:11 CEST) multi-call binary

Usage: mkdir [OPTIONS] DIRECTORY...

Create DIRECTORY

Options:
-m Set permission mode (as in chmod), not rwxrwxrwx - umask
-p No error if existing, make parent directories as needed

root@OpenWrt:~#


(#3) CAM5264 6 éve
CAM5264
Hsz: 6
(Tag)

Ugyanez van nálam is :|
elég kevés megoldást jelentő hozzászólás van itt amúgy...

Egy fórumon olvastam ugyanezt a kódot, de itt annyi eltérés van az ottanitól, hogy a végére kell még ez is
exit 0

Úgy néz ki, hogy ez a hiányosság volt a megoldás kulcsa... bár valamiért a samba még mindig nem indul el, pedig hibaüzenetet nem kaptam..


(#4) Japanese boy 6 éve
Japanese boy
Hsz: 1
(Tag)

Nálam is jött az unmatched hibaüzenet, ráadásul telerakta softlinkekkel az aktuális munkakönyvtárat. A hiba a szkript 20., 22., 52. és 54. sorában volt, mégpedig a sed parancs paramétereit lezáró delimiter karakterek ("|") hiányoztak. Az alábbi tartalommal a szkript hibamentesen lefutott:

COMMAND=$1
PACKAGE=$2
setdest () {
for i in `grep dest /etc/opkg.conf | cut -d ' ' -f 3`; do
if [ -f $i/usr/lib/opkg/info/$PACKAGE.list ]; then
DEST=$i
fi
done
if [ "x$DEST" = "x" ]; then
echo "Can not locate $PACKAGE."
echo "Check /etc/opkg.conf for correct dest listings";
echo "Check name of requested package: $PACKAGE"
exit 1
fi
}
addlinks () {
setdest;
cat $DEST/usr/lib/opkg/info/$PACKAGE.list | while read LINE; do
SRC=$LINE
DST=`echo $SRC | sed "s|$DEST||"`
DSTNAME=`basename $DST`
DSTDIR=`echo $DST | sed "s|$DSTNAME\$||"`
test -f "$SRC"
if [ $? = 0 ]; then
test -e "$DST"
if [ $? = 1 ]; then
mkdir -p $DSTDIR
ln -sf $SRC $DST
else
echo "Not linking $SRC to $DST"
echo "$DST Already exists"
fi
else
test -d "$SRC"
if [ $? = 0 ]; then
test -e $DST
if [ $? = 1 ]; then
mkdir -p $DST
else
echo "directory already exists"
fi
else
echo "Source directory $SRC does not exist"
fi
fi
done
}
removelinks () {
setdest;
cat $DEST/usr/lib/opkg/info/$PACKAGE.list | while read LINE; do
SRC=$LINE
DST=`echo $LINE | sed "s|$DEST||"`
DSTNAME=`basename $DST`
DSTDIR=`echo $DST | sed "s|$DSTNAME\$||"`
test -f $DST
if [ $? = 0 ]; then
rm -f $DST
test -d $DSTDIR && rmdir $DSTDIR 2>/dev/null
else
test -d $DST
if [ $? = 0 ]; then
rmdir $DST
else
echo "$DST does not exist"
fi
fi
done
}
mountdest () {
test -d $PACKAGE
if [ $? = 1 ]; then
echo "Mount point does not exist"
exit 1
fi
for i in $PACKAGE/usr/lib/opkg/info/*.list; do
$0 add `basename $i .list`
done
}
umountdest () {
test -d $PACKAGE
if [ $? = 1 ]; then
echo "Mount point does not exist"
exit 1
fi
for i in $PACKAGE/usr/lib/opkg/info/*.list; do
$0 remove `basename $i .list`
done
}
case "$COMMAND" in
add)
addlinks
;;
remove)
removelinks
;;
mount)
mountdest
;;
umount)
umountdest
;;
*)
echo "Usage: $0 "
echo " Commands: add, remove, mount, umount"
echo " Targets: , "
echo "Example: $0 add kismet-server"
echo "Example: $0 remove kismet-server"
echo "Example: $0 mount /mnt/usb"
echo "Example: $0 umount /mnt/usb"
exit 1
;;
esac


Szólj hozzá:

A hozzászóláshoz belépés/regisztráció szükséges.