Společnost IBM představila server IBM LinuxONE Emperor 5 poháněný procesorem IBM Telum II.
Byla vydána verze 4.0 multiplatformního integrovaného vývojového prostředí (IDE) pro rychlý vývoj aplikaci (RAD) ve Free Pascalu Lazarus (Wikipedie). Přehled novinek v poznámkách k vydání. Využíván je Free Pascal Compiler (FPC) 3.2.2.
Podpora Windows 10 končí 14. října 2025. Připravovaná kampaň Konec desítek (End of 10) může uživatelům pomoci s přechodem na Linux.
Již tuto středu proběhne 50. Virtuální Bastlírna, tedy dle římského číslování L. Bude L značit velikost, tedy více diskutujících než obvykle, či délku, neboť díky svátku lze diskutovat dlouho do noci? Bude i příští Virtuální Bastlírna virtuální nebo reálná? Nejen to se dozvíte, když dorazíte na diskuzní večer o elektronice, softwaru, ale technice obecně, který si můžete představit jako virtuální posezení u piva spojené s učenou
… více »Český statistický úřad rozšiřuje Statistický geoportál o Datový portál GIS s otevřenými geografickými daty. Ten umožňuje stahování datových sad podle potřeb uživatelů i jejich prohlížení v mapě a přináší nové možnosti v oblasti analýzy a využití statistických dat.
Kevin Lin zkouší využívat chytré brýle Mentra při hraní na piano. Vytváří aplikaci AugmentedChords, pomocí které si do brýlí posílá notový zápis (YouTube). Uvnitř brýlí běží AugmentOS (GitHub), tj. open source operační systém pro chytré brýle.
Jarní konference EurOpen.cz 2025 proběhne 26. až 28. května v Brandýse nad Labem. Věnována je programovacím jazykům, vývoji softwaru a programovacím technikám.
Na čem aktuálně pracují vývojáři GNOME a KDE Plasma? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE Plasma.
Před 25 lety zaplavil celý svět virus ILOVEYOU. Virus se šířil e-mailem, jenž nesl přílohu s názvem I Love You. Příjemci, zvědavému, kdo se do něj zamiloval, pak program spuštěný otevřením přílohy načetl z adresáře e-mailové adresy a na ně pak „milostný vzkaz“ poslal dál. Škody vznikaly jak zahlcením e-mailových serverů, tak i druhou činností viru, kterou bylo přemazání souborů uložených v napadeném počítači.
country_code=CZ
do hostapd.conf. Nepomohlo, zkousim iw reg set CZ
, nic, iw reg get
vraci stale unset. COUNTRY=CZ crda
vraci "Failed to set regulatory domain: -22" Teprve echo "options cfg80211 ieee80211_regdom=CZ" >> /etc/modprobe.d/modprobe.conf
pomohlo v tom, ze iw get reg
vraci:
country CZ: DFS-UNSET (2400 - 2483 @ 40), (N/A, 20) (5150 - 5250 @ 80), (N/A, 23), NO-OUTDOOR (5250 - 5350 @ 80), (N/A, 20), NO-OUTDOOR, DFS (5470 - 5725 @ 80), (N/A, 26), DFS (57240 - 65880 @ 2160), (N/A, 40), NO-OUTDOORAle porad mam vsechny 5GHz kanaly limitovane na passive scanning. Napada nekoho, co s tim?
2.6.32-504.23.4.v6.x86_64 (ClearOS 6.6 final)
iw listŘešení dotazu:
Otázka je, zda má smysl zabývat se flashováním karty Atheros, což je jakýsi podivný riskantní postup s pěti různými návody neznámého původu na fórech, když stačí patchnout ath9k. Jak správně píšeš, uživatelské nastavení ignoruje ath9k, nikoliv karta samotná. Nějaký ucelenější patch se dá najít například v OpenWRT, kde se přesně tento problém řeší. Ale pokud člověk netrvá na elegantním řešení, může to třeba klidně zprasit. Můj domácí server má zkrátka a jednoduše toto:
diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c index 5e15e8e..083f731 100644 --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c @@ -2383,7 +2383,7 @@ int ath9k_hw_fill_cap_info(struct ath_hw *ah) u8 ant_div_ctl1, tx_chainmask, rx_chainmask; eeval = ah->eep_ops->get_eeprom(ah, EEP_REG_0); - regulatory->current_rd = eeval; + regulatory->current_rd = 32971; if (ah->opmode != NL80211_IFTYPE_AP && ah->hw_version.subvendorid == AR_SUBVENDOR_ID_NEW_A) { diff --git a/net/wireless/reg.c b/net/wireless/reg.c index 0e347f8..11b0a52 100644 --- a/net/wireless/reg.c +++ b/net/wireless/reg.c @@ -2576,7 +2576,7 @@ static void restore_regulatory_settings(bool reset_user) restore_custom_reg_settings(&rdev->wiphy); } - regulatory_hint_core(world_alpha2); + regulatory_hint_core("CZ"); /* * This restores the ieee80211_regdom module parameter @@ -3145,7 +3145,7 @@ int __init regulatory_init(void) user_alpha2[1] = '7'; /* We always try to get an update for the static regdomain */ - err = regulatory_hint_core(cfg80211_world_regdom->alpha2); + err = regulatory_hint_core("CZ"); if (err) { if (err == -ENOMEM) return err;
Ještě pro úplnost dodám, že uživatelské nastavení se ve skutečnosti neignoruje. Je to ještě mnohem horší. Uživatelské nastavení vytvoří průnik povolení a sjednocení zákazů mezi momentálně platnou konfigurací karty a novým nastavením. Takže v případě driveru Atheros může uživatelské nastavení možnosti karty vždy jen omezit, nikdy ne rozšířit nebo jinak plnohodnotně změnit. Tedy pokud člověk ten driver nehackne, že ano, což dělá OpenWRT nebo (chro chro) já.
Ja jsem spis pres hw, takze mi flash prijde nejjednodusi, nejlogictejsi a take spravnyA kolikrat to to flashnuti vydrzi? Napadlo vas, ze treba nekdo bydli ve meste na hranicich dvou rozdilnych regulacnich domen a hranici prekracuje nekolikrat denne?
Qualcomm/Atheros si s takovým problémem poradí tak trochu po svém. (Myslím driver, nikoliv hardware.) Při každém setkání s další, dosud nepoužívanou doménou (tuším, že přes 802.11d či nějaký takový protokol může získat nastavení od AP) prostě nechá nahrát z userspace data pro danou doménu a zase udělá průnik povolení a sjednocení zákazů (s momentálně existujícím stavem). Takže po překročení hranice bude (software) dodržovat pravidla obou zemí, ještě navíc obohacená/ochuzená (jak se to vezme) o případné uživatelské nastavení, které může být odlišné od obou zemí, a o hodnotu nalezenou v EEPROM, která může být zase úplně jiná.
Horší ovšem je, že u spousty karet je to stejně jedno, protože mívají v EEPROM doménu 00 („world“), což je asi tak ta nejhorší varianta, protože na 5 GHz se s tím nedá vytvořit access point vůbec nikde a na 2,4 GHz to půjde jen na prvních 11 kanálech. Ovšem s omezeným vysílacím výkonem, bez 40MHz kanálů, s 80MHz kanály pouze v oblasti mokrých snů a tak dále. Skoro všechny kanály kromě prvních jedenácti na 2,4 GHz jsou pak omezené na passive scanning a nemají povolený access point. Takže má-li karta doménu 00, může přijít jakékoliv konfigurační omezení zvenčí a sada dodržovaných pravidel se už v podstatě nijak nezmění, protože 00 je v mnoha směrech nejrestriktivnější.
Omezení se zdaleka netýkají jenom dostupných kanálů, ale taky povolených vysílacích výkonů na různých kanálech. To může zásadně ovlivnit dosah AP a spolehlivost spojení, zejména v dnešním bezohledném hlučném prostředí. Zkrátka a dobře, chce-li někdo mít AP s kartou Atheros, chtě nechtě prostě musí ten driver hacknout. Tvůrci OpenWRT o tom vědí své, koneckonců. Jistě by
ath9k
tolik netweakovali, kdyby fakt nemuseli.
Zdar, zase ja. Jsem nahranej:
[root@cos7 atheros]# ./iwleeprom -d 0000:02:00.0 -s Using device 0000:02:00.0 [RW] AR9300 Wireless Adapter (PCI-E) IO driver: ath9300 HW: AR9300 (PCI-E) rev 0003 RF: integrated Trying EEPROM access... OTP address out of range: 0fff ...
Jeste to pokracuje, ale hlavni je to OTP. One Time Programming znamena, ze na moji karte neni EEPROM, dokonce ani PROM, ale jen ciste ROM, takze neflashnu nic, dekuji pekne do Bigfoot Networks. Mohl bys prosim trochu rozvest, jak bych mohl uplatnit Tvuj hack driveru? Krome shaneni nove karty, ktere muze dopadnout stejne, jsi moje posledni sance.
Pokud to chapu spravne, mam tim diffem zmenit zdrojaky ath9k a zkompilovat upravenou verzi?
Tady bych doporučil zkusit zkompilovat jenom moduly a prostě nahradit ath9k
za ten hacknutý. Pokud bude konfigurace kernelu a build systém v rozumné shodě s tím, co tam už běží, mělo by to být v pohodě a nový ath9k
poslouží jako drop-in replacement toho původního. Kompilovat celý kernel asi nemá smysl. Já třeba sice mám na svých počítačích vlastnoručně nakonfigurované a zkompilované kernely, ale kdyby se mě někdo zeptal na seznam výhod, asi bych fakt hodně váhal.
Co je potřeba pro build kernelu, o tom se aspoň ve zkratce zmiňuje stránka toho distra. To je ovšem hodně ve zkratce. Možná by se ale dal aplikovat nějaký návod pro CentOS, RedHat nebo Fedoru, jak se tak dívám. To by bylo potřeba zkusit.
Rád tady samozřejmě popíšu, jak bych kernel vybuildil já. Zdaleka ne všechny kroky jsou nezbytné pro tento případ, takže si z toho můžeš vybrat a poupravit jen to, co opravdu potřebuješ. Můžeš použít buď zdrojáky z distribuce, nebo aktuální kernelový strom. To první zaručí kompatibilitu modulů s aktuálně běžícím kernelem, zatímco to druhé zaručí kompatibilitu mého patche se zdrojáky, tedy přinejmenším u verze 4.1.6. Pokud se patch nepodaří aplikovat (což je u starších kernelů docela pravděpodobné), v tomto konkrétním případě se svět neposere, protože není až tak těžké příslušné řádky v souborech dohledat a aplikovat patch manuálně. Jen je to úsilí navíc. Každopádně těch pár relevantních řádků vypadá stejně už tak od kernelu 3.5, takže by měly být celkem v pohodě k nalezení, i pokud patch řekne, že neví a nezná.
Naklonování celé Git repository stačí udělat jen jednou v životě. Pak už se bude vždy pouze (celkem rychle a efektivně, s ohledem na její velikost) aktualizovat:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git ~/src/linux
Kompletní build celého kernelu bych udělal asi takto:
# Pár nastaení, která je potřeba upravit podle distribuce. VERSION='4.1.6' LINUX_SOURCE_PATH="${HOME}/src/linux" KERNEL_IMAGE='/boot/vmlinuz-linux' set -e cd "$LINUX_SOURCE_PATH" # Tady zruším všechny změny, všechny pozůstatky po buildech atd. git clean -f -d git checkout . git checkout master # Aktualizace repository, aby byly k dispozici nejnovější verze. git pull # Checkout zvolené verze do pracovních souborů. git checkout "v$VERSION" # Aplikace zázračného patche. Jo, přesně tady to je. patch -lp1 <<-ATH9K_HACK diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c index 5e15e8e..083f731 100644 --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c @@ -2383,7 +2383,7 @@ int ath9k_hw_fill_cap_info(struct ath_hw *ah) u8 ant_div_ctl1, tx_chainmask, rx_chainmask; eeval = ah->eep_ops->get_eeprom(ah, EEP_REG_0); - regulatory->current_rd = eeval; + regulatory->current_rd = 32971; if (ah->opmode != NL80211_IFTYPE_AP && ah->hw_version.subvendorid == AR_SUBVENDOR_ID_NEW_A) { diff --git a/net/wireless/reg.c b/net/wireless/reg.c index 0e347f8..11b0a52 100644 --- a/net/wireless/reg.c +++ b/net/wireless/reg.c @@ -2576,7 +2576,7 @@ static void restore_regulatory_settings(bool reset_user) restore_custom_reg_settings(&rdev->wiphy); } - regulatory_hint_core(world_alpha2); + regulatory_hint_core("CZ"); /* * This restores the ieee80211_regdom module parameter @@ -3145,7 +3145,7 @@ int __init regulatory_init(void) user_alpha2[1] = '7'; /* We always try to get an update for the static regdomain */ - err = regulatory_hint_core(cfg80211_world_regdom->alpha2); + err = regulatory_hint_core("CZ"); if (err) { if (err == -ENOMEM) return err; ATH9K_HACK # Získání konfiguračního souboru existujícího kernelu. # Buď je v /proc/config.gz, nebo taky ne. if [[ -f /proc/config.gz ]]; then zcat /proc/config.gz > ./.config else if ! scripts/extract-ikconfig "$KERNEL_IMAGE" > ./.config; then cp "/boot/config-${VERSION}" ./.config # A jinak konec, tady už prostě vaříme z vody. fi fi # Proč ne native, když už to stejně celé kompilujeme. export KCFLAGS='-march=native -O2 -pipe' export KAFLAGS='-march=native -O2 -pipe' # Spuštění buildu ve screenu; oldconfig a menuconfig s trochou interakce. # modules je v podstatě to jediné, co je potřeba spustit v případě modulů. screen -d -m sh -c \ 'for i in oldconfig menuconfig clean prepare bzImage modules; do make -j 8 $i; done' # S následujícím opatrně, ať to ještě vůbec někdy nabootuje. sudo make -j modules_install
Z výše uvedeného bude asi nejlepší zvolit kompilaci pouze modulů (cíl modules
) a pak najít, kde je ath9k
(find -type f -name ath9k.ko
) a přepsat jím manuálně ten původní v /lib/modules/…/<verze_kernelu>
. Pokud po přebootování (nebo případně po modprobe -r ath9k && modprobe ath9k
) bude vše v pořádku, tj. v dmesg
se objeví blablabla CZ a bude možné zvolit nějaké kanály pro access point (tj. hostapd
bude provozuschopný a nebude nadávat), poté se dá uvažovat o tom, jak takovou změnu uložit nějak nastálo. Variant je několik:
ath9k
v nějakém odděleném balíčku).ath9k
, kdykoliv to bude potřeba, a na kterém bude záviset třeba hostapd
. (Například vhodný systemd
unit file spouštějící nějaký build skript. Tedy podle toho, co daná distribuce používá.)akmod
, jestli distribuce něco takového má. akmod
například na Fedoře automaticky kompiluje a aktualizuje moduly od grafických karet NVidia a další podobné těžko balíčkovatelné kusy kernelu.Tohle už ale záleží na tom, co konkrétně distribuce dělá a umí, jaký systém pro build balíčků používá a tak dále. Abych to shrnul, doporučil bych napřed nějakým rychlým manuálním hackem vyzkoušet, jestli to celé vůbec má smysl, tj. jestli upravený modul bude fungovat, jak má. Teprve pokud se ukáže, že je to v pohodě, stojí za to investovat čas a úsilí do nějakých trvalejších úprav, které budou v lepším souladu s danou distribucí.
„Instalace“ samotného kernelu (například pokud by se zkompilovaná verze modulů lišila od verze distribučního kernelu a šlo by fakt jen o to nabootovat aspoň jednou alternativní kernel a zkusit, co to dělá) se dá provést zhruba nějak takto:
# Po editaci /boot/grub*/grub*.cfg a přidání kopie nějaké funkční položky: cp /var/inst/linux/System.map /boot/System.map-alternative cp /var/inst/linux/arch/x86_64/boot/bzImage /boot/vmlinuz-linux-alternative # Následující je pouze pro ArchLinux; Fedora má dracut, ostatní kdovíco. mkinitcpio -g /boot/vmlinuz-linux-alternative.img -c /etc/mkinitcpio.conf -k "$VERSION"-dirty # Přípona -dirty se po některých patchích u verzí objeví, jindy ne. # Poslední řádka výstupu z make modules_install ukáže, jak to je.
Pozor ovšem na ten initrd / initramfs / initcpio / kdovíjaktomuříkají, protože bez vygenerování správného obrazu pro daný kernel to většinou nenabootuje. Zažil jsem ty krásné časy, kdy initramfs nebyl povinný, takže stačilo zakompilovat přímo do kernelu jeden filesystémový driver, aby kernel dokázal otevřít hlavní filesystém s ostatními kernelovými moduly a initem, a bylo vys(ta)ráno. Leč časy se mění.
Možná se vyplatí vsadit na jistotu a zkusit spíš vybuildit kernelový balíček přímo build systémem dané distribuce. Tam je aspoň menší riziko, že člověk na něco podstatného zapomene. I tak doufám, že tahle odpověď aspoň něco ozřejmí — třeba to, kde se vyrábějí kernelové moduly.
A hned je tu první errata v podobě sed 's|/var/inst|${HOME}/src|'
u toho instalačního rádobyskriptu — to mi už zase unikl nějaký copy&paste z dvou různých systémů. Grrr.
cp ${HOME}/src/linux/System.map /boot/System.map-alternative cp ${HOME}/src/linux/arch/x86_64/boot/bzImage /boot/vmlinuz-linux-alternative
Passive scanning většinou vadí. Tazatel jasně píše, že chce provozovat AP na 5 GHz. Bez nastavení nějaké rozumné regulatory domain je ovšem nanejvýš pravděpodobné, že všechny 5GHz kanály budou omezené na passive scanning a nebude tedy možné na žádném z nich provozovat AP. Totéž většinou postihne kanály 12 a 13 na 2,4 GHz, na nichž rovněž nesmí být AP, pokud člověk něco nezastaví „násilím“.
Passive scanning zabraňuje vytváření AP, přinejmenším tedy u driveru ath9k
(ve vanilla verzi, bez OpenWRT patchsetu). Poněvadž AP jako takový je přesným opakem pasivní detekce AP, je takové omezení koneckonců celkem logické, že ano. Otázka je, co myslíš souslovím použití AP. Passive scanning skutečně nijak nebrání připojit se jako klient k AP, který už na „pasivně scanovaném“ kanále existuje a vysílá. Neumožňuje ovšem používat WiFi rozhraní jako AP na daném kanále. A použitím rozhraní jako AP se myslí přepnutí rozhraní z implicitního managed režimu do režimu AP, vysílání beaconů, autentifikace klientů a zkrátka všechno možné, co dělá
hostapd
.
Zkus si opravdu spustit hostapd
a nastavit kanál 13 na kartě, která tam má pro daný kanál passive scanning (přinejmenším podle výpisu z iw list
). Hint: Ne, fakt to nepůjde. On už je ath9k prostě takový.
Pak má pravděpodobně karta v EEPROM doménu, která kanál 13 normálně povoluje i pro access pointy. (Vsadil bych se, že iw list u kanálu 13 neukazuje passive scanning, no IBSS ani další omezení. (Zákaz Ad-Hoc sítí je taky většinou v korelaci se zákazem AP, přinejmenším u většiny domén to tak je.)
Já jsem si koupil do serveru kartu, která byla poměrně podezřele levná, ale v EEPROM má tak divnou doménu, že má zakázané všechny 5GHz kanály a taky kanály 12 a 13 na 2,4 GHz. Tedy všechny umí používat v roli klienta, ale hostapd
řekne hovno. (Přesněji řečeno, řekne to ten syscall, kterým se hostapd
pokouší přepnout kartu do režimu AP.) Hacknutí ath9k
tohle odbloukje a všichni (kernel především) si pak myslí, že je tam doména CZ/CH/kdezrovnajsem.
Tohle bude rozumnější než můj prasácký patch výše, pokud to ovšem nevyžaduje rovnou celý OpenWRT patchset…
Jo, dá se zkompilovat jenom odděleně ath9k
, když člověk přijde na to, který Makefile
a cíl to je. Jenom tam pak není ta podpora balíčkovacího systému kolem, takže se musí manuálně někam nakopírovat soubor ath9k.ko
a tak podobně. Jinak ale nic nebrání kompilaci celého kernelu s mým patchem pro ath9k
. Dokonce to může být nezbytné v případě, že se nepodaří ath9k
zkompilovat tak, aby byl kompatibilní s kernelem aktuálně běžícím na tom stroji. Pak může být jednodušší prostě zkompilovat celý kernel, do kterého ten nový ath9k pasuje, nabootovat ho a zkusit, co a jak.
Ty konfigurační volby výše jsou ale opravdu specifické pro OpenWRT, jak jsem se obával. Na vanilla kernelu mi zgrep USER_REGD /proc/config.gz
nedává prostě nic. (A přitom je asi jasné, že zrovna já bych tu volbu měl zapnutou, kdyby ve vanilla kernelu byla. )
Tiskni
Sdílej: