Guida a Linux nel Cab

le Guide ed i Topic importanti in un unico posto !
Avatar utente
eldiau

Donatore
Cab-maniaco
Cab-maniaco
Messaggi: 1021
Iscritto il: 20/01/2012, 9:57
Medaglie: 1
Città: Torino
Grazie Ricevuti: 2 volte

Guida a Linux nel Cab

Messaggio da eldiau »

Guida a Linux nel Cab arcade
-----------------------------------------------------------

Ultima revisione: v5 12/05/2017

Storia:
- v1 15/04/2012 Prima stesura, eldiau
- v2 21/04/2012 aggiunte istruzioni preliminari per advmenu e indice
- v3 07/05/2013 aggiunte le istruzioni per lo spegimento come un cab
- v4 12/12/2013 aggiunta chiarificazione sul rompath in wahcade
- v5 12/05/2017 aggiornato il link a controls.ini

Todo:
- aggiungere istruzioni per schermo arcade con modeline 15khz e groovymame
- aggiungere istruzioni per altri emulatori (daphne)

-------------------- INDICE --------------------
- Introduzione
- Installare Linux
- Configurare Linux
- Preparare il materiale per mame e il frontend
- Il frontend
-- Installare Wah!cade
-- Configurare Wah!cade
-- Breve Guida a Wah!cade
-- Installare AdvanceMENU
-- Configurare AdvanceMENU
-- Breve Guida a AdvanceMENU
- Spegimento come un cab
- Conclusione

------------ Introduzione ------------
Cerco di scrivere una guida semplice per spiegare come ottenere un PC linux adatto ad essere installato in un CAB.
Come distribuzione ho scelto di utilizzare Lubuntu, una variante di Ubuntu. La scelta di Ubuntu e' motivata dal fatto che e' una delle distribuzioni piu' facili da installare, riconosce automaticamente moltissimo hardware, Ubuntu e' attualmente la distribuzione piu' usata quindi e' semplicissimo trovare supporto e ha un enorme quantita' di software gia' pronta e installabile al volo. La variante Lubuntu si distingue da Ubuntu classica solo per la scelta del software preimpostato e in particolare del Desktop Environment, l'ambiente grafico, che in questo caso e' il leggerissimo LXDE, il che ci permettera' di utilizzare anche computer con poca memoria ed e' davvero simile a Windows XP per cui la maggior parte dei nuovi utenti non avra' problemi ad adattarsi. Spero che questa esperienza aiuti anche ad accostare nuovi utenti a Linux constatando che e' davvero semplice da usare e gestire infatti il PC una volta installato potra' essere utilizzato anche' nelle attivita' di tutti i giorni oltre che all'interno di un cab arcade. Per questo motivo in questa guida cerca di dare anche qualche informazione basilare su come usare il desktop LXDE durante i vari passaggi. Un'altra possibilita e' offerta da groovyarcade, una distribuzione linux che puo' partire direttamente da CD (con una opzione di installazione su hard disk) gia' pronta per un pc collegato ad un monitor arcade a 15KHz scaricabile da http://arcade.groovy.org/ o meglio cercate i link aggiornati in questo thread curato da ans89 viewtopic.php?f=19&t=7234&start=30#p103639

--------------- Installare Linux -----------------
Lubuntu richiede un PC con almeno un Pentium II con 128Mb RAM e 5GB di Hard disk quindi dovrebbe girare decentemente su qualsiasi computer troviate in cantina fino ad una decina di anni fa. Per quanto riguarda l'emulazione MAME posso confermare che i giochi fino ai primi anni 90 girano senza problemi su un P4 Celeron da 2.0Ghz con 512Mb Ram.
Come prima cosa occorre scaricare l'immagine ISO di lubuntu da http://lubuntu.net/ al momento della scrittura di questa guida e' appena uscita la versione 12.04 che e' una LTS Long Term Support con supporto a lungo termine fino al 2017. Scaricata la ISO la si puo' masterizzare su un CD da 80minuti oppure se il PC permette il boot da chiavetta USB utilizzare un programma come Unetbootin http://unetbootin.sourceforge.net/ disponibile su Windows, Mac OS X e Linux per creare una chiavetta bootable.
Prima di partire e' consigliato collegare il PC ad una rete con accesso ad Internet via cavo ethernet o con chiavetta WiFi.
Al boot verra' chiesto che lingua utilizzare con i tasti freccia, se scegliamo italiano verra' impostata anche la tastiera italiana, se si preferisce la lingua inglese occorrera' poi premere F3 per selezionare la mappa della tastiera italiana.
Fatta la scelta si puo selezionare "Prova Lubuntu" per verificare che sia compatibile con il proprio hardware.
Scegliamo "Installa Lubuntu" per partire.
(Fig. 1)
fig1.jpg
L'installazione e' molto semplice e pone pochissime domande. Consiglio alla seconda schermata di spuntare "Scaricare gli aggiornamenti durante l'installazione" e "Installare software di terze parti" per avere il supporto alla riproduzione degli MP3. La terza schermata richiede come utilizzare l'hardisk, qui e' possibile scegliere se creare una macchine dual boot con il sistema precedentemente installato o utilizzare tutto il disco per Lubuntu. Il quarto passo chiede il nome del primo user (per esempio arcade), il nome da dare al PC e la password, in questa schermata e' importante attivare "Accedere automaticamente" che fara' in modo che al boot si arrivera' direttamente al desktop senza richieste di password utile nel nostro caso in cui il pc sara' chiuso nel cab arcade e probabilmente senza tastiera.
(Fig. 2)
fig2.jpg
Il resto dell'installazione sara' automatico quindi non resta che attendere il reboot dopo il quale il nostro Linux fiammante sara' pronto all'utilizzo!
(Fig. 3)
fig3.jpg

-------------- Configurare Linux -----------------
Come prima cosa assicuriamoci che il sistema sia aggiornato quindi lanciamo "menu start->Strumenti di sistema->Gestore aggiornamenti" si aprira' la finestra del "Gestore aggiornamenti" clicchiamo su "verifica" per ricontrollare gli ultimi aggiornamenti e poi su "installa aggiornamenti", verra' richiesta la password e poi il sistema procedera' all'aggiornamento. SE ci fosse un aggiornamento del kernel verra' richiesto un riavvio.
(Fig. 4)
fig4.jpg
Se vogliamo fare in modo che si possa accedere alla macchina via rete, per esempio per fare delle modifiche senza collegare la tastiera un volta che il PC e' nel Cab consiglio di installare il server SSH, attenzione che ogni utente sul Linux abbia una password decente settata! Ci sono de modi per installare software, via terminale con comandi testuali o via GUI.
Procediamo con il terminale, lanciamo "menu start->Accessori->LXTerminal" per aprirlo e al suo interno digitiamo "sudo apt-get install openssh-server" dopo la richiesta di password ci chiedera' se vogliamo procedere all'installazione del server ssh ed eventuali altri pacchetti dai quali dipende, rispondiamo "s" o "y" ad abbiamo finito. Giusto una piccola spiegazione sul comando appena digitato "sudo" istruisce linux che il resto della riga di comando va eseguita come utente root (amministratore) il che e' necessario per installare nuovo software, sudo ricorda la password per un tot di tempo per cui eventuali comandi successivi con sudo nello stesso terminale non la richiederanno piu'. apt-get e' il comando per la gestione del software e prende parametri come update (che controlla se ci sono aggiornamenti) upgrade (che esegue gli aggiornamenti) install e remove (di ovvio significato) per esempio la precedente operazione di update del sistema avremmo potuto eseguirla con due comandi da terminale "sudo apt-get update" e "sudo apt-get upgrade". E' possibile installare software aggiuntivo usando "menu start->Strumenti di sistema->Lubuntu Software Center" per utilizzare un programma stile appstore oppure "menu start->Strumenti di sistema->Synaptic Package Manager" per utilizzare un programma piu' potente ma piu' complesso.
(Fig. 5)
fig5.jpg
--------------- Preparare il materiale per mame e il frontend -----------------
Dobbiamo preparare tutti i file che ci servono per far girare mame e il frontend. Ipotizzo che gia' abbiate un vostro romset con relativi file di supporto ed extra.
Volgiamo che tutto il materiale risieda in una cartella emulators nella home del nostro utente, in linux la home dell'utente e' sempre sotto "/home/nomeutente/" e nel terminale si puo' utilizzare la notazione abbreviata ~ (ALT+ì sulla tastiera italiana) o $HOME, entrambe le notazioni sono sinonimo di "/home/nomeutente" per creare la cartella digitiamo nel terminale "mkdir ~/emulators" e poi "mkdir ~/emulators/mame/" oppure apriamo una finestra di PCManFM (il file manager equivalente di File Explorer su windows) cliccando sull'icona a forma si cartella di fianco al "menu start", l'utilizzo e' ovvio per cui non mi dilungo. ATTENZIONE in Linux Maiuscolo e minuscolo fanno differenza.
(Fig. 6)
fig6.jpg
Io ho copiato tutto su un disco usb e ho collegato il disco al linux che lo ha riconosciuto automaticamente. Per scollegare il disco basta cliccare sull'icona a triangolare a forma di eject nel pannello "places"
Copiamo in "~/emulators/mame/" le cartelle "artwork" "cabinets" "cpanel" "flyers" "marquees" "roms" "samples" "snap"
L'unica cartella veramente necessaria e' roms che ovviamente deve contenere un romset con i giochi che ci interessano, sono fortemente consigliate samples e artwork perche' contengono file grafici e sonori necessari per simulare alcuni giochi, e' consigliata snap che contiene le schermate di preview e facoltative tutte le altre.
(Fig. 7)
fig7.jpg
Scarichiamo catver.ini italiano o inglese da progetto emma sezione "CatlistITA.ini":
http://www.progettoemma.net/public/ccou ... k.php?id=5
questo file contiene la lista dei giochi supportati da mame categorizzati per tipo e aiuta ad organizzare le liste e filtrare i giochi nel frontend, scompattiamo l'archivio e copiamo il file Catver.ini in ~/emulators/mame/catver.ini, occhio alle maiuscole, il file deve chiamarsi catver.ini tutto minuscolo quindi va rinominato.
(Fig. 8 )
fig8.jpg
Scarichiamo history.dat italiano o inglese sempre da progetto emma sezione "HistoryITA.dat":
http://www.progettoemma.net/history/dow ... oryITA.zip
questo file permette al frontend di visualizzare informazione sulla storia del gioco selezionato.
scompattiamo l'archivio e copiamo il file historyITA.dat in "~/emulators/mame/history.dat", anche in questo caso il file va rinominato togliendo la parte "ITA".
(Fig. 9)
fig9.jpg
Scarichiamo controls.ini da:
http://www.ledblinky.net/Download.htm (link in fondo alla pagina)
attenzione a scaricare la versione ini e non quella xml, scompattiamo l'archivio e copiamo il file in "~/emulators/mame/controls.ini"
(Fig. 10)
fig10.jpg
Ok, tutto il materiale che ci serve dovrebbe essere al suo posto.

--------------- Installare MAME -----------------
Per installare mame abbiamo tre opzioni:

Si puo' installare direttamente dal repository di Lubuntu, il che ci assicura che verra' aggiornato solo in caso di correzione di bachi gravi e comunque rimarra' sempre fermo alla stessa versione versione. Nei repository di Lubuntu 12.04 c'e' mame 0.145, da terminale lanciamo "sudo apt-get install mame mame-tools"

Se vogliamo l'ultima versione stabile, occorre aggiungere un repository aggiuntivo con il seguente comando "sudo add-apt-repository ppa:c.falco/mame" poi aggiorniamo il database con le nuove applicazioni presenti nel nuovo repository con "sudo apt-get update" e infine installiamo mame con "sudo apt-get install mame mame-tools", quiesto metodo ci assicura che quando uscira' la nuova versione (0.146 in questo caso) verra' aggiornata insieme al resto del sistema con la procedura che abbiamo gia' visto.

Se vogliamo sempre l'ultimissima versione comprese le versioni intermedie "u" dobbiamo aggiungere, oltre al repository precedente, ANCHE questo "sudo add-apt-repository ppa:c.falco/umame", poi di nuovo "sudo apt-get update" e infine "sudo apt-get install mame mame-tools" se non abbiamo installato mame usando una delle opzioni precedenti altrimenti "sudo apt-get update mame" per aggiornarlo.

--------------- Configurare MAME -----------------
A questo punto configuriamo mame.
Apro una breve parentesi per dirvi che i programmi sotto linux salvano le proprie configurazioni in cartelle o file che iniziano per ".", il sistema di base non mostra queste file e cartelle, e sul file manager occorre selezionare il menu "Visualizza->Mostra file nascosti".
Ci posizioniamo nella home e creiamo la cartella ".mame" in comandi da terminale lanciamo "cd", il comando cd senza argomenti ci posiziona automaticamente nella nostra home e poi "mkdir .mame", entriamo nella cartella appena creata "cd .mame", e facciamo si che mame crei il file di configurazione base "mame -createconfig", a questo punto ci basta un doppio click sul file appena creato da file manager oppure lanciare "leafpad mame.ini" per editare il file, piccola parentesu, l'editor grafico di Lubuntu e' leafpad se avete deciso per ubuntu e gedit se invece usate kubuntu e' kedit, se invece volete usare un editor testuale direttamente nel terminale usate pico oppure se siete temerari vi (vi e' il mio preferito ed una volta imparato e' fantastico, il problema e' che va studiato per bene perche' non e' per nulla semplice da usare!)

Cambiamo la configurazione, cercate le varie linee gia' presenti e cambiate solo i valori:

rompath $HOME/emulators/mame/roms/
samplepath $HOME/emulators/mame/samples
artpath $HOME/emulators/mame/artwork


I vari path in cui cercare rom ecc...

autosave 1
Se vogliamo che mame salvi lo stato del gioco all'uscita, in pratica dal punto di vista del gioco non viene mai spento quindi, per esempio, vengono mantenuti gli hiscore

use_bezels 0
use_cpanels 0
use_marquees 0

disattiviamo queste funzionalita' perche' disegnano grafica inutile intorno allo schermo del gioco emulato, sprecando spazio inutilmente

skip_gameinfo 1
Attiviamo skip_gameinfo se non vogliamo vedere lo schermo con le informazioni del gioco in partenza

multithreading 1
attiviamo il multithreading per accelerare l'emulazione in caso in cui il nostro computer sia multicore, altrimenti lo teniamo disattivato "0"

waitvsync 1
Nel caso durante il gioco si verifichi un effetto di tearline, effetto evidente nei giochi a scorrimento orizzontale se ogni tanto vediamo la parte bassa dello schermo che contiene il fotogramma prima della parte alta creando una "scaletta" a mezzo schermo, attiviamo waitvsync


Attenzione, per qualche arcano motivo il file ini generato mame contiene una linea che mame stesso non riconosce ed e':
numprocessors auto
lasciandola cosi' verra' restituito un errore quando si genera la lista dei giochi (mame -listxml) che manda in crash il frontend, quindi commentiamo con un "#" o cancelliamo del tutto questa linea:
#numprocessors auto

Ultima cosa, se vogliamo usare i cheat scarichiamo cheat.zip da http://cheat.retrogames.com/ scompattiamo l'archivio che a sua volta, oltre a un paio di file di teso contiene in fil zippato di nome cheat.zip che copiamo in "~/.mame/" poi settiamo "cheat 1" in /etc/mame/mame.ini

(Fig. 11)
fig11.jpg
Fatto! Proviamo se mame funziona, da terminale lanciamo "mame nomerom" dove nomerom puo' essere una qualsiasi rom presente es. pacman, wboy ecc...
Se tutto e' ok procediamo con il frontend

--------------- Il frontend ----------------
Per il frontend possiamo scegliere fra Wah!cade e AdvanceMENU.
Wah!cade e' scritto in Python piu' pesante come richesta di memoria ma ha una gui per la configurazione che lo rende molto intuitivo da configurare.
AdvanceMENU e' scritto in C piu' veloce e leggero, e' molto minimale e si configura con un file testuale relativaemnte semplice da editare.
Di seguito divido la guida, per uno e per l'altro frontend ci sono due sezioni Installazione e Configurazione, scegliete quello che piu' vi piace!

--------------- Installare Wah!cade ----------------
Passiamo all'installazione del frontend, per prima cosa installiamo qualche pacchetto software aggiuntivo che ci serve a far funzionare correttamente wahcade, da terminale lanciamo "sudo apt-get install bzr python-pygame python-imaging python-gst0.10 python-glade2".
la versione di wahcade presente sul sito ufficiale (http://www.anti-particle.com/wahcade.shtml) e' piuttosto vecchia per cui vogliamo scaricare l'ultimo codice dal repository di sviluppo, nel terminale, posizioniamoci nella nostra home "cd", scarichiamo il codice dal repository "bzr branch lp:~waynemou/wahcade/devel wahcade" questo comando scarichera' il sorgente di wahcade nella cartella... wahcade... entriamo nella cartella appena creata "cd wahcade" e lanciamo l'installazione con "sudo ./install" il frontend verra' installato in /usr/local/share/wahcade e e verranno creati i comandi wahcade, wahcade-layout-editor e wahcade-setup

Wahcade e' pronto per essere configurato.

--------------- Configurare Wah!cade -----------------
Dal terminale lanciamo "wahcade-setup" che aprira' la finestra di configurazione, sul tab "Wha!cade" selezioniamo la "layout direcory" con la giusta risoluzione per il nostro monitor poi sul tab "emulators" in "Application" digitiamo "/usr/games/mame"
(Fig. 12)
fig12.jpg
A questo punto la strada si biforca, la generazione della lista delle rom e' una operazione che richiede parecchia memoria, per cui, a seconda della memoria installata sul nostro pc, possiamo o meno utilizzare le informazioni XML generate da mame o soltanto la lista delle nostre rom. La differenza sostanziale fra i due metodi e' che con il primo Wah!cade mostrera' piu' informazioni sulla rom selezionata.

Se il pc ha almeno 1Gb di ram:
nel tab Extra di fianco a "XML / Data file" clicchiamo sull'icona a "freccia circolare" per generare la lista XML dei giochi e salviamo la configurazione com il menu "File->save"
(Fig. 13)
fig13.jpg
Con meno ram:
nel tab emulators in "List generation" settiamo "list generation method" a "rom directory" e salviamo la configurazione com il menu "File->save"
Attenzione: la Rom Direcory configurata in questo settaggio viene letta solo da Wah!cade, occorre comunque che nel mame.ini sia inserito il giusto path alla cartella in cui tenete le vostre ROM!
(Fig. 14)
fig14.jpg
Al primo lancio wahcade generera' la lista delle rom, quindi abbiate pazienza!

Per fare in modo che Wah!cade parta automaticamente al boot del PC apriamo il terminale e lanciamo il comando "mkdir -p ~/.config/lxsession/Lubuntu" per cerare la cartella, sempre da terminale lanciamo "leafpad ~/.config/lxsession/Lubuntu/autostart" per editare il file autostart all'interno del quale scriviamo una sola riga: "wahcade", a questo punto facciamo un reboot per verificare che tutto sia a posto.
(Fig. 15)
fig15.jpg
--------------- Breve Guida a Wah!cade -----------------
Possiamo pilotare Wah!cade con la plancia del cabinato utilizzando pricipalmente il joystick e i tasti P1 start e P2 Start, il tasto P1 (sulla tastiera "1") Start corrisponde all'azione di scelta/attivazione, il tasto P2 Start (sulla tastiera "2") significa attiva menu/indietro (se si e' gia' in un menu), joystick su e giu permette di navigare fra i giochi e le opzioni di menu.

Per uscire da Wha!cade basta premere P2 Start (tasto "2") per fare apparire il menu, poi con il Joystick o i tasti cursore scegliere il menu "Exit Wah!cade", attivarlo con il tast P1 Start (tasto "1") scegliere una delle opzioni di uscita come "Exit & Shutdown" e attivarla sempre con il tasto P1 Start.

--------------- Installare AdvanceMENU ----------------
Per prima cosa scarichiamo il corgente di AdvanceMENU da http://advancemame.sourceforge.net/menu-download.html cliccando su "advancemenu-2.5.0.tar.gz", come nei precedenti casi l'archivio sara' scaricato nella nostra home nella cartella "Scaricati", scompattiamo l'archivio e otterremo la cartella "advancemenu-2.5.0", a questo punto lanciamo il terminale e ci spostiamo nella cartella appena estratta "cd ~/Scaricati/advancemenu-2.5.0".
AdvanceMENU e' scritto in linguaggio C, per questo motivo va compilato per poterlo usare, quindi installiamo il compilatore e i paccchetti di supporto, da terminale lanciamo "sudo apt-get install build-essential libsdl1.2-dev" questo comando scarichera' e installera' parecchia roba, abbiate pazienza, ora possiamo partire con la compilazione e l'installazione in tre passi. Prima lanciamo il comando "./configure" (attenzione al "./" iniziale che istruisce linux a lanciare il comando presente nella cartella attuale e non nel path di ricerca) questo comando prepara i sorgenti ad essere compilati sul nostro sistema, poi "make" per compilare i sorgenti e infine "sudo make install" per installare il software appena compilato.
(Fig 16)
fig16.jpg
--------------- Configurare AdvanceMENU -----------------
Rimaniamo nel terminale per creare un file di configurazione per AdvanceMENU in maniera simile a come abbiamo precedentemente fatto con mame, digitiamo il comando "advmenu", AdvanceMENU uscira' immediatamente avvertendo di aver cerato un file di configurazione base. editiamolo con il comando "leafpad ~/.advance/advmenu.rc"

Cerchiamo la linea che inizia con ""emulator" e modifichiamola in:
emulator "mame" sdlmame "mame" ""
Subito dopo inseriamo queste linee:
emulator_roms "mame" "/home/arcade/emulators/mame/roms_bob"
emulator_altss "mame" "/home/arcade/emulators/mame/snap"
emulator_flyers "mame" "/home/arcade/emulators/mame/flyers"
emulator_cabinets "mame" "/home/arcade/emulators/mame/cabinets"
emulator_marquees "mame" "/home/arcade/emulators/mame/marquees"


sostituite "arcade" nei vari path con la username che avete deciso di usare durante l'installazione di linux

modifichiamo la linea "device_video_output auto" in :
device_video_output fullscreen

DAFARE: configurare advmenuin maniera che mandi la macchina in shutdown all'uscita.

A questo punto abbiamo una configurazione di base funzionante!

Per fare in modo che AdvanceMENU parta automaticamente al boot del PC apriamo il terminale e lanciamo il comando "mkdir -p ~/.config/lxsession/Lubuntu" per cerare la cartella, sempre da terminale lanciamo "leafpad ~/.config/lxsession/Lubuntu/autostart" per editare il file autostart all'interno del quale scriviamo una sola riga: "advmenu", a questo punto facciamo un reboot per verificare che tutto sia a posto.
(Fig 17)
fig17.jpg
--------------- Breve Guida a AdvanceMENU -----------------
Il tasto F1 ci mostra una schermata di help con le funzioni dei vari tasti.

------------ Spegimento come un cab ------------
Per poter spegnere il cab dal pulsante principale senza mandare in shutdown la macchina occorre che i filesystem (i dischi) siano montati in modalita' Read Only, cioe' in sola lettura, questo fa si che non ci sia il pericolo che si spenga il sistema lasciando il filesystem in uno stato non pulito con potenziali, anche se improbabili, perdite di dati.

Per fare questo bisogna agire sull'initramfs. In soldoni l'initramfs e' un filesystem, una immagine disco con minisistema. Questo filesystem viene caricato in moria dal kernel linux nei primi istanti della procedura di boot, il suo scopo e preparare l'hardware (settare la risoluzione video, caricare i moduli di kernel che supportano i vari filesystem come ext4 fare lo scan degli hardisk e varia altre cosette) configurare il software vitale montare "/" e passare il controllo alla fase principale del boot. Fare errori nella configurazione dell'initramfs puo' rendere il sistema non funzionante quidi state all'occhio! Per fortuna ubuntu ci viene incontro con gli initramfs-tools, una serie di script che semplificano la creazione di initramfs ad hoc.

Ovviamente, una volta settato il disco in Read Only non sara' possibile salvare alcun dato, come hiscore, game states o gli stessi ini ma anche modifiche alle liste dei giochi in wahcade o le statistiche che wahcade stesso tiene sulle ore giocate e che permette di popolare in automatico la lista dei preferiti mettendo in testa i giochi piu' giocati.

Ad ogni reboot il sistema si presentera' esattamente come all'accensione precedente.

Possiamo pero' trovare un modo per forzare il salvataggio e uno shutdown pulito nel caso volessimo fare delle modifiche o degli updates e ritrovali all'accensione successiva.

Presuppongo che abbiate seguito la guida e che il vostro sistema sia nello stesso stato in cui vi trovate appena termintala la sudetta guida e che abbiate un solo filesystem montato in /, nessuna partizione separata per esempio su /home o /var, che sarebbe poi il default per l'installazione standard di lubuntu.

Partiamo!

Apriamo un terminale, eseguiamo tutti gli ultimi update:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade


Facciamo un reboot per verificare che tutto funzioni corettamente
sudo reboot

Riapriamo il terminale ed eseguiamo questo comando:
sudo sh -c "echo overlayfs >>/etc/initramfs-tools/modules"
quiesto serve a far si che il modulo di supporto a overlayfs venga inserito in initramfs e caricato nel kernel

Copiamo il file "root-ro" che trovate qui http://www.cortassa.net/tmp/root-ro in /etc/initramfs-tools/scripts/init-bottom/ e assicuratevi che sia eseguibile:
sudo chmod +x /etc/initramfs-tools/scripts/init-bottom/root-ro

editiamo il file /etc/default/grub con "sudo gedit /etc/default/grub" e aggiungiamo la riga:
GRUB_RECORDFAIL_TIMEOUT=10
senza questa modufica il grub si fermera' in attesa del tasto invio ad ogni reboot (attenzione, questa opzione non funziona se non avete aggiornato la vostra lubuntu)

a questo punto lanciamo il comando che ricostruise l'initramfs con le nostre modifiche:
sudo update-grub
sudo update-initramfs -u


e facciamo un reboot:
sudo reboot

a questo punto se apriamo un terminale e lanciamo il comando "df -h /" dovrebbe stampare una roba del genere:
Filesystem Size Used Avail Use% Mounted on
overlayfs-root 50G 35G 13G 74% /


la parte importante e' la prima colonna che mostra che stiamo usando overlayfs-root come filesystem

Da questo monento potremmo spegnere malamente il sistema tutte le volte che ci pare senza problemi!!!

Avvertenza: questo sistema "simula" la scrittura sul disco salvando i cambiamenti in memoria, quindi ser create file molto grossi o se eseguite un apt-get upgrade potreste finire la ram... se si bloccasse tutto per questo motivo poco male spegnete e riaccendete tutto tornera come al primo boot :)


*Persistenza*
Sarebbe molto carino fare in modo che le modifiche venissero salvate nel caso di un reboot o di uno shutdown puliti!
Si dovrebbe creare uno script "persistent" e metterlo in /etc/init.d/ per poi linkarlo negli script di reboot e shutdown:
sudo cp persistent /etc/init.d/
chmod +x /etc/init.d/persistent
sudo ln -s /etc/init.d/persistent /etc/rc0.d/K10persistent
sudo ln -s /etc/init.d/persistent /etc/rc6.d/K10rpersistent


Purtroppo l'operazione non e' banale e dove pensarci ancora un po ;) nel frattempo per fare delle modifiche occorre interrompere il grub con il tasto "esc" editare il menu prmendi il tasto "e", aggiungere il parametro "disable-root-ro=true" al fondo della penultima riga e fare il boot con il tasto "F10", a questo punto il sistema funzionera' in maniera normale e occorrera' eseguire lo shutdown pulito

*Note*
in:
/mnt/root-ro
si trova il fileystem originale monttao RO
in:
/mnt/root-rw
si trovana il ramdisk con i file modificati durante la sessione attuale che "ricoprono" quelli in /mnt/root-ro

--------------- Conclusione -----------------
Questa guida non vuole essere ne perfetta ne completamente esaustiva, col tempo spero di migliorarla e apliarla. Lo scopo principale e' quello di essere semplice dare una base solida dalla quale partire per utilizzare linux sul proprio cab!
Ogni critica, aggiunta e correzione e' ben accetta!
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
Ultima modifica di eldiau il 12/05/2017, 21:13, modificato 9 volte in totale.
Progetti:
*BarettoCab80 viewtopic.php?t=8756
*Mariocab
*TrashSticks

Guide:
*Guida a Linux nel Cab: http://www.arcadeitalia.net/viewtopic.php?t=9608
*Effetti GLSL in SDLMAME: http://www.arcadeitalia.net/viewtopic.php?t=9494
*Versioni di MAME "importanti": http://www.arcadeitalia.net/viewtopic.php?t=12209
Avatar utente
Ansa89
Cab-maniaco
Cab-maniaco
Messaggi: 1511
Iscritto il: 19/06/2011, 8:43
Città: EarthRealm

Re: Guida a Linux nel Cab

Messaggio da Ansa89 »

Ovviamente il primo a criticare sono io <-blum-> .
- L'intestazione della figura 8 ha un'emoticon al posto di "8".
- Ci sono un po' di typo (ma è normale vista la mole di testo che hai scritto).

Proposte:
- aggiungere un link a groovyarcade con due righe giusto per dire che è una distro già pronta per i 15KHz.
- spostare la guida nel wiki (oppure chiedere allo staff di rendere il topic "sticky").

A parte le pignolerie, hai fatto un ottimo lavoro e spero che questo topic possa diventare un punto di riferimento per che vuole usare linux sul suo cabinato.
---
Earth could be the hell of another world.
Avatar utente
eldiau

Donatore
Cab-maniaco
Cab-maniaco
Messaggi: 1021
Iscritto il: 20/01/2012, 9:57
Medaglie: 1
Città: Torino
Grazie Ricevuti: 2 volte

Re: Guida a Linux nel Cab

Messaggio da eldiau »

Grazie Ansa89!
Ho corretto l'emoticon, sfrondato un po' di typo, aggiunto un riferimento a groovyarcade, era gia' mia intenzione metterla nel wiki ma prima volevo rodarla un po', per eliminare appunto i vari errori. Qualsiasi cosa tu voglia aggiungere buttala pure ne thread che poi la inserisco in guida...
Progetti:
*BarettoCab80 viewtopic.php?t=8756
*Mariocab
*TrashSticks

Guide:
*Guida a Linux nel Cab: http://www.arcadeitalia.net/viewtopic.php?t=9608
*Effetti GLSL in SDLMAME: http://www.arcadeitalia.net/viewtopic.php?t=9494
*Versioni di MAME "importanti": http://www.arcadeitalia.net/viewtopic.php?t=12209
Avatar utente
boosst

Donatore
Affezionato
Affezionato
Messaggi: 234
Iscritto il: 28/02/2012, 14:07
Medaglie: 1
Città: Caselon
Località: Verona
Grazie Inviati: 2 volte

Re: Guida a Linux nel Cab

Messaggio da boosst »

Bella guida. <-shake2->
E' possibile in Linux utilizzare un metodo di accensione e spegnimento tipo l'ibernazione e Horm di windows?
Avatar utente
eldiau

Donatore
Cab-maniaco
Cab-maniaco
Messaggi: 1021
Iscritto il: 20/01/2012, 9:57
Medaglie: 1
Città: Torino
Grazie Ricevuti: 2 volte

Re: Guida a Linux nel Cab

Messaggio da eldiau »

Linux si puo' ibernare, ma in questo caso secondo me non avresti un gran beneficio, il boot di Linux e' molto veloce. L'HORM e' una pezza messa da microsoft per superare alcune limitazioni di windows sui sistemi embedded, nel caso di Linux non esiste in quanto e' possibile fare il boot con il sistema in read-only. La parte negativa e' che per il boot con sistema read only, se non lo fai con una ditribuzione tipo knoppix, tiny core o la stessa groovyarcade va configurato "a mano", visto che voglio implementarlo sul mio cab, quando lo faro', prendero' appunti e screenshot e lo inseriro' in quida..

L'utilizzo di distribuzioni "ad hoc" ha i suoi pro e i suoi contro, una installazione lubuntu come quella descritta ti permette molta piu' liberta' di movimento ed e' piu' immediata per chi e' abituato a mettere un xp sul cab, una groovyarcade ti permette di ottenere un risultato immediato ma e' piu' ostica se vuoi personalizzarla, visto comunque che groovyarcade puo' partire da CD vale la pena provarla.
Progetti:
*BarettoCab80 viewtopic.php?t=8756
*Mariocab
*TrashSticks

Guide:
*Guida a Linux nel Cab: http://www.arcadeitalia.net/viewtopic.php?t=9608
*Effetti GLSL in SDLMAME: http://www.arcadeitalia.net/viewtopic.php?t=9494
*Versioni di MAME "importanti": http://www.arcadeitalia.net/viewtopic.php?t=12209
Avatar utente
boosst

Donatore
Affezionato
Affezionato
Messaggi: 234
Iscritto il: 28/02/2012, 14:07
Medaglie: 1
Città: Caselon
Località: Verona
Grazie Inviati: 2 volte

Re: Guida a Linux nel Cab

Messaggio da boosst »

Grazie della risposta esauriente.
Intanto comincerò a smanettare con Linux e continuerò a seguire gli sviluppi della tua ottima guida.. <-clap->
Avatar utente
Ansa89
Cab-maniaco
Cab-maniaco
Messaggi: 1511
Iscritto il: 19/06/2011, 8:43
Città: EarthRealm

Re: Guida a Linux nel Cab

Messaggio da Ansa89 »

Per montare un sistema in sola lettura, basta impostare l'opzione "ro" per la partizione di root in "/etc/fstab"; il problema è che comunque il sistema cerca di scrivere in alcune cartelle (tipo "/tmp").
Una prima soluzione potrebbe essere montare queste cartelle come "tmpfs", stando attenti ad avere abbastanza ram: ogni volta che si monta qualcosa come "tmpfs", viene sacrificata della memoria centrale.

Un'alternativa è disabilitare il journaling del filesystem (ext3, ext4, btrfs, ...), o usarne uno senza journaling (ext2).
Ovviamente le prestazioni ne risentiranno un po'.


In generale, spegnendo il computer in malo modo, non so quanto sia "frendly" con la meccanica del disco fisso :roll: .
---
Earth could be the hell of another world.
Avatar utente
Ansa89
Cab-maniaco
Cab-maniaco
Messaggi: 1511
Iscritto il: 19/06/2011, 8:43
Città: EarthRealm

Re: Guida a Linux nel Cab

Messaggio da Ansa89 »

eldiau ha scritto:aggiunto un riferimento a groovyarcade
Oltre al sito ufficiale, mettici anche questo link (per il discorso che abbiamo fatto nell'altro topic).
---
Earth could be the hell of another world.
Avatar utente
eldiau

Donatore
Cab-maniaco
Cab-maniaco
Messaggi: 1021
Iscritto il: 20/01/2012, 9:57
Medaglie: 1
Città: Torino
Grazie Ricevuti: 2 volte

Re: Guida a Linux nel Cab

Messaggio da eldiau »

Ansa89 ha scritto:Una prima soluzione potrebbe essere montare queste cartelle come "tmpfs", stando attenti ad avere abbastanza ram: ogni volta che si monta qualcosa come "tmpfs", viene sacrificata della memoria centrale.
Vero, per quanto riguarda /tmp basta effettivamente un tmpfs, per montare RO /var pero' occorre rilinkare varie cartelle come /var/run e /var/lock in /tmp, se non sbaglio la prossima fedora usera' proprio questa tecnica rendendo mooolto piu' semplice montare tutto in RO.
Io volevo provare con qualcosa tipo AUFS, lo usa ubuntu per la live cd, ti permette di montare una normale partizione in RO e farla vedere al sistema come RW facendo una sorta di copy on write in ram. Ha il vantaggio che si puo' committare i cambiamenti sul disco, se per esempio fai un cambiamento alla configurazione del mame invece di spegnere al volo puoi fare uno shutdown coretto e mettere uno script che in quel caso salva i cambiamenti sul disco.
Ansa89 ha scritto:Un'alternativa è disabilitare il journaling del filesystem (ext3, ext4, btrfs, ...), o usarne uno senza journaling (ext2).
Ovviamente le prestazioni ne risentiranno un po'.
Se si vuole spegnerlo "malamente" in realta' e' piu' solido un journaling filesystem, il journal serve proprio a limitare eventuali danni da spegnimento improvviso scrivendo prima nel journal e poi committando le scritture. Tempo fa, per lavoro, feci una prova con ext4, e dopo oltre 50 spegnimenti brutali tutto era ancora in ordine :-D, in seguito a quelle prove ho una macchina installata da tre mesi che tutte le sere viene spenta brutalmetne dal generale, ovviamente non e' consigliato ma considera che quella macchina, come un ipotetico cab mame, non contiene dati che cambiano e il ksyslog e' disabilitato... poi, mal che vada, ho una immagine partimage per ripristinare tutto al volo.
Ansa89 ha scritto:In generale, spegnendo il computer in malo modo, non so quanto sia "frendly" con la meccanica del disco fisso :roll: .
Sarebbe stato un problema anni fa, qualsiasi disco moderno ha una sistema di parcheggio automatico della testina che evita danneggiamenti fisici, potrebbe essere un problema spegnerlo e accenderlo piu' volte di seguito...

Ho aggiunto il link al tuo thread per groovyarcade.
Progetti:
*BarettoCab80 viewtopic.php?t=8756
*Mariocab
*TrashSticks

Guide:
*Guida a Linux nel Cab: http://www.arcadeitalia.net/viewtopic.php?t=9608
*Effetti GLSL in SDLMAME: http://www.arcadeitalia.net/viewtopic.php?t=9494
*Versioni di MAME "importanti": http://www.arcadeitalia.net/viewtopic.php?t=12209
Avatar utente
Ansa89
Cab-maniaco
Cab-maniaco
Messaggi: 1511
Iscritto il: 19/06/2011, 8:43
Città: EarthRealm

Re: Guida a Linux nel Cab

Messaggio da Ansa89 »

eldiau ha scritto:Io volevo provare con qualcosa tipo AUFS, lo usa ubuntu per la live cd, ti permette di montare una normale partizione in RO e farla vedere al sistema come RW facendo una sorta di copy on write in ram. Ha il vantaggio che si puo' committare i cambiamenti sul disco, se per esempio fai un cambiamento alla configurazione del mame invece di spegnere al volo puoi fare uno shutdown coretto e mettere uno script che in quel caso salva i cambiamenti sul disco.
Sì, lo conosco, l'ho usato per creare la mia distro live.
Peccato non venga inserito in mainline :( .

eldiau ha scritto:
Ansa89 ha scritto:Un'alternativa è disabilitare il journaling del filesystem (ext3, ext4, btrfs, ...), o usarne uno senza journaling (ext2).
Ovviamente le prestazioni ne risentiranno un po'.
Se si vuole spegnerlo "malamente" in realta' e' piu' solido un journaling filesystem, il journal serve proprio a limitare eventuali danni da spegnimento improvviso scrivendo prima nel journal e poi committando le scritture.
Sì, scusa, ho scritto male.
In realtà volevo dire che l'ideale sarebbe abbassare l'intervallo tra un commit e l'altro (se non sbaglio c'era un parametro apposta), per evitare che si formino degli inode orfani; i quali poi sarebbero da controllare ed eventualmente ripristinare.
Ovviamente dipende molto da quante scritture su disco effettuerebbe questo tipo di sistema, nel senso che se si usa la cortesia di uscire dal gioco e poi si spegne il cabinato, non dovrebbero esserci troppi file aperti in scrittura (imho) <-think-> .

eldiau ha scritto:
Ansa89 ha scritto:In generale, spegnendo il computer in malo modo, non so quanto sia "frendly" con la meccanica del disco fisso :roll: .
Sarebbe stato un problema anni fa, qualsiasi disco moderno ha una sistema di parcheggio automatico della testina che evita danneggiamenti fisici, potrebbe essere un problema spegnerlo e accenderlo piu' volte di seguito...
Preferisco non fidarmi.
---
Earth could be the hell of another world.
Rispondi

Torna a “Guide - How To - Topic importanti”