PDA

Visualizza la versione completa : script bash per rilevare il bootloader


submax82
28-05-2007, 02:24
avrei bisogno di scrivere uno script bash per rilevare il bootloader in uso cioè se è grub o lilo per esempio...

nessuno a delle dritte/consigli?

vi ringrazio anticipatamente ;)

:ciauz:

grazie raga :mame:

cacao74
28-05-2007, 02:51
Questo l'ho ricavato dalla macchina su cui sto lavorando ora...


sudo dd if=/dev/hda bs=446 count=1 2> /dev/null | od -w446 -c | grep -o "G *R *U *B" | sed "s/ //g"
GRUB

sudo dd if=/dev/hda bs=446 count=1 2> /dev/null | strings | grep -i grub
GRUB

Ed in effetti e' utilizzato Grub.

Domani vedo di trovare una macchina con lilo e ti faccio sapere.

notte :sonno:

submax82
28-05-2007, 03:01
grazie mile!!! :smack: :smack: :smack:

appena posso ... me lo studio meglio :zizi:

ora vado a nanna :sonno:

ancora grazie mille!!! :yuppi:

edit: il problema è che così devo sapere su che device è installato... prima di dare quei comandi...

francofait
28-05-2007, 04:06
se vuoi il bootloader primario , sta sempre su primary master boot record , quindi a meno che non sia stato invertito l' ordine di avvio dei dischi nel bios disco 0 settore 0 traccia 0 (hda di conseguenza)

submax82
28-05-2007, 11:39
Originariamente inviato da francofait
se vuoi il bootloader primario , sta sempre su primary master boot record , quindi a meno che non sia stato invertito l' ordine di avvio dei dischi nel bios disco 0 settore 0 traccia 0 (hda di conseguenza)

ottima notizia anche se sarebbe bello rilevare anche quella situazione, un metodo per lilo CREDO potrebbe essere questo


lilo -t -v
LILO version 22.7.1 (test mode), Copyright (C) 1992-1998 Werner Almesberger
Development beyond version 21 Copyright (C) 1999-2005 John Coffman
Released 17-Sep-2005 and compiled at 00:33:53 on Aug 8 2006.

Warning: LBA32 addressing assumed
Reading boot sector from /dev/hda

che ne pensi?

grazie del chiarimento ;)


Domani vedo di trovare una macchina con lilo e ti faccio sapere.

funziona benissimo anche con lilo


dd if=/dev/hda bs=446 count=1 2> /dev/null | strings | grep -i lilo
LILO
üLILOu)^h

grazie ragazzi ;)

submax82
28-05-2007, 16:00
@cacao74

ho capito perchè hai messo 446 infatti per chi lo volesse sapere:


the first stage of boot loaders located on hard drives must fit into the first 446 bytes of the Master Boot Record, in order to leave room for the 64-byte partition table and the 2-byte 0xAA55 'signature', which the BIOS requires for a proper boot loader.

http://www.pixelbeat.org/docs/disk/

ora la cosa che risolverebbe il problema al 1000% sarebbe sapere dove il bootloader è installato cioè su quale device... per far fronte anche alla situazione descritta da francofait

inoltre quali dei due metodi, da te descritti, mi consigli? considerando pro e contro...

submax82
28-05-2007, 18:53
potrei fare il test su tutti i device presenti... nella lista


cat /proc/partitions | awk '{print $4}' | egrep "^(h|s){1}d[a-z]{1}$"

fino a incontrarne uno con il bootloader installato... in questo modo anche se lo ha cambiato il disco di boot dal bios e quindi il device è diverso da hda o sda ... il sistema di rilevamento...funziona ancora...

però c'è anche il caso in cui il bootloader può essere installato su entrambi i dischi se ne ha due... quindi c'è un modo per sapere che disco boota, in modo da prendere l'MBR del disco corretto da analizzare per determinare il tipo di bootloader?

submax82
29-05-2007, 11:54
idee?

cacao74?

submax82
29-05-2007, 17:02
molto interessante

http://search.cpan.org/~bryce/Linux-Bootloader-1.3/lib/Linux/Bootloader/Detect.pm

sembra che più o meno usa le strategie che abbiamo scritto...

submax82
01-06-2007, 17:10
grazie a tutti :smack: :smack: :smack:

sono riuscito a implementare quello che mi serviva... :sbav:

kernelpkg stà diventando sempre meglio di versione in versione :yuppi: :yuppi:

Loading