Autor Thema: LNX Partitionskennung  (Gelesen 9159 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline maanke

  • Benutzer
  • Beiträge: 584
LNX Partitionskennung
« am: Di 09.12.2014, 09:42:03 »
Hallo,

da es immer wieder Probleme bei EasyMiNT mit der LNX Kennung beim User gibt, dachte ich mir man könnte die Kennung von EM direkt aus erstellen. Nur ich habe keinen Plan wie man sowas programmiert, weiß das hier vielleicht jemand?

maanke
Neue URL der EasyMiNT-Seite:
http://atari.grossmaggul.de

Offline mfro

  • Benutzer
  • Beiträge: 1.640
Re: LNX Partitionskennung
« Antwort #1 am: Di 09.12.2014, 10:25:45 »
Die Partitionsinformationen liegen bei Atari-Platten im Rootsektor (dem physisch ersten Sektor des Mediums).

Von den 512 Bytes, die in diesem Sektor stehen, interessieren zunächst nur die ab Offset $1c2. Da steht - zumindest bei AHDI-kompatibler Formatierung - folgendes (hier als - gepacktes - C-struct):

struct partinfo
{
    int32_t hd_siz; /* Anzahl der Partitionen auf der Platte */
    char p0flg; /* Bit 0=1 -> Partition existiert */
                                /* Bit 1-6 -> reserviert (=0) */
/* Bit 7=1 -> Partition ist bootbar */
    char p0_id[3]; /* Partitionskennung (GEM, BGM, LNX, ...) */
    int32_t p0_st; /* Startsektor der Partition */
    int32_t p0_siz; /* Größe der Partition in 512-Bytes-Sektoren */
    char p1flg; /* dasselbe für die drei anderen primären Partitionen */
    char p1_id[3];
    int32_t p1_st;
    int32_t p1_siz;   
    char p2flg;
    char p2_id[3];
    int32_t p2_st;
    int32_t p2_siz;
    char p3flg;
    char p3_id[3];
    int32_t p3_st;
    int32_t p3_siz;
    int32_t bsl_st; /* start der Defektliste */
    int32_t bsl_cnt;            /* Größe der Defektliste */
    int16_t cksum;              /* Prüfsumme */
};   

Wenn Du dich auf primäre Partitionen (die ersten vier) beschränkst (mit erweiterten Partitionen würde es deutlich komplizierter), mußt Du also "nur" in das entsprechende Feld "px_id" "LNX" reinschreiben, die Prüfsumme neu berechnen (muß $1234 sein) und die fünf Bytes an die richtige Stelle auf die Platte schreiben (Rwabs()).

(für zerschossene Platten übernehme ich keine Haftung ;) )
And remember: Beethoven wrote his first symphony in C

Offline maanke

  • Benutzer
  • Beiträge: 584
Re: LNX Partitionskennung
« Antwort #2 am: Di 09.12.2014, 12:40:22 »
Danke für die Antwort.

Aber das hier

Zitat
Wenn Du dich auf primäre Partitionen (die ersten vier) beschränkst

wäre schon schlecht. Ich glaube dann lasse ich es lieber. :D
Neue URL der EasyMiNT-Seite:
http://atari.grossmaggul.de

Offline mfro

  • Benutzer
  • Beiträge: 1.640
Re: LNX Partitionskennung
« Antwort #3 am: Di 09.12.2014, 13:43:55 »
wäre schon schlecht. Ich glaube dann lasse ich es lieber. :D

Auch das geht natürlich.

Für erweiterte Partitionen steht dann im Partitionstyp im Rootsektor "XGM" und dort, wo (bei einer "normalen" Partition) der Bootsektor stünde, findet man stattdessen einen weiternen "Hilfs"-Rootsektor. Der sieht (fast) genauso aus wie der erste, hat aber maximal zwei Partitionen: die erste ist wieder Typ "GEM", "BGM" oder "LNX" (oder auch "UNX"), die zweite gibt's entweder nicht (dann gibt's auch keine weiteren Partitionen mehr) oder es steht wieder "XGM" drin - dann geht das Spielchen weiter (kann sich beliebig oft wiederholen).
And remember: Beethoven wrote his first symphony in C

Offline maanke

  • Benutzer
  • Beiträge: 584
Re: LNX Partitionskennung
« Antwort #4 am: Di 09.12.2014, 15:54:11 »
Ich fürchte das bekomme ich nicht auf die Reihe.:-/
Neue URL der EasyMiNT-Seite:
http://atari.grossmaggul.de