Hirdetés

Hozzászólok Aktív témák

  • woodworm

    veterán

    válasz vottokar #287 üzenetére

    Összeszedtem egy kicsit a hosszú történetet, hogy hogyan került padavan a routeremre.
    A ddwrt oldalán találtam egy rövid szösszenetet egy usertől, hogy buildelt egy működő padavant és mellé egy módosított eepromot.
    Nem volt túl bőbeszédű: nincs rá garancia, mentsd a factory partíciót mielőtt flasheled és a módosított mtd2 nélkül instabil a router. A fájlokhoz mellékelt leírás két parancsot tartalmaz, túl sok részletezés nélkül. Később, napokon keresztül adagolva közölt olyan információkat, amelyek fontosak lettek volna.

    Mielőtt bármibe kezdünk, mentsük a teljes rendszert és jegyezzük fel a készülék mac-címeit (wan, lan, 2,4GHz, 5GHz). Mivel openwrt volt a routeren, rögtön ezzel kezdtem, mert emlékeztem a 1043-as topik egyes történeteire az art partícióval, bár éltem a gyanúperrel, hogy openwrt alól nem egyszerű visszaírni a leírásban említett partíciót.
    Később ddwrt alatt is készült egy teljes mentés és ez a fontosabb, mivel itt biztosított a visszaírás lehetősége. Tehát az új fw-t openwrt/lede alatt is fel lehet tenni, de az egyszerűbb visszatérés lehetősége miatt mindenképp fel kell tenni egy ddwrt-t a backup miatt. Az eltérő kiosztás miatt az openwrt-s mentés nem rakható vissza ddwrt-vel. (Lehet van rá megoldás, nem találtam)

    Az openwrt oldaláról vettem a scriptet, amivel a mentést végeztem, egyszerűbb így, mint a routeren vesződni egyesével. Bash script, linux kell hozzá, akár egy virtuális gépen, én a win10 beépített környezetét használtam. Külön könyvtárban vannak a router cuccai, itt hoztam létre a scriptet. Mivel maga mellé teszi a mentést, nem kell másolgatni sem később.

    #!/bin/bash

    set -e

    function die() {
    echo "$@"
    exit 2
    }

    OUTPUT_FILE="mtd_backup.tgz"

    OPENWRT="root@192.168.1.1"

    TMPDIR=$(mktemp -d)
    BACKUP_DIR="$TMPDIR/mtd_backup"
    mkdir -p "$BACKUP_DIR"
    SSH_CONTROL="$TMPDIR/ssh_control"

    function cleanup() {
    set +e

    echo "Closing master SSH connection"
    "${SSH_CMD[@]}" -O stop

    echo "Removing temporary backup files"
    rm -r "$TMPDIR"
    }
    trap cleanup EXIT

    # Open master ssh connection, to avoid the need to authenticate multiple times
    echo "Opening master SSH connection"
    ssh -oControlMaster=yes -oControlPath="$SSH_CONTROL" -o ControlPersist=10 -n -N "$OPENWRT"

    # This is the command we'll use to reuse the master connection
    SSH_CMD=(ssh -oControlMaster=no -oControlPath="$SSH_CONTROL" -n "$OPENWRT")

    # List remote mtd devices from /proc/mtd. The first line is just a table
    # header, so skip it (using tail)
    "${SSH_CMD[@]}" 'cat /proc/mtd' | tail -n+2 | while read; do
    MTD_DEV=$(echo $REPLY | cut -f1 -d:)
    MTD_NAME=$(echo $REPLY | cut -f2 -d\")
    echo "Backing up $MTD_DEV ($MTD_NAME)"
    # It's important that the remote command only prints the actual file
    # contents to stdout, otherwise our backup files will be corrupted. Other
    # info must be printed to stderr instead. Luckily, this is how the dd
    # command already behaves by default, so no additional flags are needed.
    "${SSH_CMD[@]}" "dd if='/dev/${MTD_DEV}ro'" > "${BACKUP_DIR}/${MTD_DEV}_${MTD_NAME}.backup" || die "dd failed, aborting..."
    done

    # Use gzip and tar to compress the backup files
    echo "Compressing backup files to \"$OUTPUT_FILE\""
    (cd "$TMPDIR" && tar czf - "$(basename "$BACKUP_DIR")") > "$OUTPUT_FILE" || die 'tar failed, aborting...'

    # Clean up a little earlier, so the completion message is the last thing the user sees
    cleanup
    # Reset signal handler
    trap EXIT

    echo -e "\nMTD backup complete. Extract the files using:\ntar xzf \"$OUTPUT_FILE\""

    A mentések elkészülte után fel lehet írni az fw-t, ezt ssh-n bejelentkezve tehetjük meg:
    - dwrt-n a következő paranccsal:
    mtd -r write DIR-860L_3.4.3.9-099.trx linux

    - openwrt/lede-n pedig a következővel:
    mtd -r write DIR-860L_3.4.3.9-099.trx firmware

    Hagyjuk lefutni a flash-t, a router kíírja amikor rebootol.

    Innentől lesz nyögvenyelősebb egy kicsit, mivel a patch hiánya miatt nagyon nehéz a bejutás a készülékre. Nekem telneten sikerült, radmir egy későbbi kérdésre írta, hogy ő 5G-n végezte a folyamatot, gondolom ez az 5GHz-es wifi lenne. Láttam már másoknál ebből adódó hibákat, de az akadozó, megszakadó telnet sem leányálom, rábízom mindenkire, ki, mit választ.

    A teendők sorban
    - Bejelentkezéshez az ip-cím 192.168.1.1, user: admin, pass: admin
    - Egy fat32-re formázott pendrive csatlakoztatása a routerhez, majd mountolása:
    mount -t vfat /dev/sda1 /media -o uid=1000,gid=1000,utf8,dmask=027,fmask=137

    - belépés a mountolt könyvtárba
    cd /media

    - Az eredeti partíció mentése:
    cat /dev/mtdblock2 > mymtd2.bin

    - A meghajtó leválasztása:
    umount /media

    - A nem tökéletes kapcsolat miatt többször kellett betelnetelnem, mire sikerült két egyforma és a partíció méretével egyező mentést készítenem. Ez azt jelenti, hogy ezt a lépést többször megismételtem, a pendrive-ot csatlakoztattam a pc-hez és átmásoltam a készített fájlt. Ha megvan a mentés, fel lehet írni a patchelt változatot.

    - A radmir által csatolt mtd2.bin fájlt a pendrive-ra kell másolni és és csatlakoztatás után mountolni, majd belépni a mountolt könyvtárba a korábbi parancsokkal. A flasheléshez a következő parancs kell:
    mtd_write write -r mtd2.bin "Factory"

    - A router rebootja után rá lehet nézni az adminfelületre a böngészőben. Nem emlékszem már, de valószínű, hogy nem aktív az ssh, be lehet kapcsolni.

    - Újra bejelentkezve vissza lehet írni az eredeti mac-címeket.
    lan_eeprom_mac XX:XX:XX:XX:XX:XX
    wan_eeprom_mac XX:XX:XX:XX:XX:XX
    radio2_eeprom_mac XX:XX:XX:XX:XX:XX
    radio5_eeprom_mac XX:XX:XX:XX:XX:XX

    Nem próbáltam a visszatérést, de szerintem a padavan ssh-n visszaírva az eredeti mtd2 partíció mentését és recovery-vel pedig a gyári vagy openwrt fw-t tűnik a könnyebb útnak, de természetesen ott a ddwrt-s mentés is.

    Az fw-t és a patch-et radmir készítette és a ddwrt fórumán tette közzé. Köszönet érte!

    [ Szerkesztve ]

Hozzászólok Aktív témák