Michalův notebook pro „chudé“

Článek popisuje systém, který už přibližně rok denně používám a který mi zajišťuje všechny funkce, které od počítače potřebuji…

…Napsán je však v roce 2008, takže vše co je níže popsáno už je už dávno překonáno, přesto jsem na tenhle „vynález“ doposud pyšný 🙂


Proč to vzniklo

Ve svém zaměstnání používám často počítač. K nejrůznějším věcem, přičemž se zdaleka nejedná jen o psaní dokumentů v kancelářských aplikacích. Docela často také s počítačem musím cestovat a různé úlohy řešit na různých místech. Počítače a některé věci kolem nich jsou také mým koníčkem, třeba tyhle stránky jsou jedním z nich.

V konečném důsledku to znamená, že denně několikrát usedám k počítači a pracuji. Také to znamená, že musím mít buď jeden počítač a ten neustále tahat sebou anebo musím mít počítačů několik a na nich pokud možno vždy aktuální verzi toho na čem zrovna pracuji. V mém případě by se jednalo asi tak o tři – jeden doma, jeden v práci a jeden cestovní pro práci i soukromé účely. Řeknu Vám, že neznám větší otravu než udržovat aktuální data a nastavení programů na několika počítačích najednou. Nejenom, že to zabere spoustu času, ale hrozí také, že se vloudí chyba a nechtěné přepsání/smazání něčeho co nutně potřebujeme. Prostě otrava.

Zbývá tedy ta první možnost – mít jeden počítač a ten tahat neustále sebou. Asi by to měl být notebook, přenášet sebou stolní PC je nemyslitelné. OK, mám notebook, docela výkonný, ne moc velký, ne moc těžký, prostě přiměřený tomu co potřebuji. Jakkoliv je však notebook nejmobilnější platformou plnohodnotného osobního počítače v současné době, přece jen, kdo ho někdy delší dobu sebou nosil potvrdí, že se časem docela pronese, občas překáží a navíc je dost cenný na to aby stál lumpovi za loupež či krádež. Vozit ho sebou na kole v batohu je docela hardcore zábava, zvláště v Praze v odpolední dopravní špičce.

Motto: Lenost naučila člověka myslet.

Aby bylo jasné v jakém duchu bude další text musím uvést, že řeč bude jen o Linuxu, resp. systémech založených na Unixu. Samozřejmě, věnoval jsem část úsilí i pokusům s podobným řešením založeným na Windows, ale nebyly úspěšné a protože Win nepoužívám, ani mne to tak moc netrápí. Vlastně jediný důvod pro pokusy s Win byl ten, že jsem chtěl usnadnit život i Darince, která musí používat aplikaci, jenž v Linuxu neběží a neexistuje pro ni srovnatelná alternativa. Takže když potřebuje pracovat i doma, tahá sebou domů a zpět do práce notebooka jak kočka koťata.

A proč vlastně notebook pro „chudé“? Protože naše země i země kolem nás jsou v současnosti zcela nasyceny počítači. Jinými slovy, počítačů je všude relativně dost, není problém se dostat k hardware. Problém je v tom, že ne všude je nainstalovaný právě ten software, který potřebujeme, na který jsme zvyklí apod. a už vůbec nikde, pochopitelně, nejsou naše osobní uživatelská data, která k práci potřebujeme. Ale já chci používat programy tak jak je mám nakonfigurované v práci i doma. A chci mít k dispozici vždy aktuální verzi zpracovávaných souborů ať už jsem doma nebo v práci nebo na cestách. A chci a chci a chci 🙂

Vezmeme-li tedy v úvahu, že v našem současném světě není nouze o hardware a pokud to skutečně potřebujeme tak se vždy nějaký stroj k dispozici najde, zbývá vyřešit dva problémy:

  • Jak přenášet poměrně objemný balík dat zahrnující jak operační systém tak i všechna uživatelská data z místa na místo.
  • A jak nabootovat náš systém na libovolném počítači, který je právě k dispozici.

Jak na to

Idea řešení je prostá – přenášet sebou jen paměťové médium schopné nabootovat „náš“ operační systém s možností spouštění programů a čtení i zápisu našich uživatelských dat.

V posledních letech došlo k výraznému nárůstu kapacity úložných médií současně se snižováním jejich ceny a tak není problém uložení většího množství dat na malé a přenosné médium nijak významný. Rozumný linuxový operační systém se v pohodě vejde na 3 GB disk a na rozdí od Win samovolně neroste, k tomu pár GB nebo klidně i desítek GB pro uživatelská data. To vše se nám v pohodě vejde na relativně levný, přenosný harddisk s rozměrem 2,5 palce. Buď je možné pořídit již hotový přenosný disk, jichž je dnes v nabídce trhu spousta nebo je možné koupit disk i box pro disk samostatně, vyjde to přibližně na stejné peníze. Rozhraní těchto disků je nejčastěji USB II, dělá se také FireWire a pochopitelně také ethernetové. Pro nás ne nejzajímavější právě USB II, protože je v současnosti nejrozšířenější a je možné očekávat, že na většině počítačů bude k dispozici.

Já jsem si pro tyto účely pořídil disk o kapacitě 60 GB a ten jsem rozdělil na šest oddílů, z nichž tři jsou předurčeny pro různé operační systémy, jeden jako úložiště uživatelských dat společných pro všechny tři operační systémy, další je datový sklad pro objemné věci jako je hudba a video a poslední oddíl je použit jako odkládací prostor právě spuštěného operačního systému – swap. Podrobnosti ohledně rozdělení disku nemá smysl uvádět, protože způsob rozdělení disku a velikost jednotlivých oddílů se řídí stejnými pravidly jako u každé jiné instalace linuxu a především potřebami uživatele.

Jak dostat linux na externí disk? Předpokládám, že při instalaci většiny linuxových distribucí je možné zvolit jako oddíl pro root i oddíl externího disku, ale popravdě řečeno, nezkoušel jsem to. Jednodušší mi přijde, zvláště pokud už linux nějakou dobu používáte, jej prostě nakopírovat ze stávajícího umístění. Já jsem to tak udělal, protože můj Slackware Linux, ač byl nainstalován někdy v roce 2004, je i po třech letech každodenní práce dokonale funkční a neměl jsem důvod jej přeinstalovávat. Žádné obavy, je to snadné, více o problematice přenesení linuxového operačního systému z jednoho disku na jiný jsem popsal v článku o zálohování operačního systému kde se dozvíte vše potřebné pro tuto operaci. Jen dodám, že není potřeba zabývat se zápisem zavaděče lilo, ale naopak nesmíte zapomenout upravit fstab – systém přesouváte na externí disk a ten bude mít v systému určitě jiné označení. Nebude to pravděpodobně hda1 nebo tak něco, ale sda1 a pod.

První problém je tedy, zdá se, vyřešen – jsme schopni sebou nosit náš operační systém, nebo i několik různých operačních systémů i s našimi uživatelskými daty kamkoliv se nám zamane na médiu velikosti peněženky o hmotnosti dvacet deka.

Teď ten druhý problém….


Jak to nabootovat a udržet v chodu.

Za normálních okolností počítač po zapnutí prostřednictvím BIOSu začne bootovat z pevného disku v počítači. Je možné také nastavit bootování z diskety, ale to se dnes už příliš často nepoužívá, nebo start z CD, který se naopak používá velmi často například při instalaci operačního systému. Mnohé stroje mají dokonce trvale nastaveno bootování z CD s tím, že pokud CD není vloženo do mechaniky, nastartuje se systém z pevného disku. To sice není moc bezpečné, ale pro náš systém je to vlastně dobře, protože lze očekávat že velké procento teoreticky použitelných počítačů v okolí to má takto nastaveno a my nebudeme mít problém nabootovat náš systém. Abych nezapomněl, základní desky soudobých (rok 2007) počítačů také celkem běžně podporují boot z USB. Starší stroje však tuto možnost nemají a i u těch co ji mají často není start bezproblémový. Budeme tedy systém bootovat z CD disku s tím, že někdy v blízké budoucnosti se z CD stane jen pojistka a bootovat budeme přímo z disku připojeného přes USB rozhraní.

Potřebujeme si tedy vyrobit CD disk tak, aby z něho počítač byl schopen nastartovat s tím, že operační systém je někde na externím disku připojeném přes USB. Jak „snadné“ 🙂 No, na první pohled se to může zdát obtížné, ale naštěstí to není zase až takový problém. Vše je již vymyšleno a řešeno v rámci projektu SYSLINUX, který poskytuje řešení pro bootování linuxu z disket, z LAN, a také z disku CD. Část projektu zahrnující bootování z CD má název ISOLINUX. Vše co je potřebné udělat je velmi dobře popsáno v manuálu a protože konfigurace každého systému se musí nutně lišit od toho mého už jenom proto, že rozdělení disku bude velmi pravděpodobně jiné, neuvádím zde přesný postup a obsah konfiguračního souboru si musí každý napsat podle svých potřeb a svého systému.

Pro inspiraci je zde obsah mého isolinux.cfg:

Takže si do nějakého adresáře „nasypete“ požadovaný obsah budoucího CD, upravíte obsah souboru isolinux.cfg, popřípadě napíšete nějakou úvodní stránku, která se zobrazí při bootování a na závěr to vše vypálíte jako bootovací CD. Opakuji, vše je velmi jasně popsáno v dokumentaci projektu. Po restartu stroje a nabootování z Vašeho nového CD se objeví prompt kde můžete zadat volby pro spouštění, případně se zobrazí prompt a uvítací stránka, pokud jste si ji napsali.

Může to pak vypadat třeba takto:

Doplňuji, že jádro systému je samozřejmě načítáno z CD a pokud Váš systém pracuje s initrd, musí být komprimovaný filesystém initrd.gz na CD také. Jádro po svém zavedení očekává root filesystém, na kterém najde moduly zaváděné při startu, jinými slovy, tyto tam musí být a musí příslušet spuštěné verzi jádra. Tím se dostávám k problematice jádra, kterou možná budete muset řešit. Použije-li se pro bootování systému distribuční jádro, lze očekávat, že takové jádro je tvůrcem distribuce zkompilované co možná nejuniverzálněji, tak aby na většině současných architektur počítačů nabootovalo. Není co řešit.

Jinak tomu však je, pokud jste si zkompilovali vlastní, optimalizované jádro. Pochopitelně, je-li jádro optimalizováno např. striktně pro procesor Pentium M, tak nám velmi pravděpodobně nebude pracovat s procesorem jiné architektury. Stejně tak se může stát, že při cestách s notebookem pro chudé a spouštění systému na nejrůznějších počítačích narazíte na hardware, který Vám nepojede. Pak nezbyde, než si zkompilovat nové jádro, které bude co možná nejuniverzálnější i za cenu toho, že velmi naroste na objemu a i samostatně kompilovaných modulů bude mnohem více. Naštěstí, přechod od vlastnoručně zkompilovaného jádra, optimalizovaného pro konkrétní stroj k jádru univerzálnímu zahrnujícímu všechny možné i nemožné ovladače jsem na stabilitě a rychlosti systému nijak nepoznal. Pokud budete chtít/muset řešit problém kompilace jádra, mrkněte na článek na toto téma v rubrice Linux.

Až tohle všechno uděláte, může Váš „notebook“ vypadat podobně jako ten můj:

Když použijete malé 8 cm CD, vejde se vše v pohodě do obalu od přenosného disku a velikost celku pak umožňuje nosit vše v náprsní kapse bundy:

A je to 🙂 Samozřejmě můj notebook pro chudé není úplně bezchybný, jedním ze zásadních nedostaků je nutnost bootování z CD mechaniky, momentálně je to však nejspolehlivější způsob řešení. Dalším omezujícím faktorem je rychlost sběrnice USB, která v případě bootování z klasického harddisku v přenosném provedení prodlužuje dobu startu stroje a dobu prvního startu aplikací na skoro dvojnásobek. Na druhou stranu, jestli mi systém z disku na IDE sběrnici startoval 18 sekund a teď startuje něco přes půl minuty, nevadí mi to. Jiné to je v případě, kdy na počítači není rozhraní USB II, protože spustit systém z disku připojeného přes USB I sice lze, ale jde to moooooc pommmmmaaaaalllluuuuuuu 🙂 V takovém případě přijde ke slovu drobné vylepšení jenž popisuji dále.

Zkoušel jsem též celý systém nahrát na flash disk o velikosti 4 GB, ale toto řešení mne neuspokojilo, protože jestli je rychlost USB sběrnice limitujícím faktorem při startu z přenosného harddisku, rychlost čtení/zápisu flash disků (r. 2007) je ještě mnohem nižší a zpomalení systému bylo neúnosné. Možná za rok, dva to bude jiné.

Další „problém“ je podpora různých zařízení specifických pro ten který stroj. S oblibou dělá potíže wifi karta nebo akcelerovaná grafika, občas také zvukovka. Lze očekávat, že wifi karta na cizím notebooku Vám s notebookem pro chudé pravděpodobně nepojede. Ne, že by to nešlo rozchodit, ale chce to o problematice wifi karet v linuxu něco znát a netrvá to většinou jen pár minut. Já tento problém pro cizí počítače neřeším, protože mne to až tak moc nepálí. Pro počítače které používám častěji a znám jejijch hardwarovou konfiguraci jsem si napsal skript, který při startu systému identifikuje počítač, na kterém je notebook pro chudé právě spouštěn a podle toho nahraje ovladače zařízení, konfigurace, apod. Tímto způsobem například ovládám i nastavení síťových připojení a nastavení monitoru klávesnice a myši, které jsou u počítače doma a v práci odlišné. Nemusím to po startu dělat ručně. A pokud skript pozná, že je systém spouštěn na cizím počítači, vymaže nastavení sítě úplně a spustí DHCP a univerzální ovladač monitoru a vstupních zařízení.


Jak to ještě vylepšit?

Už jsem zmínil, že popsaným způsobem je možné spouštět i více operačních systémů z jednoho disku, ostatně nejenom v linuxu je toto docela běžné. Já jsem si na jeden oddíl disku rozbalil obraz výborné české live distribuce SLAX s tím, že jádro jsem vyextrahoval a vypálil na své spouštěcí CD. Jádro SLAXu pak při startu prohledá diskové oddíly a spustí SLAX. Skvělé, ale za chvíli mi to nestačilo a tak jsem pro případy nouze celé CD ještě upravil tak, aby bylo možné SLAX spustit jen z CD. Musel jsem trochu původní ISO obraz očesat aby se mi tam vešly i ty moje jádra, ale koffice většinou při záchranných operacích nepotřebuji takže jsem modul s koffice smazal a vše se v pohodě na malé CD vešlo.

Takže na CD jsou nyní celkem tři různá jádra – moje univerzální jádro z něhož spouštím obě instalace Slackware Linuxu, jádro SLAXu pro spuštění SLAXu z CD nebo z disku a třetí je memtest k provedení testu paměti.

Další „vychytávka“ spočívá v možnosti rychlého, jednoduchého a spolehlivého způsobu zálohování celého systému. Přece jen se může stát, že o disk a data na něm uložená po cestě domů nějakým způsobem přijdete, ztratíte jej nebo po nějaké silnějším nárazu hlavičky přestanou mít chuť vznášet se nad plotnami disku, stát se může cokoliv. Bez zálohy jste… víte kde.

Uživatelé počítačů se dělí na dvě skupiny:
Na ty co zálohují…
… a na ty co budou zálohovat 🙂

Již před uvedením notebooku pro chudé do života jsem měl docela vymyšlený způsob zálohování operačního systému. Spím klidněji když vím, že i kdybych o zařízení fyzicky přišel, obnova systému ze zálohy nebude trvat více než hodinu a můžu tak bez problémů a ztráty dat pokračovat v rozdělané práci. Jak na to s notebookem pro chudé?

V okamžiku, kdy operační systém spouštíte z přenosného disku a tamtéž jsou i Vaše uživatelská data, pevný disk v počítači ztráci svou funkci. V podstatě v počítači vůbec nemusí být. Ale on tam je a je škoda ho nevyužít. Proč ne právě pro tvorbu zálohy dat kdykoliv se nám zamane? Stačí jen soubory z našeho notebooku pro chudé zrcadlit na interním pevném disku počítače. Pochopitelně, mám na mysli vlastní počítač, ne nějaký cizí, na kterém jsem si jen spustil svůj systém, to by mi majitel asi nepoděkoval 🙂

Idea je tedy jasná, já jsem si napsal pro tento účel malý skriptík, který postupně provede následující:

  • zjistí MAC adresu ethernetového rozhraní počítače na němž je spuštěn,
  • pokud je to ten „správný“ počítač, zkontroluje připojení jednotlivých diskových oddílů a oprávnění k zápisu na ně,
  • zeptá se, co všechno chci zálohovat,
  • pomocí rsync aktualizuje cílový – záložní disk,
  • zapíše výsledek zálohování a případná chybová hlášení do logovacího souboru,
  • na závěr vypíše na obrazovku informaci o provedeném zálohování.

Poslední tip: Abych nemusel sebou neustále tahat CD a káblík, pořídil jsem si více kopií spouštěcího CD a koupil pár USB kabelů. Dva jsem nechal na místech kde se vyskytuji a pracuji nejčastěji – doma a v práci – a poslední je v kufru s nářadím na cesty.


No a to je asi vše. Nebudu přehánět, když řeknu, že to co zde popisuji mi udělalo největší radost z toho co jsem se v linuxu naučil. Je skvělé dopsat tento článek, vypnout počítač, odpojit disk a dát jej do kapsy u bundy. Ráno ho připojím k úplně jinému počítači v práci, operační systém nastartuje k nerozeznání od toho doma a všechna moje data jsou aktuální a připravena k použití.

V Praze 10.1.2008.

Příspěvek byl publikován v rubrice Linux se štítky a jeho autorem je michal. Můžete si jeho odkaz uložit mezi své oblíbené záložky nebo ho sdílet s přáteli.