A DJGPP rejtelmei
2004-10-18T12:10:50+02:00
2004-10-23T20:56:13+02:00
2022-07-19T06:52:49+02:00
  • Bocs... en az eredeti kerdesemre varnam a valaszt... de ha nem valaszolnek kvp-nek, akkor esetleg ugy tunne, hogy 100%-ig neki van igaza...
    Mutasd a teljes hozzászólást!
  • 1. Mibol gondolod h. nem ismerem a DOS-t? ;)
    2. Hmm... Akkor a Lindows keszitoi bolondok? En ugyanis az alapertelmezett beallitasokkal raktam fel...
    3. O.K., lehet hogy a win felulirja a MBR-t, (mert mi van, ha ures a MBR helye ;)) de nyilvan olyan kodot ir oda, ami az eredetivel kompatibilis, mert ha a DOS 6.22 fdisk-jevel felulirom, akkor ugyanugy mukodik...
    4. A hd0 (szerintem ;)) az 1. merevlemezt jelenti, a hd0, 0 meg az elso particiot... persze biztos h. nem igy van, en nem ertek ehhez ;)
    Mutasd a teljes hozzászólást!
  • Üdv!

    Elkanyarodtunk a témától...

    Ivn
    Mutasd a teljes hozzászólást!
  • Mi koze az autoexec.bat-nak meg a config.sys-nek a boot.ini-hez, meg az ntldr-hez? ;)


    A legelso peldaban mindet megemlitettem, es gondoltam, ha tul fiatal vagy ahhoz, hogy a dos-t ismerd, akkor mondok egy modern peldat is... de ugy nez ki, hogy egyiket sem ismered.

    Mert a win boot managere nem felulirja az MBR-t, hanem csak magat allitja aktiv particionak, majd az elso szektorat betolti az mbr, es onnantol a win boot managere indul, ezzel ellentetben a grub az MBR-t is felulirta. (es a LILO is (az mar csak linuxos ;)


    Ez csak attol fugg, hogy hova telepited. A lilot peldaul csak egy bolond rakna az mbr-be. A win pedig felulirja az mbr-t is, peldaul a win98 mindig megolte az mbr-be rakott lilo-t. (gondolom elvi alapon) Ezert van az, hogy az mbr-be szigoruan csak os semleges kodot szabad rakni (fdisk-el), es minden os tegye a sajat particiojara a sajat loader-et. (ntldr a winnt/win2k/winxp, io.sys a dos/win3x/win9x es lilo a linux eseten) A grub pedig a legjobb ha egy sajat particiora kerul, mint minden tisztes os fuggetlen bootmanager. Persze erteni kellene hozza. A te esetedben persze hiaba magyarazom, hogy mi a kulobseg a (hd0) es a (hd0,0) kozott, a grub install parancsarol es annak parametereirol meg nem is akarsz hallani.
    Mutasd a teljes hozzászólást!
  • Jajj, bocs ;) Az elozo hozzaszolasomban Sulix helyett Lindows-t kell erteni ;)
    Mutasd a teljes hozzászólást!
  • Mi koze az autoexec.bat-nak meg a config.sys-nek a boot.ini-hez, meg az ntldr-hez? ;)

    Nem kritizalom a grubot, csak megprobaltam elmagyarazni, hogy nekem miert nem felel meg... pl.: a Windows boot managere se tetszik... kell a betoltendo OS boot szektora, stb...
    De! Ha letorolnem a boot.ini-t, meg az ntldr-t, akkor meg az mbr erintetlenul megmaradna, es tudna os-t betolteni (pl fdisk / set active partition utan ;)) Mert a win boot managere nem felulirja az MBR-t, hanem csak magat allitja aktiv particionak, majd az elso szektorat betolti az mbr, es onnantol a win boot managere indul, ezzel ellentetben a grub az MBR-t is felulirta. (es a LILO is (az mar csak linuxos ;) Sulixot felraktam valameik nap, bebootolnak, erre kiirja: "LI" es nem megy tovabb... :'( a DOS legalabb szol, h. Nem rendszerlemez, v. lemezhiba...)
    Tehat: (ahogy emlitetted ;)) nem ismerem a mukodeset ezert nem is hasznalom, hiszen egy 2-3 kilobajtos kernelt nem egy nalla tobbszor nagyobb, ismeretlen mukodesu loader toltson be...

    A DJGPP-rol senki nem tudja h. miert nem mukodik???? (Sulixot azert akartam feltenni, h. hatha van benne gcc, de hat... ;))
    Mutasd a teljes hozzászólást!
  • Szoval a lenyeg: Ha olyan szuper lenne aza Grub, akkor parancssor helyett betolthette volna vmeik particio boot szektorat... Ahogy az eredeti MBR is teszi...


    A legtobb bootprogram 1 szektoros. A grub 2 fokozatbol all. Az elso lepes (stage1) betolti a masodikat (stage2), ami mar kepes a legtobb filerendszer felmount-olni. Amikor letorolted a linux-ot, akkor letorolted a filerendszeret, es ezaltal a grub konfiguracios file-jait. A masodik fokozat binarisat is, de mivel nem formaztad ujra a particiot, ezert az meg megvolt, es az elso fokozat be tudta tolteni. Ezutan a masodik fokozat elkezdte keresni sajat magat es a konfiguracios file-t, de nem talalta. Ilyenkor azert ad parancssort, mert ujra kell telepiteni a memoriaban tarolt image alapjan. (kepes erre) Ha csak siman tovabbengedne, akkor egy oprendszer felulirhatna a binarisat, es a kovetkezo inditasnal megfagyna a rendszer.

    Persze mivel te nem tudod, hogy hogyan mukodnek ezek a bootloader-ek (az os/2-je is hasonlo volt), ezert nem tudtad, hogy mit csinalsz.

    Hm... En azt hittem az XP nem hasznalja az Autoexec.BAT-ot es a config.sys-t ;)


    Tudod, hogy mi az az ntldr es a boot.ini? Ha igen, akkor tudod, hogy ezek mire valok, es hogy mukodnek. Ha nem, akkor torold le oket a gepedrol, mivel valoszinuleg semmi szugseged rajuk. A windows vegul is kepes akar az mbr-bol is bootolni...

    Viccen kivul: Van egy program, amit felraktal a gepedre, annelkul, hogy tudnad mit csinal. Ezutan beletorolsz a program install-jaba, es meglepodsz, hogy furcsan mukodik. Nem gondolod, hogy mielott kritizalsz egy programot, erdemes megismerni a mukodeset?
    Mutasd a teljes hozzászólást!
  • Hm... En azt hittem az XP nem hasznalja az Autoexec.BAT-ot es a config.sys-t ;)

    A DOS meg azert ad parancssort, mert szoveges modban fut alapbol ;)

    A Win particiojarol nem toroltem semmit, OS-t Particion Magic-al szoktam torolni ;)

    Szoval a lenyeg: Ha olyan szuper lenne aza Grub, akkor parancssor helyett betolthette volna vmeik particio boot szektorat... Ahogy az eredeti MBR is teszi...
    Mutasd a teljes hozzászólást!
  • O.K. nem linuxos... Akkor se kell ;) (1szer kiprobalni felraktam 1 linuxot, feltelepult hozza a grub, felismerte Windowst, szep volt, jo volt, masnap toroltem a linuxot, erre anyazik a grub (mar text modba ;)) h. vmi gaz van, nem indit semmit, es adott vmi parancssort :'( (de szerencsere ott volt a DOS 6.22 boot lemez, es FDISK /MBR megoldja az ien gondokat :D)


    Hat igen, ha valaki nem ert a windowshoz, akkor azzal is igy jarhat.

    Ha elolvastad volna a grub dokumentaciojat, vagy a telepitesnel nem a linux-os particiora raktad vonla fel, es akkor a linux-al egyutt nem torlod le a konfiguracios file-t. A dos is csak parancssort ad ha letorlod a config.sys-t, meg az autoexec.bat-ot.

    Szvsz amit tenned kellet volna az:
    chainloader (hd0,0)+1
    boot

    A fenti ket sor egyebkent valoszinuleg a grub konfigod 'windows' cimkeju reszeben is megvolt, csak hat te uninstall nelkul letorolted. Ezek utan meg az is elkepzelheto, hogy korabban letorolted az io.sys-t vagy az ntldr-t, mivel azt gondoltad, hogy egyik file sem kell a gep inditasahoz.

    Egyebkent ha beirod azt, hogy help, akkor a grub is kiirta volna a teendoket.

    Viktor

    ps: Nekem a grub tobbnyire egy fat12-es floppy-n vagy fat16-os particion van, es ugyanide kerul a config file, meg az esetleges grafikak es szovegek amiket megjelenit. (lasd: boot logo es hasonlok) Es ha kesobb le akarod torolni, akkor a grub-ot szvsz nem az mbr-be kell telepiteni, hanem egy adatparticiora, es az mbr-ben fdisk-el azt a particiot allitani bootolhatora.
    Mutasd a teljes hozzászólást!
  • O.K. nem linuxos... Akkor se kell ;)
    (1szer kiprobalni felraktam 1 linuxot, feltelepult hozza a grub, felismerte Windowst, szep volt, jo volt, masnap toroltem a linuxot, erre anyazik a grub (mar text modba ;)) h. vmi gaz van, nem indit semmit, es adott vmi parancssort :'(
    (de szerencsere ott volt a DOS 6.22 boot lemez, es FDISK /MBR megoldja az ien gondokat :D)

    Azt senki sem tudja, h. mit is kellene csinalni, h. mukodjon a DJGPP? A hibauzi lentebb vhol...
    Mutasd a teljes hozzászólást!
  • grub-ot, meg ilyen linuxos cuccokat nem akarok hasznalni (ez alapon akkor ott a linux forras, copy/paste ;))


    A grub nem linuxos. A multiboot szabvany egyik implementacioja, es sajnos a linux sem eleg kompatibilis vele. (ugyanugy specialis tamogatas kell az inditasahoz, mint a windows-nak)

    A linux pedig nem mikrokerneles. Ez onmagaban meg nem baj, de nagyban neheziti a biztonsagossa tetelet.

    Ha valaki grub-ot hasznal, es mondjuk vagy a djgpp forditoval vagy a mingw-vel kesziti a kernelet, attol meg nem lesz linuxos. Viszont a grub hatalmas elonye, hogy fat filerendszerrol is kepes kernelt tolteni (akar linuxot is). Igy az ember kepes a regi windowsos particiojarol inditani a kernelet, es ha a grub floppy-n van, akkor meg a particios tablaba sem kell belenyulni. (ez demo keszitesehez szvsz tokeletes, egy zip file baratsagosabb, mint egy cd image)

    Viktor
    Mutasd a teljes hozzászólást!
  • Igen regebben csinaltam hasonlot... (nem vedett modhoz, csak nem birtam 512 bajba belenyomni, h. beolvasson 1 fajlt, ezert az beolvasott 1 kis fajlt, ami fixen a lemez elein volt, szektorfolytonosan, es az meg betoltotte a nagyobb cuccot, FAT tablat hasznalva...)
    grub-ot, meg ilyen linuxos cuccokat nem akarok hasznalni (ez alapon akkor ott a linux forras, copy/paste ;))
    Mutasd a teljes hozzászólást!
  • Maga a flat binary kodban nem lehet a vedett modba kapcsolas? Miert kellene annak a boot szektorban lenni? Lehet, h. 1-2 dolgot meg valos modban meg kell tenni... (Lasd MenuetOs, graf modot valos modban allitja be ;))


    A vedett modba kapcsolas barhol lehet, de pl. a gcc nem tud 16 bites valos modu kodot forditani, tehat ekkor valamilyen mas fejlesztoezkoz is kell.

    A boot szektorba semmikeppen nem erdemes vedett modba kapcsolo kodot rakni, amugy is eleg keves hely van benne. (persze azert eleg sok minden elfer benne: 512 byte OS contest)

    A szokasos megoldas a kovetkezo:
    -boot sector: 1st stage loader (valos modu kod)
    -fs boot area: 2nd stage loader (valos es vedett modu kod)
    -filesystem: kernel, driver-ek, stb... (vedett modu programok)

    Ha valaki a grub-ot hasznalja, akkor csak egy vedett modban futni kepes binaris kell, a grub fejleccel az elso 8Kb-ban. (lehet akar a.out, elf, coff vagy binaris formatumu is)

    Viktor
    Mutasd a teljes hozzászólást!
  • Koszi ;)
    Mutasd a teljes hozzászólást!
  • Hi :D
    Mar a Turbo c 1.0 is azt irja: csinaljak 1 exe fajlt, es ott a DOS-ba az Exe2Bin :'(

    Maga a flat binary kodban nem lehet a vedett modba kapcsolas? Miert kellene annak a boot szektorban lenni? Lehet, h. 1-2 dolgot meg valos modban meg kell tenni... (Lasd MenuetOs, graf modot valos modban allitja be ;))
    Mutasd a teljes hozzászólást!
  • Üdv!

    Neztwm az OpenWatcom.org-ot, de csak olyasmit talaltam, h. "Buy CD" es ez igen negativ


    Ott van az:
    http://openwatcom.mirrors.pair.com/watcom/
    Dave
    Mutasd a teljes hozzászólást!
  • A "mov 10, %eax" fele asm-tol en is a falra maszok ;) de lehet ha azt ismertem volna eloszor, most az intel-fele format szidnam...


    Az at&t assembly szintaxisnak is tortenelmi okai vannak. Egy olyan gepen ahol az utasitas formatuma 'parancs forras1 forras2 cel', az addw (%r1)+, $10, %r2 teljesen korrektul nez ki (ez c-ben: r2 = *(r1++) + 10;)

    Azt nem tudja valaki, h. hogyan lehet mas forditoval (Turbo, Borland C) flat binarist kesziteni? Esetleg az OBJ atirasaval?


    A turbo- es a borland c szvsz 16 bites forditok. Ha valos modu programot akarsz kesziteni, akkor tiny memory model-t, es .com formatumu binarist kell beallitani. Ilyenkor persze max. 64 Kb lesz elerheto, es az altalad emlitett forditok nem nagyon tudnak a sajat konyvtaraiktol megvalni, ezert azokat ki kell cserelned az altalad irt valtozatra, ami nem probalja meg allandoan a dos-t hivni.

    Betoltessel nem lenne gond, en ugy kepzelem, h. a boot loader benyomja a progit a memcsibe, es 1 jol iranyzott jmp-vel az 1. bajtra ugrik ;)


    Ha valos modu 16 bites programot irsz, akkor nem. Ha vedett modu 32 bites programot, akkor az ugras elott meg inicializalni kell a processzort is. Erre van jo nehany leiras az interneten.

    Viktor
    Mutasd a teljes hozzászólást!
  • Hi!

    Neztwm az OpenWatcom.org-ot, de csak olyasmit talaltam, h. "Buy CD" es ez igen negativ :'( (bar lehet, h. csak figyelmetlen vagyok...)

    A "mov 10, %eax" fele asm-tol en is a falra maszok ;) de lehet ha azt ismertem volna eloszor, most az intel-fele format szidnam... Azt nem tudja valaki, h. hogyan lehet mas forditoval (Turbo, Borland C) flat binarist kesziteni? Esetleg az OBJ atirasaval?

    A DJGPP a kovetkezo hibauzit irja ki:
    "e:/djgpp/bin/../lib/gcc/djgpp/3.41/djgpp.ver:1:25: sys/version.h: No such file or directory (ENOENT)"

    Nem talalja a version.h-t? Pedig eleg sok van belole, majdnem minden almappajaban...

    Betoltessel nem lenne gond, en ugy kepzelem, h. a boot loader benyomja a progit a memcsibe, es 1 jol iranyzott jmp-vel az 1. bajtra ugrik ;)
    Mutasd a teljes hozzászólást!
  • Hm, a történet valóban érdekes! De szerintem akkor sem jó! Ha már az assembly részeknél tartunk szerintem az AT&T szintaxisú assemlby-je is borzasztó!

    Az én álláspontom:
    Win/Linux alatt Intel C++
    Dos alatt OpenWatcom
    Mutasd a teljes hozzászólást!
  • Nekem a DJGPP abszolút nem tetszik szerintem csak a szívás van vele, vannak sokkal jobb fordítók is! Én az OpenWatcom C/C++ fordítóját ajánlanám neked, ez is nyílt forrású és ingyenes!


    Annak hogy a djgpp terjedt el jobban valoszinuleg tortenelmi okai vannak. Az alabbi linken talalhato egy erdekes leiras. Az egyetlen fontos datum 1989. Ekkor meg nem nagyon volt dos alatt futo ingyenes 32 bites c fordito az x86-os platformra. (nem, linux sem volt meg sehol ) Bar regi, de a forrasa es a segedprogramjai meg mindig eleg jo peldak.

    The history of djgpp

    ps: Meg egy elony: ha egy os fordul djgpp-vel, akkor valoszinuleg fordulni fog linux es windows alatt is barmelyik masik x86-os gcc-vel (es az assembly reszeket leszamitva mas platformokon is).
    Mutasd a teljes hozzászólást!
  • Nekem a DJGPP abszolút nem tetszik szerintem csak a szívás van vele, vannak sokkal jobb fordítók is! Én az OpenWatcom C/C++ fordítóját ajánlanám neked, ez is nyílt forrású és ingyenes! Én ezt használtam kernel fordítgatásra! LE formátumba fordítottam vele, és egy saját kis segédprogrammal átkonvertáltam RAW-ra, a botloader pedig azt töltötte be!
    Mutasd a teljes hozzászólást!
  • aaa, az nekem nem jo, OS-szeruseget akarnak, nem .EXE kodot, hanem fejlec neklkulit... Van Turbo C 1.0-am, meg borland c 3.0, de ez csak exe-t meg obj-t tud csinalni... valami linkerrel esetleg(TLINK) lehet ebbol valami relokacios adatok es mas hulyeseg nelkuli binarist csinalni?


    Nezd meg a djgpp linker script-jei kozzul a flat binary-t. Viszont az fontos, hogy a gcc-k nem tudnak 16 bites valos modu kodot generalni, tehat a kapott kodot valamilyen mas programmal kell majd betolteni. A grub bootloader kepes erre, es van benne egy szinte barmilyen x86-os gnu c-vel lefordithato minta kernel is. (a djgpp tenyleg a legjobban felkeszitett nyers binarisok es kisebb os-ek keszitesere, de a flat formatummal azert a legtobb valtozata boldogul)

    Viktor
    Mutasd a teljes hozzászólást!
  • set djgpp=c:\\\\djgpp\\\\djgpp.env
    set path=c:\\\\djgpp\\\\bin

    ez volt nekem autoexec.bat-ban
    Mutasd a teljes hozzászólást!
  • pathban???

    iet csinaltam:
    set djgpp = e:\\\\djgpp\\\\djgpp.env

    wtoma:
    aaa, az nekem nem jo, OS-szeruseget akarnak, nem .EXE kodot, hanem fejlec neklkulit... Van Turbo C 1.0-am, meg borland c 3.0, de ez csak exe-t meg obj-t tud csinalni... valami linkerrel esetleg(TLINK) lehet ebbol valami relokacios adatok es mas hulyeseg nelkuli binarist csinalni?
    Mutasd a teljes hozzászólást!
  • A DJGPP-nek tényleg sok "rejtelme" van, hogy ez miből adódik, azt nem tudom, de pl. nekem Dev-C++-szal (főleg XP alatt) kevesebb bajom van.
    Toma
    Mutasd a teljes hozzászólást!
  • A DJGPP config fájlai benne vannak a PATH-ban? Nekem múlt évben azzal voltak problémáim.
    Mutasd a teljes hozzászólást!
  • Udv mindenkinek! ^_^

    Az a problemam, h. a DJGPP nem mukodik... vagyishat elindul, megnezi a forrasfajlt, de leall 1 hibauzivel, amit fejbol nem tudok, majd este megnezem ;)
    Amugy valami olyasmi, h. nem talal 1 fajlt, es a vegere odairja: (ENOENT)

    Azert nem a tudastarba irtam a kerdest, mert szerintem ha ez megoldodik, lesz meg sok uj is ^^" es miert nyitsak minden nap 1 uj temat...

    Ja, a DJGPP DOS-os, en meg XP alol futtatnam...
    Mutasd a teljes hozzászólást!
abcd