Author Topic: [ LINUX][DSTR] YaGLiB 0.07  (Read 20647 times)

0 Members and 1 Guest are viewing this topic.

Offline franz1789

  • Vagrant
  • Administrator
  • Militante
  • *****
  • Posts: 767
    • Been Smoking Too Long
Re: [ LINUX][DSTR] YaGLiB 0.05
« Reply #60 on: Fri 01 August 2008, 19:26 »
sì, questo è il prpblema. Ci sono tuxfamily, berlioz, GForge, launchpad (ma forse sono per le "ubuntate"). Sennò, io prenderei una bell'hosting gratuito e metterei la distro da scaricare su torrent (anche se non so quanto possa essere conveniente)

Offline Raid

  • Administrator
  • Membro esperto
  • *****
  • Posts: 2200
    • www.darkforge.it
Re: [ LINUX][DSTR] YaGLiB 0.05
« Reply #61 on: Sat 02 August 2008, 14:07 »
non so, tenere il pc accesso 24h si bevwe un bel po di corrente, mi faccio un giro di mail e chiedo i vari hosting, con magari la possibilità di mettere loro banner nella pagina di download. un idea l'avrei

Offline MsZ

  • Il Manutentore
  • Militante
  • ******
  • Posts: 913
  • GNUru Meditation
Re: [ LINUX][DSTR] YaGLiB 0.05
« Reply #62 on: Sat 02 August 2008, 14:16 »
Quasi quasi. Però intanto è meglio fare le cose "in famiglia" per non prendere cantonate leggendarie.

Ringrazio tutti per il supporto, comunque. :smile:

Offline Raid

  • Administrator
  • Membro esperto
  • *****
  • Posts: 2200
    • www.darkforge.it
Re: [ LINUX][DSTR] YaGLiB 0.05
« Reply #63 on: Sat 02 August 2008, 14:24 »
bhè certo, inizialmente tutto in famiglia, parlavo a lungo termine, per i primi passi ci attrezziamo tra noi :wink:

Offline MsZ

  • Il Manutentore
  • Militante
  • ******
  • Posts: 913
  • GNUru Meditation
Re: [ LINUX][DSTR] YaGLiB 0.05
« Reply #64 on: Thu 04 September 2008, 21:41 »
Bene, ecco la situazione.

La LiveCD sta per nascere, sebbene ci siano ancora dei bug a livello di console (non vengono riconosciute le vocali accentate, ignoro la causa :deluso: ), però è stabile e stracollaudata. Mancano solo gli script del live (li ho già abbozzati) e il kernel compilato ad hoc + initramfs. Ci sto mettendo più tempo del previsto, per molti motivi.

La cosa nuova è che ho appena acquistato (oggi) un Asus eeePc 7014G con Xandros preinstallata. E la Xandros, così com'è, mi fa veramente schifo. (Opinione personale. :sdentato: ) NON l'eeePc, è carinissimo. :wub:
Da smanettone quale sono mi dà fastidio il fatto che non ci sia un collegamento diretto con la console virtuale da X (long live alt+f2), e che abbiano scelto KDE al posto di DE più leggeri e (quasi) altrettanto intuitivi (Xfce in primis con un po' di hack). Tra le (molte) altre cose. Inoltre ho visto codice proprietario e forse so come liberarmene.

Il sistema, così come si compra, sembra più che altro un minuscolo portatile mascherato da palmare, e la cosa che più mi dà fastidio di tutte è che chi non è abbastanza smaliziato con GNU/Linux può facilmente scambiarlo per quest'ultimo. Perchè è GNU. Solo che i tool più importanti sono sepolti sotto un ambiente grafico quasi impenetrabile.

Va beh. Il punto è che ho una mezza idea di portare la mia distro su eeePc. Prima però dovrò conoscere a fondo la macchina, vedere quello che può e non può fare (un po' di cose le ho già viste e mi stanno assai simpatiche). Bisogna strippare un disastro di cose perchè lissù non ci stanno tutte. Inoltre bisogna usare cautela con l'SSD da 4G, perchè eccessive riscritture possono accorciarne la vita. Forse è per questo che usano unionFS.

Comunque. Prima cerco di finire il live testuale, e poi vedo di avvicinarmi a questo (ve l'immaginate la SharkLinux su eeePc che scarica in bomba via wireless direttamente sulla schedina SD da 8GB? Che beeeeeeello :viaggio: )

Anzi, mi sa che potrei concentrarmi su questo... :think:
Prima però devo fare almeno un live, per vedere come funziona, se non altro.

(Il nome della distro su eeePc deve essere un altro, non mi piacerebbe un nome così "ugly" come YaGLiB su un cosetto così carino :happy: )

Offline MsZ

  • Il Manutentore
  • Militante
  • ******
  • Posts: 913
  • GNUru Meditation
Re: [ LINUX][DSTR] YaGLiB 0.07
« Reply #65 on: Tue 30 September 2008, 14:58 »
La versione attuale è la 0.07 (faccio un salto alla 0.10 direttamente se mi funziona il live) e spero di aver finito i controlli di init per initramfs.

Ho praticamente dovuto ristudiarmi daccapo il sistema di boot di un sistema GNU/Linux a partire dal kernel (anzi: a partire da GrUB) il che, combinato con il lavoro e le altre cose, mi ha portato via un sacco di tempo e la prima beta è slittata paurosamente.

Adesso scrivo un po' di cose solo per fare lo sborone ( :sdentato: ) e per ripassare insieme a voi la teoria del boot di GNU/Linux. Tralascerò gli eventuali messaggi d'errore.

In sostanza abbiamo:
(saltando la parte del BIOS)
--GrUB (MBR) (stage 1)--
In MBR ci sono scritti degli offset che fanno riferimento a delle posizioni del disco rigido di sistema, che GrUB deve andarsi a leggere.
Nei primi 30k del disco immediatamente successivi all'MBR sta lo stage 1.5 di GrUB, che carica lo stage 2. Ed ecco che salta all'occhio l'interfaccia di GrUB. Quella non sta nell'MBR: sta sul disco di sistema.
Le opzioni di GrUB sono modificabili, oppure è possibile accedere alla shell di GrUB con un primitivo command line editing.
Una volta selezionato il sistema operativo GrUB confronta la selezione operata e va a vedersi la tabella degli offset delle partizioni per sapere dove andare a pescare il kernel da caricare. Dopodichè GrUB carica il kernel selezionato in memoria e successivamente passa il controllo ad esso.

--linux--
Quando Linux è caricato "si accorge" di essere caricato (perchè è GrUB che gli dice 'Ehi, sei tu che comandi adesso') e si sposta in un'altra area di memoria (non ricordo quale ma ricordo che è per un motivo preciso... che non ricordo qual è :sdentato: ). Poi comincia il lavoro del kernel.
Inizializza l'hardware, il processore, i bus, le porte (USB, COM, IEEE vari, PS/2 eccetera) e le periferiche (scheda video, scheda audio, monitor, controllori vari sulla scheda madre, e tutto quello che è supportato da Linux internamente. I moduli sono una cosa a parte ed è a questo che serve initramfs.
Ad un certo punto, quando ha finito di inizializzare il sistema, il kernel si chiede 'Dov'è init? Dov'è il processo 1, padre di tutti i processi?'
Nota: init può non essere un eseguibile, ma piuttosto uno script bash avviabile (quindi con flag +x per amministratore).
Ed ecco che cominciano le magagne. Ecco dove finisce il lavoro del kernel e comincia quello dell'amministratore del sistema.

--initramfs--
Nei sistemi con initramfs, al kernel è sempre accoppiato un file compresso (solitamente) che viene caricato in memoria: il kernel alloca dello spazio in memoria come tmpfs e ci carica l'archivio compresso initramfs. Il bello è che all'interno il kernel deve trovare tutto quello che gli serve per trovare la vera partizione di root, ovvero:
1-i moduli che, caricati, diano l'accesso in lettura a periferiche supportate dai moduli stessi;
2-eventuali moduli che danno l'accesso in lettura a determinati filesystem;
3-ulteriori moduli per attivare periferiche non direttamente supportate dal kernel;
4-un file eseguibile (script o binario) che generi processi, o che faccia qualcosa che porta avanti il processo di boot. Solitamente questo ruolo spetta ad init.

Poi l'eseguibile di boot deve:
0-creare i mountpoint per il montaggio dei filesystem (e qui c'è un altro discorso di udev, periferiche, ricerche e quant'altro)
1-montare il (o i) filesystem root reali;
2-liberare spazio in memoria (eventualmente, ma normalmente viene fatto);
3-spostare l'ambiente operativo dall'initramfs alla root reale;
4-cambiare i riferimenti (se necessario) delle librerie e/o dell'ambiente dalla initramfs alla vera root;
5-passare il controllo alla vera root;
6-passare il controllo al vero init, quello che sta nella vera root, con gli argomenti dell'init in initramfs, se ce n'erano.

A quel punto initramfs ha terminato il suo compito. Ma in mezzo c'è tutta una serie di verifiche e confronti. E per un liveCD è ancora peggio, perchè se hai un lettore ottico esterno devi fargli caricare moduli per la lettura di periferiche USB (come sd la stragrande maggioranza delle volte, ma anche sg o sr nel caso di masterizzatori). Poi devi dire al kernel di andare a cercare l'immagine del filesystem da caricare, e se non c'è, o se il blocco device non esiste, o se il blocco device non è un filesystem iso9660, o se il blocco device è un iso9660 ma non ha il filesystem compresso bisogna dire "aspetta, aspetta, come non detto", smontare il blocco (se è montato) e fargli rimontare il prossimo.
Un lavoro 'grosso' di riconoscimento, che è ingigantito dal fatto di voler far riconoscere al sistema un liveCD piuttosto che un'installazione su disco rigido.

Allora ho pensato ad una cosa furba. Ho messo tutti i moduli script all'interno di uno solo (init) e ho previsto la presenza di un flag kernel chiamato "live". Se è a 0 non è una live e procede il boot da disco. Se il flag è 1 è una live e deve fare tutta la serie di verifiche a cui ho accennato prima. Prendono due strade diverse.
Alla fine, qualsiasi sia stato il caso preso in considerazione, c'è una root montata ed un initramfs che viene messo da parte. C'è una rilocazione delle librerie e lo spostamento dell'ambiente operativo.

Per quanto riguarda il liveCD ho previsto due casi.
Caso 1: il computer ha più di 512 MB di memoria RAM.
"Semplicemente" vengono creati dei mountpoint tmpfs in RAM dove viene ricopiata l'immagine del filesystem in squashfs e, tramite unionfs, si viene a creare un ambiente di sola lettura che fa riferimento alla squash (bin, sbin, usr, lib, eccetera) e un ambiente in lettura e scrittura che riporta tutte le altre cartelle (tra cui home, var, tmp e altre).
Caso 2: il computer ha meno di 512 MB di memoria RAM.
In questo caso è appena un po' più semplice. Non viene creato mountpoint per la gestione della squash e il filesystem in sola lettura viene montato direttamente da CDROM. Il procedimento di creazione della root è analogo. Il risultato finale è esattamente equivalente, solo che non c'è il vantaggio della velocità della RAM nella lettura dei file di sistema.

Beh, ora non mi resta che provarla... e incrociare le dita.

 

Creative Commons License All ValerioCipriani.com contents are published according to Creative Common License, except different instructions. The Staff is not responsible of eventually guide, article and publishing mistakes. All published items are patent free. All trade marks reported are right reserved. Contact us, Info.