Byly vyhlášeny výsledky letošní volby vedoucího projektu Debian (DPL, Wikipedie). Staronovým vedoucím zůstává Andreas Tille.
Jason Citron končí jako CEO Discordu. Od pondělí 28. dubna nastupuje nový CEO Humam Sakhnini, bývalý CSO Activision Blizzard.
Článek na Libre Arts představuje baskytarový multiefekt Anagram od společnosti Darkglass Electronics. S Linuxem uvnitř (licence, GitHub).
Městský soud v Praze vyhlásil rozsudek, který vyhověl žalobě novináře Jana Cibulky, který s podporou spolku IuRe (Iuridicum Remedium) požadoval omluvu od státu za to, že česká legislativa nařizuje operátorům uchovávat metadata o elektronické komunikaci. To je přitom v rozporu s právem. Stát se musí novináři omluvit a zaplatit náklady řízení. Především je ale součástí přelomové rozhodnutí o nelegálnosti shromažďování dat a o
… více »Americké technologické firmy Apple a Meta Platforms porušily pravidla na ochranu unijního trhu, uvedla včera Evropská komise (EK). Firmám proto vyměřila pokutu – Applu 500 milionů eur (12,5 miliardy Kč) a Metě 200 milionů eur (pět miliard Kč). Komise to oznámila v tiskové zprávě. Jde o první pokuty, které souvisejí s unijním nařízením o digitálních trzích (DMA). „Evropská komise zjistila, že Apple porušil povinnost vyplývající z nařízení
… více »Americká společnost OpenAI, která stojí za chatovacím robotem ChatGPT, by měla zájem o webový prohlížeč Chrome, pokud by jeho současný majitel, společnost Google, byl donucen ho prodat. Při slyšení u antimonopolního soudu ve Washingtonu to řekl šéf produktové divize ChatGPT Nick Turley.
Po roce vývoje od vydání verze 1.26.0 byla vydána nová stabilní verze 1.28.0 webového serveru a reverzní proxy nginx (Wikipedie). Nová verze přináší řadu novinek. Podrobný přehled v souboru CHANGES-1.28.
Byla vydána nová verze 10.0.0 otevřeného emulátoru procesorů a virtualizačního nástroje QEMU (Wikipedie). Přispělo 211 vývojářů. Provedeno bylo více než 2 800 commitů. Přehled úprav a nových vlastností v seznamu změn.
42 svobodných a otevřených projektů získalo finanční podporu od NLnet Foundation (Wikipedie).
Americký výrobce čipů Intel plánuje propustit více než 20 procent zaměstnanců. Cílem tohoto kroku je zjednodušit organizační strukturu ve firmě, která se potýká s problémy.
Starší APM (Advanced Power Management) je specifikací BIOSu, který zajišťuje tuto funkci. Příslušné rozhraní operačního systému má pak za úkol komunikovat s BIOSem. Definuje několik stavů systému, mezi kterými může přecházet, a to jak z popudu operačního systému či uživatele, tak z popudu BIOSu. Z těchto stavů jsou běžné standby (S1/pOS, power saving, stav sníženého příkonu), ve kterém se vyšle perifériím signál ke snížení příkonu, a suspend (S3/STR, suspend to RAM, stav odložení), ve kterém dojde k odpojení napájení většiny periférií a uložení jejich stavu do paměti RAM. Při probuzení se jejich stav obnoví. Zahrnuje to např. i obnovení stavu grafické karty. V tomto stavu je procesor zcela neaktivní a teplota uvnitř skříně významně klesá, takže je možné některé větráky vypnout nebo velmi zpomalit. Posledním stavem je off (vypnuto). U ATX systémů se liší od úplného odpojení ze zásuvky, neboť počítač v tomto stavu může monitorovat některé periférie (např. modem, síťovou kartu, hodiny, klávesnici či myš atd.) a na základě signálu z nich se zapnout.
Abychom mohli APM plně využít, musíme jej aktivovat a nastavit jak v BIOSu, tak v jádře, a navíc mít spuštěný speciální démon (ampd). Díky tomuto démonu můžeme při přechodu mezi stavy spustit akce definované v souboru /etc/apmd_proxy
- např. vysunutí PCMCIA karet, zpomalení či vypnutí větráků, změna konfigurace senzorů či cokoliv jiného, co nás napadne. Některé periférie se odpojí automaticky např. USB-to-USB kabel vyšle odpojovací signál druhému počítači.
I když je tento systém poměrně letitý, některé notebooky, jmenovitě IBM, na něj stále ještě spoléhají či ještě nedávno spoléhaly. Snad kvůli tomu, že obsluha není příliš závislá na OS. S tímto systémem nemám pražádné zkušenosti. Přejdeme tedy k jeho mladšímu bratříčkovi.
Novější ACPI (Advanced Configuration and Power Interface) přenechává větší část práce na operačním systému. Na rozdíl od APM může být každá periférie v jiném stavu, takže ty části počítače, které operační systém zrovna nepotřebuje, mohou odpočívat. Některé periférie (např. i tlačítko POWER) zasílají systému signály, které ACPI vyhodnocuje.
Podobně jako u APM je i u ACPI potřeba speciální démon, který spouští akce nakonfigurované v adresáři /etc/acpi. APM a ACPI se vzájemně vylučují - při zapnuté podpoře ACPI se automaticky deaktivuje APM. V Linuxu je podpora ACPI ve vývoji, ale nutno říci, že na poměrně vysoké úrovni. Sám ACPI na notebooku používám více než dva roky.
Jedná se o specifikaci pro komunikaci OS s hardwarem a naopak (správa napájení je jen podmnožinou veškerých funkcí). Zajišťuje jistou míru abstrakce funkcí hardwaru. Například teplotu CPU je možné číst přes ACPI (/proc/acpi/thermal_zone/TZ*/temperature
) nebo přímo komunikací s chipem pomocí lm_sensors. ACPI nahrazuje APM. V APM řídil správu napájení BIOS, operační systém měl jen omezené možnosti.
Na specifikaci ACPI se podílely firmy Hewlett-Packard, Intel, Microsoft, Phoenix, a Toshiba a navržena byla multiplatformně. Není omezena jen na přenosné počítače, obsahuje i funkce pro servery a desktopové počítače. Součástí specifikace je i programovací jazyk ASL (ACPI Source Language), který se překládá do bytekódu.
Tzv. "second system syndrom"; první systém nestačil, druhý musí umět všechno a radši něco navíc. Specifikace ACPI má 631 stran! Výrobci nedodržují ACPI standard (a to ani ti, kteří se na něm přímo podíleli). V implementaci ACPI v BIOSu jsou často chyby, které obcházejí až ovladače. Implementace v Linuxu je velká asi jako TCP/IP stack! První doporučovaný krok, pokud počítač nenabootuje, je parametr kernelu acpi=off. OLPC (One Laptop Per Child) ACPI nepoužívá vůbec.
Výše jsem zmínil jazyk ASL. ACPI je popsáno tabulkami, nejdůležitější je DSDT (Differentiated System Description Table). kterou OS načítá při bootu. Jedná se o hierarchický systém tabulek, zmíněná DSDT je součástí přímo BIOSu a specifikuje a popisuje HW; viz cat /proc/acpi/dsdt
. Dá se dekompilovat, upravit a zakompilovat zpět do kernelu.
ACPI stavy
Vedle toho stav periferií (D0-D3) a procesoru (C0-C3). Co váš počítač podporuje, to zjistíte v /sys/power/state
: standby = S1, mem = S3, disk = S4 (suspend to disk s podporou BIOSu na speciální partition) už v kernelu není, nahrazuje jej swsusp.
Z ACPI se mimo jiné dá vyčíst teplota, obsluha speciálních tlačítek PC, ovládání LED diod. Bohužel ne vždy to funguje.
Kompletní stav systému se uloží na disk, počítač se vypne. Při bootu se stav zase obnoví. Nepotřebuje podporu BIOSu (ani ACPI), pro hardware je to normální vypnutí a zapnutí. Užitečné pro notebooky, ale i pro desktop (systém naběhne rychleji, nemusíte znovu spouštět, programy a přemýšlet, kde jste skončili...). Několik implementací (sdílí dost kódu):
Již dlouho v kernelu. Současní správci: Pavel Machek, Rafael Wysocki. Dokumentace: [kernel-source]/Documentation/power/swsusp.txt.
Problémy, které musí software suspend řešit:
Princip: paměť se atomicky (při zakázaných přerušeních) kopíruje do volné paměti.
Zařízení se před kopírováním uspí a pak zase probudí.
Filesystém zůstává připojený, je tudíž možné nabootovat jiný OS, ale ten nesmí připojovat oddíly, které byly připojeny při suspendu. Grub (zavaděč) musí být schopen načíst kernel, ale připojený oddíl může být v nekonzistentním stavu. Doporučuji používat boot partition. Probouzet se musí s přesně stejným kernelem jako při uspání. Je-li jiný, swsusp to pozná a bez varování image smaže. Swsusp automaticky ukládá image na první swap partition, pro obnovu potřebuje partition zadat parametrem resume=/dev/{h|s}dX
. Ovladač řadiče disku musí být zakompilovaný v kernelu.
Konfigurace kernelu:
Power management options (ACPI, APM) ---> [*] Software Suspend (/dev/hda2) Default resume partition
Default resume partition nahrazuje parametr resume=
. Spuštění suspend:
echo disk > /sys/power/state
Tuto variantu mám odzkoušenu na desktopu, funguje bezproblémově. Nutno ale podotknout, že ji příliš nevyužívám.
Zatím se nachází mimo kernel, ve formě patche [http://www.tuxonice.net/]. Správce: Nigel Cunningham.
Umožňuje vybrat swap partition, navíc možnost ukládat image do souboru. Volitelně komprese (LZF) a šifrování pomocí cryptoapi v kernelu. Mezi další vlastnosti patří ukazatel průběhu zápisu image, runtime konfigurace v /sys/power/suspend2/
, možnost specifikovat velikosti oddílu, počítá se se suspendem na NFS, podpora highmem (až do 4 GB).
Spuštění suspend:
echo > /sys/power/suspend2/do_suspend
Ale lepší je použít skript hibernate, který vyhodí moduly na blacklistu, přepne do konzole atd., navíc podporuje všechny tři implementace Software Suspend.
Hlavní výhoda suspend2 je v tom, že image může mít velikost skoro celé paměti. Oproti swsusp, kde to mohlo být jen 50 %. Suspend2 dělí stránky do dvou skupin:
Od verze 2.2.9 jsou v Pageset2 jen read-only stránky, původní chování se nastaví pomocí
echo 1 > /sys/power/suspend2/full_pageset2
Proč tedy není v kernelu? Důvodem je příliš mnoho kódu a rovněž skutečnost, že autor odmítá rozdělit kód na nezávislé části.
Userspace Software Suspend přesouvá co nejvíce činností do userspace (ukládání image, komprese, šifrování). Současní správci: Pavel Machek, Rafael Wysocki. Nutná podpora už je v kernelu ([kernel-source]/Documentation/power/userland-swsusp.txt). Potřebný userspace program najdete na http://suspend.sf.net/. Sdílí omezení swsusp: image maximálně 50 % RAM. Userspace program nesmí zapisovat na oddíl disku, který byl připojen v okamžiku snapshotu, tedy nelze jednoduše uložit snapshot na root partition; userspace program by neměl z připojeného disku ani číst. Obnova také vyžaduje userspace program, je potřeba využít initrd/initramfs. Tuto variantu nemám osobně vyzkoušenu.
Dostáváme se k praktickému postupu, jak zprovoznit suspend2 (to RAM) na notebooku. Konkrétně popíši postup zprovoznění suspend2 verze 2.2.9.16 pro 2.6.22-rc1 na jádře řady 2.6.22.1 (vanilla). Mohlo by se zdát, že tato verze je zastaralá... jak by ne, používám ji přes rok. Nicméně to alespoň dokazuje, že je toto řešení dostatečně stabilní. Není prostě důvod k tomu, abych měnil. Suspend2 používám od jádra 2.6.14 a každou verzí je rychlejší a rychlejší. Alespoň v této oblasti jsem zastáncem pravidla Nevrtej do něčeho, co dostatečně dobře funguje.
Přistupme k samotnému postupu.
Opatchujeme jádro:
cd /usr/src/linux bzcat /path/to/patch | patch -p1
Při kompilaci je nutné pro funkci suspend2 zakompilovat:
--- Power Management support [ ] Power Management Debug Support [ ] Software Suspend [*] Suspend2 ---> --- Suspend2 --- Image Storage (you need at least one writer) [*] File Writer [*] Swap Writer --- General Options (resume2=swap:/dev/hda12) Default resume device name zde musí být váš SWAP [*] Allow Keep Image Mode
--- Cryptographic APILZF compression algorithm
Po kompilaci je nutné zajistit, aby se image načítala ještě před jádrem. Jedním krokem je tvorba skriptu resume
, který umístíme do /etc/mkinitrd/scripts/
. Obsah skriptu:
#!/bin/sh cat <<EOF >>$INITRDDIR/script if [ -z "\$noresume" ]; then # be careful with the 'dollar' sign echo > /proc/suspend2/do_resume umount -n devfs umount -n proc fi EOF
Osobně mám vyzkoušenu tuto variantu, ale funguje i tato:
#!/bin/sh # Put this script in /etc/mkinitrd/scripts/ and regenerate your initrd (by # "mkinitrd -o /boot/initrd.img-`uname -r`" or reinstall your kernel package. # Figure out swap device from the first device listed in /proc/swaps swap_device=`awk 'BEGIN{getline;getline;print$1}' < /proc/swaps swap_type=`awk 'BEGIN{getline;getline;print$2}' < /proc/swaps if [ "x$swap_type" = "xpartition" ] ; then resume2=`perl -e "@a=stat '$swap_device';printf 'swap:%04x', \\$a[6]"` else echo "Unable to determine swap device! You will need to set resume2= on your" echo "kernel command-line manually." fi [ -n "$resume2" ] && resume2="echo $resume2 > /proc/suspend2/resume2" # Modify linuxrc script mv $INITRDDIR/linuxrc $INITRDDIR/linuxrc.real cat <<EOT > $INITRDDIR/linuxrc #!/bin/sh export PATH=/sbin:/bin mount -t proc proc /proc . /loadmodules $resume2 echo > /proc/suspend2/do_resume umount /proc . ./linuxrc.real EOT chmod 777 $INITRDDIR/linuxrc
Nyní je možné vygenerovat initramdisk:
mkinitrd -o ramdisk /lib/modules/verze_jadra
Před rebootem a odzkoušením je nutné instalovat skript hibernate
a sdělit zavaděči (v mém případě GRUBu), co dělat po resume. Zde je příklad části mého /boot/grub/menu.lst
(SWAP je na hda12):
title Debian GNU/Linux, kernel 2.6.16.9_swsusp2+bluetooth root (hd0,0) kernel /vmlinuz-2.6.16.9 resume2=swap:/dev/hda12 root=/dev/hda5 ro reboot=b initrd /initrd.img-2.6.16.9 savedefault boot
resume2=swap:/dev/hda12
musí být váš SWAP! (samozřejmě v případě, že používáme suspend do RAM). Pokud chceme využít jako úložiště soubor, zapíšeme resume2=file:/dev/hda7
, přiznám se, že tuto variantu jsem nezkoušel. Nakonec je nutné si trochu pohrát s nastavením hibernate. Konfigurační soubor je bohatě komentován, tudíž není problém výchozí nastavení změnit. Skript hibernate obsahuje i testovací režim (-n
, --no-suspend
). V poslední době je funkce hibernate rozdělena na hibernate-ram
a hibernate-disk
. Osobně používám suspend do RAM.Závěrem bych chtěl jen říci, že swsusp2 rozhodně stál za zprovoznění. I přes bolení hlavy, bezesné noci a výměny pár e-mailů s Petrem Machkem (díky za ně) se mi jej nakonec podařilo přesvědčit, aby se mnou spolupracoval. Jak jsem již zmínil, verzi od verze je rychlejší. Drobnou vadou na kráse je občasná nefunkčnost nastavování podsvětlení LCD po resume. Dříve jsem se také potýkal s "černou obrazovkou" po resume, ale vše napravilo přidání zlobivých modulů grafické karty do blacklistu. V dobách drahých pamětí, tehdy jsem byl vlastníkem 512 MB RAM, se mi občas nepovedlo uspat vůbec kvůli obsazení paměti. Tento nedostatek zmizel po upgrade na 1 GB.
Celkově jsem po více jak dvou letech velmi spokojen. Jediné, co jsem prozatím nezkusil, bylo odebrání baterie po suspendu (samozřejmě při provozu na baterie), tzv. "debaterizace". Ale mám jakési nejasné tušení, že to ani zkoušet nebudu.
Takže happy suspending(2).
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
Zkratka receno, HAL je dobra idea a implementace mozna funguje, kdyz vse slape, jak ma, a nejste zvykli pouzivat prikazovou radku. Ovsem pro naprostou vetsinu lidi, kteri [si mysli ze] Linuxu celkem rozumeji, je debugovani zkusenost dost hrozna, protoze system ma s UNIXovymi konvencemi spolecenho pramalo, spatne se s nim uzivatelsky komunikuje, je docela dost komplikovany (fdi information policy preprobe la la la) a neni od nej poradna dokumentace.Pod tohle bych se klidne podepsal - po te, co jsem koukal jak nastavit HAL k obrazu svemu, jsem celkem rychle dospel k zaveru, ze ho vlasne vubec nepotrebuju. Suspend na desktopu nepotrebuju (mozna nekdy na notebooku), zastrkavana zarizeni mountuju rucne a na featury typu "po-zastrceni-flashdisku-se-ti-na-plose-hned-objevi-ikonka" kaslu, protoze ikonky na plose nepouzivam (a to ani v praci na Windows). Ale uznamav, ze pro uzivatele "odkojene" Windows je HAL perfektni vec, tedy alespon do doby, kdy se nepokusi upravit konfiguraci pres jeho konfiguracni soubory.
Me se treba koncepce HALu nelibi ... nemam rad, kdyz si nejaka vrstva systemu mysli, ze je chytrejsi, nez ja. Nakonfigurovat jsem se to nikdy nepokusil, protoze deklarovana funkcionalita je presne ta, kterou v zadnem pripade na pocitaci mit nechci (prvni, co jsem udelal s kazdou distribuci linuxu (krome gentoo a debianu) bylo, ze jsem zjistoval, jak zabit automounter).
Zvláštní… jedna z prvních věcí, které jsem se v dokumentaci k HALu dočetl, bylo to, že HAL nemá na starosti automatické mountování zařízení… :-)
Především funguje jako abstrakční vrstva umožňující získávat informace o hardwarových zařízeních přes jednotné rozhraní. Takže nemusíte používat jednu metodu pro zařízení připojená přes USB, druhou pro SCSI, třetí pro IDE disky atd. Tohle do určité míry zajišťuje sysfs filesystém, ale HAL pracuje i s informacemi "vyšší úrovně", které jádro (a potažmo sysfs) nezajímají a ani se k nim nedostane.
Kromě toho HAL umožňuje pomocí definičních souborů tyto informace dopnit (jsou-li neúplné) nebo opravit (jsou-li nepřesné) - některá zařízení o sobě neříkají všechno a některá o sobě dokonce lžou. Také umožňuje definovat politiky, tedy předpisy, jak se má se zařízením nakládat (např. preferovaný mounting point). A samozřejmě i notifikovat user space aplikace, které mají s tím zařízením pracovat (např. démona, který se postará o to přimountování).
Takže HAL nemá na starosti automatické přimountování flashdisku nebo vloženého CD-ROM média. O to se stará samostatný démon, který je obvykle součástí desktopového prostředí, ale i mimo KDE/Gnome můžete použít např. ivman
. HAL tomuto démonovi pouze řekne, že se objevilo nové zařízení, jakého je typu, jaké má vlastnosti, jestli se má automaticky mountovat a jak by se měl jmenovat mounting point.
P.S.: Jmenuje se to uswsusp, ne mswsusp.V článku je použito
μ
.
Clanek popisuje kernelovou cast suspendu. To, jak je to vnitrne udelane v pritulnych distribucich v userspace, je vsak bohuzel take cim dal komplikovanejsi - jde o pomerne slozite sehranou sestavu, kdy spolu komunikuje kernel, uswsusp, dbus, HAL, acpid a powersave.Nevim, asi mam stesti na hardware, ale me az na dve drobnosti funguje cely STR ciste na kerneli bazi - staci echo mem > /sys/power/state a je to. A funguje nejenom suspend, ale i resume :–) . Zadne uswsusp, dbus, HAL, acpid ani powersave nepouzivam.
Nutno poznamenat, že Tux On Ice (swsusp2) je výrazně méně stabilní, než ten swsusp, co je ve Vanilce.To rozhodne nepopiram, podle me zkusenosti se ale kvalita a stabilita docela zlepsila. Na mem HW se mi zdalo swsusp2 o neco rychlejsi. S tim probouszenim po dlouhem uplinku sem mel problemy jen u starych verzi, jinak nemam problem s uplinkem kolem 150 dni (pak sem vybil baterku:).
Jediny velky problem je s modulem nvidia, ktery se nechce vypnout a nemuzu tak hibernovat s grafickeho prostredi.nvidia sice je uveden v blacklisted-modules, ale když se zakomentuje, tak hibernace i probuzení fungují (aspoň mě teda)
Proč nee, já se spíš zeptam: mam to autorovi poslat do redakce? Nebo mu napsat mail, "kam to chce"?
Je škoda, že většinou se toto řeší pro laptopy, když na desktopu vidím výhodu velmi jasnou - omezení spotřeby ...Spanku, ne z hibernace? Ja bych to s tou spotrebou zas tak ruzove nevidel - doporucuju poridit ci pujcit si wattmetr a zmerit, jakou ma pocitac spotrebu behem S3 stavu (STR) - setkal jsem se se strojem, kde to bylo okolo 35W, u mne je to 22W. Notebooky maji takovouhle spotrebu v plne bezicim, ale nezatizenem stavu (a nektere ty opravdu usporne i pri zatezi). V S4 (STD) je to jedno, protoze zdroj se muze bez jakehokoliv problemu natvrdo vypnout. A pokud se zaroven odpoji i napajeni ostatnich periferii (optimalni jsou vicenasobne zasuvky se vypinacem a prepetovou ochranou), spotreba PC pak bude nulova.
Jen 2 veci bych mu vytknul:
1] Smaze image ze swapu i kdyz se nekorektne probudi - toto by mel vyvolat nejaky userspace program nebo uzivatel - velmi by se mi hodilo nabootovat pokazde stejnou image - treba v knihovni citarne.
2] Obcas velmi zridka mi nejdou spustit nejake programy a padaji na Seqfault. Staci ale prebootovat a je to zase v poradku. Mozna to je tim, ze uspavam vazne mnohokrat, takze nemam problem udelat klidne 50 uspani/probuzeni za sebou bez rebootu.
Smaze image ze swapu i kdyz se nekorektne probudi - toto by mel vyvolat nejaky userspace program nebo uzivatel - velmi by se mi hodilo nabootovat pokazde stejnou image - treba v knihovni citarne.No tak to vidíš, měl jsi potřebu přejít na swsusp2, který to umí, a ani o tom nevíš...
2] Obcas velmi zridka mi nejdou spustit nejake programy a padaji na Seqfault. Staci ale prebootovat a je to zase v poradku. Mozna to je tim, ze uspavam vazne mnohokrat, takze nemam problem udelat klidne 50 uspani/probuzeni za sebou bez rebootu.Tak to máš nějaké rozbité. Mám momentálně uptime 72 dní a 118 úspěšných probuzení (neúspěšné byly taky, ale nakonec to rozdejchal). Nic mi na následky suspendu ještě nespadlo. (Debian, Vanilka 2.6.18.8)
navíc mít spuštěný speciální démon (ampd)
Správně apmd
Pokud chceme využít jako úložiště soubor, zapíšeme resume2=file:/dev/hda7
Nemá se tomu spíš předat soubor?
resume2=swap:/dev/hda12 musí být váš SWAP! (samozřejmě v případě, že používáme suspend do RAM)Tohle se do grubu dava v pripade suspend-to disk a ne RAM. Navic si myslim, ze TuxOnIce neumi suspend to ram (jakoze je jen na suspend to disk) ale pouziva se kod z jadra.
Note that this value only determines which swap header used to indicate whether we have an image, and where it is. TuxOnIce can and will use any storage that is swapon'd at the time you start to hibernate. All of these devices need to be accessible when we come to resume. If you have encryped swap or are using the device mapper support, all of your swap needs to be configured prior to the echo > do_resume in your initrd/ramfs. It should not be swapon'd, and filesystems on which swap files are located must not be mounted, but the steps prior to doing a mount or swapon should be completed. (This applies accessibility requirement applies for the file allocator, too).