

Vygenerovanie fake S.M.A.R.T dáta na virtuálnom disku
Dobrý deň,
potreboval by som poradiť akým spôsobom sa dajú vygenerovať fake S.M.A.R.T dáta na virtuálnom disku (mám vytvorený disk ".img" aj pričlenený do systému a nastavený vo fstab, ale ďalej sa pohnúť neviem), resp. simulovať disk poskytujúci S.M.A.R.T dáta. Potrebujem aby pri bežnom behu systém (Linux) a smartctl tento simulovaný disk a jeho S.M.A.R.T dáta detegoval.
Vopred ďakujem za rady.
Nulové alebo náhodné smart data by stačili?
Náhodné dáta budú stačiť.
Nad týmto som sa zamýšlal už pred 15 rokmi, ale opustil som tú myšlienku, pretože som nenašiel nič čím by sa tie data dali do smart programu načítať. Vygenerovať náhodné data nieje problém. Zaujímalo by ma čím tie data načítaš aby to smart zobrazil, pretože smart to čita priamo z registrov disku.
btw. vedeli by ste mi povedať na akom princípe funguje smartctl? Od čítania dát z registrov, ako to prejde jednotlivými vrstvami aplikácie, až po výsledné dáta ktoré poskytuje cez API?
Trocha som hľadal na Internete, ale čo som našiel, som z toho trocha zmätený a nerozumiem tomu.
Docela bych si tipnul, ze smartctl to bud cte primo prez volani nejake systemove funkce, a nebo ze to cte z nejakeho virtualniho filesystemu hluboko v /sys nebo tak nejak
Spis jde o to, jak to chces cist ty - pokud bys prote ve svem programu spustil "smartctl" s nejakyma parametrama a pak parsoval vystup, tak pro testovani proste staci napsat stejnojmenny skript, dat do do cesty driv, nez je binarka a nechat ho proste vypsat cokoliv (pomoci echo "Parametr: 1 0 255; neco cosi ...") a pak si to testovat v tom svem programu
Prvotni vypis udelas jednoduse tim skutecnym smartctl, ktery pomoci ">soubor" presmerujes do souboru a tam uz si to snadno v editoru obalis tema echama, pripadne zfalsujes po libosti.
áno, vo svojom procese len volám príkaz v bash/terminály, ktorý spawnem ako child process a následne výsledok z stdout si vrátim do pôvodného procesu. Takže áno, toto by fungovalo.
Ok, skúsil som to a podarilo sa,... troška bol problém napasovať aby ten výpis bol úplne presne rovnaký ale dalo sa.
Stejne tak jako u SCSI . Pres sbernici cte hodnoty (reg.firmwarereg,atd) S.M.A.R.T. primo z HDD.
K cemu ti regularni vyrazi a operatory budou, uz jsi nekdy programoval firmware ? Znas alespon zaklad C, jinak nevim k cemu ti by princip bez znalosti s nim byl.
Kod na nahodne hodnoty udelat jde, ale k cemu ti budou kdyz je nebudes moct pouzit ?
Radeji bych te navedl na cestu pouzit nejaky jiz hotovy "fuck_firmware" nebo nejaky "SATA/IO emulatror" na generaci S.M.A.R.T. (to je jak delat nahodny symetricky-klic pro zadny text, ktery je urcen nikomu a ktery chces poslat nikam).
Áno základy C viem. Síce už 4 roky som v ňom neprogramoval, ale pred 4 rokmi som v tom zvládal naprogramovať rôzne veci celkom v pohode. Viem pracovať aj s pointermi, spojkovými zoznamami a signálmi a podobne (resp. s tým čo sme sa v škole učili).
Nakoniec myslím že možno to spravím ako navrhol gilhad, že spravím vlastný bash script, kde vypíšem cez echo falošné hodnoty, a nastavím alias aby sa tento script zavolal keď zadám príkaz smartctl, teda sa nebude volať skutočný smartctl.
Tak nahledni na SOC smartmontools - smartctl/smartd
Jestli virtualni HDD implantuji i FW S.M.A.R.T nevim IMHO ne, neni proc kontrolovat fyzicky stav neceho virtualniho nebo co je v nejakem kontejneru, ale take jsem mozna spatne pochopil podstatu otazky.