Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 4.5.0. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.
Byl vydán Mozilla Firefox 138.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 138 je již k dispozici také na Flathubu a Snapcraftu.
Šestnáctý ročník ne-konference jOpenSpace se koná 3. – 5. října 2025 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytvářejí všichni účastníci, se skládá z desetiminutových
… více »Richard Stallman přednáší ve středu 7. května od 16:30 na Technické univerzitě v Liberci o vlivu technologií na svobodu. Přednáška je určená jak odborné tak laické veřejnosti.
Jean-Baptiste Mardelle se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 25.04.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.
TmuxAI (GitHub) je AI asistent pro práci v terminálu. Vyžaduje účet na OpenRouter.
Byla vydána nová verze R14.1.4 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5, Wikipedie). Přehled novinek i s náhledy v poznámkách k vydání. Podrobný přehled v Changelogu.
Bylo vydáno OpenBSD 7.7. Opět bez písničky.
V Tiraně proběhl letošní Linux App Summit (LAS) (Mastodon). Zatím nesestříhané videozáznamy přednášek jsou k dispozici na YouTube.
kexec
je systémové volání, které umožňuje aktualizovat Linux kernel za běhu, tedy bez potřeby restartu počítače. Minimalizuje se tím odstávka stroje potřebná k aktualizaci jádra. V tomto článku si povíme něco z málo teorie a ukážeme si jak na to prakticky.
Aktualizace jádra bez restartu počítače zní dobře. Jak je to vlastně možné? Jelikož je obraz jádra uložen na fixním bodě v paměti, není až takový problém jej přepsat obrazem jiným. To se dělá ve třech krocích: nejdřív se obraz nahraje do paměti uživatelského prostoru, potom se přesune do dynamické paměti jádra, zkopíruje se na místo jádra původního a načte se.
Přeskočí se všechny kroky od spuštění počítače až k zavaděči, což zahrnuje inicializaci hardware, dále činnost firmware (na x86 BIOS) a samotný zavaděč (např. GRUB nebo lilo). Z tohoto kromě zřejmé výhody, že se ušetří nějaký čas, mimo jiné také vyplývá, že je zde riziko toho, že se některé zařízení bude po načtení nového jádra nacházet v nedefinovaném stavu.
Použití kexec přináší jednu zajímavou výhodu, kterou ocení hlavně vývojáři jádra. Jde o to, že po jeho zavolání se zachová obsah RAM a díky tomu je možné zjistit např. proč došlo k nějaké chybě v aktuálně načteném jádře. Nemusíte se spoléhat například na rozbitý ovladač disku, protože můžete nahrát nové jádro, kde je ovladač v pořádku a uložit na disk obraz paměti pomocí něj.
Je zde ovšem i další nevýhoda. Kexec se nestará o ukončování uživatelských procesů, odpojování disků, atd. To vše musíte udělat sami.
Kexec není prvním projektem, který se o něco takového snaží. Předcházely mu projekty bootimage a Two Kernel Monte (v dobách Linuxu 2.3/2.4). Kexec je dostupný v Linuxu až od verze 2.6. Dříve jej Eric W. Biederman vyvíjel jako patch pro Linux 2.5, který podporoval pouze 32-bitovou architekturu x86, ale později se dostal do oficiálního (vanilla) jádra a získal podporu dalších architektur (x86-64, PPC, IA64, ARM, MIPS). Nyní, když chcete podporu kexec v jádře (což je samozřejmě nutné, pro použití kexec), musíte povolit volbu CONFIG_KEXEC.
Aby bylo možné kexec ovládat z uživatelského prostoru, musí pro to existovat nějaký nástroj. Balíček kexec-tools obsahuje potřebný program kexec
(a kdump
, kterým se nebudu zabývat), se kterým je třeba pochopitelně pracovat s rootovskými právy.
Nejdříve předáme přepínači -l
cestu k novému obrazu jádra, potom pomocí --append=
přidáme případné argumenty jádru (nezapomeneme předat kořenový adresář pomocí "root=...
") a případně ještě počáteční ramdisk initrd pomocí --initrd=
. Příkaz nakonec může vypadat takto:
kexec -l "/boot/vmlinuz26" --append="root=/dev/sda2 ro" --initrd="/boot/kernel26.img"
Tímto se jádro zatím pouze načte na dočasné místo v paměti. Nyní je čas povypínat běžící procesy (můžete použít initskripty, případně kill na ty neposlušné), odpojit oddíly a změnit připojení kořenového adresáře pouze pro čtení, což se dělá takto:
mount -o ro,remount /
Nyní je čas zahájit spuštění nového jádra, což se provádí příkazem:
kexec -e
kexec
má ještě několik přepínačů, z nichž jsou pro běžného smrtelníka zajímavé například tyto: -u
zruší načtení kernelu pomocí -l
, --reuse-cmdline
použije jako argumenty běžícího jádra pro nové jádro, --reuseinitrd
použije ramdisk z prvního bootu a --reset-vga
se pokusí resetovat standardní VGA zařízení. Ne všechny přepínače jsou dostupné pro všechny případy, proto si případně přečtěte manuál (man kexec
).
Když shrneme výhody a nevýhody, dojdeme k tomuto:
+ kratší odstávka při změně jádra
+ zachování dat v operační paměti (vhodné hlavně pro vývojáře)
- uživatel se musí postarat o řádné ukončení procesů a odpojení oddílů disků (*)
- tím, že nedojde k reinicializaci hardwaru, se může stát, že se nějaké zařízení bude po spuštění nového jádra nacházet v nedefinovaném stavu
Je na každém, aby se rozhodnul, jestli mu několik ušetřených sekund stojí za tato rizika.
Ještě se vrátím k hvězdičce (*) u první nevýhody, kterou jsem zde uvedl. Jelikož píši článek o kexec, bylo by asi zvláštní, kdybych jej nevyzkoušel. Vrhnul jsem se tedy na to, postupoval jsem jak jsem měl a když jsem došel k volání kexec -e
, způsobilo paniku jádra (soudě dle blikajícího numlocku). Ve wiki Arch Linuxu, který používám, jsem se dočetl jaký je podporovaný postup na této distribuci a byl jsem mile překvapen. Initskripty Arch Linuxu s použitím kexec totiž počítají a spustíte-li:
/etc/rc.d/kexec start /etc/rc.d/kexec load reboot
systém se postará o zbytek sám. První příkaz povolí použití kexec, když spustíte klasický příkaz reboot
(nebo prostě restartujete počítač z grafického prostředí). Druhý příkaz načte nové jádro, které má být spuštěno místo současného (nastavení čte z konfiguračního souboru /etc/conf.d/kexec
). Třetí příkaz je v tomto případě již jen jedním ze způsobů, jak proces spuštění nového jádra zahájit.
Rozhodnete-li se kexec používat, nejdříve si tedy zjistěte preferovaný postup na vaší distribuci, pravděpodobně totiž bude uživatelsky podstatně přívětivější. Pro příklad uvedu ještě relevantní odkaz na Gentoo wiki.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
Osobně raději překousnu několikaminutová downtime než abych instaloval binární patche do jádra od nějaké (skoro) neznámé firmy.Ty možná jo. Pokud má někdo na stroji úlohu, co běží dlouho a ještě dlouho běžet bude, určitě se mu nebude chtít pouštět to znova, protože restart Patche původně nebyly binární, mělo to jít do hlavní řady...
Ty možná jo. Pokud má někdo na stroji úlohu, co běží dlouho a ještě dlouho běžet bude, určitě se mu nebude chtít pouštět to znova, protože restartTo urcite. Ale porad je lepsi, kdyz ten nekdo tu ulohu pozastavi kvuli restartu, a po restartu da resume a bude pokracovat, nez kdyz mu uprostred behu te ulohy necekane sleti system, protoze spatny binarni patch. To v tom lepsim pripade - v tom horsim pripade to zdanlive probehne OK a treba to poskodi driver radice a skoncis s filesystemem na hadry.
protoze spatny binarni patch.Já nevím, co furt máš s těmi špatnými binárními patchi... ty patche se vytváří z aktuálního běžícího jádra (tj. z otevřených zdrojových kódů), nahradit tělo funkce jinou taky není tak velký problém a největší problém celého toho procesu jsou softwarové patenty na některé částí postupu. Tvoje kecy o špatných patchích jsou jenom FUD. Nebo už jsi nějaký takový pád kvůli ksplice viděl?
# Defaults for kexec initscript # sourced by /etc/init.d/kexec and /etc/init.d/kexec-load # Load a kexec kernel (true/false) LOAD_KEXEC=false # Kernel and initrd image KERNEL_IMAGE="/boot/vmlinuz-2.6.32-22-generic" INITRD="/boot/initrd.img-2.6.32-22-generic" # If empty, use current /proc/cmdline APPEND="root=UUID=00ece7dc-da9e-43e1-b8f3-50fad256d916 ro single kgdb8250=ttyS0,115200 kgdbwait kgdbcon"v lepších případech stačí jen LOAD_KEXEC=false přepsat na LOAD_KEXEC=true a bude to fungovat samo. Jinak s tím nedefinovaným stavem to není až tak úplně žhavé. Důležité je, aby k zařízení kupř. byly jaderné ovladače a byla v nich zahrnuta inicializace. Dřív býval např. problém s grafikama, ale co je v jádře Noveau a KMS, tak to fachčí bez nejmenšího problému. Jinak si se klidně pár slovy ještě mohl zmínit o kdumpu. Ten je též parádní, jen mě na něm štve, že je potřeba vyhradit novému jádru dopředu místo. A za námět k falejmu jednoznačně * THUMBS UP*.
PS: kdyby to někoho zajímalo, tak uptime se samozřejmě vynuluje.Sakra
Přeskočí se všechny kroky od spuštění počítače až k zavaděči, což zahrnuje inicializaci hardware, dále činnost firmware (na x86 BIOS) a samotný zavaděč (např. GRUB nebo lilo)
Toto bych jako výhodu ani moc neviděl. Jasně, pro vývojáře jádra, který by jinak musel rebootovat 10x denně je to jistě plus. Ale server/stanici si velmi rád po upgrade jádra kompletně restartnu, aby viděl, zda se vše nastartuje jak má.
Nasrali ste ma, tak som to nasielTy jo, tak sme fakt borci. Jinak jsem na to mrknul i já a též to není tak žhavé.
NoUpdateProcessList
v /etc/PackageKit/PackageKit.conf
. Ve výchozí konfiguraci je tam pouze firefox.
To, že to okno neříká, který proces je potřeba ukončit, je nahlášený bug.