A hardware-hez tartozó image kiválasztásában ez az oldal segített: Table of Hardware.
Nekem ezt az oldalt kellett szemügyre vennem. Ebből kiderül, hogy a routeremben van 4 MiB soros elérésű flash - na jó, a soros, SPI-n keresztül történő elérés nem ebből derül ki :) -, valamint 32 MiB DRAM. Ez igen szűkös, nagyjából az alsó határa annak, hogy OpenWrt-t illetve LEDE-t futtassunk. A 650 MHz-es CPU viszont sima otthoni felhasználáshoz bőven elegendőnek bizonyul.
LEDE image-et naponta csinálnak, tehát garantáltan friss. Az első alkalommal, amikor a gyári firmware-ről upgrade-elünk webes felületen, akkor a factory image-re, míg a későbbiekben a sysupgrade képfile-ra lesz szükségünk. Nagyon fontos, hogy a firmware upgrade-et kizárólag UTP kábelen végezzük! A wifi egy rádiós kapcsolat, semmi sem garantálja azt, hogy nem következik be rádiós zavar, ráadásul ez a frekvenciatartomány nem dedikáltan wifi átvitelre van fenntartva, tehát más célra is használhatják. A tápfeszültséget se vagyük el a router-től, hiszen a jelenlegi firmware RAM-ból fut, a flash-t már elkezdtük felülírni. A tápfeszültség elmúlásával a RAM törlődik, bekapcsolást követően flash-ből kerül az operációs rendszer a RAM-ba - már feltéve, hogy az teljes egészében a flash-ben van már.
Alapértelmezetten a 192.168.1.1/24-es címen érhető el a router, ide root-ként lehet rá ssh-val belépni, majd passwd paranccsal jelszót adni neki. Az ssh alap helyzetben csak a LAN-ról érhető el, kintről, a WAN oldalról nem. Természetesen lehet olyan tűzfal szabályt készíteni, hogy a routerünket távolról elérjük.
A file-ok tárolásáról érdemes tudni, hogy van egy nagyon erősen tömörített squashfs image, valamint egy overlayfs jffs2-re formázva. Ezt úgy kell elképzelni, hogy az egész rootfs az overlayfs, amelynek a bázisát a squashfs adja, s amit módosítunk, az az overlayfs upper-ben kerül eltárolásra, ám 4 MiB flash esetén itt nagyon kevés helyünk van. Mindösszesen néhány száz kilobyte. Ezen felül a /tmp az tmpfs, de tekintve, hogy nincs swap, ez egyben azt is jelenti, hogy teljes egészében RAM disk.
Itt mindjárt megemlítek egy fontos tényt: ha letörlünk egy olyan programot, file-t, ami a squasfs image-ben van, nem szabadul fel hely, sőt, még foglalódik. Ennek az az oka, hogy a squashfs image-ből értelemszerűen nem tudunk törölni, az overlayfs upper-be pedig be kell jegyezni, hogy az általunk törölt file-ok ne látszódjanak, tehát azok törölve vannak. Amennyiben valaki úgy szeretne helyet felszabadítani, hogy az image-ből törölni szeretne számára szükségtelen csomagokat, annak saját image-et kell készítenie. Erre megvannak a megfelelő eszközök.
Az én esetemben nagyon kevés software telepítésére volt még hely.
A csomagleírókat le kell tölteni, illetve aktualizálni kell, de ehhez kevés lehet a RAM, így én előbb vi-jal töröltem két sort a /etc/opkg/distfeeds.conf
file-ból. Az egyik a telephony, a másik a luci csomagjait tartalmazza. Tehát:
cd /etc/opkg
cp distfeeds.conf distfeeds.conf.orig
vi distfeeds.conf
Nem kell insert mód, ráállunk a törlendő sorra, majd "dd" - idézőjelek nélkül. Utána ":wq", s mentettük a file-t. Nézzük, mit csináltunk:
cat distfeeds.conf
Most már készülhetünk a telepítésre, értelemszerűen internet elérés kell a routernek WAN oldalról:
opkg update
opkg install ddns-scripts etherwake mailsend-nossl nano shadow-su
Nekem ezekre volt szükségem, s nem utolsó sorban helyem. Az mc, vagy például az openssl már nem fért fel.
;--------------------- Folytatás 1 --------------------------
A dokumentáció szerint támogatott a konfigurációs állományok uci segítségével történő módosítgatása, de megengedett a konfigfile-ok közvetlen, manuális szerkesztése is. Az előbbi inkább scriptből, az utóbbi pedig interaktív módon, szövegszerkesztővel célszerű. Viszont közvetlen szerkesztés esetén nem kapunk visszajelzést az esetleges hibákról. Konfigurációs állomány szerkesztését követően újra kell indítani a hozzá tartozó init scriptet is, ha a módosítások érvényre juttatását szeretnénk. Tehát például szerkesztjük a /etc/config/firewall
file-t, ezt követően adjuk ki a
/etc/init.d/firewall restart
parancsot. Fontos, hogy a crontab szerkesztését követően szintén csak akkor jut érvényre az új crontab, ha újraindítjuk a cron-t.
Mivel nem tartom túl jónak, hogy a root ssh-n közvetlenül elérje a router-t, így kitiltottam a root ssh-t, és létrehoztam egy saját felhasználót:
echo 'locsemege:x:1000:locsemege' >>/etc/group
echo 'locsemege:x:1000:1000:Zab:/home/locsemege:/bin/ash' >>/etc/passwd
mkdir -p /home/locsemege
chown locsemege:root /home/locsemege
chmod 0700 /root /home/locsemege
passwd locsemege
Aztán megadjuk a kívánt jelszót. A dropbear nevű ssh szerver konfigurációs file-jában többek között az alábbi sorok szerepelnek:
option RootPasswordAuth 'off'
option RootLogin 0
Image frissítés előtt ezeket át kell írni on-ra illetve 1-re. Természetesen nem a 22-es porton figyel az ssh kliens. Ha azt szeretnénk, hogy WAN oldalról be lehessen rá ssh-n lépni, akkor kell egy ilyen szabály a /etc/config/firewall
file-ba:
config rule
option enabled '1'
option target 'ACCEPT'
option src 'wan'
option proto 'tcp'
option dest_port '22'
option name 'ssh router'
Itt ugyan most a 22-es port szerepel, de értelemszerűen átírandó arra, ahol a dropbear hallgatózik.
Mivel nagyon jól jön adott esetben a saját gép távolról történő bekapcsolahatósága, az etherwake-et használom. Ehhez írtam az alábbi script-et a /usr/local/bin/wol
file-ba:
#!/bin/sh
CONFIG='/usr/local/etc/wol.conf'
PRG='/usr/bin/etherwake'
MAC=''
[ -f "$CONFIG" ] && read MAC <"$CONFIG"
IN="${1:-empty}"
case "$IN" in
-d|--default|default)
if [ -z "$MAC" ]; then
echo "Missing or invalid '$CONFIG' file" >&2
exit 1
fi
;;
-h|--help|empty)
echo -e '\t\x1b[37;1mwol\x1b[m [-h|--help|-d|--default|default|<MAC address>]\n' >&2
if [ -z "$MAC" ]; then
echo "Warning: Missing or invalid '$CONFIG' file" >&2
fi
[ "$IN" = 'empty' ] && exit 1
exit 0
;;
*)
if [ -z "$MAC" ]; then
echo "Warning: Missing or invalid '$CONFIG' file" >&2
fi
MAC="$IN"
;;
esac
[ -x "$PRG" ] && exec "$PRG" -b "$MAC"
echo "Missing '$PRG' command" >&2
exit 1
A /usr/local/etc/wol.conf
file-ban az alapértelmezetten felélesztendő gép MAC címe legyen efféleképp:
05:27:49:6b:8d:af
Értelemszerűen ez egy példa MAC, nem valós.
A wireless interface be- illetve kikapcsolásához az alábbit írtam a /usr/local/bin/wireless
file-ba:
#!/bin/sh
CONF='wireless'
KEY="$CONF.radio0.disabled"
setconf() {
uci commit "$CONF"
wifi &>/dev/null
}
duplicate() {
if [ "${IN:0:1}" = '-' ]; then
tp='switch'
else
tp='parameter'
fi
echo "Duplicated $tp: '$IN'" >&2
exit 1
}
ssid=''
passphrase=''
_ssid=0
_passphrase=0
_get=0
_quiet=0
_help=0
_change=0
_on=0
_off=0
_status=0
subparm=0
parms=$#
while [ $# -gt 0 ]; do
IN="$1"
shift
case "$subparm" in
1)
ssid="$IN"
subparm=0
continue
;;
2)
passphrase="$IN"
subparm=0
continue
;;
3)
get="$IN"
subparm=0
continue
;;
esac
case "$IN" in
--ssid)
[ ${_ssid} -eq 1 ] && duplicate
_ssid=1
subparm=1
;;
--key|--passphrase)
[ ${_passphrase} -eq 1 ] && duplicate
_passphrase=1
subparm=2
;;
-q|--quiet)
[ ${_quiet} -eq 1 ] && duplicate
_quiet=1
;;
-h|--help)
[ ${_help} -eq 1 ] && duplicate
_help=1
;;
get)
[ ${_get} -eq 1 ] && duplicate
_get=1
subparm=3
;;
x|change|exchange)
[ ${_change} -eq 1 ] && duplicate
_change=1
;;
1|on)
[ ${_on} -eq 1 ] && duplicate
_on=1
;;
0|off)
[ ${_off} -eq 1 ] && duplicate
_off=1
;;
state|status)
[ ${_status} -eq 1 ] && duplicate
_status=1
;;
esac
done
case "$subparm" in
1)
echo 'Missing SSID' >&2
exit 1
;;
2)
echo 'Missing PASSPHRASE' >&2
exit 1
;;
3)
echo "Missing 'get' subparameter: ssid|passphrase|key" >&2
exit 1
;;
esac
if [ ${_help} -eq 1 -o $parms -eq 0 ]; then
echo -e '\t\x1b[37;1mwireless\x1b[m [-h|--help] [-q|--quiet] [--ssid <ssid>] [--key|--passphrase <passphrase>] [[state|status]|[1|on]|[0|off]|[change|exchange|x]|[get ssid|key|passphrase]]\n' >&2
[ ${_quiet} -eq 0 -a $parms -ne 0 ]
exit
fi
if [ ${_ssid} -eq 1 ] && ! echo "$ssid" | awk '/^[[:print:]]{1,32}$/ {exit 0;} {exit 1;}'; then
echo 'Invalid SSID length or character set' >&2
exit 1
fi
if [ ${_passphrase} -eq 1 ] && ! echo "$passphrase" | awk '/^[[:print:]]{8,63}$/ {exit 0;} {exit 1;}'; then
echo 'Invalid PASSPHRASE length or character set' >&2
exit 1
fi
vars="x${_get}${_status}${_on}${_off}${_change}"
case "$vars" in
x00001)
STATE=`uci get "$KEY"`
if [ "$STATE" = 0 ]; then
STATE=1
else
STATE=0
fi
uci set "$KEY=$STATE"
;;
x00010)
uci set "$KEY=1"
;;
x00100)
uci set "$KEY=0"
;;
x01000)
:
;;
x10000)
if [ "${_ssid}${_passphrase}" != '00' ]; then
echo 'Invalid input parameters' >&2
exit 1
fi
case "$get" in
ssid)
uci get 'wireless.@wifi-iface[0].ssid'
;;
key|passphrase)
uci get 'wireless.@wifi-iface[0].key'
;;
*)
echo "Invalid 'get' subparameter" >&2
exit 1
;;
esac
;;
x00000)
if [ "${_ssid}${_passphrase}" = '00' ]; then
echo 'Invalid input parameters' >&2
exit 1
fi
;;
*)
echo 'Invalid input parameters' >&2
exit 1
;;
esac
[ ${_ssid} -eq 1 ] && uci set "wireless.@wifi-iface[0].ssid=$ssid"
[ ${_passphrase} -eq 1 ] && uci set "wireless.@wifi-iface[0].key=$passphrase"
vars="x${_ssid}${_passphrase}${_on}${_off}${_change}"
[ "$vars" != 'x00000' ] && setconf
STATE="`uci get \"$KEY\"`"
a='OFF'
RETVAL=2
if [ "$STATE" = 0 ]; then
a='ON'
RETVAL=0
fi
[ ${_quiet} -eq 1 ] && exit $RETVAL
echo "Wireless interface is $a"
exit 0
Annak érdekében, hogy könnyen mentsem ezeket a scripteket, valamint a /etc tartalmát, továbbá az aktuális csomag listát, a /usr/local/bin/save
file-om az alábbi:
#!/bin/sh
opkg list-installed >/tmp/installed.txt
FILE="/tmp/save-`date '+%F_%T'`.tar.gz"
tar -czf "$FILE" /etc/ /usr/local/ /tmp/installed.txt
rm /tmp/installed.txt
echo "File saved to '$FILE'"
exit 0
Ennek az eredményét a host-ról kezdeményezve a kapcsolatot a Midnight Commander Shell link nevű felületén kersztül - vagy scp-vel - másolom a router-ről a host-ra. Miután a file már a host-on van, a hely felszabadítása érdekében érdemes ezt a file-t a /tmp
-ből törölni.
;--------------------- Folytatás 2 --------------------------
A /etc/profile
file-hoz is hozzányultam. Egyfelől nekem kell, hogy az elérési útban legyen a /usr/local/bin
, másfelől színes bejelntkező logót csináltam, továbbá színes root promptot, valamint nullától eltérő exit kód esetén a visszatérési értéket a promptba írom. De, ha ez nem lenne elég, Fedorán nevelkedtem, tehát hasonló stílusú prompt kell nekem. Meg aztán kell ashrc, ami alapból nincs, de a doksi beszél arról, hogyan legyen. A profile file-omból a releváns részletek:
EUID=`id -u`
if [ -f /etc/banner -a "$EUID" != 0 ]; then
if [ -f /usr/local/etc/bannercolor -a -x /usr/local/bin/printbanner -a "${TERM:0:5}" = 'xterm' ]; then
/usr/local/bin/printbanner -v colorfile=/usr/local/etc/bannercolor /etc/banner
else
cat /etc/banner
fi
fi
Valamint:
export PATH="/usr/sbin:/usr/bin:/sbin:/bin"
export HOME=$(grep -e "^${USER:-root}:" /etc/passwd | cut -d ":" -f 6)
export HOME=${HOME:-/root}
export PATH="$HOME/bin:/usr/local/bin:$PATH"
RCFILE='/usr/local/etc/ashrc'
[ -f "$RCFILE" ] && export ENV="$RCFILE"
Ezek után álljon itt a /usr/local/etc/ashrc
file is:
#!/bin/sh
export UID=`id -ur`
export EUID=`id -u`
case $- in
*i*)
if [ "${TERM:0:5}" = 'xterm' ]; then
export PS1='$(RET=$?; COLOR="\[\e[m\]"; [ $EUID = 0 ] && COLOR="\[\e[32;1m\]"; echo -n "${COLOR}["; [ $RET -ne 0 ] && echo -n "\[\e[33;1m\]$RET$COLOR ")\u@\h \w]\$ \[\e[m\]'
else
export PS1='\u@\h:\w\$ '
fi
alias ll='ls -alF --color=auto'
esac
A logó színezését leíró /usr/local/etc/bannercolor
file tartalma:
1 lred
2 2*lred 4*lgreen
3 lred lblue 2*lred 6*lgreen
4 lred lblue 2*lred 6*lgreen
5 lred lblue lred lgreen norm
6 2*lred lblue lred
7 lred lblue 2*lred yellow
8 lred lblue 2*lred lwhite 2*norm
9 lred yellow
Erről azt érdemes tudni, hogy a magában álló számok komment értékűek, az awk scriptem ignorálja őket, lényegében azért írtam oda, hogy lássam, a logó hanyadik sorára vonatkozik a színek megadása. A szóközt követő nem szóköz elé szúrja be az adott színkódot. Ugyanakkor azok a számok, amelyek után csillag áll, azok valóban szorzók. A 4*lgreen ugyanazt jelenti, mintha egymás után szóközökkel elválasztva négyszer leírtam volna azt, hogy lgreen.
Ezek után a színezést végző /usr/local/bin/printbanner
awk script így néz ki:
#!/usr/bin/awk -f
BEGIN {
a["norm"]="\x1b[m";
a["black"]="\x1b[30m";
a["red"]="\x1b[31m";
a["green"]="\x1b[32m";
a["brown"]="\x1b[33m";
a["blue"]="\x1b[34m";
a["magenta"]="\x1b[35m";
a["cyan"]="\x1b[36m";
a["white"]="\x1b[37m";
a["lred"]="\x1b[31;1m";
a["lgreen"]="\x1b[32;1m"
a["yellow"]="\x1b[33;1m";
a["lyellow"]=a["yellow"];
a["lblue"]="\x1b[34;1m";
a["lmagenta"]="\x1b[35;1m";
a["pink"]=a["lmagenta"];
a["lcyan"]="\x1b[36;1m";
a["lwhite"]="\x1b[37;1m";
s="";
while (getline colors <colorfile) {
tn=split(colors, t);
for (i=1; i<=tn; i++) {
un=split(t[i], u, /\*/);
if (u[un] ~ /^[0-9]+$/) {
continue;
}
if (un==2) {
if (u[1] ~ /^[0-9]+$/) {
mul=int(u[1]);
if (mul>99) {
mul=99;
}
} else {
mul=0;
}
for (j=0; j<mul; j++) {
s=s u[2] " ";
}
}
if (un==1) {
s=s u[1] " ";
}
}
}
colornum=split(s, c);
FS="";
p=1;
}
{
s="";
last=" ";
for (i=1; i<=NF; i++) {
if ($i!=" " && last==" ") {
if (p<=colornum) {
if (c[p] in a) {
s=s a[c[p]];
} else {
s=s a["norm"];
}
p++;
} else {
s=s a["norm"];
}
}
if ($i==" " && last!=" ") {
s=s a["norm"];
}
s=s $i;
last=$i;
}
s=s a["norm"];
printf("%s\n", s);
}
Azt érdemes tudni, hogy a busybox awk implementáció nem ismeri a switch() case szerkezetet, így ezt nem lehet használni, ugyanakkor remek asszociatív tömb kezelése van az awk-nak, így aztán a switch() case-re nincs is szükség.
Tartozom még a futtatható állományok jogosultságaival. Mindenki root:root tulajdonban van, a printbanner script 0755 jogú, hiszen sima felhasználónak is futtatni kell a profile-ból, míg a többi scriptet csak a root futtathatja, így azokra (save, wireless, wol) 0744 jogot adtam.
;--------------------- Folytatás 3 --------------------------
Volt még két megoldandó probléma. Az egyik a dinamikus dns, ehhez feltelepítettem a ddns-scripts
csomagot. Itt csak annyit jegyzek meg, hogy a service_name
opció nem URL, hanem egy hivatkozás a /usr/lib/ddns/services
file egyik leírójára. Ha itt nincs meg a template, akkor a szolgáltatás igényeinek megfelelően nekünk kell azt megírnunk.
A másik probléma, hogy a frissítéssel az ember megnyert egy rakás kellemetlenséget. Konfiguráció visszamentése, saját csomagok frissítést követő újratelepítése, sőt, lehet olyan csomag, amely már a belépéshez is kellene, de mivel nincs, figyelni kell a dropbear ideiglenes átkonfigurálására, hogy be lehessen lépni. Ez nekem kényelmetlen, erre kellett valami megoldás.
A megoldás az lett, hogy letöltöttem a lede-imagebuilder-ar71xx-generic.Linux-x86_64.tar.xz
file-t, kitömörítettem, majd annak gyökerébe létrehoztam egy files
alkönyvtárat, amelybe a mentésemből bemásoltam azokat a file-okat, amelyekre szükségem van, vagy módosítottam. Ezen felül szintén ennek a kicsomagolt anyagnak a gyökerébe írtam egy build
nevű file-t az alábbi tartalommal:
#!/bin/bash
make clean
make image PROFILE='tl-wr841-v10' PACKAGES='coreutils-base64 ddns-scripts etherwake mailsend-nossl nano shadow-su uhttpd -ppp -ppp-mod-pppoe' FILES=files/
Ezt követően mondtam neki:
. build
Előállította a saját image-emet ennek az egésznek a gyökeréhez képest valahova a bin
alkönyvtárba, pontosabban mélyebben, de meglesz az. A sok file közül a lede-ar71xx-generic-tl-wr841-v10-squashfs-sysupgrade.bin
nevűre volt szükségem. Ezt követően ezt a file-t a router /tmp
alkönyvtárába - ez tmpfs, tehát ebben az esetben RAM - másoltam. A dropbear konfigurációjában megengedő lettem, azaz a root login-t engedélyeztem. Nem kell újraindítani a dropbear-t, úgyis reboot után kellhet ez. Aztán vettem egy nagy levegőt, majd az alábbi parancsokkal éltem:
cd /tmp
sysupgrade -v lede-ar71xx-generic-tl-wr841-v10-squashfs-sysupgrade.bin
Mivel az image tartalmazza azon programokat, amelyeket fel kellett volna utólag telepíteni, aztán a saját scriptjeimet is, valamint a konfigurációs állományaimat, ideértve a shadow, passwd, group file-okat is, meg persze a /home/locsemege
alkönyvtárat, egyből be tudtam lépni a régi jelszóval, nem root-ként, továbbá a színes banner fogadott. A dropbear beállításait újra szigorúbbra vettem, újraindítottam a dropbear ssh daemon-t, beállítottam a /home/locsemege
és a /root
jogait, mentést csináltam az aktuális konfigurációról, s most örülök, mert egész kevés munkával megúsztam a router frissítését.
;--------------------- Folytatás 4 --------------------------
Most ott tartok, hogy ha már nem fér fel a luci, de az uhttpd igen, néhány apróságnak megcsinálnám a webes állíthatóságát. Rögtön az első akadály az autentikáció. Mivel nem vagyok webprogramozó, fogalmam sem volt, hogyan kapom meg a httpd-től a POST-ot. Nem, PHP-re nincs helyem, szóval biztosan nem egy tömbben. :) Kiderült, a http daemon úgy hívja a CGI scriptet, hogy pipe-olja neki a POST-ot, valahogy úgy, hogy egy folytonos stream esik be, amely a form-ból jön, s key=value párokat tartalmaz '&' karakterekkel szeparálva. Speciális - például épp az '&' - karakterek %hh alakúak, ahol a '%' jel után két hexadecimális karakter az átvinni kívánt karakter ASCII-kódja. Mindegy is, felfaltam a problémát awk-val.
Azért volt benne kaland: hajtépést követő debugolás, majd doksi olvasás és kipróbálás során kiderült, hogy az ash nem ismeri a tömböket, így nem tudtam POST_KEY[index]='kulcs', POST_VALUE[index]='érték' formájú változókat létrehozni. Szerencsére ez megkerülhető, eval azért még van, így csináltam POST_KEY_0='kulcs0', POST_VALUE_0='érték0' típusú változókat a pipe-on beömlő borzalomból. Akit persze a szerver oldali scriptelés nem igazán hoz lázba, annak nem túl érdekes, amit az imént írtam.
;--------------------- Folytatás 5 --------------------------
Annak érdekében, hogy frissítés után a jogosultságokkal ne keljen bajlódni, a /etc/rc.local
file tartalma ez lett:
# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.
law="`ls -ld /root | cut -d' ' -f1`"
if [ "$law" != 'drwx------' ]; then
chmod 0700 /root
fi
user='locsemege'
workdir="/home/$user"
if [ -d "$workdir" ]; then
law="`ls -ld \"$workdir\" | cut -d' ' -f1`"
if [ "$law" != 'drwx------' ]; then
chown -Rh "${user}:users" "$workdir"
chmod 0700 "$workdir"
fi
fi
daemons='etherwake'
for i in $daemons; do
if [ -e /etc/rc.d/S*$i ]; then
/etc/init.d/$i stop
/etc/init.d/$i disable
fi
done
exit 0
A változónevek én dolgom, nem beszólni, tudom. :) A daemons
változóban szóközzel elválasztva azon szolgáltatások vannak, amelyeket tiltani és leállítani szeretnénk, miközben telepítve vannak.
- locsemege blogja
- A hozzászóláshoz be kell jelentkezni
Hozzászólások
up
- A hozzászóláshoz be kell jelentkezni
Korábbi fórum topicod alapján nem értem a luci dolgot.
Ott azt írtad, hogy nem fér fel rá, ebből arra következtettem, hogy alapból nincs a képfájlban, valaki írta is, hogy az openWRT snapshot képfájlban sincs, csak a stable kiadásban.
Itt meg, hogy a lucit hogy kell törölni.
Most akkor van luci a snapshot képfájlban, vagy nincs? :P
Másik: a LEDE tervez stabil kiadást, vagy amolyan rolling marad napi snapshotokkal? A honlapjukon nem találtam erről semmi konkrétat, te tudsz erről valamit?
Megint másik: csomagkezelővel lehet frissen tartani, vagy ahhoz a sysupgrade képfájl kell?
- A hozzászóláshoz be kell jelentkezni
Szerintem félreértettél. A luci nincs az image-ben. Nem kell tehát törölni. A distfeeds.conf
a repository-t írja le, s a telefóniának és a lucinak a hivatkozását töröltem azért, mert ha minden marad, akkor letölti RAM-ba a csomaglistát, s már az olyan nagy lehet adott esetben, hogy out of memory lesz belőle. Most ugyan megnéztem, ezek néhány száz kilobyte-os file-ok, de lehet, hogy a függőségi fát építi fel, s akkor szalad tele a memória, nem tudom. Az a lényeg, hogy már az opkg update
parancs sem futott le, odáig már el sem jutottam, hogy telepíthessek. Utánaolvastam, s azt javallották, a repók közül ki kell venni azt, ami nem kell. S valóban ez volt a megoldás. Mivel luci* dolgot nem akartam telepíteni, így a repóra sem volt szükségem.
Nem tudom, hogy terveznek-e a napi snapshot-on kívül mást is. Az az igazság, nekem ezzel semmi bajom, megy jól, frissek a csomagok.
Csomagkezelővel elvileg frissen lehetne tartani, ha van elég flash-ed, s az overlayfs upper-be elférnek a módosított file-ok. Ezek idővel nyilván egyre többen lesznek, szóval sok hely kell. Mivel alig több, mint 7000 Ft-ért egy routerben nincs sok memória, nekem egyedüli alternatíva a teljes image cseréje néha.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Értem, köszi.
- A hozzászóláshoz be kell jelentkezni
Szerintem az dönti el hogy ráfér-e a céleszközre vagy sem.
--
arch,debian,osmc,android,windows
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni
sub
Köszi ez hasznos lesz. Ahogy látom Netgear R7000-re is van már valami berhelés (https://www.mail-archive.com/lede-dev@lists.infradead.org/msg02173.html) így lehet megpróbálkozok vele ugyanis az alap Netgear firmware egész gány, egy router restart konkrétan 2 percig tart és gyakorlatilag nincs olyan beállítás amit megúsznék restart nélkül, ami azért problémás mert gyakran mozgatom, otthon/koli/suli között és mindenütt más beállításokat szeret, koliban pl. meg vagyok lőve airtimes fairnesség miatt.
- A hozzászóláshoz be kell jelentkezni
> chown locsemege:root /home/locsemege
Nem ez a legkritikusabb rész, de miért nem locsemege:locsemege ? Ha már egyszer előtte csináltál megfelelő csoportot?
=====
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?
- A hozzászóláshoz be kell jelentkezni
Lehetett volna, így jutott eszembe. Amúgy 0700-as jognál édesmindegy szerintem. Különben itt szinte csak root-ként lehet használni az eszközt, igazából csak azért csináltam felhasználót, mert talán nagyobb biztonság, ha nem tudják a felhasználónevet, s két jelszót kell kitalálni, mire gyökér lesz a támadó. :)
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
A mostani napi snapikban milyen verziójú kernel van?
- A hozzászóláshoz be kell jelentkezni
A legfrissebb longterm, ez jelenleg a 4.4.24-es.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Azóta már 4.4.83. :)
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Nagyon fontos, hogy a firmware upgrade-et kizárólag UTP kábelen végezzük! A wifi egy rádiós kapcsolat, semmi sem garantálja azt, hogy nem következik be rádiós zavar, ráadásul ez a frekvenciatartomány nem dedikáltan wifi átvitelre van fenntartva, tehát más célra is használhatják.
WAT
--
„Spiró ótvar, Konrád átok, Nádastól meg mindjárt hányok!”
- A hozzászóláshoz be kell jelentkezni
Egy ideje keresem, mit jelent a szlengben ez a rövidítés, de nem sikerült megfejtenem, segíthetnél. Így igazából azt sem tudom, hogy az idézett két mondatommal nem értesz egyet, vagy helyesled.
Azt akartam írni, hogy rossz ötlet wifi-n firmware-t frissíteni, mert a rádiós kapcsolat bizonytalan, semmi sem garantálja annak megbízhatóságát, hiszen az elektromágneses teret bárki bárhogyan alakíthatja. Nincs olyan, hogy az a frekvencia illetve sávszélesség csak a tiéd arra az időre. A csavart érpár sem árnyékolt kábel, de szimmetrikus átvitel esetén a közös módusú zavarok nem igazán okoznak bajt, differenciális zavart pedig nehezen tudsz kívülről okozni.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Nekem úgy rémlik, hogy az OpenWRT feltölti a memóriába az image állományt és onnan írja ki a flash-be. De lehet rosszul tudom.
Vagy ha hibás az átvitel, akkor is frissít?
- A hozzászóláshoz be kell jelentkezni
Én is így tudom, sőt, én előbb az image-et átmásoltam a RAM-jába, s utána adtam ki a frissítő parancsot úgy, hogy azt az image-et töltse a flash-be, ami már helyben van a RAM-ban. Ettől függetlenül saját felelősségre, talán épp itt a HUP-on olvastam valakinek a segítségkérését, ami úgy kezdődött, hogy wifin frissített, de elveszítette a kapcsolatot közben a routerrel. Ilyenkor jön a pánik, mindent kikapcsol, újraindít, s épp ebből van a baj.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
http://www.urbandictionary.com/define.php?term=wat -> "The only proper response to something that makes absolutely no sense."
és a hozzá elhíresült meme: http://i0.kym-cdn.com/photos/images/newsfeed/000/173/576/Wat8.jpg?13159…
- A hozzászóláshoz be kell jelentkezni
Nem gondolom teljesen értelmetlennek, amit írtam. Ugyan tudom, hogy az image már RAM-ban van, amikor frissítünk, az nem röptében történik - bár, ha jól emlékszem, ez utóbbira is van lehetőség -, ugyanakkor egy elhaló kapcsolat esetén könnyebb mellényúlni, bepánikolni, újraindítani. Minden attól függ, hogyan csinálja valaki. Amúgy nem vagyok érintett, a host UTP kábellel csatlakozik a routerhez, wifit csak akkor használok, ha van nálam gép karbantartásra. Okostelefonom nincs, még mielőtt ebbe történne a belekötés. :)
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Legyen teljes a kép, ez a mém másik változata: http://www.mustangevolution.com/forum/attachments/17937d1189184110-1188…
:)
--
„Spiró ótvar, Konrád átok, Nádastól meg mindjárt hányok!”
- A hozzászóláshoz be kell jelentkezni
Ez jobb :D
- A hozzászóláshoz be kell jelentkezni
> Azt akartam írni, hogy rossz ötlet wifi-n firmware-t frissíteni, mert a rádiós kapcsolat bizonytalan, semmi sem garantálja annak megbízhatóságát, hiszen az elektromágneses teret bárki bárhogyan alakíthatja.
Te jó ég! Ezek szerint valaki egy rádiós zavaróval átírhatja az e-mailjeimet? (Nem.) Avagy: ugyan okozhatsz zavart a fizikai rétegben, de a fölöte levő rétegekben ez detektálható, korrigálható. Detektálandó, korrigálandó. De ez a vezetékesre is igaz. Ott is bele lehet nyúlni, legfeljebb köztes állomás kell hozzá.
Mondhatni az érvelésed ebben a formában marhaságnak tűnik.
- A hozzászóláshoz be kell jelentkezni
Ezt te állítod, nem én. Sehol nem írtam, hogy átírhatom az e-mailjeidet azzal, ha megakadályozom a csatorna használatát. Miért írtam volna ilyen hülyeséget? Igen, a TCP-nek valóban az a dolga, hogy átvigye az adatot hibátlanul. A felsőbb rétegek képesek ugyan CRC-t ellenőrizni, csomagot ismételni, nem képesek viszont a csodára, azaz a megszűnő, nem létező csatornán adat átvitelére. Tehát, ha teszem azt, az adott sávon sugárzok valamit, ami a spektrumot lefedi, kérheted újra és újra a csomagot, előbb-utóbb timeout lesz belőle. Vagy végtelen ciklus, de adatátvitel az nem.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Tény, hogy frissítésnél az új image másolása hálózaton RAM-ba, majd azt követően RAM-ból flash-be másolása elkülönül időben, így wifin történő frissítés sem okozhat problémát. Ugyanakkor lehetőség van arra, hogy a hálózaton küldött image-et közvetlenül a pipe bufferből írjuk a flash-be. Ez hasznos lehet, ha kevés a RAM, s az image nem fér a RAM-ba. Ebben az esetben bizony kifejezetten rossz ötlet Wifi-n intézni az upgrade-et.
http://hup.hu/node/73963&comments_per_page=9999#comment-816303
Valamint:
https://wiki.openwrt.org/doc/howto/generic.sysupgrade
Direct method
Netcat could be employed if you cannot free enough RAM. See netcat. Netcat needs to be installed first.
This method is NOT recommended!
On your Linux PC run:
nc -q0 192.168.1.1 1234 <openwrt-ar71xx-tl-wr1043nd-v1-squashfs-sysupgrade.bin
On the router run:
nc -l -p 1234 | mtd write - firmware
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Frissült. Új tartalom „folytatás 3” után.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Mindig nagy kiváncsisággal olvasom az írásaidat, innen a pálya széléről.
- A hozzászóláshoz be kell jelentkezni
Az én wake_on_lan script-em így néz ki:
#!/bin/sh
HOST_MAC="12:23:34:45:67:78";
HOST_NAME="host";
PING=`which ping`;
WOL=`which etherwake`;
$WOL $HOST_MAC;
while [ /bin/true ];
do
$PING -q -c 1 -w 1 $HOST_NAME >/dev/null 2>&1
if [ "$?" -eq 0 ];
then
break
fi
sleep 1
echo -n "."
done
echo "pingni pingik";
Opcionálisan a végén van egy ssh $HOST_NAME is, mert általában ez a következő lépés ilyenkor.
- A hozzászóláshoz be kell jelentkezni
Én nem vagyok ilyen türelmetlen. Felébresztem, valamennyi idő a BIOS POST, aztán 5 másodperc a Grub, majd közel 15 másodperc, amíg eljut a bejelentkezésig. Szóval élesztést követően nagyjából 30 s múlva elérem a gépem. Addig kilépek a router ssh session-ből, s akár ugyanabból a terminál ablakból ssh-zhatok a hostra.
Szerk.: lustább vagyok, az ilyen örökhajtós while-okat így szoktam írni:
while :; do
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Türelmetlen én se vagyok, lusta annál inkább :)
Shell script-ben pedig nem vagyok profi, ezért inkább átlátható és egyértelmű megoldásokat csinálok, hogy ha hozzá kell nyúlni akkor ne emlegessem a saját felmenőimet hogy miért sz***tom magam megint...
- A hozzászóláshoz be kell jelentkezni
off
: [arguments]
No effect; the command does nothing beyond expanding arguments
and performing any specified redirections. A zero exit code is
returned.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Némileg specifikus, nem túl konkrét és rövid a folytatás. Szerver oldali scriptelésről tettem említést benne.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Köszi, ez hasznos!
- A hozzászóláshoz be kell jelentkezni
Aktualizáltam néhány scriptet, illetve, hogy kevésbé legyen munkás a frissítés, a jogosultságok beállítása bekerült az rc.local
-ba.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Köszönöm! A banner színezős részt én is átvettem, nagyon jól néz ki!
A banner-t még kiegészítettem obsy sysinfo scriptjét (http://eko.one.pl/) kicsit átszabva és most elég jól néz ki már a login/logout screen.
- A hozzászóláshoz be kell jelentkezni
Köszönöm a screenshot-ot, így legalább látszanak a színek. :)
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Én köszönöm! Ha a brand visszavált OpenWrt-re, akkor majd újfent megosztod velünk a módosított scriptet?
- A hozzászóláshoz be kell jelentkezni
Persze. Bár várhatóan csak a színdefiníciós file-t kell módosítani.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
A snapshot már OpenWrt, így az új színdefíniciós file-t megcsináltam (/usr/local/etc/bannercolor):
1 3*lgreen
2 6*lgreen
3 12*lgreen
4 3*lgreen
5 lgreen lwhite 7*norm lwhite 6*norm
6 yellow
7 2*lwhite red
8 yellow
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Köszönöm!
Észre sem vettem, hogy megtörtént "merge: release/banner: drop release name and update banner" ;-)
- A hozzászóláshoz be kell jelentkezni
Kifejlesztették belőle a hostnevet:
[root@(none) ~]# grep hostname /etc/config/system
option hostname 'router'
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Már megjavították. :)
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni