Společnost JetBrains uvolnila Mellum, tj. svůj velký jazykový model (LLM) pro vývojáře, jako open source. Mellum podporuje programovací jazyky Java, Kotlin, Python, Go, PHP, C, C++, C#, JavaScript, TypeScript, CSS, HTML, Rust a Ruby.
Vývojáři Kali Linuxu upozorňují na nový klíč pro podepisování balíčků. K původnímu klíči ztratili přístup.
V březnu loňského roku přestal být Redis svobodný. Společnost Redis Labs jej přelicencovala z licence BSD na nesvobodné licence Redis Source Available License (RSALv2) a Server Side Public License (SSPLv1). Hned o pár dní později vznikly svobodné forky Redisu s názvy Valkey a Redict. Dnes bylo oznámeno, že Redis je opět svobodný. S nejnovější verzí 8 je k dispozici také pod licencí AGPLv3.
Oficiální ceny Raspberry Pi Compute Modulů 4 klesly o 5 dolarů (4 GB varianty), respektive o 10 dolarů (8 GB varianty).
Byla vydána beta verze openSUSE Leap 16. Ve výchozím nastavení s novým instalátorem Agama.
Devadesátková hra Brány Skeldalu prošla portací a je dostupná na platformě Steam. Vyšel i parádní blog autora o portaci na moderní systémy a platformy včetně Linuxu.
Lidi dělají divné věci. Například spouští Linux v Excelu. Využít je emulátor RISC-V mini-rv32ima sestavený jako knihovna DLL, která je volaná z makra VBA (Visual Basic for Applications).
Revolut nabídne neomezený mobilní tarif za 12,50 eur (312 Kč). Aktuálně startuje ve Velké Británii a Německu.
Společnost Amazon miliardáře Jeffa Bezose vypustila na oběžnou dráhu první várku družic svého projektu Kuiper, který má z vesmíru poskytovat vysokorychlostní internetové připojení po celém světě a snažit se konkurovat nyní dominantnímu Starlinku nejbohatšího muže planety Elona Muska.
Poslední aktualizací začal model GPT-4o uživatelům příliš podlézat. OpenAI jej tak vrátila k předchozí verzi.
Po delší době bych chtěl udělat upgrade softwaru (kernel, ovladače, programy), který používáme na routery v naší síti, ze začátku šlo vše skoro hladce, tedy když nepočítám to, že některé volby v jádře nedovolily systému nastartovat například ve VMware, nebo ve VirtualBoxu (ten chodil až se zapnutým SMP a pamětí nastavenou maximálně na 4GB, 64GB mu dělalo obrovský problém).
Po cca dvou dnech jsem nasadil celý systém do ostrého provozu, ovšem nestačil jsem se divit, vypadával mi jeden kernel panic za druhým a ve virtuálních strojích se nic takového nedělo, zkusil jsem tedy nasadit starší jádro (včetně ovladačů) a vše opět fungovalo normálně.
Hned ze začátku mi bylo jasné, že problém bude někde v madwifi ovladačích, které si s každou novou verzí připraví novou chuťovku v podobě kernel panicu za speciálních nikým nedokumentovaných okolností, ovšem že tyto okolnosti najdu 2 v aktuální stabilní verzi a 3 v trunk verzi jsem tedy z počátku opravdu netušil.
Protože mi kamarád, který má obchod na prodej PC dovezl dvě hračky, které jsem si objednal přímo na testování, tak jsem dlouho nelenil, obě PC jsem složil na stole a začal jsem simulovat některé normální situace.
Nejprve jsem použil aktuální nejnovější stable ovladač 0.9.3.2, hned po prvním staru jsem ale zjistil, že při nahození v režimu master (ap) je to jistý kernel-panic. Zkusil jsem tedy starší verzi 0.9.3 o které jsem věděl že chodila dobře, musel jsem najít patch, díky kterému jí zkompiluji s kernelem 2.6.22.5, poté jsem to zkusil znovu a tentokrát opravdu vše fungovalo normálně, až na jednu maličkost o té ale později.
Začal jsem tedy pátrat který patch způsobil takto závažné problémy, po cca 14 kompilacích jsem zjistil, že tento problém způsobuje patch, který měl vyřešit ticket 1388. Po jeho odstranění ve verzi 0.9.3.2 vše šlapalo jako hodinky. Až na jednu maličkost.
Po delším testování jsem našel další jistý kernel panic, ne tak snadno reprodukovatelný, ale přesto velmi častý. Začal jsem nejdřív simulovat různé situace, kdy se tak děje a kdy ne, přišel jsem na to, že se tak stává hlavně pokud používám AP v režimu WDS a klient v režimu WDS se nově připojí, nebo změní rychlost, ne vždy, ale třeba každé 3 připojení. Tento bug se projevuje jak ve verzi 0.9.3, tak ve verzi 0.9.3.2 a existuje i ticket 1516, který ho asi popisuje. Pokud tedy znáte nějaké AP s madwifi ve WDS režimu a chcete mu způsobit ošklivý kernel panic, nic vám v tom nezabrání :)
Zkusil jsem tedy nejnovější trunk verzi madwifi ovladače, nejprve však DFS, která trpěla ještě větší nestabilitou, než původní verze 0.9.3.2. Kernel panic při nahození karty v režimu AP byl naprosto běžný i po odstranění výše zmíněného patche, tak se při větších přenosech stávalo, že DFS verze detekovala radar naprosto chybně (u mě doma a vždy na stejném kanále, na jakém se vysílalo) při velké zátěži, po této detekci se spojení na daném kanále přerušilo. Hledat chyby se mi už opravdu nechtělo, takže jsem to vzdal a přešel na trunk verzi.
Trunk verz 2702, s touto verzí se mi zaseknout kernel sice nepodařilo, podotýkám že až po odstranění patche z ticketu 1388, jinak padala hned po startu karty, respektive už také podařilo, ale nejedná se o běžnou situaci (přepínání xr režimu pře iwpriv), ale nedařilo se mi navázat spojení, takže data neprotékala.
Podíval jsem se tedy do výpisu jaké patche v poslední době šly do trunk verze, hned ten poslední byl dost divný, takže jsem zkusil předposlední verzi a hurá, už žádné časté zasekávání jádra, už žádné další libovolné restarty, po odstranění patche z ticketu 1388 a jedné drobné úpravě mohu verzi 2695 prohlásit za opravdu stabilní (relativně vzato).
Už zbýval jen jediný problém, po instalaci aktuální verze jsem zjistil, že přenosová rychlost poklesla o cca 35%, z původních 4,2MB/s jedním směrem na 3,3MB/s, hledal jsem co se změnilo, nakonec jsem našel že to dělá asi aktivní doth režim, stačil tedy příkaz iwpriv ath0 doth 0 a už to zase jede krásné 4MB/s.
Co z tohoto zápisu plyne, že vývojáři ovladačů jsou zase jen lidi, někteří horší, někteří lepší a že podobnou zkušenost nikomu z vás nepřeji.
PS: O problému "udev v Debianu vs madwifi" už raději ani psát nebudu, už takhle je to ho opravdu dost.
Přikládám obrázky a ukázkový skript, který používám pro nahození atheros karet, jednotlivé parametry si určitě doplníte:dev=ath"`echo $name | perl -ne 'print $1 if (/ath([0-9])/);'`" if [ $dev = "ath" ]; then echo "Wrong file name, please rename file to format *athX*" exit 1 fi # Nastaveni karet . "$1" echo -n "Starting $dev..." # musime provest slozitou kontrolu na chybny udev v debianu, chyba se tyka jen madwifi! if [ -e "/etc/udev/persistent-net-generator.rules" ]; then while read LINE; do if [ "`echo \"$LINE\" | cut -c 1`" != "#" ]; then if [ "`echo \"$LINE\" | grep -i ath | grep \"*\"`" != "" ]; then if [ "`echo \"$LINE\" | grep \"persistent_net_generator_end\"`" != "" ]; then if [ "`echo \"$LINE\" | grep 802`" == "" ]; then break fi elif [ "`echo \"$LINE\" | grep KERNEL`" != "" ]; then pom1=true fi fi fi done < "/etc/udev/persistent-net-generator.rules" if [ $pom1 ]; then echo "Soubor /etc/udev/persistent-net-generator.rules je chybny!" echo "Pro spravnou funkci madwifi ovladcu bude soubor upraven!" rm -f /tmp/persistent-net-generator.rules while read LINE2; do if [ "`echo \"$LINE2\" | cut -d, -f1`" == "NAME==\"?*\"" ]; then echo "$LINE2" >> /tmp/persistent-net-generator.rules break else echo "$LINE2" >> /tmp/persistent-net-generator.rules fi done < "/etc/udev/persistent-net-generator.rules" echo '' >> /tmp/persistent-net-generator.rules echo '# ignore interfaces of the madwifi driver' >> /tmp/persistent-net-generator.rules echo 'KERNEL=="ath*", GOTO="persistent_net_generator_end"' >> /tmp/persistent-net-generator.rules while read LINE2; do if [ "`echo \"$LINE2\" | cut -d, -f1`" == "NAME==\"?*\"" ]; then pom2=true elif [ $pom2 ]; then echo "$LINE2" >> /tmp/persistent-net-generator.rules fi done < "/etc/udev/persistent-net-generator.rules" rm -f "/etc/udev/persistent-net-generator.rules" if [ -e "/etc/udev/persistent-net-generator.rules" ]; then /etc/init.d/set_readonly stop mv "/tmp/persistent-net-generator.rules" "/etc/udev/persistent-net-generator.rules" /etc/init.d/set_readonly start else mv "/tmp/persistent-net-generator.rules" "/etc/udev/persistent-net-generator.rules" fi echo > "/etc/udev/rules.d/z25_persistent-net.rules" fi fi # normalne pokracujeme dal case $MODE in ap|master) MODE="ap" ;; sta|managed) MODE="sta" ;; adhoc|ad-hoc) MODE="adhoc" ;; *) ;; esac # madwifi si s kazdou novou verzi pripravi novou lahudku, # takze tento skript muze zpusobit pad PC! # # nejprve musime overit jestli neni karta v nejakem bridgi if [ "`brctl show | grep $dev`" != "" ]; then I="0" # danou kartu odpojime ze vsech bridgu while [ "$I" -lt "10" ]; do brctl delif br$I $dev &>/dev/null ((I++)) done fi # z interfaces zjistime, jestli nektera karta neni v bridgi while read LINE; do if [ "`echo $LINE | awk '{print \$1}' | cut -c 1`" != "#" ]; then # radek s bridge_ports je vzdy az po rozhrani if [ "`echo $LINE | grep \"bridge_ports\" | grep $dev`" != "" ]; then BR_DEV="$BDEV" elif [ "`echo $LINE | awk '{print \$2}' | grep \"br\" | grep -Eo [[:digit:]]+`" != "" ]; then BDEV="`echo $LINE | awk '{print \$2}'`" fi fi done < /etc/network/interfaces # vypneme predchozi rozhrani $ifdown $dev &>/dev/null $ifconfig $dev down &>/dev/null $wlanconfig $dev destroy &>/dev/null sleep 0.5 N=`echo $dev | cut -c4` WIFI="`ls -1 /proc/sys/dev/ | grep wifi | sed -n \`expr 1 + $N\`p`" $wlanconfig $dev create wlandev $WIFI wlanmode $MODE 1>/dev/null sleep 0.5 if [ "`echo $CHANNEL | cut -d- -f1`" -gt 14 ] && [ "$W_MODE" != "0" ]; then $iwpriv $dev mode 1 else $iwpriv $dev mode $W_MODE fi # rezim turbo neni v CR povolen if [ "$TURBO" == "1" ]; then $iwpriv $dev turbo 1 else $iwpriv $dev turbo 0 fi # zlepsuje stabilitu ovladace $iwpriv $dev xr 0 # zlepsuje stabilitu spojeni, tyka se asi jen 802,11g $iwpriv $dev protmode 0 # zlepsuje rychlost spojeni, tim ze neskenujeme na pozadi $iwpriv $dev bgscan 0 # specialni nastaveni zlepsujici rychlost o 100% pro madwifi spoj if [ "$CONNECTION" == "madwifi" ]; then # atheros superA/G adaptive radio zlepsuje rychlost i stabilitu spojeni $iwpriv $dev ar 1 # zlepsuje pruchod videa/audio a voip $iwpriv $dev wmm 1 # rezim burst zlepsuje rychlost spoje $iwpriv $dev burst 1 # fast frame zlepsuje rychlost spoje velmi znatelne $iwpriv $dev ff 1 else $iwpriv $dev ar 0 $iwpriv $dev wmm 0 $iwpriv $dev burst 0 $iwpriv $dev ff 0 fi # rezim doth extremne zhorsuje prenosove rychlosti, pro A je rozdil 3 vs 4 MB/s # tento rezim je zapnut az v ovladacich madwifi-ng trunk, neni zapnuty ve stable vetvi $iwpriv $dev doth 0 # wds rezim, pouziti hlavne pro bridge, dovolime bridge jen s ethernetem! if [ "$WDS" == "1" ] || [ "$BR_DEV" != "" ]; then $iwpriv $dev wds 1 else $iwpriv $dev wds 0 fi # essid $iwconfig $dev essid $ESSID # wep klic $iwconfig $dev key $KEY # rychlost $iwconfig $dev rate $RATE # nastaveni anteny na karte if [ "$ANTENNA" == "1" ] || [ "$ANTENNA" == "" ]; then echo 0 > /proc/sys/dev/$WIFI/diversity echo 1 > /proc/sys/dev/$WIFI/txantenna echo 1 > /proc/sys/dev/$WIFI/rxantenna elif [ "$ANTENNA" == "2" ]; then echo 0 > /proc/sys/dev/$WIFI/diversity echo 2 > /proc/sys/dev/$WIFI/txantenna echo 2 > /proc/sys/dev/$WIFI/rxantenna fi # nastaveni ack, cts a slottime pro vzdalenejsi spoje if [ "`echo $DISTANCE | grep km`" != "" ]; then DISTANCE="`echo $DISTANCE | cut -d \"k\" -f1`" DISTANCE="`expr $DISTANCE \* 1000`" elif [ "`echo $DISTANCE | grep m`" != "" ]; then DISTANCE="`echo $DISTANCE | cut -d \"m\" -f1`" fi SLOTTIME="`expr \( 9 + \( $DISTANCE / 300 \) \) + \( \( $DISTANCE % 300 \) \> \( 1 / 2 \) \)`" ACKTIMEOUT="`expr $SLOTTIME \* 2 + 3`" CTSTIMEOUT="`expr $SLOTTIME \* 2 + 3`" echo $SLOTTIME > /proc/sys/dev/$WIFI/slottime echo $ACKTIMEOUT > /proc/sys/dev/$WIFI/acktimeout echo $CTSTIMEOUT > /proc/sys/dev/$WIFI/ctstimeout # nastaveni kanalu if [ "`echo \"$CHANNEL\" | grep -`" == "" ]; then # pro karty v rezimu sta nenastavujeme kanal if [ "$MODE" != "sta" ]; then $iwconfig $dev channel $CHANNEL fi else $athchans -i $dev "$CHANNEL" fi if [ "$BR_DEV" != "" ]; then # rozhrani pro bridge uz existuje, takze jen pridame kartu if [ "`brctl show | grep $BR_DEV`" != "" ]; then brctl addif $BR_DEV $dev fi # podstatne zrychli start bridge brctl setfd $BR_DEV 0 $ifconfig $dev up else $ifconfig $dev up if [ "`cat /etc/network/interfaces | grep $dev`" != "" ]; then $ifup $dev fi fi # vykon lze nastavit az po nahozeni karty $iwconfig $dev txpower $TXPOWER # Velmi problematicke nastaveni echo "done."
Tiskni
Sdílej: