24.7.2004

FREEBSD A SONY VAIO PCG-C1VR/BP

Filed under: FreeBSD — nax @ 19:38

Tak Zauruse definitivně mĂ­t nebudu. MĂ­sto toho jsem se nakonec nechal udolat tĂ­m, Ĺže mi vĹĄichni říkaly, Ĺže linuxovĂŠ PDA je zbytečně mĂĄlo vĂ˝konnĂŠ a hodĂ­ se jen na střednĂ­, kde je ta velikost rozhodujĂ­cĂ­. Po tom, co jsem těsně prohrĂĄl 2 aukce o Zauruse na ebay.de jsem nĂĄhodou zaĹĄel do bazaru ve VĂĄclavskĂŠ pasĂĄĹži a tam jsem uviděl naprosto sqělĂ˝ notebook pro mne. Je to Sony Vaio PCG-C1VR/BP a abych zbytečně nezdrĹžoval tak tady jsou jeho specifikace (ten sloupec v vpravo – ĹĄkoda Ĺže to nenĂ­ ten druhĂ˝ s vestavěnĂ˝m bluetoothem, ale mĂĄm v plĂĄnu si časem koupit Memory Scick Bluetooth modul od Sony, kterĂ˝ by to měl řeĹĄit. Stejně jinĂŠ vyuĹžitĂ­ pro ten Memory Stick port nemĂĄm).

PĹŻvodně na tom byly Windows XP a jedinĂĄ zajĂ­mavějĹĄĂ­ aplikace co tam byla nainstalovanĂĄ (kromě obsluĹžnĂŠho programu ke kameře) byl Unreal Turnamet, kterĂ˝ se na tom docela hejbal alespoň vzhledem k tomu, Ĺže to je minibook a “jen” 600MHz. No ale myslĂ­m, Ĺže pro provozovĂĄnĂ­ unixĹŻ to bude docela dost. ZĂĄměrně nepĂ­ĹĄu linuxu, protoĹže v tuhle chvĂ­li tam linux ŞådnĂ˝ nemĂĄm i kdyĹž jsem měl pĹŻvodně v plĂĄnu tam dĂĄt nejdřív source distribuci Gentoo. Jednak jsem chtěl tenhle hardcore linux, kde prĂ˝ mĂĄte opravdu vĹĄe pod kontrolou (instalace probĂ­hĂĄ prostě tak, Ĺže nabootujete nějakĂ˝ linux – třeba live distro – ručně vytvoříte partions, rozbalĂ­te minimĂĄlnĂ­ set utilit a pak se chrootnete do těch nově vytvořenĂ˝ch partiĹĄen a vĹĄe se překompiluje od adama (lĂŠpe řečeno od překladače)).

JenĹže jsem narazil na problĂŠm – v tom mĂŠm notebooku nenĂ­ floppy ani vestavěnĂ˝ CD-ROM a dokonce ani sĂ­ĹĽovĂĄ karta (to je asi hlavnĂ­ potĂ­Ĺž). CD-ROM je připojenĂ˝ pře PCMCIA kartu, ale problĂŠm je, Ĺže PCMCIA ĹĄlo je tam jen jeden (zřejmě cena za vĂĄhu a velikost). NicmĂŠně velice rychle jsem vygooglil, Ĺže pro ĂşspěšnĂŠ nabootovĂĄnĂ­ z CD-ROM mechaniky stačí do bootpromtu napsat něco takovĂŠho:

boot: gentoo ide2=0x180,0x386

Ten parametr si teď po týdnu pamatuju zpaměti. Bez toho parametru sice začne bootovat kernel, ale jakmile se dostane k tomu, že potřebuje natáhnout cokoli jiného z CD (třeba připojit nějaký filesystém), tak zhavaruje. Na druhou stranu po tom, co se mu dají tyhle parametry, tak pak ani nemusí být podpora pcmcia v kernelu a běží to.

Problém s Gentoo linux je ten, že se počítá s tím, že téměř vše instalujete přes síť. No a to je u mne problém. Když nabootuju Gentoo Live Instalační CD, tak se dostanu až do fáze kdy se chrootnu, ale bohužel teď se očekává, že si z internetu stáhnu nejnovější zdrojáky kernelu a přeložím si vlastní jádro. Jenže jakmile vyndám tu pcmcia kartu CD-ROMu abych ji nahradil wifi síťovkou, tak jde celý systém do kytek, protože na ostatních konzolách samozřejmě běží nechrootlé prostředí a jakmile nějaký jakýkoli daemon potřebuje něco pustit, tak to nenajde.

Zkusil jsem tedy štěstí s FreeBSD. Je to systém unixového typu, ale není založen na GNU licenci, ale na BSD, která (řečeno hodně polopatě) na rozdíl od GNU povoluje udělat se zdrojáky naprosto cokoli, včetně změny licence. FreeBSD má také bootovatelné CD a jak jsem zjistil, tak to mi po naběhnutí takového menu rozhraní pro instalaci (tzv sysinstall) nechá v pohodě vyndat tu kartu a dát místo ní jinou. Souvisí to zřejmě s tím, že prý FreeBSD umí i takovou věc, jako detouchnout řadič a následně bezpečně za běhu počítače vyndat nebo vyměnit disk.

Bohužel u FreeBSD nevyšel ten trik s tou změnou adresy CD-ROM řadiče (tady se to dělá přes volbu 6 v boot menu, který vás hodí to OK promptu, kde můžete změnit takzvané mib proměnné jádra) a tak jsem nemohl instalovat z CD. Nicméně tím, že jsem měl volné ruce k výměně pcmcia karty, tak jsem tam dal wifi kartu co jsem měl půjčenou od ptáka a pak sem měl dobrý zákys. Když jsem zvolil volbu instalovat přes ftp, tak to nabídlo konfiguraci sítě, ale ve výběru síťových interfaců ta karta chyběla. Trvalo mi asi den různých pokusů než jsem zjistil, že v menu Options je skoro na konci volba rescan devices a tím se to vyřešilo. Pak jsem vesele nainstaloval balík minimal a mohl jsem začít s nastavováním.

FreeBSD je také systém, který nabízí kompletní rekompilaci tak aby celý systém byl maximálně uzpůsobený pro daný hw. Dá se vlastně říci, že Gentoo je Linuxová distribuce s FreeBSD filozofií. Ve dvou materiálech o provozování FreeBSD na modelech hodně podobných mému typu Sony Vaio sem se dočetl, že největší problém je asi rozchodit funkci Suspend to disk, neboli aby se po zavření notese uspal úplně vypnul a po probuzení naběhnul co nejrychleji do stavu v jakém byl před uspáním.

Docela rychle jsem vygooglil diskusi acpi S4 resume partition, kterĂĄ mi hodně pomohla. Ve FreeBSD je totiĹž (tak jako v linuxu) moĹžnĂŠ pouŞít k ovlĂĄdĂĄnĂ­ ĹĄetřenĂ­ energiĂ­ 2 rozdĂ­lnĂŠ (svĂ˝m zpĹŻsobem konkurenčnĂ­) řeĹĄenĂ­: apm a acpi. ZatĂ­mco apm je starĹĄĂ­, odladěnějĹĄĂ­, ale zato toho umĂ­ podstatně mĂŠně acpi je naprostĂ˝ opak. FreeBSD (alespoň v současnĂŠ době nejnovějĹĄĂ­ verze 5.2.1 – moc se v těch RELEASE a STABLE zatĂ­m nevyznĂĄm, ale myslĂ­m Ĺže prostě je to nestabilnĂ­ verze) defaultně mĂĄ zapnutĂŠ acpi a pro zapnutĂ­ apm podpory (nedoporučuje se pouŞívat je současně) bych musel rekompilovat jĂĄdro (troĹĄku mne zmĂĄtlo, Ĺže třeba apm -z fungovat a opravdu se podle nastavenĂ­ acpi pokouĹĄel suspendnout počítač, ale to asi bude tĂ­m, Ĺže acpi se snaŞí wrapnout i starĂĄ volĂĄnĂ­ apm).

KdyĹž jsem dal:

# sysctl -a | grep acpi

vypadly na mne všechny volby a informace o acpi o kterých ví jádro. Hlavně pak jsem tím zjistil, že biosem jsou podporované jen stavy S3, S4 a S5. Podrobné vysvětlení co které číslo zaznamená jsem našel v man 8 acpiconf. Pro mne je důležité, že S3 je uspání bez uložení na disk a když jsem ho zkusil pomocí

# acpiconf -s 3

tak se sice počítač uspal, ale hned se zase probudil. Zřejmě ho probudí nějaký interupt, možná hodin. Zajímavější to bylo s S4, což je uspání s uložením na disk. To se korektně uspalo a počítač se vypnul, ale když jsem ho znovu zapnul tak se bohužel nenatáhla uložená paměť a normálně to nabootovalo samozřejmě s tím, že mi to vynadalo, že disky nebyly korektně vypnuté a mohou tedy být poškozená data (tedy se disky připojí jen jako read only a po přihlášení je potřeba dát fsck aby se případné nesrovnalosti v inodech opravily). Vlastně ani nemám představu kam se ta paměť ukládala (řekl bych že do swapu, ale ruku do ohně bych za to nedal.

To se mi samozřejmě nelíbilo a tak jsem dál pátral po internetu abych zjistil něco bližšího o té partition co by jako měla být vytvořená speciálně pro uspání. A měl jsem úspěch. V souvislosti se Sony Vaio (ale možná bude chodit i pro jiné booky) jsem našel prográmek phformat, který naformátuje partitionu na tu uspávací. Trochu zvláštně se používá (a žádný help v něm není), ale přečetl jsem si funkci main a bylo jasno.

Je potřeba vytvořit primĂĄrnĂ­ partition o velikosti o něco větĹĄĂ­ neĹž je velikost celkovĂŠ RAM (jĂĄ mĂĄm 128MB ale pro jistotu jsem dal 160MB – nicmĂŠně i nějakĂ˝ch 135MB by mělo stačit, protoĹže k RAM se pak uklĂĄdĂĄ jen jeĹĄtě cache a snad registry procesoru atd). Typ tĂŠto partition je potřeba nastavit na 0xA0 (tedy A nula hexa), coĹž je nějakĂĄ Thinkpat Hibernation FS. NevĂ­m jeĹĄtě jak se to dělĂĄ ve FreeBSD a fdisk je jinĂ˝ neĹž ten linuxovĂ˝, tak jsem si bootnul jedno ze svĂ˝ch live CD linuxu a udělal to v něm hezky pohodlně pomocĂ­ cfdisk.

KdyĹž jsem potom bootnul do FreeBSD tak jsem si něčeho vĹĄiml – ono totiĹž pĹŻvodně byla hodnota:
hw.acpi.s4bios: 0
znamenala, že bios nepodporuje usínání na disk a bude se to muset řešit pomocí OS, ale teď najednou to mělo hodnotu 1. No a když jsem zkusil

# acpiconf -s 4

Tak to skutečně usnulo a správně se to probudilo.

Teď už zbývalo jen nějak nastavit aby se uspal při zavření počítače. No a to už byla docela trivka, protože se to také dělá přes proměnné jádra. Stačilo do souboru /etc/sysctl.conf nastavit tohle:

hw.acpi.sleep_button_state=S4
hw.acpi.lid_switch_state=S4
hw.acpi.standby_state=S4
hw.acpi.suspend_state=S4

Comments are closed.

Powered by WordPress