Messaggi di posta con autodistruzione

Premessa

Questo articolo è molto vecchio e l’autore di questa pagina nel frattempo è maturato un filino culturalmente e quindi si vergogna molto di quanto vi sia scritto. Nello specifico solo un bimbominkia promuoverebbe un servizio del genere o direbbe che «Ajax è un linguaggio» («complesso!»).

A parte tutto questo articolo è una simpatica testimonianza: a quanto pare nel 2011 il sito in questione aveva una vulnerabilità XSS solo che ero troppo ritardato per capire che non si trattasse di una funzionalità ma di una falla.

Questi contenuti comunque rimarranno online per aiutare a ricordarsi di quanto fossi ignorante solo pochi anni fa e di quanto sia stata sottile la linea che mi separava da Aranzulla.

P.S.
Se trovi un’altra guida del genere in Internet senza un simile disclaimer, insulta immediatamente quell’autore.

Il servizio che abbiamo scoperto navigando per caso tra le pagine del web non sarà forse di effetto quanto i messaggi a detonazione temporizzata di James Bond, ma si avvicina di molto alle caratteristiche di un tools per messaggi anonimi.

Curioso quanto funzionale è il Destructing Message.com ideato da un ragazzo di Seattol nel 2006 probabilmente tramite un piccolo script in linguaggio Ajax… un linguaggio complesso.

Andando al sito di Destructingmessage.com, vi troverete davanti una semplice casella di testo dove potrete comporre il vostro messaggio anonimo, selezionando il tempo di attesa prima dell’autodistruzione, e il metodo di invio del messaggio: se tramite un comodo link, o tramite posta elettronica.

Screenshot di Destructing Message

Caratteristiche:

Il servizio non fa che copiare il vostro messaggio direttamente all’interno di una nuova pagina web creata lì lì sul momento in automatico.

Questo significa che se voi scriverete…

<h1>Esempio titolo 1...</h1>

Verrà visualizzato secondo le regole del linguaggio HTML e cioè:

Esempio titolo 1…

In quanto la formattazione del testo è in linguaggio HTML.

Il divertente non sta solo nella possibilità di creare un messaggio complesso sfruttando gli effetti sui caratteri dell’HTML , ma sta soprattutto nella possibilità di creare degli script javascript.

Per chi non ci avesse capito nulla ecco alcuni esempi di un probabile messaggio:

<br><br>
<h1>Salve, ecco un esempio di utilizzo del linguaggio Html.</h1>
<center>
<button onclick="javascript:alert('Ma anche di utilizzo Javascript.');">
<h1>
<br>
Clicca qui!
<br>
</h1>
</button>
<br><br>
</center>

Il messaggio apparirà con un grosso pulsante al centro, dove cliccandolo si accederà ad uno script Js creato da voi.
Ma lo script può partire ovviamente anche all’apertura della pagina usando:

<script type="text/javascript">
alert('Esempio Js automatico.');
document.write('<br><br><h1>');
document.write('<a href="javascript:self.close();">Torna indietro</a>!');
document.write('</h1><hr><br><br>');
</script>
</center>

Probabilmente questo distruggerà la formattazione iniziale della pagina in quanto non lascia il tempo al browser di caricarla per bene. Ma state tranquilli questo non significa che avete distrutto il sito…

Buon divertimento e buona navigazione.

Aumentare la velocità di navigazione

(Nota di redazione: questo articolo è molto vecchio. All’epoca avevo 15 anni. Proseguendo nella lettura potresti sentire il bisogno di strapparti i bulbi oculari. Se per caso possiedi la tecnologia necessaria per effettuare viaggi nel tempo, vieni qui e proibiscimi di scrivere questo post, perché è da rincoglioniti, peggio di Aranzulla. Nello specifico, È inutile che ti metti a provare tutti i browser del pianeta, dato che se tieni alla tua libertà digitale non è che ci sono tante scelte fra Firefox o Chromium, anche se probabilmente sei quel tipo di persona con 99.9% di software proprietario. Almeno 1000 programmi e 10.000 persone possono in qualsiasi momento fotterti la tua vita privata e spiarti dalla webcam, e te hai firmato per questo, ma non te ne frega una cippa. Questo articolo rimarrà online per ricordarmi quanto ero rincoglionito.)

La navigazione è spesso una lotta per quelli che possiedono un computer lento o che convivono con chiavette internet.

Abbiamo così deciso di aiutare anche i meno esperti tramite una raccolta di test capaci di sperimentare la qualità delle nostre connessioni e dei nostri browser.

Prima di tutto è sempre bene conoscere altri browser all’infuori di quelli “proprietari” come Internet Explorer o “Safari”, poichè di solito i prodotti creati da chi vuole averne lucro non sono spesso l’emblema dell’efficienza ma piuttosto della sponsorizzazione…

  • Scarichiamo dunque un browser Open Source come Firefox
  • uno maestro nella ricerca come Chrome
  • e un’altro leggero come Opera

E vediamo la loro reazione nel…

Test accelerazione

Immagine offerta dal Reyboz Blog - Velocità del Browser
Go to test

Questo test consiste nell’impegnare il browser con delle immagini in movimento, il browser in risposta dovrebbe richiedere al computer di concentrare le energie in questo stress, rivelando così, dopo un certo periodo di tempo, i frame al secondo raggiunti all’apice dell’accelerazione supportata.

Da questo test dovrebbe emergere Chrome, mentre su Explorer non dovrebbe funzionare affatto.

Test gestione sovraccarico

Test ottimizzazione offerta dal Reyboz Blog
Go to test

Questo test è da eseguire contemporaneamente su due browser alla volta per vedere le loro reazioni differenti.

Inizializzandolo, questo test riporterà la capacità del browser di eseguire o meno centinaia di azioni contemporaneamente espressa in js (javascript/secondo) e fps (frame/secondo).

Test modem to server

Speed test offerto dal Reyboz Blog
Go to test

Lo Speedtest permette di valutare in pochi secondi la velocità di download e di upload, nonchè di verificare il proprio ping tra voi e i server.

Da questo capirete quanto la vostra posizione sia agevolata o meno rispetto agli altri e quanto potete pretendere dalla vostra connessione internet.

Test download/upload

Net speedometer offerto dal Reyboz Blog
Go to test

Installando gratuitamente il Net Speedometer si potrà osservare tutti i dati che ci servono, in tempo reale.

Buon utilizzo dallo staff, se ne conosciete di altri scriveteci un commento.

Grazie per la lettura e buona connessione ad internet!

Comandare sul web: injection javascript

(Nota di redazione: questo articolo è molto vecchio. All’epoca avevo 15 anni. Proseguendo nella lettura potresti sentire il bisogno di strapparti i bulbi oculari. Se per caso possiedi la tecnologia necessaria per effettuare viaggi nel tempo, vieni qui e proibiscimi di scrivere questo post, perché è da rincoglioniti, peggio di Aranzulla. Nello specifico, copy-pastare roba nella tua console di debug del tuo browser web è da rincoglioniti. Ogni volta che rileggo questo post avrei voluto che il giorno prima io fossi stato investito da un camion, ed è questo il motivo per cui lo manterrò online: per maturare. Con le dovute precauzioni, buona lettura.)

Come si può “comandare” sul web? Come possono persone normali avere accesso a parti segrete di siti poco controllati, o di incrementare punteggi di browser-game in poche mosse?
Lo capiremo partendo da molto lontando attraverso questa breve guida dedicata alle injection-javascript.

Una estrazione (extraction) javascript è un metodo di controllo del codice di un sito tramite l’estrazione diretta delle variabili, via indirizzo ipertestuale.
Significa che per controllare una variabile di un sito web (un punteggio di un gioco online o la password di un utente loggato ad esempio) basta conoscere il nome della variabile che lo custodisce, e richiamare il suo valore inserendo nella barra degli indirizzi un comando di richiamo come javascrpt:alert(nomevariabile);
Questo tipo di estrazione si è però evoluto in forme molto complesse di iniezione chiamate injection javascript, delle quali approfondiremo ora.
Le chiamano injection javascript perchè con esse si può riuscire a modificare parte di una pagina web durante la propria sessione di navigazione, e quindi riuscire ad apportare modifiche consistenti ad un qualunque sito o gioco online, esclusivamente utilizzando codici, iniettati nella pagina, tramite la barra degli indirizzi, o tramite un segnalibro web.
Quello che faremo ora sarà prendere di mira alcuni siti molto famosi e sostituire un oggetto della pagina con del testo a nostra scelta.
Premettiamo che questo tipo di modifica non è reato: una injection javascript non è infatti una distruzione della pagina ma solo una modifica parziale lato-utente del listato javascript, del tutto ripristinabile ricaricando la pagina.
Ma insomma! Partiamo!

Step one

Prima di tutto, assicuriamoci di usare Firefox e non Internet Explorer (poichè I.E. si blocca con le injection javascript)
Ottenuto Firefox creiamo un segnalibro che ci servirà da “iniettore”

  • Digitiamo CTRL+D
  • Selezioniamo “Barra dei segnalibri” come cartella
  • Salviamo il segnalibro

Step two

A questo punto comparirà il segnalibro della presente pagina nella vostra barra dei segnalibri. Quindi:

  • Selezioniamo tutto il seguente codice e copiamolo (compresa la scritta “javascript:”):

javascript:
x="Questo e' un esempio di Injection Javascript - Reyboz Blog";
alert('Codice da iniettare:nn'+x);
x="<h1>"+x+"</h1>";
document.getElementById('previewPan_w1').innerHTML=x;
alert('Injection eseguita.');

  • Selezioniamo il segnalibro precedente con un click destro
  • Selezioniamo Proprietà
  • Incolliamo il precedente codice nello spazio dedicato all’indirizzo del segnalibro.

Ora avremo nella barra degli indirizzi il segnalibro che conterrà come indirizzo lo script: servirà ora per iniettare una scritta nel famoso motore di ricerca Blackr.

Dritti al cuore di blackr

Bando alle ciance:

  • Dirigiamoci sul Blackr
  • Lanciamo il segnalibro con un click su di esso
  • Clicchiamo su Ok ai 2 messaggi
  • Osserviamo

Se avete eseguito tutti i procedimenti Blackr apparirà con una scritta nella parte destra.

Ma noi non ci siamo fermati:

Dritti al cuore di facebook

  • Accedete al vostro Facebook
  • Rieseguiamo lo Step One
  • Incolliamo nel segnalibro tutto il seguente codice al posto dell’indirizzo:

javascript:
x=prompt('Inserisci il tuo nome di Facebook: (serve)','qui');
x="<h1>Mi chiamo -"+x+"- Salve! </h1>";
document.getElementById('navSearch').innerHTML=x;
alert('Injection eseguita.');

  • Salviamo il segnalibro
  • Clicchiamo sul segnalibro
  • Osserviamo

Se tutto è andato bene comparirà nella parte del titolo del vostro profilo di facebook una piccola modifica testuale.
Tranquilli, tutto torna normale digitando il classico F5.

Dritti al cuore dei giochi online

Scaricheremo un piccolo gioco online della Mr. Webmaster intitolato Chi vuol essere milionario. Dunque scarichiamolo, estraiamolo sul nostro computer e iniziamo subito a giocare.
Noterete che il gioco funziona perfettamente ma perchè non barare un po’?

  • Aprite il gioco
  • Ripetete lo Step One
  • Incolliamo nel segnalibro tutto il seguente codice al posto dell’indirizzo:

javascript:
function prossimadomanda(){
document.gioco.giustaa.value="giusta";}
alert('Preparazione alla injection in corso.');
prossimadomanda();
alert("Script abortito, la risposta sarà sempre la numero:nn-A.")
;

  • Salviamo il segnalibro
  • Clicchiamo sul segnalibro
  • Osserviamo

Come potete immaginare è stato iniettato un codice che modifica questo semplice gioco rendendo le risposte tutte uguali.
La nostra piccola lezione sulle injection javascript è ormai giunta al termine, vi auguriamo che tutto sia stato comprensibile e che vi siate divertiti scoprendo i segreti celati dietro alla modifica dei siti web. Vorremo precisare che tutto questo non deve apparire come un articolo “terrificante”,  questi utilizzi javascript non sono paragonabili a pirateria informatica e nè lo saranno mai, poichè il web deve essere uno strumento comune di insegnamento e non un segreto privato.
Grazie per la lettura.

Motore di ricerca Reyboz Search 2011-NG

(Nota di redazione: questo articolo è molto vecchio. All’epoca avevo 15 anni. Proseguendo nella lettura potresti sentire il bisogno di strapparti i bulbi oculari. Se per caso possiedi la tecnologia necessaria per effettuare viaggi nel tempo, vieni qui e proibiscimi di scrivere questo post, perchè è da rincoglioniti, peggio di Aranzulla. Nello specifico, promuovere una paginetta HTML con un form che punta a Google, è da rincoglioniti. Ogni volta che rileggo questo post avrei voluto che i miei genitori avessero abortito, ed è questo il motivo per cui lo manterrò online: per maturare. Con le dovute precauzioni, buona lettura.)

Il Reyboz search 2011 sta per tornare in una nuova generazione!

Lo spirito notturno dell’atteso motore di ricerca mondiale bloccato da un errore di convalidazione negli inizi di novembre, è ora fermato solo da un breve periodo di prova, prima di essere di nuovo lanciato nel cielo:

Nuove funzionalità ci aspettano tra cui la ricerca fra le immagini e una ultraleggera versione per cellulari, sfidando a testa alta velocità pazzesche e mantenendo effetti grafici originali, tornando come nuovo nella sua piccola semplicità nell’accattivante nero della notte.

Reyboz search 2011

Abbiamo pensato in grande: Il nuovo progetto Reyboz search 2011 New Generation è stato concepito con l’idea di basarlo su script adattati e studiati criticamente per una lettura universale da parte di ogni browser internet, realizzando un sogno:

Garantire un motore velocissimo per ogni tipo di browser e per ogni tipo di connessione limitata.

Reyboz search 2011

Musica e suoni in ambiente Pascal

(Nota di redazione: questo articolo è molto vecchio. All’epoca avevo 15 anni. Proseguendo nella lettura potresti sentire il bisogno di strapparti i bulbi oculari. Buona lettura.)

Nella libreria crt del Pascal esistono dei comandi speciali che spesso non si insegnano nei licei o nelle scuole, perchè “non utili all’appredimento del linguaggio”. Cioè, non solo ci tocca imparare questo linguaggio proprietario di merda, ma pure manco lo sfruttiamo.

Dato che ho tempo per cazzeggiare, ecco qui ciò che ho trovato:

  1. SOUND(hz); produce un suono alla frequenza inserita
  2. DELAY(time); produce un ritardo in millisecondi
  3. NOSOUND; interrompe il suono (indispensabile!)

Questi tre comandi si utilizzano in successione così elencati: con il primo lo speaker emette una frequenza (ad esempio 440 per un LA perfetto) con il secondo si prolunga la frequenza (ad esempio 1000 per un secondo) e con il terzo si interrompe la nota.

Un utilizzo molto interessante di queste nozioni può essere quello di far eseguire dal nostro Turbo Pascal (aka Masturbo Pasquale) una parte dell’Inno alla Gioia di Beehtoven, ad esempio…

Listato:
PROGRAM B; USES CRT;
VAR X,I:INTEGER;
PROCEDURE A(X:INTEGER);
BEGIN
SOUND(X);
DELAY(1000);
NOSOUND;
END;
BEGIN
CLRSCR;
WRITE('Stai ascoltanto l''Inno alla Gioia di Beethoven.');
FOR I:=0 TO 1 DO BEGIN
A(330);A(330);A(349);A(392);
A(392);A(349);A(330);A(294);
A(262);A(262);A(294);A(330);
IF(I=0)THEN BEGIN
A(330);A(294);A(294);
DELAY(1000);
END
ELSE BEGIN
A(294);A(262);A(262);
END;
NOSOUND;
END;
CLRSCR;
WRITE('Grazie per aver ascoltato Beethoven.');
READLN;
END.

Qui sopra abbiamo creato una procedura A(x), che richiama al suo interno SOUND(x), DELAY(200) e NOSOUND; esclusivamente per non ripetere i tre comandi di volta in volta.

La frequenza delle note

Per creare la scala di do che ci è servita per comporre il brano superiore, abbiamo soltanto utilizzato questo schema di note/frequenze da inserire nel comando SOUND()

Do 262 Do# 277 Re 294 Re# 311 Mi 330 Fa 349
Fa# 370 Sol 392 Sol# 415 La 440 La# 466 Si 49

Quindi, in conclusione, se vogliamo far emettere dalla macchina un LA per 2 secondi faremo:

begin
SOUND(440);
DELAY(2000);
NOSOUND;
end;

Tutto questo perchè il LA è rappresentato da un suono con frequenza 440 hertz, e due secondi sono rappresentati da un delay di 2000 millisecondi. Insomma, capito no?

Dunque è tutto, buona navigazione!

Semplice emulatore vocale per Windows

(Nota di redazione: questo articolo è molto vecchio. All’epoca avevo 15 anni. Proseguendo nella lettura potresti sentire il bisogno di strapparti i bulbi oculari. Se per caso possiedi la tecnologia necessaria per effettuare viaggi nel tempo, vieni qui e proibiscimi di scrivere questo post, perchè è da rincoglioniti, peggio di Aranzulla. Nello specifico, promuovere software proprietario per sistemi operativi proprietari equivale ad invogliarti ad avere rapporti sessuali senza protezione nella peggiore bettola della tua città. Ogni volta che rileggo questo post mi viene da piangere ed è questo il motivo per cui lo manterrò online. Con le dovute precauzioni, buona lettura.)

Vorremmo proporvi un piccolo programma per l’emulazione vocale perfettamente funzionante in Windows.

Permette di scrivere a tastiera un testo, di farlo leggere dalla macchina, di modificarne la velocità di lettura e il timbro di voce.

Molto divertente per doppiare i nostri filmati.

Cliccando sul link otterrete il classico file da zippare con all’interno diversi file, tra cui:

  • Reyboz_setup
  • Reyboz_setup2
  • Reyboz_voice

Cliccate su ognuno di essi in quest’ordine e rispondete di sì ad ogni messaggio di richiesta.

Buon emulatore vocale a tutti. Buona navigazione.

Orologio analogico in Turbo Pascal

Oggi vi presenteremo un programma in grado di simulare un orologio digitale. Per una piccola anteprima cliccate sull’immagine.

Immagine orologio offerta dal Reyboz Blog

Il file è disponibile gratuitamente da qui:

Analizziamo il programma

All’inizio vedremo una videata nera con una serie di numeri da zero a venti, e ci verrà chiesto di inserire il numero che per noi è al centro dello schermo. Il tutto verrà ripetuto finche non si inserisce uno di quei numeri da 0 a 20:

...
CLRSCR; (* Pulisci schermo *)
CC:=-1;
REPEAT (* Punto di ripetizione *)
FOR A:=0 TO 20 DO (* Ripeti 20 volte per scrivere 20 numeri *)
BEGIN
CC:=CC+1;
WRITE(CC:2,' ');
END; (* Fine ripetizione *)
WRITELN;
WRITELN;
WRITE('Scrivi il numero al centro del monitor: ');
READ(CC); (* L'utente inserisce CC *)
CLRSCR;
UNTIL (CC <= 20)AND(CC >= 0);
(* Da qui torna a 'repeat' se CC non è tra 0 e 20 *)
...

A questo punto il programma avrà come input questa fantomatica variabile CC. Servirà per sapere dove posizionare in futuro l’orologio, in modo che sembri al centro. Ma passiamo al punto in cui ci chiederà di inserire ore e minuti attuali, rappresentati da variabili intere HH e MM. Anche qui se l’ora inserita non sarà tra 0 e 24, e i minuti tra 0 e 60, il programma non andrà avanti e tornerà da capo:

...
REPEAT (* Punto di ritorno Until *)
IF(HH > 23)OR(MM > 59)OR(HH < 0)OR(MM < 0) THEN
WRITE('Errore formato. ');
WRITE('Scrivi l''ora attuale (HH MM): ');
READ(HH,MM); (* L'utente inserisce ora e minuti *)
CLRSCR; (* Ripulisci schermo *)
UNTIL (HH <= 23)AND(MM <= 59)AND(HH >= 0)AND(MM >=0);
...

Inseriti ore e minuti, siamo pronti a produrre l’orologio. Per fare ciò creeremo un’ulteriore variabile SS che conterrà i secondi, calcolati tramite uno script che rallenta di (17)*(17) mila volte il programma, avvicinandosi di molto ad un secondo reale:

...
T:=1700; (* T vale 1700 *)
WHILE(0 = 0)DO (* Inizia un ciclo infinito *)
BEGIN
SS:=SS+1; (* Aggiungi un secondo *)
FOR C:=0 TO T DO (* Inizio rallentamento *)
BEGIN FOR D:=0 TO T DO
BEGIN
END;
END; (* Fine rallentamento *)
CLRSCR;
IF(SS = 60)THEN (* Se ci sono 60 secondi crea un minuto *)
BEGIN
SS:=0;
MM:=MM+1;
END;
IF(MM = 60)THEN (* Se ci sono 60 min. crea un ora *)
BEGIN
SS:=0;
MM:=0;
HH:=HH+1;
END;
WRITE('Per interrompere: ctrl+pausa');
(* A questo punto a seconda di CC... *)
FOR A:=0 TO CC DO WRITELN; (* Crea CC spazi vuoti in verticale... *)
FOR B:=0 TO CC DO WRITE('   '); (* ...e in orizzontale *)
(* Ora scrivi ora, minuti, secondi *)
WRITE(' ',S1,HH:2,': ',MM:2,': ',SS:2,S2);
END;
...

Buona navigazione dallo staff.

Turbo Pascal di base

Ecco finalmente un riassunto schematico su funzioni condizioni strutture e operatori del Turbo Pascal, il famoso compilatore e esecutore di listati.

Turbo Pascal - Reyboz Blog

Download

Capiamo il linguaggio

Piccolo esempio

Program Potenza; Uses crt;
Var x,y: integer;
Begin
clrscr;
write('Inserisci qui un numero: ');
read(x);
y:=x*x;
writeln('Il quadrato di ',x,' è ,y);
readln
End.

Parti essenziali

  • Program per dare un nome al programma.
  • Uses per determinare la libreria (non lo cambiamo)
  • Var per nominare una lista di variabili e definirne il tipo
  • Begin per iniziare
  • End. per terminare.

Regole di scrittura essenziale

  • Ogni comando deve terminare con punto e virgola, il Begin fa eccezione.
  • L’End finale termina sempre in punto.
  • Prima di un Else non ci va mai il punto e virgola.

Funzioni predefinite

Legate a scrittura o lettura di una variabile

  • Clrscr; cancella l’output corrente
  • Delay(x); interrompe per x millisecondi il programma (solo in ambienti msdos)
  • Write(x); scrive x
  • Writeln(x); scrive x e va a capo
  • Writeln; scrive una riga vuota
  • Read(x); legge x da tastiera premendo invio
  • Readln(x); legge x da tastiera premendo invio e va a capo
  • Readln; crea una pausa che termina premendo invio
  • Sound(x); emette un bip alla frequenza inserita (occorre terminarlo con nosound;)
  • Nosound; interrompe il beep
  • X=Readkey; legge x da tastiera

Legate a calcoli con numeri interi

  • x=Sqr(x); calcola il quadrato di x
  • x=Chr(x); trova il carattere ASCII corrispondente a x
  • x=Sqrt(x); calcola il radicale di x
  • x=(x)div(y) esegue la divisione tra x e y
  • x=(x)mod(y) calcola il resto intero tra x e y

Legati a calcoli con numeri reali

  • x=In(x); calcola il logaritmo naturale di x
  • x=Int(x); calcola restituendo la parte intera di x
  • x=Sin(x); calcola il seno di x
  • x=Abs(x); calcola il modulo di x
  • x=Cos(x); calcola il coseno di x
  • x=Round(x); calcola approssimando ad intero x

Legati a calcoli con stringhe di testo

  • x=Lenght(x); conta il numero di caratteri di x

Calcoli con un carattere

  • x=Ord(x); individua il numero corrispondente a x come carattere

Condizioni logiche

Servono per definire un controllo tra più variabili.

  • (a<b) a minore di b
  • (a>b) a maggiore di b
  • (a<=b) a minore o uguale a b
  • (a>=b) a maggiore o uguale a b
  • (a<>b) a diverso da b
  • (a=b) a uguale a b

Operazioni logiche

Servono per definire un controllo tra più condizioni logiche.

  • ()and() Verifica una congiunzione logica
  • ()not() Verifica una negazione logica
  • ()or() Verifica una disgiunzione logica
  • ()xor() Verifica una disgiunzione esclusiva logica

Strutture iterattive

Servono per ripetere un operazione a seconda dell’uso.

  • While do
    Cosa fa: Controlla una condizione e ripete un’istruzione finchè la condizione è vera
    come si presenta: While (condizioni) do begin … end
  • Repeat until
    Cosa fa: Esegue un’istruzione e la ripete fintanto che la condizione non risulta vera
    Repeat (istruzioni) until (condizioni)
  • For to do
    Cosa fa: Impone un valore iniziale e finale, ripetendo un istruzione n volte
    Come si presenta: for a to n do begin (istruzioni) end

Perfezionare manualmente il boot loader Grub

Attenzione: Articolo tecnico scritto nel 2010! Segui a tuo rischio.

Cos’è grub

Grub è il Boot loader di molte distribuzioni GNU/Linux: un programma che parte all’accensione del PC per far scegliere da quale partizione o con quali altre opzioni avviare il PC.

Immagine di Grub

Puoi rimuovere tutti i menù inutilizzati e rinominare gli altri.

Piccola precauzione

Per ovvi motivi è bene copiare il testo del file /boot/grub/grub.cfg da qualche altra parte. Puoi farlo lanciando da terminale:
sudo cp /boot/grub/grub.cfg /boot/grub/grub.cfg.bak
Così se capita qualcosa, da Ubuntu Live possiamo mettere tutto come prima.

E’ poi importante non copiare e incollare indiscriminatamente il contenuto di qualsiasi guida direttamente nei file di sistema come quelli di Grub: I dati cambiano da computer a computer.

Semplifichiamolo

Per rinominare o rimuovere i menù inutili puoi modificare /boot/grub/grub.cfg in questo modo:

  • Applicazioni → Accessori→ Terminale
    gksudo gedit /boot/grub/grub.cfg

A questo punto si aprirà il file di configurazione di Grub: cerchiamo con CTRL+F la parola “menuentry” per evidenziare nel file gli elementi d’avvio.

Immagine del listato di grub offerta dal Reyboz Blog

Il primo menuentry che si evidenzierà, rappresenta Ubuntu, e si riconosce da:

menuentry 'Ubuntu, con Linux 2.6.32-25-generic' --class ubuntu --class gnu-linux --class gnu --class os {recordfail
insmod ext2
set root='(hd0,5)'
search --no-floppy --fs-uuid --set c48efbff-0799-443a-bf46-8da16c687fe7
linux    /boot/vmlinuz-2.6.32-25-generic root=UUID=c48efbff-0799-443a-bf46-8da16c687fe7 ro  vga=791 quiet  quiet splash
initrd    /boot/initrd.img-2.6.32-25-generic
}

Modifichiamo quindi solamente il titolo a nostro piacimento e lasciamo intatto tutto il resto in modo che risulti:

menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os {recordfail
insmod ext2
set root='(hd0,5)'
search --no-floppy --fs-uuid --set c48efbff-0799-443a-bf46-8da16c687fe7
linux    /boot/vmlinuz-2.6.32-25-generic root=UUID=c48efbff-0799-443a-bf46-8da16c687fe7 ro  vga=791 quiet  quiet splash
initrd    /boot/initrd.img-2.6.32-25-generic
}

Osserviamo invece l’ultimo menuentry, esso rappresenta la nostra seconda partizione, nel caso di alcuni, ad esempio Windows XP.

menuentry "Microsoft Windows XP Home Edition (on /dev/sda1)" {
insmod ntfs
set root='(hd0,1)'
search --no-floppy --fs-uuid --set 661ccc411ccc0e4d
drivemap -s (hd0) ${root}
chainloader +1
}

Modifichiamo a nostro piacimento anche questo il titolo, in modo che risulti più semplice:

menuentry "Windows XP" {
insmod ntfs
set root='(hd0,1)'
search --no-floppy --fs-uuid --set 661ccc411ccc0e4d
drivemap -s (hd0) ${root}
chainloader +1
}

Invece, per nascondere le modalità ripristino basta aggirarli vendendoli come commenti, mutantoli da così:

menuentry 'Ubuntu, con Linux 2.6.32-24-generic (modalità ripristino)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,5)'
search --no-floppy --fs-uuid --set c48efbff-0799-443a-bf46-8da16c687fe7
echo    'Caricamento Linux 2.6.32-24-generic...'
linux    /boot/vmlinuz-2.6.32-24-generic root=UUID=c48efbff-0799-443a-bf46-8da16c687fe7 ro single  vga=791 quiet
echo    'Caricamento ramdisk iniziale...'
initrd    /boot/initrd.img-2.6.32-24-generic
}

A così:

# menuentry 'Ubuntu, con Linux 2.6.32-24-generic (modalità ripristino)' --class ubuntu --class gnu-linux --class gnu --class os {
# recordfail
# insmod ext2
# set root='(hd0,5)'
# search --no-floppy --fs-uuid --set c48efbff-0799-443a-bf46-8da16c687fe7
# echo    'Caricamento Linux 2.6.32-24-generic...'
# linux    /boot/vmlinuz-2.6.32-24-generic root=UUID=c48efbff-0799-443a-bf46-8da16c687fe7 ro single  vga=791 quiet
# echo    'Caricamento ramdisk iniziale...'
# initrd    /boot/initrd.img-2.6.32-24-generic
# }

Stessa cosa per i vari memorytest, che li facciamo diventare da così:

menuentry "Memory test (memtest86+)" {
insmod ext2
set root='(hd0,5)'
search --no-floppy --fs-uuid --set c48efbff-0799-443a-bf46-8da16c687fe7
linux16    /boot/memtest86+.bin
}

A così:

# menuentry "Memory test (memtest86+)" {
# insmod ext2
# set root='(hd0,5)'
# search --no-floppy --fs-uuid --set c48efbff-0799-443a-bf46-8da16c687fe7
# linux16    /boot/memtest86+.bin
# }

Riavvio di ubuntu offerto dal Reyboz Blog

Infine salvando il file e riavviando il computer, vedrete il frutto delle vostre fatiche con una schermata pulita e molto più  apprezzabile che includerà soltanto:

-Ubuntu

-(vostro sistema secondario)