Infos über Filesysteme - Kernelfunktionen ...

  • Hoi Leuts


    Da ich mir mal die Mühe gemacht habe , n kleines Tool unter den dosen zu proggen , welches die Platte direkt behandelt und ich derzeit einfach kein geeignetes Tool zur Hand habe , um Sicherungen einer Partition zu machen ohne die Partition komplett - ohne Berücksichtigung des "Füllstandes" zu sichern , dachte ich mir , daß es unter linux ja auch n Assembler gibt .


    Unglücklicherweise brauchts fürs sinnvolle Proggen n paar Infos über verfügbare Funktionen des Systems/Kernels a la Bios/DOS Interupts/Funktionen und über die Struktur des Filesystems .


    Jemand ne Ahnung , woher nehmen ?


    HJS

  • Zitat

    Original von hjs
    Jemand ne Ahnung , woher nehmen ?


    Äh- was willst Du denn für ein Programm schreiben? Das Dir die Festplatte "raw" sichert?
    Nimm dd.


    Aber das ist wohl nicht das, was Du möchtest. Auf die Platte kommste problemlos mit einem Hex-Editor und dem direkten Zugriff auf die Platte.


    Unter Linux sind alle Geräte Dateien, d.h. daß Du mit den "normalen" C-Befehlen "open" etc. blockorientiert darauf zugreifen kannst.


    Aber eigentlich weißt du das doch alles...


    knebb, der sich wundert, wo jetzt die Frage war....

    Glotze: yaVDR (ASRock Q1900M, 4GB RAM, DD Cine S2 V6.5, ZOTAC GT630 (Rev. 2)
    Server: HP ProLiant MicroServer G8, VMware ESXi 5.5 :P

    Einmal editiert, zuletzt von knebb ()

  • Hallo HJS,


    öhm, verstehe nicht ganz das Problem, aber würde Dir nicht z.B. www.partimage.org schon helfen? Ist z.B. auf 'ner Knoppix drauf: starten, sichern, fertig.


    Aber, ich will Dich nicht von Deinem Projekt abhalten ;D


    Viele Grüsse
    Chriss

  • Zitat

    Original von knebb


    Äh- was willst Du denn für ein Programm schreiben? Das Dir die Festplatte "raw" sichert?
    Nimm dd.


    Nä - das hab ich doch und das Teil sichert mir von meiner mit kanpp 1 GB belegten 10 GB Partition die vollen 10 GB - wozu ?


    Zitat

    Aber das ist wohl nicht das, was Du möchtest. Auf die Platte kommste problemlos mit einem Hex-Editor und dem direkten Zugriff auf die Platte.


    Ja - will die Platte ja nich editieren ;) und genau den Zugriff kann ich via Bios , Controller oder Linux machen ...


    Zitat


    Unter Linux sind alle Geräte Dateien, d.h. daß Du mit den "normalen" C-Befehlen "open" etc. blockorientiert darauf zugreifen kannst.


    Fein - wie heißt der Assemblerbefehl <OPEN> ? ;D
    Es soll ja klein und fein sein ;)


    Zitat

    Aber eigentlich weißt du das doch alles...


    Stimmt , deshalb wollte ich wissen , was ich nicht weiß ;)
    Wäre wohl n Weg , einfach n Miniprog in C und disassemblieren , aber das wird ne üble Suche ...
    Schnittstellen des Sys z.B. zur VGA sind mir eher nicht bekannt ...
    Sprich : Ich will ein Zeichen oder auch ne Kette an/ab Z10S40 ausgeben - bei den Dosen nehm ich Int 10h des Bios - wo ich auch die aktuelle Auflösung erfahre - was sacht Linux dazu ?


    Zitat


    knebb, der sich wundert, wo jetzt die Frage war....


    Frage gefunden ? ;)


    HJS

  • Tach der Einzige ;)


    Zitat

    Original von theonlychriss
    öhm, verstehe nicht ganz das Problem, aber würde Dir nicht z.B. www.partimage.org schon helfen?


    Yep - dat isset :]


    Zitat


    Ist z.B. auf 'ner Knoppix drauf: starten, sichern, fertig.


    Näää - dat macht kein LFS man ;)


    Zitat


    Aber, ich will Dich nicht von Deinem Projekt abhalten ;D


    Das denk ich mir - aber unter den gegebenen Umständen heb ich mir die Zeit und Energie für was anderes auf ;)


    Nichtsdestotrotz würde mich interessieren , obs für meine Fragen ne Quelle gibt - kann man bestimmt mal brauchen , wenn man gerne Bits schiebt ...


    HJS

    Working VDR : VDR-1.4.6 - ACPI/NVRAM Wakeup - working on hjslfs

    Einmal editiert, zuletzt von hjs ()

  • Zitat

    Original von hjs
    Nä - das hab ich doch und das Teil sichert mir von meiner mit kanpp 1 GB belegten 10 GB Partition die vollen 10 GB - wozu ?


    Weil Du ungeschickt bist?

    Code
    mount /dev/partition /mnt; dd if=/dev/zero of=/mnt/nullfile; rm /mnt/nullfile; umount /mnt; dd if=/dev/partition|bzip2>sicherungsdatei.iso.bz2


    Zitat

    Frage gefunden ? ;)


    Nö, aber eine fixe Idee. Du willst also ziemlich genau das machen, was parted Dir bietet, aber:
    1. Du hast denn Willen, das selbst zu schreiben
    2. Es MUß in Assembler programmiert werden


    Naja, tu, was Du nicht lassen kannst. Standardprogrammiersprache unter Linux -insbesondere Dateizugriffe- sind eben C/C++.
    Wenn Du unbedingt Assembler willst, dann sorge bitte auch dafür, daß Dein Programm auf nicht x86-Systemen läuft. ;)


    knebb, der zwar weiß, worum es geht, die Ansprüche aber nur schwer nachvollziehen kann -das mag aber an dem fünften [EDIT] vierten[/EDIT] [EDIT] oder sechtem?[/EDIT] GLENFIDDICH liegen- :prost1

    Glotze: yaVDR (ASRock Q1900M, 4GB RAM, DD Cine S2 V6.5, ZOTAC GT630 (Rev. 2)
    Server: HP ProLiant MicroServer G8, VMware ESXi 5.5 :P

    2 Mal editiert, zuletzt von knebb ()

  • Zitat

    Original von knebb


    Weil Du ungeschickt bist?

    Code
    mount /dev/partition /mnt; dd if=/dev/zero of=/mnt/nullfile; rm /mnt/nullfile; umount /mnt; dd if=/dev/partition|bzip2>sicherungsdatei.iso.bz2


    Wenn ich den Vorgang richtig interpretiere , machst du es nur der Kompression leicht , die leeren Bereiche quasi auf Null zu quetschen - das ist n netter workaround , aber nicht was mir vorschwebt ;)


    Zitat


    Nö, aber eine fixe Idee. Du willst also ziemlich genau das machen, was parted Dir bietet, aber:
    1. Du hast denn Willen, das selbst zu schreiben
    2. Es MUß in Assembler programmiert werden


    1. hat sich durch partimage erledigt - man muß das rad nich dauernd neu erfinden ;)
    2. JAA - in C schaff ich "Hello World" - na , vielleicht n Tick mehr "Hello HJS" geht auch noch :rolleyes:


    Zitat


    Naja, tu, was Du nicht lassen kannst. Standardprogrammiersprache unter Linux -insbesondere Dateizugriffe- sind eben C/C++.
    Wenn Du unbedingt Assembler willst, dann sorge bitte auch dafür, daß Dein Programm auf nicht x86-Systemen läuft. ;)


    Ersteres ist bekannt - aber fürn ST war die Muttersprache auch C - trotzdem verstand der auch Assembler ;)
    Letzteres wird sich bei Verwendung von Bios Routinen/Funktionen kaum einrichten lassen ...


    Zitat


    knebb, der zwar weiß, worum es geht, die Ansprüche aber nur schwer nachvollziehen kann -das mag aber an dem fünften [EDIT] vierten[/EDIT] [EDIT] oder sechtem?[/EDIT] GLENFIDDICH liegen- :prost1


    Man soll sich der Sprache bedienen , die man spricht ;)
    :prost2


    HJS

  • Zitat

    Original von hjs
    Wenn ich den Vorgang richtig interpretiere , machst du es nur der Kompression leicht , die leeren Bereiche quasi auf Null zu quetschen


    Stimmt. Hat zwei Nachteile:
    1. Braucht beim Sichern eine kleine Ewigkeit, gzip geht schneller, ist aber nicht so zuverlässig.
    2. Muß bei Größenänderungen einen anschließenden resize durchlaufen lassen.


    Zitat

    1. hat sich durch partimage erledigt - man muß das rad nich dauernd neu erfinden ;)


    Na also, geht doch ;)


    Zitat

    2. JAA - in C schaff ich "Hello World" - na , vielleicht n Tick mehr "Hello HJS" geht auch noch :rolleyes:


    Also, wenn ich C-Programme hinbekomme UND Du Assembler programmieren kannst, dann kannst Du SOWAS auch in C!


    Zitat

    Letzteres wird sich bei Verwendung von Bios Routinen/Funktionen kaum einrichten lassen ...


    Jetzt mal wieder ein ganz blöde Frage:
    Kannst Du unter Linux überhaupt BIOS-Funktionen nutzen? Das BIOS wird doch IMHO mit laden des entsprechenden Treiber deaktiviert, oder?

    Glotze: yaVDR (ASRock Q1900M, 4GB RAM, DD Cine S2 V6.5, ZOTAC GT630 (Rev. 2)
    Server: HP ProLiant MicroServer G8, VMware ESXi 5.5 :P

    Einmal editiert, zuletzt von knebb ()

  • Zitat

    Original von knebb


    Also, wenn ich C-Programme hinbekomme UND Du Assembler programmieren kannst, dann kannst Du SOWAS auch in C!


    Wenn ich die Befehle nebst Syntax aufm zettel hätte , ist das anzunehmen ;)


    Zitat


    Jetzt mal wieder ein ganz blöde Frage:
    Kannst Du unter Linux überhaupt BIOS-Funktionen nutzen? Das BIOS wird doch IMHO mit laden des entsprechenden Treiber deaktiviert, oder?


    Hm - da ich noch kein Linux Prog mit nasm oder Verwandten assembliert habe , kann ich die Frage nicht zweifelfrei beantworten , aber es würde mich doch sehr wundern , wenn ich die Bios Interrupts - und damit die Funktionen - nicht aufrufen könnte .
    Zum deaktivieren müßte Linux entweder durch shadow überlagern/ersetzen , analog zur High oder Upper-Mem Geschichte unter den Dosen statt des ROM dort RAM einblenden oder den Adressbereich einfach ausklinken .


    Ah - nä - die Interrupt Tabelle mit eigenen Werten übermangeln geht natürlich auch - letztlich erreiche ich die BIOS Funktionen ja nicht dirkekt , sondern über den Interrupt Handler ...


    HJS


    PS - sogar WinDoof "deaktiviert" die Bios funtkionen/interrupts nicht - allerdings benutzt es die selbst auch nur noch zum Teil - sehr schön zu erkennen bei meinem "Diskwechsler"
    Da hab ich Floppies als Images auf der Platte gehabt und die einfach ins EMS geschaufelt und den Int 13h umgebogen - WinDoof hat solange aufs Floppy zugegriffen , bis ich auch Int 21h in die Mangel genommen hab ...

    Working VDR : VDR-1.4.6 - ACPI/NVRAM Wakeup - working on hjslfs

    Einmal editiert, zuletzt von hjs ()

  • Zitat

    Original von hjs
    Wenn ich die Befehle nebst Syntax aufm zettel hätte , ist das anzunehmen ;)


    Beim besten Willen- ich mache auch nicht viel Programmierung, aber WENN, dann hilft mir das folgende:
    "Programmieren in C"
    Addison-Wesley
    ISBN 3-89319-887-3
    Das dürfte Dein "Papier" sein. Dann gibt's noch "Linux Systemprogrammierung", habe ich gerade nicht vorliegen, kann ich aber bei Bedarf raussuchen.


    Zitat


    Ah - nä - die Interrupt Tabelle mit eigenen Werten übermangeln geht natürlich auch - letztlich erreiche ich die BIOS Funktionen ja nicht dirkekt , sondern über den Interrupt Handler ...


    Da geht das jetzt in den Bereich, wo ich mit NICHT auskenne. Vielleicht hilft das zweite Buch da etwas? Kann ich bei Bedarf in der übernachsten Woche mal nachsehen: mailto:

    Glotze: yaVDR (ASRock Q1900M, 4GB RAM, DD Cine S2 V6.5, ZOTAC GT630 (Rev. 2)
    Server: HP ProLiant MicroServer G8, VMware ESXi 5.5 :P

  • Zitat

    Original von knebb
    "Programmieren in C"
    Addison-Wesley
    ISBN 3-89319-887-3
    Das dürfte Dein "Papier" sein. Dann gibt's noch "Linux Systemprogrammierung", habe ich gerade nicht vorliegen, kann ich aber bei Bedarf raussuchen.


    Thx - werd mir das mal anschauen - werd eh mal n Buch brauchen - die Linux Teile haben ja auch n paar entscheidende Hinweise ergeben :]



    Zitat


    Da geht das jetzt in den Bereich, wo ich mit NICHT auskenne. Vielleicht hilft das zweite Buch da etwas? Kann ich bei Bedarf in der übernachsten Woche mal nachsehen:


    Wär nett - über kurz oder lang wird eh mal n Assemblerlauf fällig - und ich geh halt gern "to the roots" - daher ja auch LFS :D


    HJS

  • Was hat er vor? Ein Backupprogramm mit intelligenter Kompressionsroutine in Assembler? Hu? Ho? Ha?


    Mal im ernst: Du kannst in Linux "raw" auf jede Platte/Partition zugreifem - da brauchste keine BIOS-Routinen, Interrupts vergurken etc. Zumal das bei 200GB-Platten sowieso in die Hose geht.
    Wenn du den Inhalt einer Partition intelligent, d.h. Filebasiert sichern willst, musst du dann auch noch die Dateisysteme sprechen ... sonst bleibt dir wirklich nur das billige RLE und Kollegen.


    arghgra

  • Zitat

    Original von arghgra
    Was hat er vor? Ein Backupprogramm mit intelligenter Kompressionsroutine in Assembler? Hu? Ho? Ha?


    Mal im ernst: Du kannst in Linux "raw" auf jede Platte/Partition zugreifem - da brauchste keine BIOS-Routinen, Interrupts vergurken etc. Zumal das bei 200GB-Platten sowieso in die Hose geht.


    Soso - wieder das alte Thema E Int 13h ?!? ;) Ein 32 Bit Zeiger zeigt wohin und hat welche Grenze ?
    Die Frage war ja WIE raw zugreifen - sprich System Informationen und ebent Filesys Informationen woher nehmen , wenn nicht stehlen ?


    Zitat


    Wenn du den Inhalt einer Partition intelligent, d.h. Filebasiert sichern willst, musst du dann auch noch die Dateisysteme sprechen ... sonst bleibt dir wirklich nur das billige RLE und Kollegen.


    Wie erwähnt - Für Zugriffe aufs Filesystem brauch ich so oder so Infos - Bios hin , Bios her ...


    HJS

  • Hm - also partimage is mir sympatisch - funktionelle Oberfläche - 814 MB in 6:07 Min auf 148 MB gepackt ( tar cjf braucht länger und baut n 350 MB Teil auf - wegen der Proc und sys ...) gutes Ding das - könnte von mir stammen :mua


    HJS


    PS : trotzdem noch einer Infos ?

  • Zitat

    Original von hjs
    [...]


    PS : trotzdem noch einer Infos ?


    http://sourceforge.net/projects/lrmi/


    ist eine Lib, um unter Linux real-mode-BIOS-calls auszuführen. Ich hab' das Ding nur mal verwendet, um in meiner Graka bestimmte Modi zu aktivieren, die der normale Trieber nicht konnte. KA, ob man für Assembler hilft.

    Godzilla [Low Budget Record-Only]: AMD K6/2(400), Gigabyte GA-5AX, 192MB, ATI RagePro (Mach64GT) mit TV-Out, Technisat Skystar2 rev 2.6b, IBM DTLA 40GB, Ensoniq ESS-Solo1 (es1935), Pioneer DVR 108

  • Zitat

    Original von metahawk


    http://sourceforge.net/projects/lrmi/


    ist eine Lib, um unter Linux real-mode-BIOS-calls auszuführen. Ich hab' das Ding nur mal verwendet, um in meiner Graka bestimmte Modi zu aktivieren, die der normale Trieber nicht konnte. KA, ob man für Assembler hilft.


    Hm - nich ganz das , was ich suche , aber trotzdem informativ - faktisch benutzt der Autor Assembler , ohne einen Assembler zu verwenden ;)


    Thx
    HJS

  • Zitat

    Original von hjs


    Soso - wieder das alte Thema E Int 13h ?!? ;) Ein 32 Bit Zeiger zeigt wohin und hat welche Grenze ?
    Die Frage war ja WIE raw zugreifen - sprich System Informationen und ebent Filesys Informationen woher nehmen , wenn nicht stehlen ?


    Das hat nix mit 13h zu tun - es gibt auch 64bit-Variablen auf 32 bit-Systeme ....
    Und ne platte öffnest du mit open("/dev/hda",....) ...


    Ich weiss nicht, was BIOS-Aufrufe damit zu tun haben - da hast du schon Linux und willst das ganze DOS-mässig-intelligent angehen ... macht keinen Sinn.


    arghgra


    P.S.: Und Infos zu den FS findest du im Kernel in den entsprechenden Treibern bzw. in den separaten FS-Packages ....

  • Zitat

    Original von arghgra
    Das hat nix mit 13h zu tun - es gibt auch 64bit-Variablen auf 32 bit-Systeme ....
    Und ne platte öffnest du mit open("/dev/hda",....) ...


    Wobei ne 64 bit Var mit Sicherheit genaus wenig ne Beschränkung auf nen Wert unter 200 GB hat , wie ne 32 Bit Var ;)


    Zitat

    Ich weiss nicht, was BIOS-Aufrufe damit zu tun haben - da hast du schon Linux und willst das ganze DOS-mässig-intelligent angehen ... macht keinen Sinn.


    Das ist deine Meinung - Ob es intelligent ist , irgendwelche Systemtreiber durch direkten Zugriff zu umgehen oder nicht , liegt auch im Auge des Betrachters .
    Und am Rande vermerkt : Der Assembler kennt kein "open" ;)


    Zitat

    P.S.: Und Infos zu den FS findest du im Kernel in den entsprechenden Treibern bzw. in den separaten FS-Packages ....


    Da ist was dran , allerdings sind die Informationen dort in C Sourcen "verschlüsselt" - eine "unverschlüsselte" Struktur Beschreibung des ext2/3 wäre hilfreicher ;)


    HJS

  • So mein letzter Beitrag zu dem Thema ;):


    Ich geb mich geschlagen - wenn du so ein Tool mit BIOS-Routinen in Assembler schreiben willst .... dann halte ich das für eine gute Idee. Ist zumindest für den Informatik-Nobelpreis stark preisverdächtg ;)


    arghgra


    P.S.: Der Kernel enthält nicht nur C-Quellen ....

  • Zitat

    Original von arghgra
    So mein letzter Beitrag zu dem Thema ;):


    Gleuab ish erst , wenn ichs (nicht) sehe :mua


    Zitat


    Ich geb mich geschlagen - wenn du so ein Tool mit BIOS-Routinen in Assembler schreiben willst .... dann halte ich das für eine gute Idee. Ist zumindest für den Informatik-Nobelpreis stark preisverdächtg ;)


    Awat - is leichter , als du annimmst - das Teil für die Dosen bot auch ne quasi-grafische Oberfläche , war zarte 20 KB groß ( nee - nich mit Kompression ) aber die Sysvorraussetzungen waren exakt NULL .
    Jede VGA Karte hat n Bios , jedes Board auch - partimage is nett , aber erfordert dies Lib und jene Lib ... das Assemblertool wäre zwangsläufig auf jedem IBM oder Kompatiblen einsatzfähig ... mal schauen , ob ich das Rad nochmal rund mach , nur damit Arghgra mir den [inoffiziellen] Nobelpreis verleiht *kicher*


    Zitat


    P.S.: Der Kernel enthält nicht nur C-Quellen ....


    Du willst mir also nahelegen , n Auge in die Tiefen der Sourcen zu riskieren ... oder zwei oder drei .. na gut ;)


    HJS

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!