[bglug] Problemi con Software RAID1 e LILO ... lungo

Andrea Flori andrea@moltimedia.it
Gio 28 Ago 2003 11:17:59 CEST


...
>  >in realtà quello di cui mi sto sempre piu' convincendo e' che POSSO
> > farlo (-F x forzare lilo)
> > nel senso che md1 contiene un bootsector sporco che ha di corretto
> > solo gli ultimi 2 byte (0x55AA)
> > le partizioni a cui fa riferimento sono ovviamente 'inconsistenti'
> > anche come numero di settori, cilindri e testine
>
> Ok mi hai convinto, tant'è vero che analizzando il boot sector del tuo
> MD1 si evince che è l'NTLDR (NT Loader).
> Qualcuno in lista concluderebbe:
> alla fine di tutto è sempre colpa di Windows ;-)

Gia' e' colpa di Windows !!!

Rileggendo con + attenzione quello che avevo trovato..

[ http://www.cs.helsinki.fi/linux/linux-kernel/2002-26/0129.html ]
...
If I grep for "Filesystem would be destroyed" in the LILO sources
I find it in lilo-22.3.1/bsect.c:


ireloc = part_nowrite(boot_dev);
if (ireloc>1) {
die("Filesystem would be destroyed by LILO boot sector: %s", boot_dev);
}


So, some routine part_nowrite() returned a value larger than 1.
This routine lives in partition.c and does


int part_nowrite(char* device)
{
int fd;
BOOT_SECTOR bs;


int ret=0; /* say ok, unless we recognize a problem partition */


if ((fd = open(device, O_RDONLY)) < 0) pdie("part_nowrite check:");
if (read(fd, bs.sector, sizeof(bs)) != SECTOR_SIZE) pdie("part_nowrite: rea\
d:");


/* check for XFS */
if (!strncmp("XFSB", bs.sector, 4)) ret=2;


/* check for NTFS */
else if ( !strncmp("NTFS", bs.par_d.system, 4)
|| strstr(bs.sector,"NTLDR") ) ret=2;


/* check for SWAP -- last check, as 'bs' is overwritten */
else if (*(long*)bs.sector == 0xFFFFFFFEUL) {
if (lseek(fd, (PAGE_SIZE)-SECTOR_SIZE, SEEK_SET) != (PAGE_SIZE)-SECTOR_\
SIZE)
pdie("part_nowrite lseek:");
if (SECTOR_SIZE != read(fd, bs.sector, sizeof(bs)) ) pdie("part_nowrite\
swap check:");
if (!strncmp(bs.sector+SECTOR_SIZE-10,"SWAPSPACE2",10)
|| !strncmp(bs.sector+SECTOR_SIZE-10,"SWAP-SPACE",10) ) ret=2;
}


/* check for override (-F) command line flag */
if (ret==2 && force_fs) {
fprintf(errstd, "WARNING: '-F' override used. Filesystem on %s may be\
destroyed.\n", device);
ret=0;
}


return ret;
}

in sostanza LILO verifica prima di sovrascrivere il boot sector della
partizione che non ci sia dentro
un bootloader NT (come ci sia arrivata nel mio disco e' un mistero... la
macchina con cui ho avuto il casino e' un server
linux da almeno un paio di anni ...  forse il disco di mirror che abbiamo
messo era stato formattato dal fornitore cosi' ...)
cercando delle semplici righe di testo "NTFS" e "NTLDR"

> > A questo punto quello che mi servirebbe e' un DiskEditor per cambiare
> > * A MANO * i bytes della
> > partizione in oggetto (tipo il buon vecchio Norton Disk Editor...)
> >
> > * * * Conoscete qualcosa ?!? * * *
>
> hexedit /dev/md1
> Se usi RedHat ce l'hai gia installato.
>

io ho trovato LDE (lde.sourceforge.net) devo ammettere che hexedit e' +
comodo e veloce !

comunque x 'ingannare' LILO e' sufficiete cancellare le tracce di NTFS e
NTLDR dal bs quindi ho sostituito solo
il testo 'NT' con 'EA' (x i + curiosi ... abbreviazione di AndrEA !) in modo
da poter ritornare in dietro ...

E LILO se l'e' bevuta ! Ci e' cascato !

Ora faccio boot da hard disk e con una bella bitmap a colori 800x600x256 !!!

NON ci posso credere, ce l'ho fatta !
E' da 2 mesi e mezzo che impazzisco x sta roba !

> > Gia' . Il casino e' che Grub legge a 'run-time' le partizioni alla
> > ricerca del kernel da leggere ed eseguire...
> > finche' non gli aggiungono il supporto per la gestione delle
> > partizioni 'FD' (Autorilevamento Linux) ed
> > almeno del RAID 1 (a me questo basterebbe!) nulla da fare ...
>
> la vedo dura, a quel punto credo si faccia prima a far riuscire
> a caricare a GRUB i moduli del kernel linux corrispondenti,
> ma qui scadiamo nella fanta-informatica :-)

... mmmh mai disperare ...
anche se sul sito di grub (http://www.gnu.org/software/grub/)
non se ne parla neppure ...

ma per adesso ...

sono a posto cosi' !!!

>
> > Sono convinto che 'alla fine chi la dura la vince'
>
> buona fortuna :-)

Grazie 1000 Diego ...

soprattutto per la pazienza e la disponibilita'
nonche' per la fortuna che mi hai portato!

Ciao

Andrea


>
> -- 
> Diego Tironi - diego@tironi.net
> PGP DH/DSS Key ID: 0x23570D06
> Fingerprint: 17CB 8495 2471 9AD9 C052  A8E7 3602 1BC7 2357 0D06
> Veritas vos liberabit
>
>
> -- 
> Mailing list info: http://lists.linux.it/listinfo/bglug
>
> BgLUG-biz! - il mercatino del BgLUG:
> http://alsoftech.com/mailman/listinfo/bglug-biz_alsoftech.com



Maggiori informazioni sulla lista bglug