Opslagprobleem MS-DOS op een 486

Pagina: 1
Acties:

Vraag


  • blorf
  • Registratie: December 2003
  • Laatst online: 22-08 16:22
Als hobby-projectje probeer ik MS-DOS te installeren op een DEC 486 PC. Deze machine was al voorzien van DOS op een oude harddisk. Dat werkt prima, maar nu wil ik die vervangen met een (actieve) SD2IDE adapter of een (passieve) CF2IDE. DE DOS-setup disk #1 kan gestart worden vanaf een Gotek floppy emulator.
Maar bij beide adapters heb ik hetzelfde probleem: Fdisk en format /s c: lijken goed te gaan, maar er is achteraf een probleem met lezen. Op het moment dat de command.com wordt geladen bij het opstarten bevriest het systeem. Ik kan wel met een diskette starten en C: lezen, directories en bestanden maken, maar zodra er daadwerkelijk data wordt opgehaald loopt de boel vast en vereist ctrl-alt-del.

De BIOS herkent de CF-kaart als schijfstation. De sd-kaart niet, die vereist een afwijkend aantal cylinders die strookt met de grootte van de kaart. Een 16GB sd-kaart is eigenlijk al te groot, want het invoerveld voor die cilinders gaat maar tot 9999.

Verschillende dingen geprobeerd:
- primaire partitie 50% van de max grootte maakt geen verschil
- fdisk /mbr geen verschil
- andere media (sd-kaart of CF-kaart) geen verschil
- bootvolume handmatig aangemaakt op een FreeBSD systeem (gpart, newfs_msdos), ook geen verschil.
- Een raw copy van de volledige maxed out 4-partitie DOS-installatie die ik op een P75 draai start helemaal niet op.

Ook andere besturingssytemen hebben problemen met het medium. FreeDOS komt niet door de setup en NetBSD zegt fail bij het partitie maken.

Wat mis ik hier? Het gekke is dat dit bij nog oudere computers gewoon werkt.

You are in a maze of little twisting passages, all different.

Alle reacties


Acties:
  • +1 Henk 'm!

  • RiDo78
  • Registratie: Juli 2002
  • Niet online
Met MS-DOS heb je met heel andere limitaties te maken als de huidige OS'sen. Zo mag een disk fysiek niet groter zijn dan 9.8 Gb (in verband met BIOS interrupt 13h) en mag een partitie niet groter zijn dan 2 Gb.

Daarnaast moeten bepaalde zaken letterlijk aan het begin van de disk of partitie staan, zoals de partitietabel en de MBR. En tot slot moet je niet vergeten de boot partitie met FDISK actief te maken, maar doordat command.com start lijkt dat al zo te zijn.

Wat ook nog kan is dat er een fout zit in je config.sys. Post die eventueel hier.

  • blorf
  • Registratie: December 2003
  • Laatst online: 22-08 16:22
RiDo78 schreef op donderdag 17 november 2022 @ 10:29:
Met MS-DOS heb je met heel andere limitaties te maken als de huidige OS'sen...
Het moet iets zijn met specifiek dit systeem. Al jaren gebruik ik een MBR- image met primary en extended partities met in de extended 3 logische stations. Samen hebben die de maximale grootte die MS-DOS ondersteunt. Deze install start op op alles tussen 286 en Core2duo + x86 virtual machines.
Wat er bij deze computer gebeurt is dat DOS setup tot het eind denkt dat alles goed gaat, totdat die uiteindelijk de command.com op C: probeert te starten, waarop alles vastloopt. Lezen werkt op de een of andere manier niet.
Het op deze manier geprepareerde station booten leidt na +/- 3 minuten tot "device not ready, abort/retry./ignore"

- De actieve partitie is de primaire.
- de bootdata aan het begin lijkt me logisch. Als dat niet het geval is start het op geen enkel systeem op.
- config.sys hebben we voor zover ik weet nog niks mee te maken. Ik doe fdisk gevolgd door format/s, wat een bootable schijf zou moeten betekenen.

You are in a maze of little twisting passages, all different.


Acties:
  • +2 Henk 'm!

  • RiDo78
  • Registratie: Juli 2002
  • Niet online
blorf schreef op donderdag 17 november 2022 @ 16:25:
[...]
- De actieve partitie is de primaire.
- de bootdata aan het begin lijkt me logisch. Als dat niet het geval is start het op geen enkel systeem op.
Dat klopt, al zijn er ook systemen die een backup van de bootdata achteraan de schijf hebben of waar de bootdata in het het NVRAM of CMOS of zelfs in een aparte chip is weggeschreven.

Maar waar je bij de meeste OS'sen tegenwoordig prima weg kunt komen met een pointer naar een fysieke locatie op disk waar 'toevallig' de bootloader-code (zoals NTLDR of GRUB) zich bevind, moet bij MS-DOS de hele eerste fase van de bootloader en de partitietabel in de eerste 64kb zitten. Dat luistert dus net wat nauwer. Die bootloader is bij MS-DOS ook niet voorzien van een entry in de filetabel aangezien hij zich buiten het filesystem en de partitiestructuur bevindt

Het BIOS van die oude systemen laad dus ook de eerste 64kb in geheugen en voert dat uit. Die eerste fase moet dus de partitietabel interpreteren. Ook moet het kennis hebben van het filesystem in de actieve partitie om de verdere boot voort te kunnen zetten.
- config.sys hebben we voor zover ik weet nog niks mee te maken. Ik doe fdisk gevolgd door format/s, wat een bootable schijf zou moeten betekenen.
In de meeste gevallen heb je gelijk. Format /s zorgt doorgaans voor het installeren van de bootloader en command.com. Maar config.sys bevat de instellingen voor command.com. Zonder config.sys worden de standaardinstellingen gebruikt die bijna altijd werken. Maar in sommige gevallen moet config.sys worden aangemaakt of aangepast.

De autoexec.bat wordt na het booten door command.com uitgevoerd en heeft geen invloed op de boot. Natuurlijk kan een fout in autoexec.bat er voor zorgen dat je systeem niet naar behoren opstart, maar dat heeft niets meer met het OS te maken; die draait op dat punt al.

Anyway, terug naar config.sys...
Als de PC over meer dan 1 Mb geheugen bezit, moet je ook een geheugenmanager laden om dat te gebruiken. Tevens kun je dan delen van MS-DOS in het hoger geheugen plaatsen. Om dat te doen moeten de volgende regels bovenaan in de config.sys staan:
code:
1
2
3
DEVICE=C:\MSDOS\HIMEM.SYS
DOS=HIGH,UMB
DEVICE=C:\MSDOS\EMM386.EXE NOEMS

Let op, de paden naar de files kunnen afwijken.
Je kunt bij HIMEM en EMM verschillende parameters opgeven die het geheugen op een andere manier inrichten. Ook kun je hele geheugenblokken uitsluiten (mocht je een adresconflict of een rotte geheugenchip hebben bijvoorbeeld)

Nadat de geheugenmanagers gladen zijn, geef je bepaalde parameters over resource-gebruik op.
Dit waren in elk geval gangbare waarden:
code:
1
2
3
FILES=30
STACKS=0,0
BUFFERS=20

In plaats van STACKS=0,0 werd (afhankelijk van de toepassing) ook wel STACKS=9,128 toegepast. Met de bovenstaande waarden zou je eens kunnen spelen.

Dan is het tijd voor het inladen van device-drivers. Bijvoorbeeld voor je CD-ROM:
code:
1
DEVICEHIGH=C:\MTMCDAI.SYS /D:123

Het is mogelijk dat je voor je IDE-adapter zo'n driver nodig hebt.

En mocht je je afvragen hoe het kan dat setup de disk ziet, dat komt omdat setup in 'real-mode' draait. In die mode kan er maximaal 1 Mb geheugen geaddresseerd worden en daarnaast gebruikt het OS de trage BIOS-calls voor het I/O verkeer. De latere MS-DOS versies kunnen in 'protected-mode' draaien waardoor het geheugenmanagement anders is en is er 'plek' voor device drivers die efficienter met I/O om gaan. De HIMEM.SYS device-driver is daar voor verantwoordelijk. (Lees bv. ook even in op de A20-gate)

Het is vrij gebruikelijk dat een OS de toegang tot zijn disken verliest wanneer de switch naar protected mode wordt gemaakt. Remember, Windows 9x setup? Het eerste (text-based) deel ziet netjes je harde schijf, schrijft alle bestanden daar naartoe en op het moment dat het grafische deel van setup wordt gestart komt hij er pas achter dat hij een device-driver mist en ziet hij geen schijf meer. De gebruiker had die driver tijdens de text-based setup moeten toevoegen door op het juiste moment op F6 te drukken...

Dus nogmaals, check je config.sys en speel met wat instellingen. Verwijder of voeg HIMEM.SYS toe en speel met zijn opties. Probeer bijvoorbeeld of de /A20CONTROL:OFF optie effect heeft.

Acties:
  • 0 Henk 'm!

  • blorf
  • Registratie: December 2003
  • Laatst online: 22-08 16:22
Er is geen config.sys. Ook geen autoexec.bat. 3 bestanden: command.com, msdos.sys en io.sys
Ook alleen deze worden door format/s naar de schijf gekopieerd. Format doet niks met een bootsector of opstartgebied. Geheugen is nog onbelangrijk. 640K is op dit moment nog prima.
Met config.sys hebben we nog niks te maken, FAT moet al werken op dit moment, wat ook vrij logisch is want hoe lees je dat bestand anders?

Wat ik zoek is iets afwijkends aan deze hardware wat mogelijk een softwarematige handeling vereist die ik niet ken. Het MS-DOS image dat ik heb werkt op alle computers tot nu toe die dat zouden moeten ondersteunen, behalve deze DEC 486 SX33. Maar alsnog probeer ik de officiele weg voor een installatie. De DOS setup denkt tot het eind dat alles goed gaat. Tot het moment dat command.com voor het eerst van de target-schijf gelezen moet worden zodat we terug kunnen naar de prompt. Dan blijkt alles onleesbaar.
Het is vrij gebruikelijk dat een OS de toegang tot zijn disken verliest wanneer de switch naar protected mode wordt gemaakt.
Waar heb je het over? Dit is een 16-bit omgeving waarbij de RAM door de gebruiker direct adresseerbaar is. real-mode all the way...

Een beetje de conclusie die ik uit je reactie haal, wat is de logica ervan dat een schijfstation werkt, afhankelijk van welke bestanden er op staan?

[ Voor 16% gewijzigd door blorf op 18-11-2022 12:17 ]

You are in a maze of little twisting passages, all different.


Acties:
  • 0 Henk 'm!

  • RiDo78
  • Registratie: Juli 2002
  • Niet online
blorf schreef op vrijdag 18 november 2022 @ 11:59:
[...]


Er is geen config.sys. Ook geen autoexec.bat. 3 bestanden: command.com, msdos.sys en io.sys
Ook alleen deze worden door format/s naar de schijf gekopieerd. Format doet niks met een bootsector of opstartgebied. Geheugen is nog onbelangrijk. 640K is op dit moment nog prima.
Met config.sys hebben we nog niks te maken, FAT moet al werken op dit moment, wat ook vrij logisch is want hoe lees je dat bestand anders?
Tjsa, mijn DOS kennis is een beetje stoffig... ik ben even snel aan het afstoffen gegaan.

Inderdaad het is niet FORMAT /s die een MBR schrijft maar FDISk. Ik was inderdaad die verborgen bestanden msdos.sys en io.sys even vergeten, niet geheel onbelangrijk. Maar het is volgens mij IO.SYS die verantwoordelijk is voor de disk I/O waaronder de ondersteuning van FAT. Het is ook IO.SYS die op een exacte locatie (VBR) in de partitie moet staan wil je uberhaupt kunnen booten. Je BIOS snapt immers niets van FAT, die wil gewoon een locatie in CHS hebben waar hij moet kijken.

Na IO.SYS start MSDOS.SYS. En die is verantwoordelijk voor het parsen van config.sys. Dus dat is nog voor command.com.
Wat ik zoek is iets afwijkends aan deze hardware wat mogelijk een softwarematige handeling vereist die ik niet ken.
De enige plek waarin je dat kan doen in MS-DOS is je config.sys.
Het MS-DOS image dat ik heb werkt op alle computers tot nu toe die dat zouden moeten ondersteunen, behalve deze DEC 486 SX33. Maar alsnog probeer ik de officiele weg voor een installatie. De DOS setup denkt tot het eind dat alles goed gaat. Tot het moment dat command.com voor het eerst van de target-schijf gelezen moet worden zodat we terug kunnen naar de prompt. Dan blijkt alles onleesbaar.


[...]


Waar heb je het over? Dit is een 16-bit omgeving waarbij de RAM door de gebruiker direct adresseerbaar is. real-mode all the way...
Zodra je meer dan 1 Mb geheugen hebt (wat niet ondenkbaar is voor een 486) heb je te maken met de A20 line. Of je dat geheugen nu gebruikt of niet. Zodra de machine uit de BIOS komt zou die lijn laag moeten zijn, waardoor je maar tot 1 Mb kunt adresseren. Vergis je niet, maar vanaf een 286 heb je al 20 (0 - 19) adreslijnen. De instructieset kan dan wel 16 bits zijn, maar je hebt wel 20 bits aan adressen. De A20 lijn heeft een soort dubbelrol gekregen om meer geheugen beschikbaar te maken binnen die 20 bits adres-space. Het is ook geen echte adreslijn maar meer een register in je toetsenbordcontroller (Dat ding moest een plek hebben zeker).

Real mode all the way? Prima, kan best. Maar je hebt wel met je A20 lijn te maken als je meer dan 1 Mb geheugen in je machine hebt. Het is de verantwoordelijkheid van HIMEM.SYS om de A20 gate te bedienen.
Een beetje de conclusie die ik uit je reactie haal, wat is de logica ervan dat een schijfstation werkt, afhankelijk van welke bestanden er op staan?
Nee, bij MS-DOS kun je net als bij andere besturingssystemen device-drivers nodig hebben. En zolang het OS (MS-DOS / Windows / Linux / ...) op het BIOS vertrouwd, kun je alle devices gebruiken die door je BIOS gevonden worden. Zodra het OS de stap maakt om zelfstandig de devices aan te spreken, dan merk je pas dat je een device-driver vergeten bent.

Net gaf ik de WIndows Setup als voorbeeld, maar ik heb er nog eentje die meer DOS-gerelateerd is. Wanneer jij een CD-ROM maakt met daarop een geemuleerde boot-floppy, dan zal je BIOS je CD-ROM-drive zien met daarin een CD-ROM met een filesystem. Dat filesystem is dan geen ISO9660 met Torrito extensie, maar een MBR met partitietabel. Als je BIOS die MBR start dan zal de 1,4 Mb grote FAT partitie gevonden worden en start MS-DOS prima op. Je zult dan merken dat je read-only A: schijf hebt. De rest van de CD kun je pas benaderen als je de CD-ROM driver installeert. Dan krijg je er een schijfletter bij. Hoewel MS-DOS niets van CD-ROM's snapt, kan het wel bij het BIOS terecht om data van een bepaalde plek te halen. Bios interrupt 13h om precies te zijn.

Maar het nadeel is dat een BIOS-IO-call relatief traag is en enkel beschikbaar is in 'real-mode'. Zodra het OS om wat voor reden dan ook omschakelt naar 'protected-mode' verliest het OS de toegang tot die devices. Nu kan het OS ook terug schakelen van protected-mode naar real-mode, maar ik weet niet of MS-DOS dat doet.


Anyway, we kunnen deze discussie nog lang voort blijven zetten, maar daar is niemand mee gebaat. Dus maak eens een config.sys aan te maken met deze inhoud en probeer dan te booten:
code:
1
DEVICE=C:\MSDOS\HIMEM.SYS

Werkt dat niet, pas hem dan aan naar:
code:
1
DEVICE=C:\MSDOS\HIMEM.SYS /A20CONTROL:OFF


Werkt dat nog niet, dan kunnen we verder zoeken. Maar dan hebben we wel de A20 gate uitgesloten en is een protected mode probleem ook minder evident.

Acties:
  • 0 Henk 'm!

  • blorf
  • Registratie: December 2003
  • Laatst online: 22-08 16:22
himem.sys laden kan niet want we kunnen niks laden van een schijfstation, alleen diskette. In dit geval ge-emuleerde diskettes via de Gotek drive. Als dat werkt zou het erop neer komen dat deze computer, ondanks dat het AT/Intel is toch een alternatief dos installatiemedium vereist die het hoge geheugen alvast regelt, waar dat ook voor nodig zou moeten zijn. De computer werkt niet met de officiele MS-DOS setup die gewoon echt op alle PC's toen draaide?

Een officiele MS-DOS 6.22 installatie zou op dit systeem gewoon moeten werken. Dat lukt ook met de mech. harddisk die er nog in zit, maar ik wil booten van een CF2IDE of SD2IDE apparaat. Maar die vertonen allebei hetzelfde probleem. Het is iets met de adressering. Je kan naar C:, dir, mkdir en rmdir werken. Dat is allemaal FAT-info, Maar data ergens van schijf halen werkt niet.
Op een andere computer kan ik de sd- en CF-kaart allebei gewoon lezen en merk geen problemen op.

You are in a maze of little twisting passages, all different.


Acties:
  • 0 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 20:24

BCC

Heb je freedos al geprobeerd? Die heeft veel betere support voor grotere partities en drives.

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Acties:
  • 0 Henk 'm!

  • blorf
  • Registratie: December 2003
  • Laatst online: 22-08 16:22
BCC schreef op vrijdag 18 november 2022 @ 14:46:
Heb je freedos al geprobeerd? Die heeft veel betere support voor grotere partities en drives.
Hetzelfde probleem. De installatie lijkt succesvol maar op het moment dat het eerste configuratiebestand van het doelstation wordt geladen: drive not ready abort/retry/ignore.

You are in a maze of little twisting passages, all different.


Acties:
  • 0 Henk 'm!

  • Mijzelf
  • Registratie: September 2004
  • Niet online
blorf schreef op donderdag 17 november 2022 @ 10:06:
Ook andere besturingssytemen hebben problemen met het medium. FreeDOS komt niet door de setup en NetBSD zegt fail bij het partitie maken.
Je draait NetBSD op dezelfde 486? In dat geval is het geen BIOS issue, lijkt me, aangezien NetBSD itt free- en MS-dos zijn eigen drivers gebruikt.

Het gaat op nog oudere systemen wel goed. Hoe staat het met nieuwere? Ik vraag me af of er een probleem zou kunnen zijn met de snelheid van de data overdracht. De IDE bus van die 486 is misschien sneller dan de maximale PIO mode die de adapter aankan? Hoe is die adapter aangesloten? Bandkabel of direct ingeplugd?

Acties:
  • 0 Henk 'm!

  • blorf
  • Registratie: December 2003
  • Laatst online: 22-08 16:22
Mijzelf schreef op zaterdag 19 november 2022 @ 09:14:
[...]

Je draait NetBSD op dezelfde 486? In dat geval is het geen BIOS issue, lijkt me, aangezien NetBSD itt free- en MS-dos zijn eigen drivers gebruikt.

Het gaat op nog oudere systemen wel goed. Hoe staat het met nieuwere? Ik vraag me af of er een probleem zou kunnen zijn met de snelheid van de data overdracht. De IDE bus van die 486 is misschien sneller dan de maximale PIO mode die de adapter aankan? Hoe is die adapter aangesloten? Bandkabel of direct ingeplugd?
Ik was even abuis. had NetBSD geprobeerd op een andere computer, niet deze. Nu wel geprobeerd. 9.3 met 5 floppys start alle diuskette's op en blijft dan hangen in wat lijkt op een panic.
Met 3.1 kom ik verder. Die komt tot in de setup maar de 1e actie resulteert in "out of swap". Dat is goed mogelijk want we hebben maar 12MB. Handmatig de setup afbreken en naar csh werkt kortstondig met alleen /bin en /sbin bereikbaar. Dmesg en fdisk werken en laten de harde schijf zien. Na een tijdje loopt het ook vast, wsl. ook door geheugen op. Helaas geen usb om even een stick als nood-swap aan te slingeren.

You are in a maze of little twisting passages, all different.


Acties:
  • 0 Henk 'm!

  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 21:03
Welke PIO mode wordt gebruikt om dat CF2IDE ding aan te sturen? Ik herinner me dat de meeste adapters op PIO0 bleven steken. Is dat nog in te stellen in de BIOS?

Acties:
  • 0 Henk 'm!

  • blorf
  • Registratie: December 2003
  • Laatst online: 22-08 16:22
_JGC_ schreef op zondag 20 november 2022 @ 00:36:
Welke PIO mode wordt gebruikt om dat CF2IDE ding aan te sturen? Ik herinner me dat de meeste adapters op PIO0 bleven steken. Is dat nog in te stellen in de BIOS?
Daar is niks van te zien. De BIOS-setup is 1 scherm met alleen hd en fd aanpasbaar. Daarnaast is er een "ROM base setup" optie die aan of uit kan. Hij geeft een wazige waarschuwing als je dat uit zet maar ik kan geen verschil ontdekken.

De tool ideinfo (geen idee meer waar ik die van heb) zegt bij zowel het cf2ide als sd2ide apparaat: ATA compliant max PIO transfer mode: 2
en ATA-2 PIO transfer modes supported: 3, 4.

Iets wat ik nog zou kunnen proberen is de echte harde schijf die afgekoppeld is 1 op 1 naar een sd of cf kaart te schrijven en ook de CHS-waarden overnemen, maar daar moet ik een andere PC met IDE voor neerzetten.

[ Voor 9% gewijzigd door blorf op 20-11-2022 01:31 ]

You are in a maze of little twisting passages, all different.

Pagina: 1