pazza idea: grub randomico

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

pazza idea: grub randomico

Messaggio da ZeroUno »

Mi è frullata in testa una idea pazza, ma forse è l'unica soluzione (se fattibile).

Ho una centos 6.2 che ha grub 0.97

Sto smanettando un po' con la configurazione del kernel, initrd e configurazione di grub.

E' chiaro che è molto facile commettere un errore fatale.

In teoria dovrei mettere due entry su grub, una buona e l'altra di test, così al fallimento di una si fa partire l'altra dal menu di grub.

Il problema è che io non ho l'accesso al menu di grub at boot time (non ho il monitor), il che significa che se faccio un errore e la macchina non riparte devo ricominciare tutto da zero.

Con lilo io metto due entry, una buona settata in 'default' e l'altra di test che richiamo con lilo -R che, solo per il boot che segue, avvia l'immagine che gli specifico io. Ma lilo non ce l'ho a disposizione.

Questa cosa è fattibile anche da grub, ma richiede l'opzione 'savedefault' che per come è installato non è supportata.

Allora l'idea pazza..
Invece di mettere "default=0" che mi carica sempre e solo la prima immagine, o "default=1" che mi carica sempre e solo quella di test (anche se fallata), gli ci metto qualcosa tipo "default=random", del tipo che quando riavvio la prima volta magari mi ricarica la prima immagine e forse anche al reboot successivo; prima o poi mi caricherà quella di test così la provo. Se è fallata la volta successiva me ne caricherà ancora una a caso, che magari è ancora quella di test, ma prima o poi mi caricherà quella buona così da poter sistemare quella fallata.
Si può fare una cosa del genere? (che poi è anche carino per un sistema dual boot.. "ti carico una distribuzione a caso" ;) )

Il motivo per cui non posso mettere lilo né ho accesso a savedefault è che si tratta di una macchina virtuale in tecnologia xen; se vado in /boot/grub c'è solo il menu.lst; per quanto ne so io di xen, gli stage1 e 2 vanno messi sulla macchina host e non sul guest perchè sono particolari visto che a differenza di vmware (e forse anche virtualbox) non esiste un virtual bios che emula in tutto e per tutto quello di un pc reale. Tali stage di xen mi caricheranno il menu.lst che è sul filesystem e il resto procede come normale, ma il savedefault non potrà scrivere in quegli stage del sistema host.
Con xen l'accesso alla console mi avviene tramite una interfaccia vnc che viene inizializzata durante il caricamento del kernel (prima che arriva all'initrd, quindi se c'è da far troubleshooting sull'initrd non ci sono problemi, ma se devo dare parametri al kernel li devo necessariamente scrivere dentro menu.lst).
Per "ricominciare da capo" intendo che con una interfaccia di amministrazione devo distruggere il server virtuale e ricrearlo da un template (totale 10 minuti scarsi, ma devo reinstallare e ricustomizzare i pacchetti aggiuntivi; una scocciatura ogni volta)
Si può fare il boot randomico? o c'è una soluzione alternativa?
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
slux
Linux 3.x
Linux 3.x
Messaggi: 789
Iscritto il: dom 20 mar 2005, 0:00
Nome Cognome: Andrea Amerini
Slackware: 14.1 x86
Kernel: 3.12.0-smp
Desktop: xfce 4.10
Località: Prato
Contatta:

Re: pazza idea: grub randomico

Messaggio da slux »

Ciao,
non credo che esista l'opzione "random" a meno che non modifichi il sorgente.
Ora io non conosco XEN e magari quello che ti suggerisco è solo una cavolata,ma abilitare in GRUB l'output via seriale per bypassare il monitor?
Qui trovi l'howto http://www.cyberciti.biz/faq/linux-seri ... ole-howto/.
Se ho detto una castronata chiedo perdono in ginocchio sui ceci [-o<

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: pazza idea: grub randomico

Messaggio da ZeroUno »

xen è un sistema di virtualizzazione come vmware o virtualbox o qemu, e in quanto tale virtualizza tutto l'hardware, quindi la seriale non ce l'ho. Inoltre dubito che il mio hosting mi consenta di andare nel loro ced e connettere un cavo seriale ;).
L'hosting mi mette a disposizione un pannello di controllo con cui posso accedere al monitor virtuale con un'applet java.

Per bootare xen mette lo stage1 e lo stage2 sui dischi fisici, a cui non ho accesso, e il menu.lst sui dischi virtuali. Se modifico il sorgente e ricompilo grub comunque non potrei cambiare stage1 e stage2 che rimarrebbero alla versione originale.


Grazie comunque
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: pazza idea: grub randomico

Messaggio da ZeroUno »

Allora,
qualcosa sono riuscito a fare.

Aggiungendo l'opzione "fallback 1" a menu.lst se il primo kernel non viene caricato allora passa al secondo.
Però solo a "grub-time".
Cioè, se scrivo male il nome del file e quindi non lo trova, o per qualche motivo non riesce a caricarlo, allora mi passa al successivo (ho provato e funziona).
Ma se il kernel lo carica e magari va in kernel panic a grub non gli frega niente... lui lo considera caricato.
Ma è già qualcosa, anche perchè una volta che il kernel lo ha caricato ho il monitor attivo e posso prendere le opportune contromisure.

Invece attualmente il mio caso è che il kernel grub non me lo carica proprio.

il .config è quello del kernel huge di slackware64-current (3.10.7) più poche altre cose; la dimensione è di 6557840 byte, contro quello di slackware che è di 6420304.
Pensate possa essere troppo grande per grub 0.97?
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: pazza idea: grub randomico

Messaggio da ZeroUno »

Sono riuscito a ridurre il kernel a 3.3MB, ma non lo carica comunque.

Ho clonato la macchina virtuale e l'ho copiata su una vmware per vedere se caricando il kernel mi dava "troppo grosso" o qualcosa di simile.
(quì però ho dovuto rifare grub-install e mettere stage1 e stage2 in /boot/grub)

Carica tutto perfettamente.

Dubito che grub si mette a vedere che si tratta di un kernel 3.x piuttosto che un kernel 2.6.x

Per la cronaca ecco cosa dice 'file' del kernel mio e di quello centos

Codice: Seleziona tutto

root@ts108411:/boot# file bzImage-3.2.29
bzImage-3.2.29: Linux kernel x86 boot executable bzImage, version 3.2.29 (root@matteo) #1 SMP Fri, RO-rootFS, swap_dev 0x6, Normal VGA
root@ts108411:/boot# file vmlinuz-2.6.32-220.el6.x86_64
vmlinuz-2.6.32-220.el6.x86_64: Linux kernel x86 boot executable bzImage, version 2.6.32-220.el6.x86_64 (mockbuil, RO-rootFS, swap_dev 0x3, Normal VGA
nota: il kernel attuale è la versione standard di centos 6.2; non mi sembra sia customizzato per xen (nonostanta abbia la paravirtualizzazione attiva e qualche modulo di xen guest compilato builtin e modulare)
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: pazza idea: grub randomico

Messaggio da ZeroUno »

Novità.
Ho usato il .config del 2.6.32 di centos e dato in pasto a make oldconfig del 3.2.29 e fatta solo qualche piccola modifica con make xconfig.

Ha funzionato.
Nel senso che grub l'ha caricato e startato e ho visto il boot in console.
Ha panicato, ma non avevo dubbi (ho copiato solo il bzImage ed ho usato il ramdisk del 2.6.32), ma almeno grub me l'ha passato.
Ed ora quale sarà l'opzione che gli dava fastidio???

Peccato che ora devo distruggere e ricreare il virtualserver per il troubleshooting perchè ormai per grub è ok e non mi fa fallback al successivo :(
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: pazza idea: grub randomico

Messaggio da ZeroUno »

bene; ora starta e inizializza pure la rete con 3.10.7 e config del 2.6.32

Il problema è che io sto cercando di rendere tutto più simile possibile a slackware, e i due config sono nettamente diversi.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: pazza idea: grub randomico

Messaggio da ZeroUno »

con l'operazione che ho fatto, ovvero:
1) copia .config del 2.6.32 di centos nei sorgenti del 3.10.7
2) make oldconfig lasciando la scelta di default a tutte le opzioni nuove
3) make xconfig per piccolo tuning (ext3+controller dischi compilati staticamente)
4) make
5) make modules_install
la /lib/modules/3.10.7 viene di 1.2GB !!!!
la dir modules di slackware ha 3900 file ed è di 140M
la dir modules risultante dalla procedura sopra ha 1900 file ed è di un 1.2G

Perchè?


edit:
un modulo a caso:

slackware: -rw-r--r-- 1 root root 19853 Aug 15 10:59 ./kernel/fs/fat/vfat.ko
nuvo: -rw-r--r-- 1 root root 302978 Aug 19 10:25 ./kernel/fs/fat/vfat.ko
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Rispondi