Portál AbcLinuxu, 19. dubna 2024 09:49

Chroot podruhé aneb MyLittleInvestigations na AMD64

25.1.2013 16:10 | Přečteno: 965× | Výběrový blog

Dnes si řekneme, jak spustit MyLittleInvestigations na platformě AMD64 díky chrootu. Jedná se o volné navázání na předchozí zápisek Jak si chrochtat v chrootu - http://www.abclinuxu.cz/blog/Tinker/2013/1/jak-si-chrochtat-v-chrootu

 

Před pár dny jsem na internetu narazil na zajímavou hru nazvanou MyLittleInvestigations (díky Youtube!) a protože mi seriál My Little Pony není cizí a hra vypadala zajímavě, hned jsem se pustil do hledání informací. Brzy jsem narazil na oficiální stránku hry s příhodným názvem - http://www.equestriandreamers.com/. Pročetl jsem FAQ, kde jsem se dozvěděl, že hra je FREE a napsaná v Javě. Přidal jsem Magnet link do torrent klienta (Flush) a čekal (nebojte, seeduji pořád). Jedná se o DEB balíček, který by podle FAQ měl bez problému fungovat v distribuci Ubuntu a Linux Mint.

Bohužel po stažení jsem si uvědomil, že hra je jen pro architekturu i386. Balíček jsem tedy vnutil systému přes dpkg s parametrem --force-all a doufal, že se bude něco dít. Během instalace mi dpkg zahlásil několik "chybějících" balíčků, ovšem podle Synapticu byly v systému přítomné. Začal jsem tušit, že tu něco nehraje. Pokusil jsem se spustit hru, ale dozvěděl jsem se jen to, že ji chybí knihovna a to taková, která s Javou nemá nic společného. Znovu jsem otevřel Synaptic, našel správný balíček, adresář kde je knihovna nainstalovaná a překopíroval ji jinam. Hra knihovnu našla, ale nechtěla s ní spolupracovat. Dobře, co teď? Začal jsem psát email. Dear princess Celestia.....

Zeptal jsem se na 64-bit verzi hry, popsal svoje problémy, pochválil hru kterou jsem ještě neměl šanci hrát a zeptal se, zda by nešla hra uvolnit například v ZIP archivu - pokud je napsaná v Javě, tak by to mohlo být užitečnější, než balíčky pro jednotlivé systémy. Odpověď přišla během 15 minut (bohužel jsem jí zaznamenal až v posteli přes usnutím) a dozvěděl jsem se mnoho zajímavých informací:

- Hra byla původně vyvíjena v Javě, ale kvůli problémům s výkonem a kompatibilitou s HW (to jsem si opravdu nevymyslel!) byla hra přeportována na SDL a kompletně přepsána do C++. Jako výhodu SDL autor zmiňuje možnost běhu na snad jakémkoli HW a já s ním musím souhlasit (taky už jste hráli OpenTTD na smartphone/tabletu?).

- Problém 64-bitové hry je ve scénářích. Jedná se o soubor zahrnující všechny podmínky a obecně celý příběh (zřejmě i velmi povedené hlášky a obrázky). Na 64-bitových systémech mohou být opravdu veliké, ale na 32-bitových je problém s 4GB bariérou. Mohlo by se tak jednoduše stát, že nějaký fanoušek vytvoří 5GB scénář, který půjde spustit na 64-bitové architektuře, ale ne na 32-bitové, protože bude moc velký. Proto je momentálně k dispozici jen 32-bitová verze hry a 64-bitová ne - není problém ji vytvořit, ale v případě moc velkých scénářů hrozí, že budou hráči na 32-bitových architekturách ochuzeni. Podal jsem vlastní návrh na řešení a momentálně čekám na odpověď.

- Pokud chci hrát na 64-bitové architektuře, mohu si nainstalovat Wine a spustit v něm verzi pro Windows. Kombinace je odzkoušená a údajně funguje bez větších problémů.

Zároveň byla rychle opravena chybná informace a nyní už web hovoří o hře napsané v C++ s použitím SDL.

 

Instalace Wine se mi trochu příčila - už zase se mi budou textové soubory místo v Geditu otevírat v notepad.exe? Raději jsem šel spát a přenechal problémy Luně, ta má větší hlavu :-)

Ráno jsem měl hned po otevření očí jasno - chroot! Tedy teď už chrocht, krátce po zprovoznění Eagle jsem si totiž udělal v souboru .bashrc alias (připsal řádek):

alias chrocht="xhost +local: && sudo schroot -c sid -p"

Mimochodem, co říkáte na alias cat='more'?

 

 

Jak tedy na to? Předpokládám, že máte vytvořený chroot, obsahuje aktuální repozitáře a má informace o dostupných balíčcích. Pokud ne, postupujte podle http://www.abclinuxu.cz/blog/Tinker/2013/1/jak-si-chrochtat-v-chrootu až k příkazu apt-get update, dále už ani krok. Poté potřebujete samozřejmě hru, lze ji nalézt logicky v sekci Downloads http://www.equestriandreamers.com/downloads/ a můžete stahovat buď přes magnet link (torrent), nebo přes HTTP (přímo). Pokud podle vás nemá cenu takovou hru sdílet, použijte v chrootu jednoduše wget následovaný přímou adresou k souboru, jinak nechte chrochtat svůj torrent klient podporující magnet linky (nezapomeňte po stažení soubor ověřit) a výsledný soubor následně překopírujte do chrootovaního /home (v mém případě jsem musel být root).

Nyní trochu odbočím, budeme totiž upravovat jeden soubor v hostitelském systému. Proč? Protože bez této úpravy by ve hře nefungoval zvuk a jak jistě všichni víte, bez zvuku to není ono. Jako root si tedy otevřeme soubor /etc/fstab a přidáme řádek:

/dev /srv/chroot/sid/dev none bind 0 0

Tím jsme zajistili "sdílení" adresáře /dev do /srv/chroot/sid/dev, takže chrootovaný systém může přistupovat ke všem zařízením v /dev jako k vlastním. Aby to ovšem fungovalo, tak musíme systému říct (opět jako root), že má znovu načíst obsah souboru /etc/fstab:

mount -a

Hotovo, nyní můžeme zapnout chroot. Pokud jste si již nastavili alias a restartovali terminál (aby si znovu načetl soubor .bashrc), můžete napsat jednoduše chrocht, jinak dlouze:

xhost +local: && sudo schroot -c sid -p

 

 

Vítejte v chrootu. Jako první si nainstalujeme ALSA aby nám fungoval zvuk:

apt-get install alsa-base alsa-utils

Pokud si trochu ztišíte aparaturu (je to opravdu hlasité) a připravíte končetinu na klávesovou zkratu CTRL+C (ukončení), můžete na vlastní nebezpečí spustit příkaz:

aplay /dev/urandom

Pokud jste právě neprohodili notebook nebo část vaší sestavy oknem, můžeme přistoupit k dalšímu kroku. Tím je instalace balíčku, typicky přes dpkg:

dpkg -i MyLittleInvestigationsDemo2.deb

Balíčkovač by měl zahromovat (jako když Ditzy Doo vyklopí piáno), naštěstí náprava je jako ve většině případů až podezřele snadná:

apt-get -f install

Balíčkovač by měl stáhnout chybějící balíčky, nainstalovat vaši hru a vše by mělo proběhnout bez chyb. Pokud se tak stalo, můžete zkusit spustit hru příkazem (opravdu tam jsou velká písmena):

MyLittleInvestigations

Pokud se vše zdrařilo (a já na nic nezapomněl), mělo by se otevřít okno s hrou jako na přiloženém screenshotu :-)

 

 

To je pro dnešek vše, ale nebojte se, brzy bude jistě následovat další zápisek a tentokrát snad již o jiném tématu. Protože RaspberryPi neplnilo svoji úlohu na 100% jak bylo původně zamýšleno (nefungoval scanner + podezřele často se rozbíjel balíčkovač), bude nahrazeno opět x86 serverem. Mohu ale s klidem na duši prohlásit, že s výkonem problémy opravdu nebyly a v některém z budoucích zápisků mám v plánu zprovoznit RaspberryPi jako pracovní stanici. Bude to výzva a jakási zkouška dospělosti. Dalším nápadem byla instalace JACK a realtime úprava zvuku, ale zde by asi malina byla s výkonem na hranici, navíc by se musela použít USB zvuková karta. Mimochodem, na brony IRC se včera objevil odkaz na FM vysílač s RaspberryPi (stačí připojit delší drát na GPIO pin), myslím že napsaný v Pythonu ;-)

       

Hodnocení: 100 %

        špatnédobré        

Obrázky

Chroot podruhé aneb MyLittleInvestigations na AMD64, obrázek 1

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

25.1.2013 18:53 mimi.vx | skóre: 37 | blog: Mimi.VX | Praha
Rozbalit Rozbalit vše Re: Chroot podruhé aneb MyLittleInvestigations na AMD64
Odpovědět | Sbalit | Link | Blokovat | Admin

alias na cat ... je blbost.

spousta scriptu te za to bude mit rado a kdyztak "less is MORE"!

USE="-gnome -kde";turris
Dreit avatar 25.1.2013 19:14 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
Rozbalit Rozbalit vše Re: Chroot podruhé aneb MyLittleInvestigations na AMD64

Skriptům se to určitě líbit nebude, to je pravda :-( Změnim to na cats a uvidíme jak si na to zvyknu :-)

Nope
tsLnox avatar 27.1.2013 12:52 tsLnox | skóre: 31 | blog: Blog jednoho ukecaného Gentoolemana | Žďár nad Sázavou
Rozbalit Rozbalit vše Re: Chroot podruhé aneb MyLittleInvestigations na AMD64
Mimochodem, co říkáte na alias cat='more'?
alias raven='echo Nevermore'
vencour avatar 27.1.2013 13:15 vencour | skóre: 56 | blog: Tady je Vencourovo | Praha+západní Čechy
Rozbalit Rozbalit vše Re: Chroot podruhé aneb MyLittleInvestigations na AMD64
:-)
Ty nejhlubší objevy nečekají nutně za příští hvězdou. Jsou uvnitř nás utkány do vláken, která nás spojují, nás všechny.
Luboš Doležel (Doli) avatar 25.1.2013 22:03 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Chroot podruhé aneb MyLittleInvestigations na AMD64
Odpovědět | Sbalit | Link | Blokovat | Admin
Problém 64-bitové hry je ve scénářích. Jedná se o soubor zahrnující všechny podmínky a obecně celý příběh (zřejmě i velmi povedené hlášky a obrázky). Na 64-bitových systémech mohou být opravdu veliké, ale na 32-bitových je problém s 4GB bariérou. Mohlo by se tak jednoduše stát, že nějaký fanoušek vytvoří 5GB scénář, který půjde spustit na 64-bitové architektuře, ale ne na 32-bitové, protože bude moc velký. Proto je momentálně k dispozici jen 32-bitová verze hry a 64-bitová ne - není problém ji vytvořit, ale v případě moc velkých scénářů hrozí, že budou hráči na 32-bitových architekturách ochuzeni. Podal jsem vlastní návrh na řešení a momentálně čekám na odpověď.
Eh, jako by byl problém tam do kódu přidat jeden if().
25.1.2013 23:11 Kvakor
Rozbalit Rozbalit vše Re: Chroot podruhé aneb MyLittleInvestigations na AMD64
Možná by to šlo i bez něj - u většiny problémů je možné zvolit rychlejší algoritmus s větší spotřebou paměti versus pomalejší algoritmus s menší spotřebou paměti, ale často jde udělat univerzální algoritmus, který může dynamicky přecházet mezi těmito extrémy podle toho, kolik má v dispozici paměti.

Nevím, jak je interně realizovaný scénář, ale pokud je to něco na způsob stavového automatu, tak není nutné držet v paměti všechny stavy, jen aktuální stav včetně podmínek pro přechody do jiných stavů, případně (trasparentně) cachovat aktuálně používané stavy v paměti.

Pokud je paměti dostatek, tak se všechna data nacachují, pokud jí není dost, tak se načte určitá část do určité hloubky (tedy dokud je v v cache místo) a zbytek se pak načítá za chodu (např. v samotatném vlákně, co dělá něco na způsob read-aheadu), zatímco nejméně používaná data se zahazují.

Je pravda, že něco takového je složitější než jeden mmap(), ale overhead není zas tak moc velký a mimo toho je občas lepší dělat si vlastní cachování než spoléhat na systém, protože u vlastní cache je možné mnohem jemněji odstupnovat životnost dat než to jde pomocí madvise().
25.1.2013 22:30 Petr Tomasek
Rozbalit Rozbalit vše Re: Chroot podruhé aneb MyLittleInvestigations na AMD64
Odpovědět | Sbalit | Link | Blokovat | Admin
Mimochodem, co říkáte na alias cat='more'?

Rikam toto:

$ more > soubor << EOF
tady dady dady
dadydady
EOF

:-)

25.1.2013 22:46 jarin
Rozbalit Rozbalit vše Re: Chroot podruhé aneb MyLittleInvestigations na AMD64
Odpovědět | Sbalit | Link | Blokovat | Admin
Nevím co máš za systém, ale neřeší přesně tenhle problém multiarch podpora zavedená v debianu wheezy? Prostě si přidáš do balíčkovacího systému alternativní architekturu a potřebné 32bit balíky se doinstalují z 32bit repozitářů. Chroot mi připadá zbytečně komplikovaný.
25.1.2013 23:16 Kvakor
Rozbalit Rozbalit vše Re: Chroot podruhé aneb MyLittleInvestigations na AMD64
Stačí inistalovat 32bitové knihovny (většinou se jmenují lib32něco), které jsou běžně v dispozici depozitáři a instalují se do /lib32.
25.1.2013 23:29 jarin
Rozbalit Rozbalit vše Re: Chroot podruhé aneb MyLittleInvestigations na AMD64
Takhle to bylo dřív. Nevýhoda byla, že ne všechny knihovny byly lib32něco a navíc sis musel hlídat závislosti ručně nebo upravovat balík. Multiarch má tu výhodu, že instaluješ stejný balík do 32bit i 64bit systému beze změny.
Dreit avatar 26.1.2013 01:04 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
Rozbalit Rozbalit vše Re: Chroot podruhé aneb MyLittleInvestigations na AMD64

Tak to koukám, že jsem o pár let pozadu a taková novinka se k mým očím zatím nedostala :-D Někdy se na to podívám, děkuji za tip :-)

Nope
kotyz avatar 26.1.2013 18:59 kotyz | skóre: 25 | blog: kotyzblog | Radnice
Rozbalit Rozbalit vše Re: Chroot podruhé aneb MyLittleInvestigations na AMD64
Odpovědět | Sbalit | Link | Blokovat | Admin
Nechceš se taky trochu víc rozepsat i o tý hře samotný? To je nějaká VN?
Mul-ti-pass! | Hrdý člen KERNEL ULTRAS. | Furry/Brony/Otaku | Nemám čas ztrácet čas. | In 'pacman -Syu' we trust!

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.