Jak vlastně vypadá diskový oddíl?

Lol Phirae

Re:Jak vlastně vypadá diskový oddíl?
« Odpověď #15 kdy: 02. 10. 2017, 19:12:44 »
Citace
Mým cílem je přečíst SD kartu arduinem, ideálně s jakýmkoliv FAT systémem.

Výtečně. Tak ten produkt prosímtě hlavně nikomu neprodávej. Díky a páááá.

 ;D ::) :o ???
 ;D ::) :o ???
 ;D ::) :o ???


Student

Re:Jak vlastně vypadá diskový oddíl?
« Odpověď #16 kdy: 02. 10. 2017, 19:50:42 »
Citace
Mým cílem je přečíst SD kartu arduinem, ideálně s jakýmkoliv FAT systémem.

Výtečně. Tak ten produkt prosímtě hlavně nikomu neprodávej. Díky a páááá.

 ;D ::) :o ???
 ;D ::) :o ???
 ;D ::) :o ???

Neboj, nebudu. Je to pro moji vlastní potřebu. Jinak bych to nedělal s Arduinem (resp. vůbec bych k tomu nepřistupoval takhle). BTW ty víš co je ten hexakód nebo ne? Nějak jsem v tvojem příspěvku přehlídl podrobnější popis...

Milfaus(ten pravej)

Re:Jak vlastně vypadá diskový oddíl?
« Odpověď #17 kdy: 02. 10. 2017, 20:26:40 »

Měl by jsi se soustředit na problém kamaráde.
Je řada projektů, které zpřístupňují CF kartu i pro zápis.

Například:
Atarimax MyIDE-II CompactFlash Cartridge

Běželo poměrně dost seriálů "Arduino a SD karta" a v Angličtině i s lepším popisem.
Pro Arduino by měly existovat i knihovny: https://www.arduino.cc/en/Reference/SD

Většina těch projektů je lépe nebo hůře dokumentovaná a dá se z toho hrozně moc přečíst a naučit.

Obecně se dá říct, že spojení Arduino a SD karta s FAT je mimořádně dobře prošlapaná cestička.
Až tak, že bych si troufal říct "Je to dlážděný chodník".

Tím se vracíme zpátky na začátek, pokud ti jde o Arduino, použil bych existující knihovny.
Já si původně myslel, že chceš dělat nějaký virus, který by se tam mohl schovat :-)

cteci hlava

Re:Jak vlastně vypadá diskový oddíl?
« Odpověď #18 kdy: 02. 10. 2017, 20:42:52 »
Chlape, dyt ten google prislusne odkazy vydava snad i pri dotazu na nesmrtelnost chroustu.

https://en.m.wikipedia.org/wiki/Design_of_the_FAT_file_system#RSVD_SECTORS

Student

Re:Jak vlastně vypadá diskový oddíl?
« Odpověď #19 kdy: 02. 10. 2017, 20:45:00 »

Měl by jsi se soustředit na problém kamaráde.
Je řada projektů, které zpřístupňují CF kartu i pro zápis.

Například:
Atarimax MyIDE-II CompactFlash Cartridge

Běželo poměrně dost seriálů "Arduino a SD karta" a v Angličtině i s lepším popisem.
Pro Arduino by měly existovat i knihovny: https://www.arduino.cc/en/Reference/SD

Většina těch projektů je lépe nebo hůře dokumentovaná a dá se z toho hrozně moc přečíst a naučit.

Obecně se dá říct, že spojení Arduino a SD karta s FAT je mimořádně dobře prošlapaná cestička.
Až tak, že bych si troufal říct "Je to dlážděný chodník".

Tím se vracíme zpátky na začátek, pokud ti jde o Arduino, použil bych existující knihovny.
Já si původně myslel, že chceš dělat nějaký virus, který by se tam mohl schovat :-)

Ne, virus jsem opravdu neměl v úmyslu. Na to 1) nemám, 2) i kdybych na to měl, asi bych nepsal na fórum, aby mi s tím poradili :-)

Určitě chápu, že s klasickýma knihovnama by to bylo snazší, ale říkal jsem si, že se o tom zkusím něco dozvědět. Ten assembler z toho vypadl, protože ho zatím pro Arduino používám častěji, než C. Ale jak se tak na to všechno dívám, asi změním názor. Ale když tak teď nad tím přemýšlím, tak to asi bude přece jen smysluplnější, ikdyž se nedozvím, jak to vlastně přesně funguje. Jednak ušetřím čas, jednak získám přehled o knihovnách, což pro mě bude asi z dlouhodobého hlediska lepší. Každopádně díky za nakopnutí :-)


Student

Re:Jak vlastně vypadá diskový oddíl?
« Odpověď #20 kdy: 02. 10. 2017, 20:59:44 »
Chlape, dyt ten google prislusne odkazy vydava snad i pri dotazu na nesmrtelnost chroustu.

https://en.m.wikipedia.org/wiki/Design_of_the_FAT_file_system#RSVD_SECTORS

Jop, to je hezký odkaz. Ale když si přečteš kus té dokumentace, co jsem dával hned na začátek + si pozorně přečteš příspěvky, co jsem tu postoval, tak zjistíš, že tohle všechno je na disku uložené s nějakým prefixem. A ten boot sektor, na který odkazuješ, je taky hezký, ale mě zajímá taky to, co je uložené od 0x200. Ano, vše po 0x1FF je bootovací sektor - to vím, používám Linux. Ale pokud se podíváš na výpis, Od 0x200 po 0x100000 je nějaký rozsypaný čaj. Až na 0x100000 začíná ten souborový systém FAT se svým BPB oddílem, začínajícím buď 0xEB nebo 0xE9, FAT tabulkou a případně jejich kopií (kopiemi, podle nastavení). Mě ale zajímá taky to, jestli ten prefix 0x100000 nemůže být proměnlivý. Zatím jsem se o tom moc nedočetl (ještě jsem to ale nepřečetl celé). To je mj. jedna z věcí, nad kterou přemýšlím, kromě toho, co je to vlastně za změť nad 0x200. Jak funguje FAT vyčtu z dokumentace. Mám ji dávno staženou. Co ale nevím je, jak je určená poloha toho oddílu na disku, např. proč vlastně není hned za prvním sektorem a proč je tam ten rozsypaný čaj.

Milfaus(ten pravej)

Re:Jak vlastně vypadá diskový oddíl?
« Odpověď #21 kdy: 02. 10. 2017, 21:46:24 »
Každopádně díky za nakopnutí :-)

Jestli jsem byť i jen trochu pomohl, tak jsem rád!

Víš, když pastneš nějakou část souboru, nějakou tabulku, tak to vyžaduje, aby si to někdo buď pamatoval (LOL?) nebo se v tom právě vrtal, jinak by s tím musel strávit víc času, než je většina lidí ochotná.

Já ti moc rád poradím v rámci "šáhnutí do mé paměti" případně se sestavením dotazu pro google.
Ostatně taky se tu občas ve fóru takhle ptám.

Další, řekněme dobré dotazy jsou, když chceš od někoho pomoci s algoritmem, všiml jsem si, že to tu lidi mají rádi a berou to jako sudoku, ale musíš to popsat dost obecně. Jen to nesmí vyžadovat to, aby si museli nejprve hodinu něco studovat, musíš otázku položit jasně. Kolikrát lze nějaký problém řešit rekurzí, já s tím mám třeba problém, na záležitost se podívám a nenapadne mě rekurzivní řešení. Tady na fóru jsou k dispozici i hodně velké mozky a to zadarmo. Jen před ty lidi musíš postavit hračku nebo hádanku, ale ne práci.

Nedávno jsem tu viděl tenhle post:
https://forum.root.cz/index.php?topic=16424.msg228395;topicseen#new

Zkus tomu člověku napsat, můžete se v tom hrabat oba.
Obecně, pokud máš šťourací období, tak na Zive vychází seriál o bastlení.
Bouchnul bych si nějaký inzerát na forum PCtuningu, Zive, dvě fóra o Arduinu a zkusil sehnat pár lidí, kteří si s tím hrají.
Velká výhoda pro tebe je ta, že to možná budeš táhnout vpřed, ale tím se právě nejvíc naučíš.

Jestli to chápu správně, tak tu kravinku k Arduinu koupíš cca za kilo i s nejlacinějším Čínským Arduinem.
http://www.dx.com/p/sd-card-reading-writing-module-for-arduino-148784

No i kdybys to měl třem lidem koupit a pomoct jim s rozběhnutím, aby ti oni na oplátku pomohli s programováním, tak to za to stojí. Později - mnohem později - až to bude komplet, to můžeš překlopit do projektu.
Až z toho budeš mít projekt "Univerzální připojení Arduino SD", použití ve vašich programech ...bla bla bla...
Najednou z toho máš REFERENCI!!!
A může to být i dost zajímavá reference.

Kdybych chtěl, mohl bych napsat v C# aplikačku, která data přetáhne do SQL, nebo ti je vytiskne.
Dalo by se to udělat jako univerzální tool.
Vytvoří si soubor s deskriptory, spustíš program a ono ti to spustí Excel a hodnoty zobrazí v Grafu.

Franta to použije pro snímání teplot.
Soubor s deskriptorem by mohl vypadat (plácám): <TEMP><1>;<TEMP><2>;<TEMP><3>
A já ti podle toho vysypu v jednom grafu tři teploty.

Někdo jiný chce sledovat průchody, tak by jeho soubor s deskriptorem mohl vypadat:
<TIME>DOOR1;<TIME>DOOR2;<TIME>DOOR2
(Jasně že tohle není XML, naznačuji, že by se data měla sypat do souboru oddělená středníkem a popis hodnot.)

Otázka je, jestli se ti chce vrtat jen v tomhle a kolik na to máš času, atd.

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Jak vlastně vypadá diskový oddíl?
« Odpověď #22 kdy: 02. 10. 2017, 21:54:05 »
Určitě chápu, že s klasickýma knihovnama by to bylo snazší, ale říkal jsem si, že se o tom zkusím něco dozvědět.

Nevzdávej to. Pokud tě to baví a máš na to čas, tak si to nastuduj. Získáš zkušenosti (s programováním), které ti nikdo nevezme.

A s tím fórem, to máš těžký. Nejdřív se musí přehnat smršť neužitečných komentářů, ale když chvilku počkáš, někdy se i dozvíš něco užitečného :-)

Milfaus

Re:Jak vlastně vypadá diskový oddíl?
« Odpověď #23 kdy: 02. 10. 2017, 22:03:21 »
přehnat smršť neužitečných komentářů

Často si za ty komentáře mohou lidé sami ;D
ASM je krásný, není efektivní v něm programovat, kód není snadno přenositelný, dokonce i v rámci různých CPU stejné řady se výsledek může chovat jinak (přijde nová verze a zmizí nějaká instrukce/registr), ale nic to nemění na tom, že se člověk naučí neuvěřitelné věci.

Doplním, že jsem s programováním v ASM přestal z důvodu bláznivých paměťových modelů, které mi prostě nesedly. Chtěl jsem se k tomu vrátit s příchodem Linuxu a 64bitových systémů, ale ta Motorolí syntaxe mi nesedí a nějak mě to přešlo. A především, dělat v ASM OOP ...no to už by chtělo kouzelníka :-D to bych asi nedal.

TIP: Divili byste se, jak neuvěřitelně rychle se dá v ASM napsat Widlo okenní aplikace!

Student

Re:Jak vlastně vypadá diskový oddíl?
« Odpověď #24 kdy: 02. 10. 2017, 22:08:12 »
Chápu. Já jsem to pro nikoho ani tak nemyslel jako práci. Čekal jsem, že nějaký programátor prostě bude vědět, jak to tam vlastně je. Myslel jsem, že to třeba někde na VŠ detailně probírají nebo něco na ten způsob... Ale pokud je to nějak složité, tak to budu řešit sám (ono stejně musím začít tím, že si přečtu hezkých pár stránek textu). Buď to za nějakou rozumnou dobu dám, nebo to nedám a pak to budu muset prostě napsat v C s využitím nějaké knihovny (a asi to potom bude zbytečně velké, protože knihovna nebude ušitá na míru situaci). Stejně jsem to C pro to Arduino měl někdy v plánu...

izidor

Re:Jak vlastně vypadá diskový oddíl?
« Odpověď #25 kdy: 02. 10. 2017, 22:24:34 »
Chlape, dyt ten google prislusne odkazy vydava snad i pri dotazu na nesmrtelnost chroustu.

https://en.m.wikipedia.org/wiki/Design_of_the_FAT_file_system#RSVD_SECTORS

Jop, to je hezký odkaz. Ale když si přečteš kus té dokumentace, co jsem dával hned na začátek + si pozorně přečteš příspěvky, co jsem tu postoval, tak zjistíš, že tohle všechno je na disku uložené s nějakým prefixem. A ten boot sektor, na který odkazuješ, je taky hezký, ale mě zajímá taky to, co je uložené od 0x200. Ano, vše po 0x1FF je bootovací sektor - to vím, používám Linux. Ale pokud se podíváš na výpis, Od 0x200 po 0x100000 je nějaký rozsypaný čaj. Až na 0x100000 začíná ten souborový systém FAT se svým BPB oddílem, začínajícím buď 0xEB nebo 0xE9, FAT tabulkou a případně jejich kopií (kopiemi, podle nastavení). Mě ale zajímá taky to, jestli ten prefix 0x100000 nemůže být proměnlivý. Zatím jsem se o tom moc nedočetl (ještě jsem to ale nepřečetl celé). To je mj. jedna z věcí, nad kterou přemýšlím, kromě toho, co je to vlastně za změť nad 0x200. Jak funguje FAT vyčtu z dokumentace. Mám ji dávno staženou. Co ale nevím je, jak je určená poloha toho oddílu na disku, např. proč vlastně není hned za prvním sektorem a proč je tam ten rozsypaný čaj.
Zacatek toho FAT oddilu je mozne vycist z GPT nebo z MBR. Rozsypany caj mezi Od 0x200 po 0x100000 je kvuli zarovnání prvního oddílu. Drive se setrilo mistem, takze prvni oddil zacinal hned za prvnim sektorem, dneska kvuli zarovnani zacina prvni oddil az od 1MB. viz https://cs.wikipedia.org/wiki/GUID_Partition_Table

Student

Re:Jak vlastně vypadá diskový oddíl?
« Odpověď #26 kdy: 02. 10. 2017, 22:33:09 »
Chlape, dyt ten google prislusne odkazy vydava snad i pri dotazu na nesmrtelnost chroustu.

https://en.m.wikipedia.org/wiki/Design_of_the_FAT_file_system#RSVD_SECTORS

Jop, to je hezký odkaz. Ale když si přečteš kus té dokumentace, co jsem dával hned na začátek + si pozorně přečteš příspěvky, co jsem tu postoval, tak zjistíš, že tohle všechno je na disku uložené s nějakým prefixem. A ten boot sektor, na který odkazuješ, je taky hezký, ale mě zajímá taky to, co je uložené od 0x200. Ano, vše po 0x1FF je bootovací sektor - to vím, používám Linux. Ale pokud se podíváš na výpis, Od 0x200 po 0x100000 je nějaký rozsypaný čaj. Až na 0x100000 začíná ten souborový systém FAT se svým BPB oddílem, začínajícím buď 0xEB nebo 0xE9, FAT tabulkou a případně jejich kopií (kopiemi, podle nastavení). Mě ale zajímá taky to, jestli ten prefix 0x100000 nemůže být proměnlivý. Zatím jsem se o tom moc nedočetl (ještě jsem to ale nepřečetl celé). To je mj. jedna z věcí, nad kterou přemýšlím, kromě toho, co je to vlastně za změť nad 0x200. Jak funguje FAT vyčtu z dokumentace. Mám ji dávno staženou. Co ale nevím je, jak je určená poloha toho oddílu na disku, např. proč vlastně není hned za prvním sektorem a proč je tam ten rozsypaný čaj.
Zacatek toho FAT oddilu je mozne vycist z GPT nebo z MBR. Rozsypany caj mezi Od 0x200 po 0x100000 je kvuli zarovnání prvního oddílu. Drive se setrilo mistem, takze prvni oddil zacinal hned za prvnim sektorem, dneska kvuli zarovnani zacina prvni oddil az od 1MB. viz https://cs.wikipedia.org/wiki/GUID_Partition_Table

Tisíceré díky !!! To mi mezi tím vším nějak uniklo... Teď už do toho začínám pořádně vidět.

xxxxx

Re:Jak vlastně vypadá diskový oddíl?
« Odpověď #27 kdy: 02. 10. 2017, 22:33:44 »
Od 0x200 po 0x100000 je nějaký rozsypaný čaj. ... Mě ale zajímá taky to, jestli ten prefix 0x100000 nemůže být proměnlivý.
Pokud se pamatuji, tak historicky bylo dáno, že každá partition začíná na začátku fyzického tracku. Už si nepamatuji důvody (že by pro jednodušší zavedení zbytku loaderu u bootovací partition?). A jak se, kvůli zpětné kompatibilitě, stále mnohá zařízení tváží že mají virtuální cylindry, hlavy a sektory, tak tím bývá mezera před první partition.

Toto místo často využívaly viry, někdy i antiviry /či tam (tuším) i některé os/ dávaly kopii MBR (možná ne úmyslně). Možná se i užívalo jako místo pro zavaděč.

Takže, zkrátit by se možná dalo, ale asi bude záležet na zpětné kompatibilitě a jestli nověji lze začít partition i uprostřed (vitruálního) tracku.

Re:Jak vlastně vypadá diskový oddíl?
« Odpověď #28 kdy: 02. 10. 2017, 23:59:15 »
Ono je asi vhodne nejprve si ustanovit terminologii, pak pripravit prostredi a pak zacit zkoumat data.

Tedy:
- na disketach nebyvala informace o rozdeleni na diskove oddily, na discich, flashkach a dost casto dnes i na sd kartach ta informace je
- sd karty, pokud maji tabulku diskovych oddilu, vyuzivaji pro ulozeni informaci o oddilech tzv. partition table v master boot recordu (v pripade extended oddilu je struktura jeste slozitejsi): https://en.m.wikipedia.org/wiki/Master_boot_record
- pro nalezeni pocatecniho sektoru partition/souboroveho systemu je treba precist partition table a pak se vydat na konkretni diskovy offset (dnes se pro prvni partition pouziva jiz zminovanych 1MiB od zacatku disku)
- data v dokumentaci FAT pouzivaji offsety od zacatku partition (pozor na to)
- pri vytvareni souboroveho disku ani partition tabulky se disk NEINICIALIZUJE nulami; inicializuji se jen vybrane sektory: pokud na disku uz neco driv bylo, a inicializace FAT to neprepsala, tak to tam porad muze byt - binarni balast tak vubec nemusi patrit FAT filesystemu

Tedy: je nejlepsi SDkartu inicializovat nulami (dd=/dev/zero of=/dev/sdX), nasledne vytvorit partition tabulku s jednou partition (cfdisk /dev/sdX) a nakonec vyrobit souborovy system ve vytvorene partition (mkfs.vfat -F 32 /dev/sdX1)
Pak bude na karte jen skutecne nejnutnejsi minimum vhodne pro zkoumani.

Dal muzete zacit psat program, ktery v jedne procedure nacte partition tabulku a najde zacatek partition, a v jine procedure zkousi nacist souborovy system FAT; vyberte si jednu z verzi FAT a s tou zacnete. Nedelejte program rovnou univerzalni, nejde to. Vyvarujte se FAT12, at nemusite resit slozite bitshifty. Na experimenty dobre poslouzi FAT16, ktera ma tusim pevne umisteny root adresar, sestnactibitove entries ve FAT tabulce a pod.

Pak nactete prvni sektor (boot record) diskoveho oddilu (/dev/sdX1) a z nej spocitejte informace, ktere potrebujete - velikost FAT clusteru, pozici prvni a druhe kopie FAT tabulky, pozici korenoveho adresare. Pak zkuste nacist korenovy adresar (filename entry). Pak zkuste nacist obsah souboru v korenovem adresari (pro to je treba: rozparsovat boot record, najit korenovy adresar, najit file entry, najit ve fat tabulce prvni cluster souboru a vsechny dalsi clustery, a pak nacist samotna data clusteru z disku). Nakonec muzete zkusit pracovat s vnorenymi adresari. Vizte tez https://en.m.wikipedia.org/wiki/Design_of_the_FAT_file_system

V dokumentaci bude pravdepodobne zobrazovan offset - tedy posunuti od nejakeho mista. Pouziva se offset od zacatku boot sektoru, offset od zacatku fat rabulky, offset od zacatku fat datove oblasti, atp.)
Pro cteni diskovych struktur doporucuju hexdump -C nazev.souboru, ktery zobrazuje offsety od zacatku souboru. Da se pouzit i na cely disk, ale nedelal bych to. :-)

cteci hlava

Re:Jak vlastně vypadá diskový oddíl?
« Odpověď #29 kdy: 03. 10. 2017, 01:51:45 »
A ten boot sektor, na který odkazuješ, je taky hezký, ale mě zajímá taky to, co je uložené od 0x200. Ano, vše po 0x1FF je bootovací sektor - to vím, používám Linux. Ale pokud se podíváš na výpis, Od 0x200 po 0x100000 je nějaký rozsypaný čaj. Až na 0x100000 začíná ten souborový systém FAT se svým BPB oddílem, začínajícím buď 0xEB nebo 0xE9, FAT tabulkou a případně jejich kopií (kopiemi, podle nastavení). Mě ale zajímá taky to, jestli ten prefix 0x100000 nemůže být proměnlivý. Zatím jsem se o tom moc nedočetl (ještě jsem to ale nepřečetl celé). To je mj. jedna z věcí, nad kterou přemýšlím, kromě toho, co je to vlastně za změť nad 0x200. Jak funguje FAT vyčtu z dokumentace. Mám ji dávno staženou. Co ale nevím je, jak je určená poloha toho oddílu na disku, např. proč vlastně není hned za prvním sektorem a proč je tam ten rozsypaný čaj.

Pozor, "Boot Sector" neni "Master Boot Record". Disk zacina MBR, oddil zacina Boot Sectorem. V MBR je partition table, odkud se da zjistit, kde zacinaji oddily. Ten tvuj rozsypany caj nebude soucasti oddilu, ale bude pred oddilem. To, ze tvuj oddil zacina na 0x10000 (pokud tam opravdu mas BPB, tak je to Boot Sector a tudiz tacatek oddilu) musi jit zjistit z tabulky oddilu v MBR.