1 (edytowany przez Tom0000 2007-04-05 08:44:07)

Temat: /root na zewnetrznym flashu w asusie 500

ver 1.1

Miejsca w ruterku zawsze za malo. Podlaczmy wiec pamiec flash poprzez USB i przeniesmy na nia root-a.
We flashu wewnetrznym trzymajmy tylko to to co niezbedne:
- system (white russion 0.9)
- moduly potrzebne odpaleniu usb
- aplikacje konieczne do formatowania dysku
- jakis kompresor do robienia backupu i odtwarzania dysku
- ftp demon aby plik backupu mozna bylo kopiowac po sieci
- no i ntp coby logowac kiedy byly wykonywane backupy

Jesli mamy swiezo zainstalowany system to nie musimy robic firstboot, w przeciwnym wypadku najlepij wyczyscic caly /jffs tym sposobem.

> firstboot

Polecenie to zainicjuje na partycje /jffs flasha wewnetrznego usuwajac wszystko to , co do tej pory dodatkowo zainstalowalismy i skonfigurowalismy.
Znajdziemy sie w sytuacji identycznej jak tuz po instalacji systemu. Tak wiec po reboocie logujemy sie telnetem, zmieniamy haslo:
passwd
i ponownie logujemy sie juz za pomoca ssh.
Do  podzialu flasha bedziemy potrzebowac fdisk oraz formatery.

cp /rom/etc/ipkg.conf /etc/ipkg.conf
echo "src rc5-backports http://downloads.openwrt.org/backports/rc5" >> /etc/ipkg.conf
ipkg update

i dalej

#instalujemy obsluge usb:
ipkg install kmod-usb-core                                                #usbcore    
ipkg install kmod-usb-uhci                                                #uhci
ipkg install kmod-usb2                                                    #ehci-hcd
ipkg install kmod-usb-storage                                            #usb-storage
#instalujemy system plikow uzywany przez windows w memorystickach:
ipkg install kmod-vfat                                                    #vfat
#instalujemy system plikow linuxa:
ipkg install kmod-ext2                                                    #ext2
ipkg install kmod-ext3                                                    #ext3
#instalujemy programy do obslugi flasha:
ipkg install fdisk
ipkg install e2fsprogs
#instalujemy ftp i zegarek
ipkg install vsftpd
ipkg install ntpclient
reboot

aby ftp uruchamial sie po starcie systemu

ln -s /etc/init.d/vsftpd /etc/init.d/S90vsftpd
ln -s /proc/mounts /etc/mtab

Jesli flash byl sformatowany pod windows odmontowujemy go:

umount /mnt/disc0_1

i dalej wszystkie kolejne partycje jesli sa.
Flasha dzielimy na partycje jakie sa nam potrzebne:

fdisk /dev/scsi/host0/bus0/target0/lun0/disc

a nastepnie partycje formatujemy:

mke2fs -j /dev/scsi/host0/bus0/target0/lun0/part1
# i od razu druga
mke2fs -j /dev/scsi/host0/bus0/target0/lun0/part2

Kopiowanie na zewnetrzny flash:

mount -t ext3 /dev/scsi/host0/bus0/target0/lun0/part1 /mnt
mkdir /tmp/root
mount -o bind /rom /tmp/root
cp /tmp/root/* /mnt -a
umount /tmp/root
umount /mnt

Podmiana pliku init:

rm /sbin/init

i sam ten plik w internalu

#!/bin/sh
# /sbin/init in internal flash
boot_dev="/dev/scsi/host0/bus0/target0/lun0/part1"
sec_dev="/dev/scsi/host0/bus0/target0/lun0/part2" 
# load all needed modules 
#for module in usbcore uhci scsi_mod sd_mod usb-storage ehci-hcd jbd ext3 # - use this line for better transfer over USB
for module in usbcore uhci scsi_mod sd_mod usb-storage jbd ext3                 # - or use this line if you see problems with previous line
do
  insmod $module
done

# if disk is slow let him init
sleep 4s
mount "$boot_dev" /mnt

# if all ok (usb exists and last run external has seen lan), do the pivot root
if [ -x /mnt/sbin/init -a ! -e /mnt/sbin/donotrunexternal ]
then
      mount -o move /proc /mnt/proc && \
      pivot_root /mnt /mnt/mnt && {
            mount -o move /mnt/dev /dev
            mount -o move /mnt/tmp /tmp
            mount -o move /mnt/jffs2 /jffs2 2>&-
            mount -o move /mnt/sys /sys 2>&-
      }
      mount $sec_dev /mnt/disc0_2 
else # if something wrong, clean changes
    umount /mnt
fi

# run the real init on the end (from USB hopefully)
exec /bin/busybox init

Plik ten trzeba zrobic wykonywalnym

chmod 755 /sbin/init

http://wiki.openwrt.org/UsbStorageHowto … 9fc64dc92b

Po rebbocie system odpala sie z externala. Wyglada to tak:

df

Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/root                 1024      1024         0 100% /mnt/rom
none                     15256        32     15224   0% /tmp
/dev/mtdblock/4           2240      1112      1128  50% /mnt/jffs
/jffs                     1024      1024         0 100% /mnt
/dev/scsi/host0/bus0/target0/lun0/part1   232641     12198    208431   6% /mnt/mnt/disc0_1
/dev/scsi/host0/bus0/target0/lun0/part1   232641     12198    208431   6% /
/mnt/dev/scsi/host0/bus0/target0/lun0/part2   723588     31736    655096   5% /mnt/disc0_2

Mozna powiedziec , ze wszystko jest w przadku jesli /jffs jest zamontowana na /mnt a nie na / .

Warto powtorzyc instalacje wszyskich do tej pory zainstalowanych pakietow i dodatkowo nowe:

ipkg install kmod-usb-core
ipkg install kmod-usb-uhci
#ipkg install kmod-usb2    - nie instalowac bo powoduje niestabilnosc systemu! dlaczego?
ipkg install kmod-usb-storage
ipkg install kmod-vfat                                                    
#ipkg install kmod-ext2    - nie powinien byc potrzebny
ipkg install kmod-ext3
ipkg install fdisk
ipkg install e2fsprogs
ipkg install vsftpd
ipkg install ntpclient
no i nowe:
ipkg install http://ftp.berlios.de/pub/xwrt/webif_latest_stable.ipk
ipkg install http://ftp.berlios.de/pub/xwrt/webif_latest_stable.ipk        #www
ipkg install ez-ipupdate.list                                    #dyndns client
ipkg install samba                                       #samba
ln -s /etc/init.d/samba /etc/init.d/S90samba

Ponizszy skrypt po wystartowaniu systemu z externala sprawdza czy dzalaja porty LAN - czyli czy z ssh bedzie sie mozna dostac do rutera. Jesli nie , to jest ustawiana flaga, ktora spowoduje przy nastepnym reboocie ,ze system wystartuje z internala. Aby startowal z externala trzeba ja skasowac:

rm /mnt/disc0_1/sbin/donotrunexternal

albo stworzyc sobie takie 2 helperki:

#!/bin/sh
# /sbin/bootexternal.sh (place it in internal flash)
rm /mnt/disc0_1/sbin/donotrunexternal 
reboot
#!/bin/sh
# /sbin/bootinternal.sh (place it in external flash)
touch /sbin/donotrunexternal 
reboot

W skrypcie nalezy wstawic adresy ip sprzetu w swoim lanie, ktory chodzi nonstop aby bylo co pingowac. (Zakladam ze podobnie jak ja, wiekszosc wstawi sobie flasha do wnetrza rutera i w przypadku uwalu interfejsow LAN bedzie musiala albo zdac sie na ten skrypt, albo rozkrecac obudowe i wyciagac memory sticka.) Jesli memory stick bedzie wetkniety do usb na zewnatrz obudowy, to mozna to pominac. Wyjecie memorystika z usb i zbootowanie routera spowoduje podniesienie sie go na systemie z internal flasha , ktory napeno nie bedzie uszkodzony.
Skrypt uruchamia sie wraz z systemem. Nastepuje pingowanie zdefiniowanych adresow ip. Jesli choc jeden odpowie to znaczy ze porty LAN dzialaja i wrazie czego mozna sie do rutera dostac za pomoca ssh. Jesli nie ma odpwiedzi, tworzony jest semafor , ktory spowoduje , ze przy nastepnym reboocie system odpali sie z internala. Skrypt zawiesza dzialanie na 1000 sekund, po czym znow pinguje adresy. Jesli jest ok to kasuje semafor i konczy dzialanie. Pozwala to zabezpieczyc sie przez wlaczeniem rutera bez podlaczonego kabla ethernet i dolaczenia go potem. JEsli jednak wlaczymy ruter bez kabla i nie podlaczymy go do sieci przed wylaczeniem rutera, to przy nastepnym wlaczeniu rutera odpali sie z wewnetrznego flasha. Aby powrocic do externala nalezy w takim przypadku wykonac pod ssh:

bootexternal.sh

/etc/init.d/S49islanifok w externalu

#!/bin/sh
# Run it in external flash. If router will not be able ping one from list , it can be possible LAN if does not work - set flag for boot from internal
CHECKLATER="CHECKLATER"
PROBLEMFLAG="/sbin/donotrunexternal"
OKTOFIND="0% packet"
ADDRTOTEST1="192.168.0.23"
ADDRTOTEST2="192.168.0.33"
ADDRTOTEST3="192.168.0.22"
ADDRTOTEST4="checkip.dyndns.org"
ADDRTOTEST5="www.google.com"

AllIsOk()
{
    [ -e $PROBLEMFLAG ] && rm -f $PROBLEMFLAG
    exit 0
}

NoPing()
{
    [ ! -e $PROBLEMFLAG ] && echo "no ping to LAN" > $PROBLEMFLAG
    /etc/init.d/S49islanifok CHECKLATER &
    exit 0
}

[ "$1" = "$CHECKLATER" ] && sleep 1000
ISOK=`ping -c 1 $ADDRTOTEST1 | grep "$OKTOFIND"`
[ "$ISOK" != "" ] && AllIsOk
ISOK=`ping -c 1 $ADDRTOTEST2 | grep "$OKTOFIND"`
[ "$ISOK" != "" ] && AllIsOk
ISOK=`ping -c 1 $ADDRTOTEST3 | grep "$OKTOFIND"`
[ "$ISOK" != "" ] && AllIsOk
ISOK=`ping -c 1 $ADDRTOTEST4 | grep "$OKTOFIND"`
[ "$ISOK" != "" ] && AllIsOk
ISOK=`ping -c 1 $ADDRTOTEST5 | grep "$OKTOFIND"`
[ "$ISOK" != "" ] && AllIsOk
NoPing

exit 0
chmod 755 /etc/init.d/S49islanifok

Ponizszy skrypt ma za zadanie zautomatyzowac robienie i odtwarzanie backupu externala. Zalozenie ze external jest na /mnt/disc0_1 a miejsce na przechowywanie backupow na /mnt/disc0_2 .

/sbin/backup.sh do internala

#!/bin/sh 
# /sbin/backup.sh - script for backup/restore internal and external flash
# prepared for call it only from internal flash
# be sure /dev/scsi/host0/bus0/target0/lun0/part1 is your external flash

STARTTIME=`date "+%d.%m.%Y %H:%M"` 
echo "backup.sh $1 $2 $3 starts at $STARTTIME"
case $1 in 
    backup) 
        [ ! -e /mnt/disc0_2/asus_backup ] && mkdir /mnt/disc0_2/asus_backup 
        case $2 in
        #internal)
        #    [ ! -e /mnt/disc0_2/asus_backup/internal ] && mkdir /mnt/disc0_2/asus_backup/internal 
        #    [ -e /mnt/disc0_2/asus_backup/internal/wrt-backup-internal.trx ] && mv -f /mnt/disc0_2/asus_backup/internal/wrt-backup-internal.trx /mnt/disc0_2/asus_backup/internal/wrt-backup-internal.trx.old 
        #    [ -e /mnt/disc0_2/asus_backup/internal/wrt-backup-nvram.bin ]    && mv -f /mnt/disc0_2/asus_backup/internal/wrt-backup-nvram.bin /mnt/disc0_2/asus_backup/internal/wrt-backup-nvram.bin.old 
        #    [ -e /mnt/disc0_2/asus_backup/internal/nvram-list ]              && mv -f /mnt/disc0_2/asus_backup/internal/nvram-list /mnt/disc0_2/asus_backup/internal/nvram-list.old 
        #       
        #    dd if=/dev/mtdblock/1 > /mnt/disc0_2/asus_backup/internal/wrt-backup-internal.trx 
        #    dd if=/dev/mtdblock/3 > /mnt/disc0_2/asus_backup/internal/wrt-backup-nvram.bin 
        #    nvram show > /mnt/disc0_2/asus_backup/internal/nvram-list 
        #;;
        external)
            [ ! -e /mnt/disc0_2/asus_backup/external ] && mkdir /mnt/disc0_2/asus_backup/external
            if [ "$3" = "" ]
            then
                EXTERNALNAME="external"
            else
                EXTERNALNAME="$3"
            fi
            [ -e /mnt/disc0_2/asus_backup/external/$EXTERNALNAME.tar.gz ] && mv -f /mnt/disc0_2/asus_backup/external/$EXTERNALNAME.tar.gz /mnt/disc0_2/asus_backup/external/$EXTERNALNAME.tar.gz.old
            [ ! -e /tmp/root ] && mkdir /tmp/root 
            mount -o bind /mnt/disc0_1 /tmp/root
            cd /tmp/root
            tar -c -f - . | gzip - > /mnt/disc0_2/asus_backup/external/$EXTERNALNAME.tar.gz 
            cd /
            umount /tmp/root
        ;;
        esac 
    ;; 
    restore) 
        case $2 in
        #internal)
        #    [ -e /mnt/disc0_2/asus_backup/internal/wrt-backup-internal.trx ] && mtd -r write /mnt/disc0_2/asus_backup/internal/wrt-backup-internal.trx linux 
        #;;
        external)
            # Be shure if disc0_1 is your disc with external firmware ! Call this only if router is booted from internal flash !
            if [ -e /mnt/disc0_2/asus_backup/external/external.tar.gz ]                                        # only if is something to use
            then
               [ "$3" != "" ] && /sbin/backup.sh backup external emergency                                  # create backup of external
               umount /mnt
               umount /mnt/disc0_1                                                                            # prepare external 
               mke2fs -j /dev/scsi/host0/bus0/target0/lun0/part1                                            # clean all on external
               mount /dev/scsi/host0/bus0/target0/lun0/part1 /mnt/disc0_1                                   # mount external 
               cd /mnt/disc0_1
               gzip -cd /mnt/disc0_2/asus_backup/external/external.tar.gz | tar -x -f - -C /mnt/disc0_1      # fill external using stored data
               cd /
            fi
        ;;
        extinitial)
            # Be shure if disc0_1 is your disc with external firmware ! Call this only if router is booted from internal flash !
            [ "$3" != "" ] && /sbin/backup.sh backup external emergency                                  # create backup of external
            umount /mnt/disc0_1                                                                             # prepare external 
            mke2fs -j /dev/scsi/host0/bus0/target0/lun0/part1                                             # clean all on external
            mount -t ext3 /dev/scsi/host0/bus0/target0/lun0/part1 /mnt                                   # mount external 
            [ ! -e /tmp/root ] && mkdir /tmp/root
            mount -o bind /rom /tmp/root
            cp /tmp/root/* /mnt -a
            umount /tmp/root
            umount /mnt
            mount /dev/scsi/host0/bus0/target0/lun0/part1 /mnt/disc0_1
        ;;
        esac
    ;; 
    *) 
        #echo "baskup.sh [backup|restore] [internal|external||extinitial] [||emergency]- script for create firmware file for program internal or external (/mnt/disc0_1) flash and store on /mnt/disc0_2 for use only if firmware from internal flash is run" 
        echo "baskup.sh [backup|restore] [external||extinitial] [|emergency]- script for create firmware file for program external (/mnt/disc0_1) flash and store on /mnt/disc0_2 for use only if firmware from internal flash is run" 
    ;; 
esac 
ENDTIME=`date "+%d.%m.%Y %H:%M"` 
echo "The script was called $STARTTIME with params: 1:$1, 2:$2, 3:$3 and ended $ENDTIME" >> /mnt/disc0_2/asus_backup/backup.log 
echo "backup.sh $1 $2 $3 ends at $STARTTIME"
exit 0
chmod 755 /sbin/backup.sh

Mala podpowiedz dla uzytkownikow windows. Przytoczone skrypty kopiujemy CTRL+C i wklejamy do UltraEdita CTRL+V, menu->Edit->Hex Edit, CTRL + Home, CTRL + r, Find what: 0d, Replace with: 20, Replace All, CTRL + s i zapisujemy skrypt wpelni kompatybilny z linuxem.

2

Odp: /root na zewnetrznym flashu w asusie 500

Jest jakiś szczególny powód dla którego używasz backportów z rc5 a nie 0.9?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: /root na zewnetrznym flashu w asusie 500

tylko tam sa narzedzia do formatowania i fdisk

4

Odp: /root na zewnetrznym flashu w asusie 500

Faktycznie nie ma. Tutaj też są jak by co: http://downloads.openwrt.org/snapshots/ … /packages/

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5 (edytowany przez Tom0000 2007-02-24 21:16:18)

Odp: /root na zewnetrznym flashu w asusie 500

Idea skryptu /etc/init.d/S96canrunexternal jest przekazanie internalowi informacji , ze konfiguracja w externalu powalila sie i nie mozna sie do niego dostac. Sluzy do tego flaga /sbin/donotrunexternal, jesli istnieje, system nie przelaczy roota na externala. Czemu ? Po prostu mam memorystika we wnetrzu routera i dostep do niego po rozkreceniu obudowy.
To czy dzialaja LANy w routerze sprawdzam pingujac otoczenie. Bedzie to dzialac jesli w otoczeniu zdefiniowane urzadzenia beda dzialac. Ewentualnie mozna jeszcze pingowac urzadzenia po wanie ... ale
- jesli bedzie modem eternet to pewnie LAN-WAN jesli bedzie dzialal to i LAN lany tez
- ale jesli modem usb to moze to dzialac a LANy nie
- poza tym test przeprowadzam w init.d wiec polaczenie z neostrada pewnie nie bedzie jeszcze dzialac

Nie bardzo moge odczekac z przeprowadzeniem tego testu az modem nawiaze polaczenie , bo zaobserwowalem ze czesto jest uwal i router natychmiast sie resetuje. Tak wiec musze bardzo szybko przeprowadzic test aby zdarzyc ustawic flage zanim router sie zrestartuje.

Po drugie jesli nawet w lanie bede mial jakis komputer zawsze dzialajacy , to co w przypadku przerwy w zasilaniu z elektrowni jest klopot. Po przywroceniu zasilania router na pewno wstanie szybciej , nic nie spinguje - ustawi flage ... tylko dobre to ze nie zresetuje sie. Ale przy nastepnym restarcie routera , flaga bedzie i system z externala juz sie nie uruchomi , a odpali sie z internala gdzie jest tylko podstawowa konfiguracja, bo na 2M jffs to praktycznie nic nie wejdzie.

Skrypt moglby odpalic np. sam siebie jako watek ze sleepem np. 10 minutowym. Po 10 minutach jak bedzie sie pingowac moglby skasowac flage .... ale moze ktos ma inne pomysly ?

6

Odp: /root na zewnetrznym flashu w asusie 500

Całkiem OT: do czego to ma służyć? Nośnik zewnętrzny rozumiem, a pingowanie i sprawdzanie sieci?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

7

Odp: /root na zewnetrznym flashu w asusie 500

Jak cos sie zrobi zle, to ta bestia zamiast uwalic tylko jeden demon , moze jakas wybrana funkcjonalnosc, to nie , to od razu wpada w petle restartow. Nie da sie do niej zalogowac. Flaga ktora steruje wspomniany skrypt , zapobiegnie uruchomieniu systemu z externala, co pozwoli dostac sie do externala i go poprawic / odtworzyc.  Jest to potrzebne jesli external jest we wnetrzu obudowy routera albo jesli grzebiemy w nim zdalnie.

8

Odp: /root na zewnetrznym flashu w asusie 500

Tom0000 napisał/a:

Po drugie jesli nawet w lanie bede mial jakis komputer zawsze dzialajacy , to co w przypadku przerwy w zasilaniu z elektrowni jest klopot. Po przywroceniu zasilania router na pewno wstanie szybciej , nic nie spinguje - ustawi flage ... tylko dobre to ze nie zresetuje sie. Ale przy nastepnym restarcie routera , flaga bedzie i system z externala juz sie nie uruchomi , a odpali sie z internala gdzie jest tylko podstawowa konfiguracja, bo na 2M jffs to praktycznie nic nie wejdzie.

Skrypt moglby odpalic np. sam siebie jako watek ze sleepem np. 10 minutowym. Po 10 minutach jak bedzie sie pingowac moglby skasowac flage .... ale moze ktos ma inne pomysly ?

A może zamiast używać automatyki przejść na sterowanie ręczne?

W przypadku "zwiechy" restart routera z wciśniętym przyciskiem ezsetup, sprawdzenie stanu przycisku i gdy wciśnięty (można by zasygnalizować akcję ledami) start z internala....

9

Odp: /root na zewnetrznym flashu w asusie 500

#Tom0000: jak rozwiązałeś przełączanie bootowania na internal?

10

Odp: /root na zewnetrznym flashu w asusie 500

Chyba w premium masz wiecej niz jeden przycisk smile . Ja w delux mam niestety tylko reset.
Z drugiej strony , nie masz mozliwosci wlozenia dodatkowego flasha do srodka.
Tak jak opisalem, na poziomie S98 odpalam testowanie pingiem komputerow w lanie (ewentualnie w wanie). Jak jest ok, to kasuje semafor i przechodze dalej , jak nie  to ustawiam semafor  zostawiam watek w pamieci na kilka minut , po tym czasie testowanie pinga na nowo i znow moment decyzyjny jak na poczatku tego zdania.
Jak system sie bootuje to w /sbin/init zsprawdzam obecnosc semafora i jak jest bootuje z internal flasha a jak nie z zewnetrznego.

Jesli twoj flash bedzie wetkniety do jednego z standardowych portow usb, to mozesz ten problem pominac. Jak wyjmiesz go z portu usb to system i zbootuje sie z internal flasha.

11 (edytowany przez jkdobro 2007-03-07 17:35:17)

Odp: /root na zewnetrznym flashu w asusie 500

Postanowiłem zrobić sobie kopie systemu na externalu - taką do eksperymentowania. W razie czego wyłączam externala i system powraca do stanu dziewiczego..... smile

Podjęte działania.
- USB storage 256MB zformatowany na EXT2.
- Wykonana kopia systemu. Zrobiłem trochę inaczej niż opisywał Tom0000, ponieważ chciałem mieć na externalu dokładnie taki sam system jak obecnie. Dlatego podmontowałem nie /rom lecz / (root) i wykonałem kopię na storage.
- Stworzyłem /sbin/init (z małymi modyfikacjami - bez semaforka) i uzupełniłem o ładowanie potrzebnych modułów (ext2)
- wykonałem reboot i ................. kiszka - system wisi (nie wystartował z externala)


W tym miejscu kilka pytań.
- Co po kolei jest uruchamiane w systemie zanim odpali się /sbin/init ?
- Które z modułów są niezbędne na etapie wykonywania /sbin/init ? W/g przykładu ładowane są: usbcore, uhci, scsi_mod, sd_mod, usb-storage, jbd, ext2, ext3. Czy wszystko jest potrzebne? Może coś się gryzie?
- Do czego jest moduł jbd ? EDIT: To jest chyba do obsługi księgowania w ext3....
- Jak zdebugować pracę skryptu /sbin/init aby dowiedzieć się do którego miejsca dochodzi (kiedy zaczyna wisieć)?

pozdrawiam jkdobro

12

Odp: /root na zewnetrznym flashu w asusie 500

Wydaje mi sie ,ze kopiujac tak jak to zrobiles masz nie taka strukture katalogow jak byc powinna po firstbucie.
Jak chesz miec to samo, to po skopiowaniu rom- a, skopiuj na to /jffs , ale ja tego nie testowalem.
pamietaj , ze nie masz na sticku ani squasfs ani jffs , ale extX i identyczna strukture systemu jak na twardzielu.
( proc i dev to tez nie jest nic do kopiowania )

To co jest w przykladzie w init to jest to co niezbedne. Probowalem do tego dodac usb2 i walilo sie.

Co do debugowania pracy skryptu : po kazdej komendzie dodaj pisanie echem do jakiegos pliku w np. /jffs . Pamietaj jednak , aby sciezka istniala zarowno z podmienionym rootem jak i niepodmienionym.

13

Odp: /root na zewnetrznym flashu w asusie 500

Struktura katalogów jest dokładnie taka sama jak przy kopiowaniu z /rom (oczywiści są katalogi, które zostały dodane w późniejszym czasie). Raczej wykluczam tą możliwość, ale jeszcze to sprawdzę.

Ponieważ externala mam na ext2 dołożyłem moduł do jego obsługi, pozostawiając ext3 i jbd.

Następna próba będzie bez ext3 i jbd oraz z raportowaniem do pliku (echo "opis" > /jffs/init.log). Zobaczymy co pokaże log.

14 (edytowany przez Tom0000 2007-03-07 22:57:28)

Odp: /root na zewnetrznym flashu w asusie 500

Chyba zle poradzilem. /jffs to odwzorowanie partycji , ktora mozna modyfikowac jako root, wiec plik do ktorego bedziesz pisal powinien znalezc sie gdziekolwiek z wyjatkiem /dev /proc /rom i oczywiscie /tmp /var, a i tak pojawi sie w /jffs. Jak pamietam , gdy pisalem bezposrednio do /jffs to pojawial mi sie rozjaz tego co mialem w "roocie" i w /jffs - to samo pisane do /roota i system sobie z tym radzil.
Poza tym pamietaj , ze po przekopiowaniu /bin/plik i /jffs/bin/plik beda juz oddzielnymi kopiami tego samego pliku i ten w /jffs nigdy nie bedzie juz przez system uzywany.

Bezpieczniej kopiowac tylko rom, bo to co tam jest napewno bedzie dzialac. Wszystko poza /rom  moze wskazywac juz na cos innego (np. /sbin/init) i po przeniesieniu bedzie sprawiac nieoczekiwane efekty.

Co do externala w ext2 ... podczas tej  zabawy formatowalem flasha z 10 razy. Zawsze to lepiej i szybciej niz kasowanie wszystkiego w inny sposob po eksperymentach z kopiowaniem pomiedzy flashami.  Nie wiem czy ext2 ma sens. Napewno ext3 jest ukierunkowany na dysk hd, ale nie mysle aby z tego powodu flash nie powinien go uzywac.

15 (edytowany przez strazak 2007-03-24 11:54:06)

Odp: /root na zewnetrznym flashu w asusie 500

Jestem po 2 tygodniowym obyciu sie z moim nowym Asuskiem. Podstawa dla mnie byla obsluga torrentow. Probowalem Olega, ale to nie bylo to. Jedynym sensownym rozwiazaniem byl dla mnie OpenWTR. Troszeczke inaczej rozwiazalem strukture podzialu dysku, bo na penie 2Gb mam 2 partycje. Pierwsza to swap 512 Mb, druga 1,5Gb dla systemu. Torrenty przechowuje na HDD 80Gb, zarzadzane przez SCTCS. Pomimo tego, ze Dreama 7000 mam juz ponad 3 lata, w swiecie linuxowym to raczej bylem malo obyty.
Teraz do rzeczy: system wstaje w internalu - przedkosc po ftp 2600Kb/s, jesli z externala 600Kb/s. Dodanie obslugi USB2 na externalu rozwala system. Jedynie danie obslugi USB2 podczas startu pozwala zachowac te przedkosci, tzn:
Tom0000: "for module in usbcore uhci scsi_mod sd_mod usb-storage jbd ext3 "
z dodanym USB2: "for module in usbcore uhci scsi_mod sd_mod usb-storage ehci-hcd jbd ext3"
Nie zauwazylem teraz niestabilnosci, a predkosci sa znowy normalne (jak na ten router).

16

Odp: /root na zewnetrznym flashu w asusie 500

strazak napisał/a:

Dodanie obslugi USB2 na externalu rozwala system. Jedynie danie obslugi USB2 podczas startu pozwala zachowac te przedkosci, tzn:
Tom0000: "for module in usbcore uhci scsi_mod sd_mod usb-storage jbd ext3 "
z dodanym USB2: "for module in usbcore uhci scsi_mod sd_mod usb-storage ehci-hcd jbd ext3"
Nie zauwazylem teraz niestabilnosci, a predkosci sa znowy normalne (jak na ten router).

Powierdzam twoje doświadczenia. Doinstalowanie lub przeładowanie modułu USB2 z odpalonym systemem na externalu prowadzi do wywalenia systemu. Miałem tak samo.
Jedynym rozwiązaniem jest ładowanie modułu USB2 z poziomu internala przed przejściem na external (tak jak podałeś w swoim opisie) i "nie dotykanie" tego więcej. Skoro tak działa....... smile

17 (edytowany przez bodzio_g 2007-03-26 07:33:13)

Odp: /root na zewnetrznym flashu w asusie 500

Czytam ten wątek gdyz zaczyna mi byc ciasno smile, nie mogę sie z Wami równac wiedzą na temat wrt i linuxa w ogóle, ale apropo usb, czy nie jest jakims nieporozumieniem uruchamianie usługi usb z tegoż urządzenia. Tak na rozsądek to skąd system ma wiedzieć o istnieniu usb przed załadowaniem sterownika ? Chyba że o czymś tu nie wiem, co jest całkiem prawdopodobne  smile
A wracając do braku przestrzeni, ja myślałem o takim skonfigurowaniu wrt aby wsszystkie nowe pakiety instalowały sie na externalu, i tak sie zastanawiam jakie są wady i zalety tego rozwiazania w porównaniu do proponowanego w tym watku ?

18

Odp: /root na zewnetrznym flashu w asusie 500

Filozofia tego rozwiazania jest prosta. Stawiasz system minimum, przenosisz go na pena i juz na nim potem dzialasz. Problem dotyczyl proacy USB2, a nie usb. To sa dwie rozne sprawy. Jesli nie uruchomisz obslugi USB2 przed uruchomieniem systemu z pena, to proba instalacji DODATKOWEJ uslugi USB2 na externalu powoduje niestabilnosc systemu. Tyle tego problemu.

19

Odp: /root na zewnetrznym flashu w asusie 500

bodzio_g: masz dwa wyjścia: przenieść roota na zewnętrzny nośnik lub po prostu instalować pakiety na zewnętrznym nośniku. Różnica jest taka, że w pierwszym przypadku masz defacto cały system na zewnętrznym nośniku, w drugim tylko pakiety dodatkowe, ale musisz ręczenie robić odpowiednie dowiązania

(przykład: vsftp spodziewa się pliku konfiguracyjnego w /etc/vsftpd.conf. Jak zainstalujesz go na zewnętrznym nośniku, to ten plik znajdzie się - dla przykładu - w /mnt/disc0_1/etc/vsftpd.conf. Więc musisz zrobić  link z /mnt/disc0_1/etc/vsftpd.conf do /etc żeby zechciał działać. Itd)

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

20

Odp: /root na zewnetrznym flashu w asusie 500

No tak, ideę obu rozwiazań rozumiem, chodziło mi o wskazanie wad i zalet tych rozwiązań w stosunku do konkurenta, bo byc może czegoś nie dostrzegam. Ja skłaniam sie ku instalowaniu pakietów na nosniku zewnętrznym, ale byc moze to drugie rozwiazanie jest z jakichś wzgledów (w tej chwili dla mnie niedostrzegalnych) lepsze, bardziej elastyczne, no po prostu nie wiem.
Czy wypełnienie po brzegi  flasha w routerze grozi jakaś niestabilnością pracy systemu ?

21

Odp: /root na zewnetrznym flashu w asusie 500

Nie powinno. IMHO.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

22 (edytowany przez Tom0000 2007-04-05 08:29:10)

Odp: /root na zewnetrznym flashu w asusie 500

Dla mnie przemawia idea przeniesienia roota poniewaz do lat posluguje sie ta metoda w dreamie.
Sa 2 podstawowe zalety tego rozwiazania:
- zapisy do flasha nie zuzywaja pamieci w routerze
- jak jest jakikolwiek problem to odlaczam sticka, bootuje router, podlaczam sticka i naprawiam problem

Wady metody trzymania tylko pakietow w externalu:
- trzeba pamietac o dowiazaniach o czym wspominal Cezary i nie pogubic sie w tym
- najprawdopodobniej po wyjeciu usb stica system nie wstanie

Po przeniesieniu calego roota mamy w routerze 2 systemy. Ten w internalu moze sie uszkodzic tylko w wyniku uszkodzenia fizycznego pamieci (praktycznie) wiec zawsze bedzie mozliwosc zalogowania sie do rutera i naprawienie co trzeba. Uwal w przypadku 2 metody to niemozliwosc zalogowania sie do rutera i koniecznosc reinstalacji calosci. W drugim przypadku backup jest znacznie trudniejszy.

23

Odp: /root na zewnetrznym flashu w asusie 500

Pojawiło się inne rozwiązanie: zmapowanie jffs na zewnętrzny nośnik. Dzięki temu nie ma problemów z dowiązaniami, możemy modyfikować co się chce, instalować pakiety a wszystko leci na zewnętrzny flash.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

24

Odp: /root na zewnetrznym flashu w asusie 500

Gdzie można znaleźć opis tego rozwiązania? Jakieś przykłady?

25

Odp: /root na zewnetrznym flashu w asusie 500

http://forum.openwrt.org/viewtopic.php?id=10816

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.