Mobility

Toshiba AC100

42

Dneska jsem si byl v krámu vyzvednout novou hračku – netbook s Tegrou a běžícím Androidem. Chvála a vlastnosti je možné se dočíst všude možně po webu, já bych s dovolením shrnul některé moje první dojmy (teda funkční, nebudu se tu rozplývat, jak je to tenké, lehké a nehlučné :-)).

 

ToshibaAC100

ToshibaAC100

První dojmy jsou takové rozporuplné, nějak tam nic nefunguje. Zvyk z dotykového ovládání mě pořád nutí se dotýkat displeje, touchpad pořád zůstává opomenut, protože ta myš je taková nějaká…prostě divná, takže používám k ovládání především kurzorové klávesy, ale i tak se to chová jinak, než normální systém (checkboxy se neoznačují mezerníkem, ale enterem, klávesa tab neskáče na další prvek formuláře…ale to chce zvyk a cvik). Netbook byl dodán s Eclairem (2.1), ale po chvíli laborování (především s hledáním, kde potvrdit EULU a TOS, aby mě to vůbec pustilo dálo, protože to hned po startu celé spadlo) mi byl nabídnut update na Froyo (2.2) tak updatuju a mezitím hledám informace, jak tam dostat googleApps a píšu tenhle post :-). Stávající Camangi market mě přinutil se zaregistrovat, ale nedokáže se spustit – ihned po přihlášení padne na hubu a zkouší se spustit znovu, takže kdybych nebyl několikaletý androiďák, asi bych tahal ven baterku. Další věc, která mě zpočátku zarazila, je občasné vypnutí displeje (po patřičném timeoutu samozřejmě), jak je zvykem – nejprve se intenzita svitu zmenší na polovinu, pár vteřin počká a potom zhasne. Ovšem když pohasne a já hýbu myší a třískám do klávesnice, tak stejně zdechne (naštěstí jen občas). Další nedoladěností je zobrazení neexistence datového připojení v horní liště. (Po update na 22 je to ok) Mám verzi pouze s wifi, takže bych čekal, že si výrobce dá práci a upraví image, aby se tam nezobrazovalo to, co nemá. Ale tak co už, ničemu to nevadí.

Nyní bych si dovolil v několika krocích sepsat postup pro nahrání googleApps, protože nalezené howto je takove nějaké necelistvé (bez odkazů a konkrétních informací). Vycházím z návodu pro dodání googleApps do emulátoru v rámci SDK, který jsem absolvoval o víkendu a zadařil se.

Prvním krokem budiž update na 2.2 pomocí Toshiba Service Station, jak je vidět na screenshotu, já již mám oněch cca 200MB skoro staženo.

SystemUpdate
Průběh aktualizace

Zatímco se instaluje aktualizace bych doporučil projít můj starý blogpost, bude se nemálo hodit.

Také by asi bylo vhodné zmínit následující: podle tohoto návodu by měl postupovat ten, kdo alespoň trochu ví, co dělá. Je vhodné si jej nejprve projít, aby se předešlo nejasnostem, a až teprve poté postupovat krok za krokem. Také předesílám, že nechci nést (a ani neponesu) následky za možné způsobené problémy způsobené aplikováním níže uvedených postupů.

No a protože potřebujeme roota, bude nutné to nějak provést, takže je vhodné začít na XDA developers a pořídit si SuperOneClick (mělo by to fungovat i pod Linuxem, ověřím v dalším kroku, teď instaluju mono). (Nefunguje)

Tak z jiného soudku, asi bude potřeba root, čili návod zde. (nefunguje)

Ok, tak po hlavě do toho konečně, už to mám týden rootnuté a pořad nemám dopsaný tenhle blogpost. Nvidia taky odstranila Linux4Tegra projekt z jejich downloadů, spálil jsem si obličej a mnohé další radosti, jako třeba objevení důvodu zřejmého blbnutí předchozího návodu – kvůli oprávněním, takže to zkouším jinak:

  1. Stáhnout balík s Froyem pro devBoard Tegra 250 ze stránek nvidie, rozbalit a nainstalovat, bude potřeba aplikace nvflash,
  2. stáhnout upravený bootloader – fastboot.stock.bin od Ilya Petrova z repozitáře na GitHubu,
  3. stáhnout aktualizovanou implementaci wpa2 – wpa_supplicant včetně konfiguračního souboru, také z GitHubu,
  4. gapps – nalézající se v Cyanogenově packu s Google Aplikacemi, Froyo je v CM6, stahovat je samozřejmě vhodné balíček pro tegru, v tomto případě gapps-mdpi-tegra-20101020-signed.zip,
  5. stáhnout emulátor terminálu od jackpala (opravdu je tam i binárka, je potřeba trochu hledat ;-)), aby byl přítomen přímo na systémové partišně,
  6. stáhnout superuser aplikaci a su binárku, odkaz je ve vlákně na XDAdevelopers,

V tomto okamžiku již není potřeba nic dalšího stahovat, takže můžeme flashnout bootloader a stáhnout osmou partition, což je /system. Je nutné zařízení nastartovat v recovery režimu, takže vypnout Toshibu, napíchnout USB kabelem, přidržet Ctrl+Esc a podržet power na pár vteřin, power po chvíli pustit a když se rozsvítí LEDka power, pustit i zbytek. Nic víc se nerozsvítí, obrazovka zůstane mrtvá. (v tomto okamžiku předpokládám bezproblémovou komunikaci zařízení a počítače, jak jsem uváděl výše, dle starého blogpostu) Pro následující kroky je potřeba být rootem, takže pod sudem 🙂 nejprve flashneme nový zavaděč a potom přečteme onu osmou osudovou:

LD_LIBRARY_PATH=. ./nvflash --bl ../prebuilt/fastboot.stock.bin --go
LD_LIBRARY_PATH=. ./nvflash -r --read 8 part-8.img

Získanou partition je teď možné přes loop připojit a začít kopírovat (přepisovat):

  1. do adresáře /app přijde Term.apk, Superuser.apk, Vending.apk a GoogleServicesFramework.apk (dvě poslední z cyanogen gapps balíku). Je vhodné překontrolovat vlastníka – ve všech případech by to měl být root:root;
  2. v balíku od Cyanogena jsou ještě adresáře etc, framework a lib, je vhodné je kompletně zkopírovat na odpovídající místo a nastavit všude opět vlastníka root:root (řeč je pouze o těchto adresářích, v žádném případě ne o kompletním adresáři app!!);
  3. teď je na řadě wpa_supplicant, doporučuji si původní včetně konfiguráku zazálohovat (lokálně – *.bak), zálohu původního image 8. partition pokládám za samozřejmost. Ve staženém balíku se soubor nachází oba soubory nacházejí v podadresáři wifi – takže binárka do /bin a konfigurák do /etc/wifi, opět pozor na vlastníka a práva – mělo by to vypadat nějak takhle:
    -rwxr-xr-x  1 root 2000  337656 2011-03-21 23:18 wpa_supplicant
    
  4. zkopírovat do adresáře /bin binárku su ze stejného balíku, ve kterém se nacházel Superuser.apk. Tady ovšem pozor na oprávnění, bude potřeba SUID (pro stručnost řekněme chmod 6755) s výsledkem:
    -rwSr-sr-t  1 root 2000   26264 2011-03-29 12:51 su

A je nakopírováno, takže je možné odmountnout image a přenést jej zpátky do zařízení, opět pomocí utility nvflash:

shmoula tegra_froyo_20110207 # LD_LIBRARY_PATH=. ./nvflash -r --download 8 part8.img
Nvflash started
[resume mode]
sending file: part8.img
/ 314572800/314572800 bytes sent
part8.img sent successfully

Hotovo, teď je možné Toshibu vypnout (podržet power), odpojit usb kabel a provést wipe (tovární nastavení): takže podržet tlačítko home a power a v objevivším se menu vybrat první volbu (aka zmáčknout klávesu 1). Chvilku to potrvá a potom se systém sám restartuje a naběhne úvodní Toshibácké nastavení data, wifi… takže ponastavovat a po připojení je možné v menu spustit market a pomocí průvodce se přihlásit do svého googleAccountu.

Zjištěné problémy:

  1. Market je stabilní asi jako jistý známý systém jisté známé firmy, spíše ještě méně, ale aspoň funguje 🙂
  2. Občas bývají problémy s připojením k neznámé wifi, proto přímo v zařízení existuje vytvořená kopie wpa_supplicant.bak, příkaz su a možnost remountnutí /system partition pro rw
  3. Terminal.apk v některých (neznámých) případech nefunguje, je nutné jej nainstalovat z marketu

Debug mode v G1

0

Dostal jsem nápad na jednoduchou aplikačku pro Androida, tak jsem se odhodlal na můj domácí notebook nainstalovat Eclipse a Android SDK. Už tu tato kombinace jednou byla, ale protože jsem měl nainstalovánu hromadu modulů (PDT, vývoj pro EE i ME…), tak šlo celé Eclipse k čertu a já na Androidí SDK zanevřel :-).

Teď jsem však vyzkoušel druhý pokus a vše zatím funguje. Stáhl jsem Ganymede bundlované pro Java vývojáře a podle návodu na dev stránkách androidu nainstaloval SDKčko a plugin do Eclipse. Nutno podotknout, že tohle by zvládla i necvičená opice.Problémy měly teprve nastat, ale popořádku :-). Všechno frčelo bez problémů (teda až na drobnost, kterou jsem si nedávno prošel na mém DEV stroji – a sice, že Eclipse má problémy s GCJ a vyžaduje JDK od Sunu, takže rozřešeno během mrknutí oka). HelloAndroid aplikace deploynuta na emulátor, přichází touha dostat ji do telefonu. Nahrávám na kartu, spouštím installer, instaluji…ouha – Open volba je disablovana. Aha, aplikačka asi nebude podepsaná. Zkusím jinou možnost – přímý deploy do telefonu.

Na dev stránkách, ze kterých jsem čerpal informace, jsem však nenašel, jak na to. Přidržel jsem se mého oblíbeného hesla STFG a našel, co jsem hledal – Developing on a Device. Návod stručný a jasný, ale nefunguju. Googlení mi neneslo žádné ovoce, tak jsem se zeptal a díky Fuxoftovi dospěl k řešení: je nutné spustit Android Debug Bridge Server. Prvotní pokusy bezúspěšné, po restartu počítače a telefonu success objeven – je nutno spouštět adb start-server pod rootem, jinak se telefon nepřipojí. Pokud server běží, je možné napíchnout telefon a adb devices jej vypíše (není nutno ani v telefonu dávat mount). Díky tomu sem teď můžu dát screenshot mé krásné plochy (pomocí ddms – mooc pěknej debugovací nástroj, zapříčinil mi dlouhý wooooow efekt :-)).

Image Hosted by ImageShack.us

Takže teď přepínám v nastavení parametrů spuštění volbu výběru zařízení z Automatic na Manual a dávám run…chvíle napětí a mám tu dialog:

Image Hosted by ImageShack.us

A sakra, device v1.1 a SDK verze 1.0 :-(. takze failed, jdu spat a mrknu na to zitra 😉 Natáhl jsem novější SDK – v1.1 r1 a stejně se mi nepodařil deploy na telefon, navíc mi přestává fungovat připojení zařízení jako Mass Storage (resp připojení funguje, ale odpojení už ne). Trápil jsem se s tím docela dlouho a nakonec to vzdal (ale až budu mít náladu, ještě se k tomu vrátím a pogooglím). V každém případě jsem ale aplikaci do telefonu dostal – stačí se držet návodu popisujícím podepsání aplikace, takže jsem si vytvořil vlastní keystore, vytvořil .apk (Export unsigned application), podepsal a snažil se o upload do zařízení. Pomocí ddms či adb push se absolutně nedaří – ddms mi sice zobrazí adresářovou strukturu, ale jakmile pushnu, přestane reagovat, adb push dělá to stejné. Ok, zkouším to jinak – mountnu mass storage, nahraju .apk na kartu a snažím se domountovat… nic :-(. Do třetice zkouším nahrát aplikaci na web a stahuju ji do telefonu, instalace… a úspěch! Jde to spustit a funguje, sláva! Krkolomně, ale lepší než drátem do oka, budu muset zjistit, proč mě to nefunguje, jak má.

Vývojářské nástroje pro Androida hodnotím kladně, i když jsem narazil místy na mouchy (a určitě jich ještě pěkných pár bude) , o kterých není v oficiální dokumentaci zmínka a člověk se musí složitě pídit po řešení. Naštěstí je však komunita vcelku velká a množství zdrojů je taky poměrně velké. Rád bych zmínil především diskuní fórum anddev a oficiální mailing listy na google groups. Těším se na další programování a laborování s Androidem, opravdu z něj mám dobrý pocit.

Další doteky s G1

0

Minule jsem nastínil některé drobné vady na kráse a nařknul telefon z vlastností, které jsem myslel, že nemá. Teď už ho mám přece jenom 14 dní, takže bych mohl některé nesrovnalosti uvést na pravou míru a vytáhnout na světlo další problémy a zkušenosti, o kterých se moc nemluví ;-).

Začal bych multitaskingem – reptal jsem, že není možné aplikace jednoduše sestřelit, jako v Symbianu. A reptám dál, pořád jsem ten způsob nenašel. Android totiž handluje s běžícími procesy sám, na základě volné paměti ukončuje nepoužívané aplikace a naopak ty často používané nechává načtené. Myšlenka dobrá, ale nejsem její zastánce, někdy mi nevyhovuje a rád mám přehled o tom, co zrovna běží. Bohužel, mám asi smůlu. Každopádně jakýsi jednoduchý Task manager je v rámci prohlížeče „Linda File Manager“ – zobrazí všechny momentálně načtené třídy (nebo alespoň něco jako public procesy, protože jich tam momentálně vidím 15, což se rozhodně málo) a velikost zbývající volné paměti. Jedná se ale o betu, takže tu existuje možnost, že do budnoucna přibude možnost „kill this task“.

Image Hosted by ImageShack.us

V jednom odstavci jsem taky nařknul Androuše, že není schopen se přihlásit do U2B accountu, není to tak zcela pravda. V prohlížeči webu je možné se přihlásit do účtu na YouTube a spravovat tak videa. Jen video není přehráváno v rámci prohlížeče, ale při jeho otevření se otevře externí aplikace – YouTube player. Právě na tuto aplikaci jsem v minulém blogpostu narážel – Android má mnoho aplikací, pomocí kterých je možné se přihlásit ke svému účtu na tom či tom webu a v rámci té které aplikace využívat služeb daného webu. Aplikace YouTube tohle ovšem neumí, pouze nabízí NEJ videa a případně vlastní Favorites (ovšem nesvázané s účtem na U2B, ale zazáložkované přímo v telefonu). Dalším velice podstatným faktem je ten, že na YouTube jsou některá videa nahrána v HiRes (zřejmě H264 kodek), tudíž je není možné přehrát (fw. 1.1) a je zobrazeno pouze „This video is not available for your device“. Škoda; doufám, že v budoucích releasech firmwaru to bude napraveno a tento kodek přidán, zařízení na dekódování imho kapacity má. Tolik k YouTube videím.

Image Hosted by ImageShack.us

Dalším problémem pro mě bylo přehrávání videí. Resp. ne ani tak samotné přehrávání a úprava videa (na to jsem si zvykl na Symbianu), ale absence přehrávače zvládajícího titulky. Na Symbianu jsem používal SmartMovie, který velmi jednoduše vložil titulky přímo do videaa zárověň video enkódoval, na Androuše jsem našel mnoho dekodérů, ale ani jeden neuměl vkládat titulky. Rozpoutal jsem krátkou diskuzi na cz AndroidFóru, ovšem bez výsledku, nabízený sw nefunguje, funguje špatně… V každém případě dnes vyšel článek na toto téma na blogu „Můj Android, popisující Avidemux na Winblozí platformě. Ještě jsem nezkoušel, ale když už je napsáno, tak by mělo fungovat ;-). Jinak ještě doplním sw, který používám mpro konverzi: AnyVideoConverter pro enkódování a FairUseWizard 2 pro převod dvd do DivX včetně titulků.

Teď bych si dovolil trošku prudy: tlačítko menu občas vůbec nereaguje, nebo reaguje přehnaně. V praxi to vypadá tak, že na něj člověk v dobré víře klikne a nic se nestane. klikne na ně ještě jednou, dvakrát, třikrát… a až po několikátém pokusu si to rozmyslí a zareaguje. Nebo naopak na druhou stranu je možné kliknout jen jednou a menu vyjede a zase zajede, jako při dblclicku. Nelíbí se mi tohle chování.

Dalším mínusem je podsvícení klávesnice. Při určitém druhu osvětlení není vůbec nic vidět, takže je nutné psát opravdu poslepu. Nepříjemné. Bohudík, je tu řešení.

GPS – hnus. Měl jsem externí bluetooth modul se SirfStar III. Nechytal se nějak extra rychle, ale když se chytl, signál si podržel, i když jsem jej hodil do kapsy nebo do batohu. G1 v kapse nebo v batohu se mi vůbec nechytá. Chtěl jsem si zaznamenat běžkařskou trať pomocí MyTracks, ale pomalu jsem začínal mrznout, když jsem stál na místě a čekal, až se chytne GPSka. Nakonec jsem to vzdal a hodil ji (stále hledající) nahoru do batohu, jen pod zip. Po půlhodině jsem telefon vytáhl a stále nic. Když jsem to zkoušel pěšmo (vlastně úplně poprvé), chytla se docela rychle, ale signál si neudržela (v kapse), takže jsem byl nucen nést telefon v kapuci, potom fungovala bez problémů a velmi přesně, vzhledem k rychlosti pohybu.

Velmi rád bych také zmínil vyhledávání na marketu: google vlastní největší vyhledávač na světě a není schopen vyvinout aplikaci, která dokáže vyhledávat? Nevěřím!! Hledal jsem aplikaci , jejíž název byly dvě spojená slova (už si nevzpomenu na název, tak budu používat NejakaAplikace). Search nebyl schopen aplikaci najít, když jsem zadal Nejaka nebo Aplikace. Musel jsem napsat celý název – NejakaAplikace, potom se uráčil nabídnout mi výsledek. Nepříjemné!

Jako poslední bod, který bych v tomto blogpostu rád zmínil je podpora J2ME aplikací.Vlastně spíš nepodpora. Před koupí jsem někde četl, že telefon zvládá J2ME (teď to nemůžu dohledat, ale recenze na mobilmanii i oficiální T-Mobile stránky uvádí „Java: Ano“. Asi měli na mysli Dalvika, protože telefon nativně J2ME nepodporuje. Jsou tu dvě možnosti: Využít „J2ME MIDP Runner“ nabízený na marketu a v rámci něj stahovat midlety z webu a instalovat přímo v telefonu, nebo pomocí MicroEmulatoru překonvertovat jar na instalační balíček androidu – .apk, krásný návod je tady. A moje vyjádření zní: obě možnosti jsou na prd a nefungují. Nepovedlo se mi zprovoznit jedinou hru, kterou bych chtěl. Možná na jednoduché midlety by mohlo být tohle řešení funkční, ale na složitější aplikace rozhodně ne.

V každém případě ovšem pořád z telefonu převažuje spíše pozitivní pocit, i přes zmíněné masařky (a věřím, že jich ještě mnoho dalších najdu, stejně tak, jako že v budoucích verzích budou tyto krpy odstraněny) a využívám jej téměř nonstop.

T-mobile G1

1

Po předchozích touhách ohledně Koolu a poté HTC Touch HD jsem se včera rozhoupal a definitivně vyrazil do kaufu pro T-Mobile G1 aka HTC Dream s předinstalovaným Androidem. Teď po cca jednom dni používání zkusím shrnout pár věcí, které jsem vykoumal, nebo které bych rád vytkl. (Note that že jsem opravdu naprosto nestranný recenzent, ne jak jinde ;-)).

Telefon je v pěkné krabici, byl jsem tak natěšenej, že jsem nenásledoval dnešního trendu a nenatáčel, jak jej z krabice vytahuju :-D. Každopádně k prvnímu spuštění jsem se dostal poměrně rychle. Výtka č. 1: když otevírám kryt, pod kterým sídlí baterka a simka, tak tak nějak podivně visí a měl jsem dojem, že jej snad ulomím (je opravdu tenoučký). Ale trocha cviku to hádám napraví. Na druhou stranu pochybuju, že ten kryt budu ještě někdy oddělávat (u mého předchozího Siemense SX1 jsem jej taky neoddělával do doby, než jsem si na cesty koupil další baterku a potřeboval jsem je občas prohodit).

 

 

Nastartováno, krása. Displej vypadá docela ostře, až mě to překvapilo. Neznám rozlišení na SX1, ale když jsem pokukoval po HTC Touch HD a jeho božském rozlišení, tak při srovnání s tímto Drýmem, který má rozlišení skoro poloviční jsem dostával strach, ale body do plusu. Krátké hraní si s prostředím, mnoho wooow situací a jako třešnička spuštění youtube aplikace a natažení jednoho z oblíbených videí – ostrost perfektní, z "hloubky obrazu" jsem si téměř cvrkl do kalhot. Rozčarování přichází se zjištěním, že se nemůžu přihlásit na můj U2B account. (V rámci browseru je to možné, podrobné info v dalším blogpostu)  Body dolů (ale když uvážím, že mi nevyhovuje ani standardní webové rozhraní na webu YT, tak se ani nedivím – mám dojem, že Google má prostě YT na háku).

Pokračujeme v krasojízdě: spouštím sync, protože dle návodu mě měl hned po startu být nabídnut box pro zalogování na můj google acc, což se nestalo, a ejhle: už tu je přihlášený uživatel htcroger a systém po mě chce heslo k jeho účtu. Co s tím? Možnost jednoduchého odhlášení nenacházím nikde kolem, ani v settings. Hodně mínusbodů!! Chvíle googlení a nacházím řešení – "Reset device to factory settings". Třikrát fuj!

Zresetováno, teď se opravdu po startu hned můžu nalogovat na svůj google acc a hned jsou natahovány kontakty, mejly… (v telefonu frčí Gears) Koukám do adresáře, jsou v něm pouze lidé z mých kontaktů na googlu, kteří mají uložené telefonní číslo. Do mínusu připisuju fakt, že telefon mi nenabídl import kontaktů ze simky (sice tuto možnost rozhodně nevyužívam a kontakty na simce jsou opravdu outdated a mám je v csv na kartě), ale určitě by mě tato možnost potěšila.

Nořím se do zkoumání prohlížeče, ale především map – na street view v telefonu jsem se nemálo těšil. Nádhera, funguje jak má. Jenom panáčka na silnici vždycky umisťuju až na druhý pokus, když ze street view přepnu do jiné aplikace, po návratu jsem na pozici, kde jsem začínal a ne, kde jsem končil.

S tím souvisí další věc – multitasking. Je tam, nebo není tam? V Symbianu jsem si zvykl, že můžu vyvolat menu běžících aplikací a ručně je killnout, tady otevřu pouze menu recent apps, ale nevím, jestli běží, nebo neběží. Asi běží a paměť je uvolňována podle potřeby, takže přístup k těm běžícím (=více používaným)  je rychlejší.

 

 

Tohle je opravdu "first touch" post, takže první dojmy z dalších věcí shrnu do dalšího, abych to tu neprodlužoval a nenutil to nečíst celé :-).

Hacking Android II

0

Uvízl jsem na mrtvém bodě a nemožnosti vytvořit ramdisk, stejně tak mi nejde do hlavy jakási nekompatibilita mezi jednotlivými verzemi gzipu. Aneb zřejmě nebootuju, alespoň ne způsobem, který by měl fungovat.

Ztroskotal jsem na snaze vytvořit vlastní initrd z ramdisku vytvořeného automaticky při sestavování Androida. Vytvořený ramdisk.img je archiv vytvořený pomocí cpio, tak jsem si řekl, že nejjednodušší bude jej rozbalit, poupravit a znovu zabalit. Logické, jednoduché…

1. $ mkdir ramdisk && cd ramdisk

2. $ zcat ../ramdisk.img | cpio -i

teď mám rozbalenou adresářovou strukturu, neudělám žádný zásah a zabalím zpět

3. $ find . -print | cpio -o > ../ramdisk2.img

4. $ cd .. && gzip ramdisk2.img && mv ramdisk2.img.gz ramdisk2.img

…ale bohužel nefunkční pro bootování, soubory nejsou totožné.

Image Hosted by ImageShack.us

Už hlavička (resp. začátek) je okem rozeznatelný – původní ramdisk začíná čísly, ve druhém vytvořeném ramdisku je znatelná struktura filesystému. OK, projdu si make soubory a zjistím, jak je to baleno. Ještě před tím jsem ale vyzkoušel, soubor ramdisku gzipem rozbalit a znovu zabalit. OUHA – rozdílné! Pokud ovšem rozbalím obsah a hned jej skrze rouru zase zabalím, tak jsou totožné, viz následující výpis:

$ zcat ramdisk.img > ramdisk

$ gzip ramdisk

$ ls -la ramdisk* && diff ramdisk.img ramdisk.gz

Image Hosted by ImageShack.us

$ zcat ramdisk.img | gzip > ramdisk2.img

v tomto případě jsou už stejné

Tímto způsobem vytvořený (rozbalený a znovu zabalený pouze gzip archiv) ramdisk jde bez problémů použít pro nabootování (narozdíl od rozbaleného kompletního archivu pomocí cpio).

$ qemu -kernel kernel -initrd ramdisk2.img -hda /dev/zero

SOLVED – problém je v parametrech!

Stačilo si přečíst dokumentaci k jádru ( kernel/Documentation/initrd.txt) a upravit parametry. Takže už se nedivím onomu pověstnému RTFM!

rozbalení:

$ gzip -cd  ../ramdisk.img | cpio -imd

zabalení:

$ find . | cpio -H newc -o | gzip -9 -n > ../ramdisk2.img

Nepoužitá možnost tvorby initrd

Resp. použitá, ale taky nefungovala, takže jsem vděčný za informaci o těch parametrech. Každopádně následující informace by se mohly v budoucnu taky hodit, proto si je sem poznamenám. Jedná se o vytvoření prázdného souboru, vytvoření filesystému v něm a jeho připojení pomocí loopback zařízení. Tento postup je detailně popsán v návodu na tvorbu LiveCD distribuce Gentoo.

$ touch initrd
$ dd if=/dev/zero of=initrd bs=1024k count=8
$ losetup /dev/loop0 initrd
$ mke2fs /dev/loop0
$ mkdir /media/initrd
$ mount /dev/loop0 /media/initrd 

Pak vytvořit adresářovou strukturu

$ cd /media/initrd
$ mkdir etc dev lib bin proc new cdrom

A některá základní zařízení

$ cd dev
$ mknod console c 5 1
$ mknod null c 1 3
$ mknod hda b 3 0
$ mknod hdb b 3 64
$ mknod tty c 4 0
$ mknod loop0 b 7 0 

V dalším kroku je nutné vytvořit init skript a nahrát základní systémové nástroje, případně využít BusyBox.

Go to Top