Opravené chyby v Linuxovém jádře 2.4

Diskuze čtenářů k článku

dasd  |  06. 01. 2004 21:33

zepry bezpecny system
asi jako windows ze

Souhlasím  |  Nesouhlasím  |  Odpovědět
Karel  |  06. 01. 2004 22:07

každý software má chyby, protže ho dělají lidé. Jde spíš o to, jak rychle jsou takto kritické chyby opravené. Tato byla opravena za několik hodin. Malému měkkému to trvá o něco (vlastně o mnoho) déle. Dokonce některé kritické chyby nejsou opraveny ani po několika měsících.

Souhlasím  |  Nesouhlasím  |  Odpovědět
M.D.  |  06. 01. 2004 23:08

Chyby jsou a budou, vždyť všechny programy píší jen lidé.

Víte ovšem, v čem je ten skutečný rozdíl mezi Windows a Linuxem? Ve svobodě. V Linuxu máte tu svobodu a možnost i takovouto chybu opravit sám a mnohem dříve, než se nejaká firma laskavě rozhodne vydat "oficiální" záplatu. Navíc protože je vidět dovnitř, může být oprava mnohem elegantnější než v jakémkoliv proprietárním systému.

Například tato záplata od Honzy K. Malého (díky!) chyby systémového volání mremam() umožnuje zabezpečit kernel za běhu, bez nutnosti restartu. Stačí přeložit jako modul a načíst. Umíte něco takového ve Windows?

/* Po zalepeni ptrace modulem zkusim totez pro mremap error
   ... narozdil od do_brk by to melo stacit */

#define __KERNEL__
#define MODULE
#define _LOOSE_KERNEL_NAMES

#include <linux/types.h>
#include <linux/kernel.h>

#include <linux/config.h>
#include <linux/module.h>
#include <linux/version.h>
#include <sys/syscall.h>

#include <linux/sched.h>

unsigned long (*real_mremap)(unsigned long addr,                                                                          
        unsigned long old_len, unsigned long new_len,                                                                          
        unsigned long flags, unsigned long new_addr);
extern void *sys_call_table[];
asmlinkage unsigned long new_mremap(unsigned long addr,                                                                        
        unsigned long old_len, unsigned long new_len,                                                                          
        unsigned long flags, unsigned long new_addr);

int init_module() {

      /* Save a pointer to the old mremap function */
      real_mremap   = sys_call_table[ __NR_mremap ];

      /* point to our new mremap function in sys_call_table */
      sys_call_table[ __NR_mremap ]   =  (void *)new_mremap;

      printk(KERN_INFO "safemremap module installed\n");
      return 0;
}

#ifdef __KERNEL_STRICT_NAMES
#warn sakra
#endif

int cleanup_module() {

      /* reset the pointer back to the actual function */
      sys_call_table[ __NR_mremap ]   = (void *)real_mremap;

      printk(KERN_INFO "safemremap module uninstalled\n");
      return 0;
}


/* The replacement function */
asmlinkage unsigned long new_mremap(unsigned long addr,                                                                        
        unsigned long old_len, unsigned long new_len,                                                                          
        unsigned long flags, unsigned long new_addr) {
  if (unlikely(!new_len && new_addr != addr)) return(-EINVAL);
  return(real_mremap(addr,old_len,new_len,flags,new_addr));
}

Souhlasím  |  Nesouhlasím  |  Odpovědět
C  |  06. 01. 2004 23:41

...a na tom je vidět, proč lidi používají pořád víc Windows. Oni chtějí na počítači pracovat, ne hrát si se systémem :)

Souhlasím  |  Nesouhlasím  |  Odpovědět
M.D.  |  06. 01. 2004 23:53

Tak se mi zdá, že jste to skutečně nepochopil...

Kdo tady mluví o nejakém hraní? Tady jde jen o to, že človek, který je schopen programovat a má schopnost danou záležitost opravit, má také tu možnost (svobodu).

Pokud je někdo jen uživatel, tak může čekat na oficiální záplatu od autora své distribuce stejně jako kdyby šlo o Windows (ve většine distribucí už opravený kernel vyšel).

To je "filozofie" Microsoftu -- přesvědčit celý svět, že kompetentně spravovat počítač (nebo dokonce server) zvládne každý běžný uživatel schopný uchopit do ruky myš. Klikání sem a tam, to je to "hraní si", o kterém je řeč.

Patch, který jsem v předchozím příspěvku uvedl, je výsledek práce profesionálního programátora, který jen není svazován zádnými softwarovými licencemi, nedostupnými zdrojáky atd.

Vy mluvíte o užívání koncovým uživatelem, já mluvím o správě systému.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petr Minařík  |  07. 01. 2004 10:45

Je to hraní má pravdu.

Většina lidí se uchýlí k čekání na záplatu (u Linuxu) a má mnoho důvodu proč ta učinit.
       1. Nemusí znát programovací jazyk - to je nemalá zátěž
                to není o otevření refernční příručky a sesmolení několika příkazů
       2. Nemusí se prohrabovat stohem zdrojáků a hledat jak jehlu v kupce sena - to je pěkné hledání
                kolik řádků zdrojiového kódu je Linux?
       3. Nemusí se seznamovat s chybou jejímy projevy
       4. Nemusí tu svoji chybu ladit a testovat

Autor programu to vše udělá mnohem dříve a s vynaložením daleko menší námahy. Pochybuji, že máte přehled o tom co vyžaduje správa počítačového systému. Správce opravdového počítačového systému nikdy nebude mít čas aby si s tím takto pohrál.

Souhlasím  |  Nesouhlasím  |  Odpovědět
M.D.  |  07. 01. 2004 11:25

Jen na okraj -- správou opravdových počítačových systémů se živím, spravuji řadu stanic s Windows 2000/XP a Linuxem a několik serverů s Linuxem.

Máte určitě pravdu, že většina lidí se uchýlí k čekání na záplatu a já jim to rozhodně neberu. Vždyť pokud platí nejaké peníze za distribuci OS, tak mají nárok na servis a odbornou pomoc.

Já to tak ovšem nedělám, protože jsem zároveň programátor a umím si kernel opatchovat sám. Ne, nejsem takový kernelový hacker, abych chybu sám našel a odstranil, ale typicky existuje nejaký security advisory s popisem opravy. Chyba v mremap() a řada předchozích chyb nejsou chyby systémové, ale jen opomenutí nějaké kontroly v kernelu -- typicky jediného IFu. Přidat takovouto jedinou podmínku, zvláště když človek ví kam a co, skutečně není žádné hraní.

Pokud se náhodou poštěstí, že se dá napsat opravný modul (nebo ho nejlépe napíše někdo dřív než já :)), proč bych jej nevyužil a neušetřil si restart?


Ten podstatný fakt je ovšem to, že ona svoboda, o které tady pořád mluvím, tu možnost čekat na "oficiální" záplatu nijak neoslabuje -- právě naopak, je to nadmnožina. Můžu se rozhodnout, jestli budu čekat na "oficiální" záplatu, nebo si to opravím sám (nebo někomu zaplatím, aby to opravil).

A pokud se náhodou stane, že autor programu z libovolných důvodů odmítá vydat "oficiální" opravu (nepovažuje to za důležité, přestal působit v oboru, nejsem pro něj dostatečně významný zákazník nebo cokoliv jiného), nejsem jeho neochotě vydán na pospas. Stále mám spoustu dalších možností, jak situaci řešit.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petr Minařík  |  07. 01. 2004 12:25

Já se správou OS živil. Z tohoto pohledu je pro mne ztráta času se učit programocací nástroj, a OS který mám patchovat. Přiznám se, že jsem se naučil C++ ale bylo to na úrovni hraní. Prostě mne zajímalo zda ten jazyk zvládnu a ve volných chvílích jsem se hp učil (že těch volných chvil moc nebylo) Pro mne jako správce by bylo vhodnější se učit programy které jsem spravoval než vzpomínaný jazyk.

To že si opravujete OS sám je dost dobrá cesta jak si nadělat do vlastního hnízda (Lidé dělají chyby). Jestliže existuje popis chyby s postupem odstranění pak by měl už existovat i fix této chyby. Nevidím důvod proč bych měl tuto chybu flekovat ve zdrojáku kompilovat a vyměňovat knihovny. Fix mi to udělá sám. V případe windows update to je brnkačka a prakticky se o to nemusím starat. Jestliže jste sparvoval sít s heterogenními oper. systémy (zdá se tomu tak) tak to je také zbytečné přidělávání si práce. Asi máte při svém sparvování daleko více času se věnovat věcem které Vás zajímají

Co se šetření restartů týká tak si neušetříte žádné. Jestliže se jedná o moduly které se natahují pouze pro Bootu OS tak si můžete opravovat co chcete ale budete muset i potom restartovat systém.

Co je to za svobodu kterou mohu problematicky využívat. Co je to za svobodu která mi prakticky nic nepřinese. To je jako by mi někdo řekl, že mohu svobodně cestovat na Měsíc. Praxe je ale taková, že se na tem měsíc dostane hrstka vyvolených do které na 99% patřit nikdy nebudu. Proto je mi zcela jedno když mi někdo zakáže ne ten Měsíc cestovat. Je to ne zcela přesné protože tady se jená spíše o povinnost cestovat ne ten Měsíc s jednou cestovkou ale dokumentuje to tu pro mne zbytečnou výhodu Linuxu.

Autor odmítne udělat záplatu. Jestliže se něco takového stane pak to ukazuje na nesprávnou práci IT managera který dovolil provoz programu u kterého nebyla zajištěna podpora. Prostě se nevypláci kupovat neprověřené značky.

Souhlasím  |  Nesouhlasím  |  Odpovědět
M.D.  |  07. 01. 2004 13:11

Tak s Vámi se asi fakt nedomluvím, vy prostě v mých příspěvcích pořád čtene něco, co tam není.


"Z tohoto pohledu je pro mne ztráta času se učit programocací nástroj, a OS který mám patchovat."

K tomu Vás přece nikdo nenutí. Ani Vás nikdo nenutí dělat si vlastní patche. Chápete, jaký je rozdíl mezi tím, když musíte a když můžete?

Už se ozval další člověk, který Vám zcela jasně oznamuje, že záplaty v distribucích už dávno vyšly a jejich aplikace je většinou stejně triviální jako Windows Update.


"Pro mne jako správce by bylo vhodnější se učit programy které jsem spravoval než vzpomínaný jazyk."

Ano, s tím nelze než souhlasit. Vy ale prostě nemužete přenést přes srdce, že povšechná znalost zdrojáku nějakého softwaru (nebo alespoň principů, na kterých je to udělané) je prostě jenom další "skill" toho, čemu Vy říkáte "učit se programy".

Je asi nesmysl, aby každý, kdo má doma televizi, věděl, jak vypadá modulace PAL signálu a hřebenový filtr v přijímači. Ale pokud jste "správce televizí" ;) v nějaké větši organizaci, tak není tak úplně na škodu, když kromě toho, že posíláte televize do servisu, umíte taky jednodušší závady opravit nebo při nejmenším lépe diagnostikovat, kde by mohla být chyba.


"Jestliže existuje popis chyby s postupem odstranění pak by měl už existovat i fix této chyby."

No pochopitelně. Ovšem ta oprava (tedy typicky textový soubor v dobře známém formátu diff, říkající, co ve kterém souboru zdrojáku ubrat nebo přidat) je k dispozici prostě mnohem dříve než autor distribuce překompiluje kernel pro svou distribuci (většinou více verzí) a nějakým kanálem ten nový binární kernel dopraví k "zákazníkům", aby ti ho potom jednoduše pomocí nějakého updatu nainstalovali.

A právě to, že skutečná oprava existuje mnohem dříve než binární vendor-patch, je dobrá motivace proč si opatchovat kernel sám. Je to prostě časový náskok. A možnost, kterou ve Windows Update prostě nikdy mít nebudete.


"Nevidím důvod proč bych měl tuto chybu flekovat ve zdrojáku kompilovat a vyměňovat knihovny. Fix mi to udělá sám."

Ano, fix to udělá sám, ale později. A ten důvod? Protože to prostě je možné. Nikdo Vás k tomu nenutí, ale nikdo Vám ani nebere tu možnost to udělat.


"Asi máte při svém sparvování daleko více času se věnovat věcem které Vás zajímají"

Ano, to máte pravdu. Ale protože spravuji jak Windows, tak Linux, mohu i říci, proč to tak je. Protože věci v Linuxu fungují tak, jak je chci já, aby fungovaly. Nemusím vymýšlet žádné okliky, obcházení a skrábání se pravou rukou za levým uchem, prostě systém vypadá k obrazu mému.

Svoboda a zodpovědnost jdou samozřejme ruku v ruce, takže když už dělám někde své úpravy (občas i ve zdrojácích), musím si o nich udržovat přehled. Ale mi to vyhovuje.

Netvrdím, že to musí vyhovovat všem.


"Co se šetření restartů týká tak si neušetříte žádné. Jestliže se jedná o moduly které se natahují pouze pro Bootu OS tak si můžete opravovat co chcete ale budete muset i potom restartovat systém."

Očividně píšete o něčem, o čem nemáte ani páru. Moduly a modulární kernel jsou tady práve od toho, aby bylo možno kernel modifikovat (typicky přidávat a odebírat vlastnosti) za běhu bez restartu. Netvrdím, že tak jde přepsat za chodu celý kernel (asi by šel, ale to už by byl fakt monstrózní hack :)), nicméně v mnohých případech to skutečně funguje.

Buďte ubezpečen, že ten výše uvedený modul skutečně opravuje chybu mremap() a nevyžaduje restart. Pokud mi nevěříte, kontaktujte mě na email a mohu Vám na pár hodin vytvořit na nějakém takovém stroji uživatelský účet, abyste se přesvědčil sám.


"Co je to za svobodu která mi prakticky nic nepřinese."

Vy si děláte snad legraci, tahle věta se už fakt nedá ani komentovat. Vy snad znáte nějakou svobodu, která Vám jenom tak něco přinese? Aniž byste musel pohnout prstem?


"Autor odmítne udělat záplatu. Jestliže se něco takového stane pak to ukazuje na nesprávnou práci IT managera který dovolil provoz programu u kterého nebyla zajištěna podpora. Prostě se nevypláci kupovat neprověřené značky."

Pletete páte přes deváté. Snažíte se argumentovat, že když se na začátku dobře rozhodnu a vyberu si "prověřenou značku", tak že mi to dává jakoukoliv záruku, že firma někdy v budoucnu nezkrachuje, nerozprodá své softwarové portfolio někomu jinému (kdo původní software pohřbí), nepřeorientuje se na více platící zákazníky a na mě se vykašle apod.

Ale dobře prověřenou značku si můžete vybrat také v oblasti free softwaru. Nelíbí se Vám Apache, tak si kupte webový server od IBM (což je vlastně taky jenom převlečený a přikrášlený Apache) a budete mít značku a jakési papírové záruky.

Ale pokud IBM skončí, tak stále budete mít software pod svobodnou licencí, přístup ke zdrojákům a svobodu dále pokračovat v jeho udržování při životě.

A co se týče toho "provozování programu, pro který není zajištěna podpora", tak ve světě free softwaru prostě vždycky šlo spíš o to, co program umí, než jakou má podporu. Když se Vám to nelíbí, tak free software nepoužívejte, nikdo Vás nenutí.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petr Minařík  |  07. 01. 2004 14:56

     Stále mi tvdíte jaká to je výhoda si opatchovat svůj OS přez popis chyby ve zdrojáku. Jestliže to chci dělat tak musím znát programování a to mne nutí se naučit programovací jazyk. Nikde jsem netvrdil, že na to nejsou binární záplaty  které si může nainstalovat laik. Tím jsem bagatelizoval výhodu ďoubání se ve zdrojácích.
     Samozřejmě se můžete naučit jazyk je to další skušenost to nepopírám. Opravovat OS ve zdrojácích je neefektivní a zdržuje to. navíc si tím mohu zavléct chyby do OS. Někdo říká, že si může aplikovat záplatu dříve. Jistý borec v této diskusi říká, že po několika hodinách je firemní binární patch. To Vám stojí za tu námahu opravovat chybu jenom proto aby jste tam měl tu chybu opravenou o několik hodin dříve? Navíc ona chyba tam nějký čas musela být (řádově to budou týdny měsíce a možná i více). Navíc ona chyba tam mohla být a vy jste ji nezpozoroval. Nevidím tady jediný důvod proč to takto provádět než si dokázat, že to umím. Někdy je dobré v případě méně závažných chyb s implementací patche vydržet.
     Diff soubory to je dobrá věc. Největší legrace to je v okamžiku když si modifikujete zrojáky a zapomenete na to(další opěvovaná možnost Linuxu). V lepším případě Vám to vyhodí chybu. V horším případě zahavaruje po výměně a v nejhorším případě to dělá něco co by to dělat nemělo.
     Hovoříte tady o modulárním kernelu u kterého mohu vyměňovat moduly za chodu a v závěru připustíte, že se nedá za chodu celý kernel vyměnit. Potvrdíte vlastně to co jsem říkal a to že existují komponenty které potřebují nebo nepotřebují k výměně restart. To si ujasněte co říkáte. Opravením chyby ve zdrojáku rozhodně neušetřím restart.
      Samozřejmě, že svoboda obecně přináší hodně. Proč jinak by se lidé po ni pídili (někteří i umírali)? Protože jim nic nepřináší. Co Vám dává třeba svoboda projevu? Co Vám dává svoboda volby?
      Vy opradvdu nevíte o čem hovoříte. Krach firmy není problém jestliže to je zavedená značka a má hodně uživatelů jistě se někdo najde kdo to koupí a bude to za penízky oprašovat dále (to je zdroj příjmů). Ve vytvořených a zabehnutých značkách je veliká hodnota není na světě hodně firem které by to zahodily. V nejhorším případě koupí konkurenční program a budou dělat vše aby uživatele této konkurenční značky převedli na svůj program (aby jim neutekli ke konkurenci). Nikdo si nedovolí takto hloupě vyhodit peníze. Volba Apache je pro mne ona ověřená značka a znám politiku IBM která podobný postup aplikovala ne jen na Apache.
      Samozřejmě, že jde také o to co program umí ale podpora je velice důležitá. Jestliže si koupím od Franty program který je bezvadný a rozjedu ho ve fimičce mohu být spokojen. Možná do okmažiku nez Frantu přejede auto, nebo když Franta vyhoří a přijde o zdrojáky, ....... Náklady na přechod někam jinam jsou veliké. U OSu mi dokazujete jak je to důležité mít rychle opravy a to samé platí i o programu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
M.D.  |  07. 01. 2004 15:43

"Opravovat OS ve zdrojácích je neefektivní a zdržuje to. navíc si tím mohu zavléct chyby do OS."

Jak to může být neefektivní, když tak fakticky chybu opravím dříve než pokud bych čekal na vendor-patch a např. v tomto konkrétním případě si ušetřím restert (ten počká do té doby, než bude skutečně nutný -- selhání hardwaru, upgrade hardwaru -- tedy do doby, kdy už vendor-patch vyjde a případně se automaticky nainstaluje).

Chybu tam mohu zavléct se stejnou pravdepodobností jak ten, kdo dělá tu opravu v distribuci; za předpokladu, že jsem stejně dobrý programátor a vycházím ze stejných informací.

Buď tomu prostě rozumím a můžu dělat úpravy ve zdrojácích, nebo ne.


"To Vám stojí za tu námahu opravovat chybu jenom proto aby jste tam měl tu chybu opravenou o několik hodin dříve?"

No pochopitelně, že stoji. Jinak bych to přece nedělal.

Spravuji webový server, kde mohou uživatelé používat CGI skripty, tedy de facto spouštět na serveru libovolný kód. Nemůžu si dovolit ani server "zavřít" a čekat na vendor-patch, ani umožnit uživatelům případně spustit exploit, neboť je-li známa vulnerability, je existence exploitu vždy jen záležistostí času (v tomto případě jsem například měl funkční proof-of-concept exploitu už za 30 minut od zveřejnění chyby -- někdo ho prostě nalinkoval na Slashdotu).

Pokud navíc někdo napíše záplatu v podobě opravného modulu, který nevyžaduje restart, tak ji jen přivítám.


"Nevidím tady jediný důvod proč to takto provádět než si dokázat, že to umím."

To není žádné dokazování si něčeho. To je prostě souboj s časem, kdo o té chybě bude vědět dřív. Já nebo útočník?

Útočník je ve výhodě, protože může vědět o chybách, o kterých nemá žádný správce ani tušení. Ale to přece pořád není důvod, abych dával útočníkovi cenné minuty náskoku i v době, kdy o chybě ví celý svět (a nemyslete si, že ze zpráv na Živě :)).

Celým tímhle vláknem diskuze jsem chtěl jen říci, že ve free OS má človek větší svobodu v tom, jak a kdy co opraví. U proprietárních má jen jednu možnost.


"V lepším případě Vám to vyhodí chybu. V horším případě zahavaruje po výměně a v nejhorším případě to dělá něco co by to dělat nemělo."

Přece nemůžu aplikovat source patche, když nevím, co to má vlastně udělat...


"Potvrdíte vlastně to co jsem říkal a to že existují komponenty které potřebují nebo nepotřebují k výměně restart. To si ujasněte co říkáte."

Ne, to to překrucujete. Já jsem řekl, že skutečně v modulárním kernelu lze teoreticky nahradit libovolná část kódu jiným. Jenomže v některých případech je to prostě tak složitá záležitost (kernel se musí v paměti přepsat -- doslova), že se to prostě nedělá.

Například předchozí "slavná" :) chyba v kernelu řady 2.4 (do_brk()) nešla opravit tak elegantním a jednoduchým modulem, jako je ten uveden výše. Opravit šla velmi složitým a takový hack jsem na vlastní oči viděl.

Nicméně si laskavě uvědomte, že i správci Linuxu jsou pouze lidé, čili jsou leniví. V případě mremap() je oprava modulem na místě, protože je to bezproblémové a ušetří to reboot. V případe do_brk() na místě nebyla (IMHO), protože to byl složitý hack a vůči němu byl naopak reboot bezproblémový.


"Protože jim nic nepřináší. Co Vám dává třeba svoboda projevu? Co Vám dává svoboda volby?"

Kybych měl parafrázovat Vaši argumentaci, tak svoboda projevu ani svoboda volby vlastně nic nepřináší, protože aby k něčemu byla, tak se člověk musí aktivně projevovat a chodit k volbám. Pokud to dělat nebude, tak je skutečně jedno, jestli žije ve svobodě nebo v totalitě, protože za něj stejně rozhodují jiní.


"Krach firmy není problém jestliže to je zavedená značka a má hodně uživatelů jistě se někdo najde kdo to koupí a bude to za penízky oprašovat dále (to je zdroj příjmů)."

Já Vás prostě obdivuji, kde berete takovou skálopevnou jistotu. Co když ji nikdo nekoupí, protože má vlastní konkurenční produkty. Co když nebude nic oprašovat, ale nabídne Vám přechod na svou alternativu, což může být pro Vás ovšem velmi nevýhodné (když např. máte pro původni produkt třeba spoustu vlastních plug-inů, které ted bude potřeba přepsat).


"Možná do okmažiku nez Frantu přejede auto, nebo když Franta vyhoří a přijde o zdrojáky"

No vidíte. A kdyby to byl free software nebo alespoň open source, tak Vás taková věc nemůže vůbec rozházet (teda kromě případu, že by se ztratily úplně všechny kopie zdrojáků, což se většinou nestává).


"U OSu mi dokazujete jak je to důležité mít rychle opravy a to samé platí i o programu."

Ano, správně. Ovšem ne všechny komekční společnosti vydávají opravy tak rychle jako ve světe free softwaru. Už jenom proto, že tam je to vždy záležitost té jedné ústřední firmy, zatímco na free software může udělat opravu kdokoliv.

Takže jsme zase tam, kde jsme byli.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petr Minařík  |  13. 01. 2004 14:51

Efektivita je něco jiného Vy tahdy hovoříte o rychlosti zásahu. Nejefektivnější je aby se to opravilo pouze na stisk tlačítka, ..... a ne nějakým jiným složitějším postupem.

Jestliže bude výsledek opravy záviset na nějaké opravě kterou budu provádět sám tak já (stejně tak kdokoliv jiný) jsem zdrojem možných chyb. To platí obecně ve všech činnostech. Nejméně chyb se tam dostane pouze na ro spouštěcí tlačítko ktrým pouze povolím instalaci záplaty. Nikdo není bezchybně pracující stroj! Něčemu rozumět není totéž jako neudělat chybu i když znalost snižuje pravděpodobnost chyby.

Souboje s časem jsou k smíchu. Chcete říci, že spravijete stroj který nesmí na 5 minut vypadnout. O tom si dovolím dosti silně pochybovat. O tom, že by jste seděl na webu a stále sledoval chyby v Os o tom také pochybuji. Obecně bych řekl, že v okamžiku zveřejnění chyby existuje i její fix (alespoň u windows). Správci sítí jsou ale lenoši kterým nevadí ani několikaměsíční chyby. Vzpomínám si na správce SQL serverů od MS. MS progamátoři zajistili, že po instalaci SQL serveru byl administrátor standardně SA uživatel s prázdným heslem. Pak se objevil vir který tohoto zneužíval. To nemělo chybu. Podobná záludnost existuje i v SAP. Tupost instalační procedury ale není omluvou pro správce kteří si nenastaví heslo správce. Tím jsem chtěl jenom ukázat na to jak správci spěchají na aplikaci záplat. Psát o cenných minutách je k smíchu. Když spíte tak kdo bdí nad vaším serverem? Navíc ne všechny chyby jsou takto závažné a proto není nutné fix okamžitě aplikovat.

Tohle jste tvrdil "Moduly a modulární kernel jsou tady práve od toho, aby bylo možno kernel modifikovat (typicky přidávat a odebírat vlastnosti) za běhu bez restartu. Netvrdím, že tak jde přepsat za chodu celý kernel " Tím jasně říkáte, že se něco nedá vyměnit. Já nepřekrucuji ale Vy couváte z toho co jste mi napsal.

Tak že píšete o zavírání serveru. Opravdu si myslíte, že hacker se těší na ten Vás server. V tom moři serveru je dosti malá pravděpodobnost, že se na Vás dostane a hackne si Vás. Hacker chce být vidět a to si troufnu řící, že na tom Vašem serveru vidět moc nebude. Opět jak to máte v noci zajištěné a mimo pracovní dobu. U windows máte zveřejnění chyby s opravou. Mezdá se mi rozumné zveřejnění chyby s jakýmsi provizorním fixem. To je chybná taktika snižující bezpečnost systému.

Díky za zmínku o lenivosti správců která nahrává mému tvrzení o tom, že se fixy aplikují o hodně později než Vy sám tvrdíte a tudíž je největší problém ne ony Vámi zmiňované minuty oprav ale spíše dny.

řekl jsem "Co je to za svobodu kterou mohu problematicky využívat." Vy jste argumentoval  cosi o potížích při svobodě volby a projevu. No jestli je pro Vás problém otevřít pusu a říci svůj názor nebo se zvednot a odkráčet pár metrů do volební místnosti a tam vhodit svůj hlas, tak mne překvapuje, že Vám nedělá problém se naučit programovací jazyk. Domnívám se, že zvlánutí programování je daleko složitější.

K onomu krachu firmy to není moje jistota ale životní zkušenost s firewallem od firmy Digital.

Nechcete pochopit co je to mít v ruce zaběhlý produkt nebo jinak řečeno známou značku. Místo důvěry v partnery se snažíte mít vše pod vlastní kontrolou. Jedno Vám ale musím přiznat. Nepatříte k tem Linuxovým zabedněncům kteří stále cosi melou tom jak je Linux bezpečný a to se mi líbí.

Souhlasím  |  Nesouhlasím  |  Odpovědět
M.D.  |  13. 01. 2004 15:34

Už jsem toho chtěl fakt nechat, ale nekteré věci mi prostě nedají nedopovědět.


"Chcete říci, že spravijete stroj který nesmí na 5 minut vypadnout."

Může. Nedovedu zabránit přírodním katastrofám, vícenásobným poruchám hardwaru a ani nejsem bezchybný. Ale jsem placen za to, aby server vypadával co nejméně, a je-li to v mých silách, tak to prostě udělám. Nechápu, co na tom stále nechápete.

Jak říká staré rčení (resp. jeho obměna): Práci, kterou se nevyplatí dělat dobře, se nevyplatí dělat vůbec.


"Když spíte tak kdo bdí nad vaším serverem?"

Někdo jiný, kdo nespí.


"Tím jasně říkáte, že se něco nedá vyměnit. Já nepřekrucuji ale Vy couváte z toho co jste mi napsal."

Kdybyste se laskavě obtěžoval prodloužit tu citaci o jednu jedinou větu v závorce "(asi by šel, ale to už by byl fakt monstrózní hack :))", tak byste nemohl tvrdit, že couvám z toho, co jsem napsal.

Skutečně existovuje projekt, který má umožnit kompletní výměnu celého kernelu za běhu. Je to ovšem úkol přecejenom o řád (spíš dva) složitejší než provést jednu drobnou opravu (obzváště jsou-li vhodné okolnosti) a zatím vždy fungoval jen na konkrétních verzích kernelu, ne na celé řadě.

Ale možné to je. A jsou komerční unixy, které to mají již dávno. A netvrdím, že by to ve Windows nešlo udělat taky -- ale opět by to museli udělat hoši v Microsoftu, ne nikdo jiný.


"V tom moři serveru je dosti malá pravděpodobnost, že se na Vás dostane a hackne si Vás. Hacker chce být vidět a to si troufnu řící, že na tom Vašem serveru vidět moc nebude."

Vy si snad myslíte, že hacker sedne doma k modemu, připojí se pres Volného a začne hackovat svůj vysněný cíl? Reálné hackerské útoky se dělají z "ukořistěných" cizích, většinou málo významných strojů, jez hacker vůbec nehacknul pro ně samé, ale jako anonymizační prostředek pro útok někam jinam.

A to vůbec nehovořím o automatickém strojových útocích nebo věci, která je v mém případě nejreálnější (kvůli povaze chyby mremap() a složení uživatelů serveru) -- útok z řad vlastních uživatelů. Budete se možná divit, ale s takovými pokusy se setkávám denně. Zatím byly marné, ale každý, kdo se zajímá o bezpečnost Vám řekne, že to je jen otázka času. A proto je lepší to rozhodně neusnadňovat.

V tomto kontextu je nesmírně zajímavá statistika projektu HoneyNet (http://www.honeynet.org/), ze které se lze například dozvědět, že první útoky na naprosto anonymní a bezvýznamné cíle probíhají průměrně do několika hodin po prvním připojení (špičkový čas se pohybuje někde kolem desítek minut).


"Vy jste argumentoval cosi o potížích při svobodě volby a projevu. No jestli je pro Vás problém otevřít pusu a říci svůj názor nebo se zvednot a odkráčet pár metrů do volební místnosti a tam vhodit svůj hlas, tak mne překvapuje, že Vám nedělá problém se naučit programovací jazyk."

Ježisi Kriste, to přece nebyla řádná ARGUMENTACE, to jsem se snažil dovést ad absurdum Vaše tvrzení, že aby byla svoboda k něčemu, tak musí sama o sobě (zadarmo, aniž bych musel cokoliv dělat) něco pozitivního přinášet.

Nedělá mi problémy ani vyjádrit svůj názor, ani chodit k volbám. Práve naopak. Ale vím, že pozitivní přínos každé svobody je nutně podmíněn tím, že tu svobodu musím aktivně využívat (a to stojí nějaké úsilí). Pokud to dělat nebudu, tak je co do výsledku zcela irelevantní, zda ta svoboda exituje nebo ne (protože bych se de facto choval, jako kdyby neexistovala).

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petr Minařík  |  14. 01. 2004 10:08

Oněch 5 minut je doba na restart. Tím potvrzujete co jsem říkal a to, že restart počítače není zase tak veký problém aby se za nutnost restartu někdo do windows trefoval. Je to nevýhoda restarovat ale i u windows se Gatesovi hoši zasnažili a byly nutnosti restartu podstatně sníženy.

Chápu, že jako správce serveru jste zodpovědný za jeho chod. Ty věty byly pouze saháním do Vašeho vlastního svědomí. Za jak dlouho se dostane záplata na Váš počítač kdo a jak to monitoruje. Zapoměl jsem i na nastavení routerů.

Co se týká onoho podle Vás skresleného výroku je opět k pousmání. Podle Vás vytržená věta "(asi by šel, ale to už by byl fakt monstrózní hack :))" která by měla podpořit Vaše tvrzení začína slovem "asi" to slovíčko asi je zpochybňující, Jsou to zadní vrátka aby jste mohl potvrdit neplatnost svého výroku. Tato věta je zpochybňující a ne podporující Vaše tvrzení. Zpochybňujete to i dalším vyjadřováním se "a zatím vždy fungoval jen "(myšlena výměna celého jádra)" na konkrétních verzích kernelu,"

Ano máte pravdu, na tuto verzi ukořistěných počítačů které se připravují na útok proti serveru kde se hacker zviditelní jsem zapoměl.

Jestliže mi budete absurdně argumentovat tak proč bych nemohl na vaše slova stejně absurdně protiargumentovat. Vedu dále diskusi v tónu který jste sám začal. Zkuste mi tedy seriózne protiargumentovat moje vyjádření "Co je to za svobodu kterou mohu problematicky využívat."

Co jste napsal o svobodě s tím bych souhlasil. Já psal ale o jiné stránce a to co mne stojí ono využití svobody z hlediska využití oné svobody. Co konkrétně musím udělat abych svobodu aplikoval - ono učení se programovacího jazyku, nebát se postavit a říci co myslím, strávit čas provedením volby. Kolik lidí tu svobodu nevyužije oprotože se domnívá, že je to pro ně ztráta času a energie a nevyváží to přínos oné svobody.

Souhlasím  |  Nesouhlasím  |  Odpovědět
M.D.  |  14. 01. 2004 11:21

A jedeme dál močálem temným ))


"Oněch 5 minut je doba na restart. Tím potvrzujete co jsem říkal a to, že restart počítače není zase tak veký problém aby se za nutnost restartu někdo do windows trefoval."

Tady přece nejde o to, zda je 5 minut na restart malá nebo velká doba. Tady jde o to, že to je doba nenulová. A práve proto, že clověk musí být připraven na bezpečnostní a jiné incidenty, kterým se prostě efektivně nevyhne (protože mají také nenulovou pravděpodobnost), tak je výhodné chybu nějak opravit za běhu (je-li to rozumně proveditelné), protože definitivní oprava vejde v platnost při příštím nevyhnutelném restartu. A tím se nejméně jeden restart ušetří.

Snažím se tím prostě říci, že nic není černé a nic není bílé. Pokud by se jednalo o méně závažnou chybu, tak bych se nenamáhal s nejakými opravami za běhu a normálně bych počkal na dobu někde mezi 2:00 a 4:00 rano, kdy vzhledem k uživatelům a typickému složení návstěvníků webů je skutečně 3minutový výpadek v rámci tolerance.

Ale toto byl jiný případ: chyba relativně kritická (možná eskalace práv lokálních uživatelů nebo alespoň DoS), během špičkového provozu, ale naštěstí snadno opravitelná za chodu.


"Za jak dlouho se dostane záplata na Váš počítač kdo a jak to monitoruje. Zapoměl jsem i na nastavení routerů."

To jsou všechno věci, které při vší snaze nemohu plně ovlivnit (chyba se může objevit, aniž by na ni byla oprava nebo aniž bych o ni vúbec věděl, o router spravuje ISP [resp. správce domény v akademické síti]). Ale pořád nechápu Vaši argumentaci o svědomí.

Copak to, že ne celý "řetězec chyby" nemám ve svých rukou znamená, že mám úplně rezignovat na prostředky "navíc", které naopak mám a které mi umožní chybu opravit dříve než v případě, že bych tyto prostředky neměl a plně se spoléhal třeba na autora distribuce?

Je to prostě princip nejlepší snahy -- nemůžu po sobě chtít zázraky, ale upřímnou snahu ano.


"Tato věta je zpochybňující a ne podporující Vaše tvrzení...."

Abychom se tedy nadále nehráli se slovíčky: výměna kernelu za běhu je teoreticky možná. Existovuje patch (tuším, že se jmenoval Checkpointing Kernel nebo nějak tak), který umožňoval skutečně za běhu vyměnit jeden takto připravený kernel za jiný (patch samozřejmě nelze aplikovat na libovolný kernel, musí se dělat různé netriviální úpravy). A udělat to univerzálně by ASI taky šlo.

Tím slovíčkem ASI jsem chtěl říci, že je to už příliš velká námaha za stejný kus smetany. To tu myšlenku nediskvalifikuje, ani neříká, že to není možné (právě diky přístupům ke zdrojákům je to možné), ale jen, že se zatím nikomu nechtělo to udělat.

Je to zase tentýž problém, kolem kterého tady chodíme už delší dobu. Pro mě je i taková svoboda (možnost něco udělat), která je v praxi složitě využitelná, stále stejně hodnotnou svobodou, jako ta svoboda, jejíž využití je snadné. Protože ta "složitá využitelnost" je subjektvní a na čase závislá veličina. Zatímco využitelnost nesvobody (neexistence možnosti) je s časem konstantní.


"Co je to za svobodu kterou mohu problematicky využívat."

Viz předchozí odstavec. Svoboda je prostě hodnotnější stav než nesvoboda i v případě, že ji mohu problematicky využívat. Protože to "problematické využívání" je nedostatek na mé straně, ne na straně té svobody.

Pokud příjmeme předpoklad, že stav svoboda/nesvodoba se v čase nemění (o to v naši diskuzi jde, nebavíme se teď o politice), tak zatímco nesvoboda omezuje mé možnosti, tak ve svobodě mohu své možnosti omezit jen sám (např. neschopností překonat okolnosti). Takže rozhodně nedopadnu hůře než v nesvobodě, ale svoboda mí dává možnost okolnosti překonat a tím svobodu využít.

Svoboda z definice nemůže být víc omezující než nesvoboda.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petr Minařík  |  20. 01. 2004 14:10

Restart pro Vás není problém udělat. Na tom jsme se shodli. Je zveřejněná chyba a k ní flek. Po nějaké hodině je zveřejněna definitivní oprava. To je postup. Nelíbí se mi postup kdy je chyba oznámena a není k ní definitvní patch a je jenom jakási provizorní záplata. Na definitivní opravu kterou budete muset aplikovat předpokládám restart. V tomto nevidím, žádnou úsporu ale práci navíc. Pro mne je rozumný postup, že je oprava v době zveřejnění chyby k dispozici. Mohu se rozhodnout o oflekování nebo úplné vyřešení problému. Pro Vás je možné použít ono definitivní řešení. Jakékoliv brzké zveřejňování je návodem k hackování a komplikací pro správce.

K oněm routerům mohu říci pouze, že je to nepořádek a je ve Vašem vlastním zájmu se s kolegy domluvit na spolupráci. To je problém asi všech akademických sítí zapříčiněný nejen nedostatkem peněz. Takto se budete snažit a jiní flegmatici Vám budou Vaše úsilí ničit. Znovu se ptám jak dlouho asi trvá než je k dispozici závěrečná oprava?

Zase to Vaše ASI. Buťo je kernel vyměnitelný nebo není. To je jasné logické tvrzení s jasnou pravdivostní hodnotou 0 nebo 1. Tady nejsou žádné desetinky na jednu nebo druhou stranu.

Svoboda složitě využitelná. Na každou složitě využitelnou svobodu se Vám každý človek .... Viz ony volby. Kolik lidí Vám jde volit a přitom to je tak jednoduché. Kolik lidí si stáhne antivirové definice a přitom to je tak jednoduché. Mnoho lidí od Linuxu si ze svobody udělalo jakousi marketingovou značku. Nejde tady o svobodu ale o možnost zásahu do zdrojového souboru. Ona svoboda je tady zcestným ozančením kterého se všichni drží. Snad proto, že ve Windows tato možnost není.
     Shrnu to takto. Lidé potřebují mít možnost zásahu do chování svého operačního systému. Toto ovlivnění musí být jednoduché a blbuvzdorné. To ale podle mého zdrojové soubory neposkytují a proto velice málo lidí má potřebu oněch zdrojových souborů a raději dávají přednost tlačítkům, comboboxům, ....

Nesvobodu mi sem netahejte. Ta nemá nic společného s operačními systémy stejně jako svoboda. Ve svobodě to nejste Vy kdo Vás omezuje. Omezuje Vás prostředí ve kterém onu svobodu uplatňujete. Jestliže žijete ve společnosti tak onu svobodu Vám vymezuje společnost ne Vy jako osoba. Svoboda jako absolutní kategorie neexistuje. Vždy a všude máte své omezení. Není to jak jste pal kdesi černá nebo bílá. Jedná se o stupnice šedi. kdysi jsem četl zajímavou větu "Kde končí svoboda jednoho člověka tam začíná svoboda druhého." Popřemýšlejte.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Muf  |  07. 01. 2004 11:44

Clovece - vy vubec nic nechapete. Bud to delate ze zlomyslnosti anebo jste opravdu tak natvrdly?
Vyrobci distribuci samozrejme davno vydali opravu v binarni podobe !!!
Tento workaround pouze demonstruje, ze lze chybu asi zalepit bez restartu serveru !!! Samozrejme, pokud vas admin neni Windozova trubka.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petr Minařík  |  07. 01. 2004 12:43

Natvrdlost? nikde jsem neřekl, že nejsou fixy distribuovány v binární podobě. Popsal jsem Vám pouze celou cestu když si najdu chybu v operačním systému a mermomocí si ji chci opravit. Nepředpokládám, že by byl administrátor zakový bambula který onen binární flek byrobí ze svých zdrojáků podle nějakého postupu uvedeného v příloze když má po ruce hotovou knihovnu kterou může okamžitě použít. To si opravdu koleduje o malér.

Jestliže používá operační systém nějaké komponnenty tak mohou být zaváděny dynamicky za chodu OS nebo pouze jednou a to v okamžiku zavedení OS. Použiji onen fix. je li to dynymicky volané nemusím restartovat v druhém případě se bez restartu neobejdu. Jestli Vám někdo pošle opravu dynamických knihoven a do instalační procedury Vám doplní restart počítače tak je to o blbosti toho kdo uvedl odpovídající fix k životu (Tak se dělají standardně všechny opravy pro Linux). Pro mne nebyl restart počítače problém jedná se o to si to jenom zařídit.

Souhlasím  |  Nesouhlasím  |  Odpovědět
M.D.  |  07. 01. 2004 13:32

Sice nechápu, proč tady pořád pletete nějaké knihovny, ale mám pocit, že naše nepochopení je jen v tom, že si prostě nedovedete vůbec představit, jak to v praxi chodi. Takže to vezmeme hezky pomalu:

1. Máme nějaký fungující Linuxový stroj (tedy kernel a nad ním běží nějaké uživatelské procesy).

2. V kernelu se objeví lokálně zneužitelná chyba a ví se, jak se chyba dá zneužít a jak se dá opravit (tím myslím, že zatím existuje ta znalost [myšlenka], ne že existuje nějaká fyzická oprava).

3. Některý kernelový vývojář sedne, opraví zdrojáky "svého" kernelu, přeloží z nich nový binární kernel, vyzkouší a zveřejní source patch (to, co v těch zdrojácích změnil, aby chybu odstranil).

4. Autoři jednotlivých distribucí vezmou source patch, aplikují ho na kernely používané ve svých distribucích (to nemusí být vždy úplně triviální, protože mohou používat různě upravené kernely), přeloží nové binární kernely, odzkouší a nějakým způsobem tyto updatované kernely dopraví k "zákazníkům".

5. "Zákazník" nainstaluje pomocí nějakého auto-update nástroje nový kernel a je vymalováno.


Tento proces je velmi podobný tomu, jak to probíhá ve Windows (až na to, že u Microsoftu je vývojář i distributor pod jednou střechou).


Ve světě free softwaru máte ovšem další možnosti:

a) Pokud jste sám kernelový vývojář, můžete už po bodu 2) sednout a udělat si čistě svou opravu. Tato oprava může být pochopitelně poté použitelná i pro ostatní lidi.

b) Už po bodu 3) nemusíte čekat na autora své distribuce, ale pomocí source patche si opatchovat kernel, na kterém běžíte.


Ten kus zdrojáku uvedený výše je demonstrace varianty a). Updaty z distribucí obsahují typicky nově přeložený kernel, takže po jeho nainstalovaní je pochopitelně nutný restart. Výše uvedený modul je jiná alternativa -- záplatuje chybu bez restartu (laicky řečeno změní kód kernelu v paměti).

Není to tedy oprava "na furt", správce by si měl stáhnout ten nový opravený kernel a nainstalovat, aby se při přístím případném restartu použil. Ale to té doby (než vypadne elektřina nebo tak :)) má záplatovaný svůj současný kernel a nemusí tudíž restartovat (kvůli této chybě).


Je to teď jasnější?

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petr Minařík  |  09. 01. 2004 08:08

Co se funkčnosti týká nejsem tak tupý jak si myslíte. Pracoval jsem se systémy jako CP-m, RSX-11m (DOS-RV), T300, VM-SP, OS 21.F, MS-DOS, Novell, w 3.0, 3.11, 95, 98, 4, 2000 a XP. Zbytečně jste se psal s body 1-5.

U možností a) a b) bych Vám řekl, že u vyjmenovaných systému jsem se setkal s formou distribuce kterou bych pro přiblížení nazval jak binDiff. funguje to stejně jako zmenový textový soubor na zdrojáky. Tento systém pracuje nad binárními soubory.

A teď ješte jednou. Je li chyba v OS mustíe opravit nějaký binární soubor. Tu poravu můžete provést následovně:

           a) získání binárního souboru
                        1. opravím zdrojový kód a přeložím
                        2. použiji text diff a zdoj přeložím
                        3. použiji hotový přeložený soubor z jiného zdroje

            b) oflekování funkcionality běžícího systému (nepředpokládám chybu v boot záznamu OS) to jest umístím flek na příslušné místo a nyní může nastat některá ze situací:
                        1. daná funkce je volána dynamicky a velice z paměti uvolňovaná (nemusím nic provádět os si při dalším volání zavede správnou verzi
                         2. funkce je dynamická leč setrvává mrška v paměti a tady musíme Os donutit funkci vystrnadit z paměti a pak donutit OS aby ji znova natáhl.
                         3. platí to co v bodě 2 ale jediný způsob jak ho donutit použít novou funkcionalitu je Boot

     Tvrdím Vám, že typ distribuování ve smyslu binární nebo zdrojový kód neovlivní to jestli budu muset provádět reboot. To je dáno přístupem Os k patchované komponentě. To, že v automatické distribuci je požadován restart je dílem programátora který raději napíše jednodušší restart systému než daleko složitější dokopávání systému k nějaké činnosti která onen patch uvede k reálnému životu. Podle onoho známého systémáckého rčení ať žije systémový programátor a jeho mocný bratr IPL (IPL je označení bootu na IBM mainframech).
                       

Souhlasím  |  Nesouhlasím  |  Odpovědět
shrek  |  06. 01. 2004 23:54

Ovsem jenom do te doby, nez se jim zacne system "sam od sebe" restartovat. ;)

Souhlasím  |  Nesouhlasím  |  Odpovědět
ufik  |  07. 01. 2004 05:49

To mluvite o Windows? Na linuxu jsem tohle jeste nezazil (od roku 92). Na win jsem poznal 2 pocitace, kde se to stavalo I 2x denne - na jednom z nich bezi linux naprosto stabilne a zatim bez jedineho padu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
M.D.  |  06. 01. 2004 23:58

A hlavně jde o tu svobodu, ne o to populární pozlátko toho, kolik lidí používá nebo nepoužívá Linux.

(Tuto myšlenku jsem si zase vypůjčil z nedávného článku Richarda Stallmana http://www.newsforge.com/software/04/01/05/1146229.shtml, snad se nebude zlobit)

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petr Minařík  |  07. 01. 2004 10:53

Ano jde o svobodu ale v tom že mohu změntit kód OS. jedná se o osvobození od lepení jakýchsi záplat operačníhi systrému. Možnost zasáhnout do operačního systému je pěkná ale v praxi to je k ničemu. je to pouze taková poučka a uzemění uživatelů kteří podle vašeho názoru trpí tím, že si nemohou svůj systém modifikovat.

Uveťe mi prosím příklad kdy mohu dobře tuto takzvanou svobodu Linuxu použít nebo to příště neříkejte.

Souhlasím  |  Nesouhlasím  |  Odpovědět
M.D.  |  07. 01. 2004 11:37

I běžní uživatelé mohou pochopitelně svůj systém (ať je jakýkoliv) modifikovat. Ale u proprietárních programů jen s takovými omezeními, o kterých rozhodne autor/výrobce/distributor.

Chcete konkrétní příklad použití takové svobody? Podívejte se na libovolnou distribuci Linuxu. Téměř každý distributor upravuje nejakým způsobem původní softwarové balíky (ať už jde o kernel nebo o aplikační software), aby lépe vyhovoval uživatelům, na které míří.

Existují téměř plnohodnotné distribuce fungující čistě po nabootování CD-ROMu bez nutnosti jakékoliv instalace, distribuce, které z běžného PC udělají set-top-box (nehledě na to, že celá řada komerčních set-top-boxů a DVD přehrávačů obsahuje nějaký embedded Linux).


A kdy mohu já jako koncový uživatel tuto svobodu využít? Už jsem psal -- v případě, že nikdo jiný nechce provést nejakou opravu nebo implementovat vlastnost, která by se mi na něco hodila. Nemusím se pohybovat jen v mantinelech toho, co považuje autor/výrobce/distributor za důležité, mohu si to upravit sám nebo někomu za úpravu zaplatit.


Zkuste si přečíst ten Stallmanův článek a možná to lépe pochopíte.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petr Minařík  |  07. 01. 2004 13:22

Linuxová distribuce - Já si nikdy nedělal vlastní distribuci Vy ano? Správci je to k ničemu.

Embedded Linux - jsou i windows Já si nikdy nic takového nepotřeboval Vy ano? Správci je to k ničemu.

Použití oné svobody jak jste tady napsal je pouhé obecné povídání. Řekněte mi jak jste to použil? Víte o nějakém příkladu z okolí? Popisšte mi jej.

Souhlasím  |  Nesouhlasím  |  Odpovědět
M.D.  |  07. 01. 2004 13:47

Ale to víte, že v jistém smyslu slova si dělám své vlastní distribuce. Například mám několik kernelů, které porůznu používám pro různé věci: mám kernel pro desktopové stroje (obsahuje patche pro preemptivní přepínání během syscallů), jiný kernel používám na webové servery a ještě jinak patchovaný pro víceprocesorové stroje.


Co se týče těch zcela konkrétních úprav ve zdrojácích, tak z poslední doby si třeba vzpomínám na to, jak jsem přepisoval ladící hlášky v ovladači EIDE RAIDu (aby to logovalo to, co potřebuji, a naopak zbytečně nelogovalo, co nepotřebuji) nebo na desktopu jsem drobně upravoval display manager, aby umožňoval spouštět více relací X serveru apod.

Ani v jednom případě to nebyly žádná programátorská veledíla (v tom prvním by dokonce stačilo jen umět používat printf() :), ale v proprietárním systému by to byly pravděpodobně nemyslitelné úpravy.

Běžné úpravy různých administračních skriptů systému ani nepočítám, to je tak na rozhraní zdrojáků a pouhé změny konfigurace (i když se tím dá efektivně ovlivňovat chování velké části systému).

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petr Minařík  |  09. 01. 2004 07:29

"v jistém slova smyslu" - to mi ní jako by jste říkal já si je dělám ale ve skutečnosti je nedělám. To že je jistý rozdíl mezi serverem a destopem je jasné ale dělat kvůli tomu vlastní distribuci je ono pověstné drbání pravého ucha levou rukou. Bývá rozumné toto uložit do kongiguračních souborů a do kompilovaných knihoven. Toto neberu jako rozumný případ použité mové distribuce OS.

Úprava ovladače aby logoval co potřebujete. Já neměl a asi ani nebudu mít potředu něco takového dělat. Co se logování týká tak u nás v propietárních systémech to funguje tak, že si můžete nastavit co chcete logovat. Jestliže je tam těch hlášek vícero tak vidím jako vhodnější úpravu zásah do prohlížeče logu jestliže do něcho chcete zasahovat. Osobně bych to ale řešil expotrem logu do nějakého textového souboru a jeho vyhodnocování v tabulkovém procesoru. Není roumné zasahovat do Os nebo ovladače když jsou jiné cesty (nebo by měli být k dispozici jiné cesty). V propietálním systému musíte myslet jinak jinak než vše převádět na zmenu kódu sytému.

Nevím čemu říkáte administrační skripty. Pro windows jsou mockým nástrojem registry a windows scripting host. To ve spojení s active directory a instalačními balíčky je opravdu mocný nástroj pro spravování užovatelů a operačních systémů.

Souhlasím  |  Nesouhlasím  |  Odpovědět
M.D.  |  09. 01. 2004 09:50

Ad první odstavec:

Tím "v jistem slova smyslu" jsem chtěl jen říci, že nedělám žádnou distribuci, kterou bych poté šířil dál. Ve skutečnosti vycházím z distribuce Gentoo, která má propracovaný balíčkovací systém (podobný BSD Portům), kdy se všechny komponenty systému (kernel, run-time knihovny i čistě aplikační záležitosti) automatizovaně překládají ze zdrojáků.

Kromě toho, že překlad lze takto optimalizovat velmi specificky na cílový hardware, tak lze způsob překladu také ovlivňovat co do dalších parametrů (komponenty daného balíku, které se mají přeložit, závislosti na jiných knihovnách atd. -- například v případě PHP jej jinak překládám na desktopu pro ladění webových aplikací [s podporou debugování, GTK+ apod.] a jinak na provozním serveru).

Máte pravdu v tom, že většinu takových úprav lze celkem snadno zachytit do konfiguračního profilu, ale přesto v mnohých případech jdu nad rámec tohoto a vytvářím si své vlastní Ebuildy (nebo upravuji ty z Gentoo) nebo přímo zasahuji do samotných zdrojáků (viz dříve), čímž si de facto vytvářím vlastní distribuci (takové úpravy potom porůznu používám na více cílových strojích).


Ad druhý odstavec:

Opět mi nezbývá než obdivovat Vaši sebejistotu -- "ani nebudu mít potřebu". Zřejmě vidíte do budoucnosti...

Chápu, že lze velmi snadno omezit nebo jinak profiltrovat to, co se má logovat (ostatně u nás ve free systémech to jde taky :)), nicméně určitě nejde jenom tak změnou nastavení zapnout logování něčeho, co se _neloguje_. Ve zdrojácích Windows určitě není za každým výkonným příkazem logovací příkaz (ani v jedné, natož ve spočetně mnoha možných variantách).


Ad třetí odstavec:

V unix-like systémech je z rozumných důvodů jen menší část základních systémových aplikací binární programy (nemluvím o aplikacích, které potom používá běžný uživatel). V praxi to vypadá tak, že po naběhnutí kernelu se spustí binární proces init(8), který po základních testech spustí zaváděcí skript.

Co se děje potom, to už je vše v rukou správce (samozřejmě, že to je nejak předdefinováno autorem distribuce). Asi jako kdyby jste měl plnou, ale opravdu plnou kontrolu nad tím, co dělají Windows, už během té zaváděcí obrazovky (toho splash screen).

Ten zaváděcí skript může být úplně přímočarý a jednoduchý (to se asi použije v nějakých jednoúčelových zařízeních), nebo to může být komplikovaná soustava dynamicky se měnících skriptů, které specificky spouští různé daemony, řeší závislosti mezi nimi a v závěru vytvoří konzole pro lokální nalogování a spustí Xka (to je případ většiny velkých distribucí).

Ty skripty jsou samozřejmě human-readable, takže je může správce snadno modifikovat a přizpůsobovat bez nutnosti něco kompilovat atd.

Takže zatímco ve Windows je možné spoustu věcí nastavit a na zbylé zásahy by se hodilo mít zdrojáky (opět tím mám na mysli zásahy, u kterých jaksi v Redmontu nepovažovali za nutné, aby pro ně bylo nejaké nastavení -- jejich rozhodnutí ovšem logicky takovou potřebu nemůže vyloučit), při běžné správě Linuxu si človek je jak změna konfigurace, tak změna systémových skriptů. A v případě, že ani to náhodou nestačí, tak jsou tady stále ještě ty zdrojáky.


Záverem:

Tahle diskuze nemá konce a točí se pořád kolem jednoho.

Já tvrdím, že přístup ke zdrojovým kódům je rozšířením svobody, kterou správce (a vlastně i chytrý uživatel) má a která mu umožňuje něco se systémem dělat (ale není k tomu nucen -- když to neumí, tak se prostě dostane v nejhorším na stejný level jako v proprietárním systému).

Vy zase tvrdíte, že pro takovou možnost nevidíte využití nebo že se jí dokonce v jistém smyslu obáváte (zavlečení chyby atd.). Neberu Vám to, máte na svůj názor právo.


Doufám tedy, že si oba udržíme otevřenou mysl, a mějte se hezky!

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petr Minařík  |  14. 01. 2004 09:21

1.   Proč mi prostě nenapíšete na moji otázku, že žádnou distribuci neděláte. za to se nemusíte stydět. Modifikujete si OS to beru. Je ovšem otázkou co Vás tyto nodifikace stojí. Já si mého nesvobodného systému vystačil s možnostmi OS tak jak mi byl nabídnut. Bylo jednodušší změnit stisknout několik tlačítek, případně změnit nejaké ini soubory nebo registry. Bylo to rychlejší a nevyžadovalo to investice v podoběučit se programovat.

2.   Nejsem věštec jak se mi posmíváte. Chci Vám říci, že mi je 41 let a od 25 jsem pracoval s operačními systíémy. Za tu dobu jsem nenarazil na nutnost modifikace OS. Lépe řečeno po přemýšlení se dalo totéž udělat jinou cestou. Byl bych hlupák kdybych zasáhl do složitějšího mechanizmu když mám možnost zasáhnout do jednoduššího. Zkuzte si někdy položit otázku jak to udělat jinak.napsal jsem ne jak jste uvedl ""ani nebudu mít potřebu" ale "Já neměl a asi ani nebudu mít potředu něco takového dělat." Je tam ono zpochybňující "asi". Když jsem neměl doposud tu potřebu tak asi těžko na stará kolena budu měnit zvyky.
     Opět Ván odpovím. Co jsem potřeboval logovat v systémech tak jsem si našel a neměl jsem potřebu něco dodělávat do OS. Existují kupříkladu debugery které jsou schopny zaznamenat jisté události. Je to zase o hledání a nalézaní cest. Mnoho cest vede k cíli a není nutné se fixovat na cestu opravy zdrojového souboru. Tím neříkám, že nemůže být cesta modifikace zdroje rychlejší nebo výhodnější.

3.    Díky za info o Linuxu. To pro mne byly nové informace. Závěr každý má své nástroje windows však ty svoje nástroje spouští trochu později. Nevidím tady nějaký zásadní problém. Kdybych byl kousavý tak Vám řeknu, že registry mají vliv i na zavádění systému a vzpomenu přepínače zavádění systému jako je třeba /noserialmice u windows. Je to pro mne vyrřovnané situace.

4.   Trefnější je říci rozšířením ne svobody ale možností. Druhou větu o tom, že je k tomu potřeba hodně znalostí a zkušeností tady stejně jako Vaši kolegové od Linuxu jaksi pozapomente říci. Slušelo by se také upozornit na nebezpečí úprav operačního systému. Když si čtu takováto nezodpovědná prohlášení z Linuxového tábora tak je mi z toho smutno. Ne jen že se takto staví do světla neomylných systémových géniů (Já žádného takového člověka nepotkal i když jsem poznal hodně lidí od počítačů kteří třeba chrlili binární kód IBM počítače a přímo ho modifikovali z centrálního pultu mainframe, nicméně i tito lidé dělali chyby a postupovali velice opatrně při každém kroku a šli cestou nejmenšího rizika). Tito lidé by si měli uvědomit, že tím škodí i vlastnímu Linuxu a měli by informovat vyváženě.

Asi mi nebudete věřit ale jsem rád, že se tady objevují nové operační systémy které konkurují Windows. Je to ku prospěchu windows i jejich uživatelů (ne ku prospěchu velkého Billa) Linux se jeví jako jedna z nadějných možností a proto bych byl nerad aby vyhořel.

 

Souhlasím  |  Nesouhlasím  |  Odpovědět
M.D.  |  14. 01. 2004 15:32

1. Nedá se nic dělat, máme prostě každý jinou definici slova "distribuce". Pro mne je distribuce (ve smyslu distribuce Linuxu apod.) prostě ucelený soubor (typicky free) softwaru, vhodně vybraný, předkonfigurovaný a případně upravený pro splňování obvyklých funkcí té cílové skupiny, pro kterou je určen.

Podle této definice skutečně dělám svou vlastní distribuci, přestože ji nešířím běžným způsobem (ale běží i na několika strojích, které ani nevlastním, ani nespravuji), nenese mé jméno a je odvozena od jiné distribuce (ovšem i dnes slavné a samostatné distribuce typu Mandrake nezastírají, že začínaly jako klon Red Hatu).

A pokud Vám to nestačí, tak ještě před dvěma lety jsem aktivně udržoval jednodisketovou distribuci pro záchranu havarovaného systému, dělal jsem ji zcela od píky, nesla mé jméno a někteří mí kamarádi ji pořád mají (jestli ještě někdy používají, to nevím)


2. Mě je upřímně jedno, jestli zasahuji do složitého nebo jednoduchého mechanismu (dokud tomu rozumím). Rozhodující je, zda samotný zásah je tak či onak jednodušší. Nejsem samozřejmě blázen, abych kvůli každé věci, která se dá standardními prostředky nastavit, zapnout, vypnout atd. zasahoval do zdrojáku. Ale jsou situace (o jedné se tady stále bavíme), kdy může být zásah do zdrojáku k prospěchu věci (přesněji řečeno v tomto případě to vlastně nebyl žádný zásah do zdrojáku, v tomto případě to bylo napsání nového modulu, který se jen načetl a tím opravil funkci stávajícího běžícího jádra).

A existují také situace (které mohou nastat i u toho nejprozíravějšího výrobce/programátora), kdy prostě něco pouhým nastavením ovlivnit nejde.


3. Není to úplně stejná síla. Zase totéž: nastavením můžete (často velmi pohodlně) ovlivnit tu část chování softwaru, která je nastavitelná. Změnou zavádecích skriptů můžete změnit prostě úplně všechno, celý algoritmus běhu systému (výjma věci již zadrátovaných v kernelu, ale ten zase můžete díky přístupu ke zdrojákům předrátovat -- přestože se to nedělá často).

4. Máte jistě pravdu. Ale přesto k tomu mám jednu zásadní poznámku: ve světě free softwaru nejsou žádní lidé, kteří by byli vevnitř (v nějaké firmě, která se stará o vývoj) a venku (uživatelé). V tomto světě může být spoluautor systému skutečně každý, kdo to umí a jehož řešení jsou dobrá natolik, že je další začnou používat.

Existuje samozřejmě hlavní vývojový strom kernelu "posvědcený" Linusem Torvaldsem, ale jen já sám vím o 28 dalších vyznamných (co do praktického nasazení) větví.

Každou změnu, kterou uděláte v systému, děláte ne jen pro sebe, ale budete-li ji publikovat, tak i pro ostatní, kteří ji mohou také používat. Takže ve světě Linuxu není nic až tak výjimečného nebo "trestuhodného" modifikovat si vlastní kernel. Vlastně jedině díky tomu se celý ten cirkus hýbe kupředu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petr Minařík  |  20. 01. 2004 13:20

1. Problém není v tom co si představujeme pod pojmem distribuce. Já ho vidím ve vašem vyjadřování. Začal jste "že v jistém smyslu slova si dělám své vlastní distribuce" pak to bylo "jsem chtěl jen říci, že nedělám žádnou distribuci, kterou bych poté šířil dál" a skončil jste "skutečně dělám svou vlastní distribuci". Jsou to výseky z Vašich vět ale dokreslují nejistotu. Naučte se vyjadřovat jasně a stát si na svém. Takto to je jako podivné balancování.
     Jednodisketovou distribuci máme v podobě starého DOSu. Případně recovery console na instalačním CD. Tady mi to připadá, že onou svojí distibucí spíše doháníte nedostatek recovery console pod Linuxem.

2. Jestliže Vám je jedno, že zashujete do složitého nebo jednoduchého stroje je na pováženou. Píšete mi ve svých příspěvcích jak je důležité aby Váš sever byl neustále UP. Jestliže to pro Vás není jenom fráze tak by jstte si měl uvědonit, že je vhodnější opravovat nejjednodušší část. V jednodušších částech máte šanci nadělat nejméně chyb. Když vidím kolik je oficiálních záplat na systémy (chyb které nadělali přímo autoři Osu) tak bych urazil ruce každému dovedovi který by cosi kutil na systém,u který mám na správu. Nejhorší je všeuměl který se naučil pár řádek v C a myslí si, že napíše operační systém. Ve své nevědomosti tak může napáchat hodně chyb a nepříjemností. Proto preferuji mít opravu přímo od výrobce a se zárukou.

3. Tak mi uveďte k čemu se to dá užít v Linuxu a ve Windows to není možné. Prosil bych konkrétní případ z praxe ať se nebavíme akademicky.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Zasílat názory e-mailem: Zasílat názory Můj názor