grub4dos
grub4dos copied to clipboard
0.4.6a does not see all files into ISO
grub4dos-0.4.6a-2013-01-14.7z and later builds does not see all files into ISO, that's created by oscdimg (cdimage). This bug, you can see in the images with ISO9600 and Joilet extension. On ISO with UDF file system Grub4Dos 0.4.6a work fine. For example on the screen maping original image of Microsoft Windows XP Professional x32 VOL Edition with SP3 Russian.
Also after "ls (0xff)/I386/" command, "up arrow" key does not working - it's show some unreadable symbol (smile like on the screen above) instead of previous entered commands. To reproduce the problem, you can take any image of the original Windows Xp/2003 or create your own by oscdimg.
During testing of this bug:
- Images created by latest UltraISO v9.6.5.3237 - 0.4.6a see all files but have same problem with up arrow.
- grub4dos-0.4.6a-2013-01-13.7z works fine.
- All 0.4.5c builds don't have this bug.
Please fix it.
I can confirm up arrow problem using standard English Microsoft WinXp Pro. ISO 0.4.6a 2016-03-26
also crash if
map /WinXP.iso (0xff) map --hook ls /i38 <TAB>

Press TAB key

Also command stack is cleared/corrupted (if press UP key).
Please test
Seems OK now for me.
grldr.rar.txt and grub4dos-0.4.6a-2016-04-10.7z now they do not see all files in ISO with UDF filesystem. I tested on original Microsoft image of Windows 7 and 10:
UP key work well.

grub4dos-0.4.6a-2016-04-11.7z don't see subfolders in "sources".
grub4dos-0.4.6a-2016-04-11.7z
I can see subfolders in "sources". How can you not? Please screenshot.

Problem finding. 2 level sub folders cannot be accessed.
I wrote Create_lst.cmd that generate ImageName.lst for testing files in ISO, example:
map /en_winxp_pro_with_sp3_vl.iso (0xff)
map --hook
echo Begin scanning: /en_winxp_pro_with_sp3_vl.iso.
if not exist (0xff)/AUTORUN.INF echo /AUTORUN.INF
............................................................
if not exist (0xff)/WIN51IP.SP3 echo /WIN51IP.SP3
echo Scan completed.
pause
halt
Create_lst.7z.txt
And test with them various image of Windows. Vista/7/10 pass test successfully, Xp/8/.8.1 was failed:
On 0.4.5c version "Windows XP Professional with Service Pack 3 VOL English" and "Microsoft Windows XP Professional x64 VOL Edition with SP2 English" have passed ok.
Also if delete the first 4000 lines in lst, both XP will passed test:
For 8 x64 deleting the first 1000 lines will change errors message and don't open commandline:

Question how to reproduce? Create_lst.cmd how to use?
Sorry I forgot to write. Put Create_lst.cmd and ISOs in root of flash drive (7z.exe + 7z.dll too, if you don't have installed 7-Zip 15.14). Start Create_lst.cmd and he will generate lst for each ISO next to him. All that remains is to add the start-up menu in menu.lst to new genereted lst or run them manually from console.
Still not clear. Is in the DOS environment? GRLDR environment? Windows environment? Create_lst.cmd automatic execution? Please upload a test kit (remove winxp.iso).
On XPProSP3, the generated .lst fails after 4000 lines as you have shown.
However, if you delete all lines before 4000, then it passes.
So the problem you are seeing is caused by the number of lines in the .lst file - it is not a problem with the iso. Other ISOs are OK because there are fewer lines in the .lst file (or perhaps fewer characters in total?).
This ISO fails after line 4000, but if I delete the lines before 4000 then it passes...

If I add pause lines to the full XPPROSP3.lst
... beginning of file...
if not exist (0xff)/I386/NEWFEAT5.HL_ echo /I386/NEWFEAT5.HL_
if not exist (0xff)/I386/NEWMARK1.JP_ echo /I386/NEWMARK1.JP_
if not exist (0xff)/I386/NEWMARK8.JP_ echo /I386/NEWMARK8.JP_
if not exist (0xff)/I386/NEWS.PN_ echo /I386/NEWS.PN_
if not exist (0xff)/I386/NEWSTRYS.WM_ echo /I386/NEWSTRYS.WM_
if not exist (0xff)/I386/NEWTOP1.JP_ echo /I386/NEWTOP1.JP_
pause 4435
if not exist (0xff)/I386/NEWTOP8.JP_ echo /I386/NEWTOP8.JP_
if not exist (0xff)/I386/NEXTDOWN.JP_ echo /I386/NEXTDOWN.JP_
if not exist (0xff)/I386/NEXTLINK.DL_ echo /I386/NEXTLINK.DL_
if not exist (0xff)/I386/NEXTOFF.JP_ echo /I386/NEXTOFF.JP_
if not exist (0xff)/I386/NEXTOVER.JP_ echo /I386/NEXTOVER.JP_
pause 4438
if not exist (0xff)/I386/NEXTUP.JP_ echo /I386/NEXTUP.JP_
if not exist (0xff)/I386/NIPX.MI_ echo /I386/NIPX.MI_
if not exist (0xff)/I386/NLHTML.DL_ echo /I386/NLHTML.DL_
if not exist (0xff)/I386/NLS302EN.LE_ echo /I386/NLS302EN.LE_
if not exist (0xff)/I386/NLSFUNC.EX_ echo /I386/NLSFUNC.EX_
if not exist (0xff)/I386/NMAS.DL_ echo /I386/NMAS.DL_
if not exist (0xff)/I386/NMASNT.DL_ echo /I386/NMASNT.DL_
if not exist (0xff)/I386/NMCHAT.CH_ echo /I386/NMCHAT.CH_
if not exist (0xff)/I386/NMCHAT.DL_ echo /I386/NMCHAT.DL_
if not exist (0xff)/I386/NMCOM.DL_ echo /I386/NMCOM.DL_
if not exist (0xff)/I386/NMEVTMSG.DL_ echo /I386/NMEVTMSG.DL_
if not exist (0xff)/I386/NMFT.DL_ echo /I386/NMFT.DL_
if not exist (0xff)/I386/NMMKCERT.DL_ echo /I386/NMMKCERT.DL_
if not exist (0xff)/I386/NMNT.SY_ echo /I386/NMNT.SY_
if not exist (0xff)/I386/NMOLDWB.DL_ echo /I386/NMOLDWB.DL_
if not exist (0xff)/I386/NMPGMGRP.EX_ echo /I386/NMPGMGRP.EX_
if not exist (0xff)/I386/NMWB.DL_ echo /I386/NMWB.DL_
if not exist (0xff)/I386/NMWHITEB.CH_ echo /I386/NMWHITEB.CH_
if not exist (0xff)/I386/NOANSWER.HT_ echo /I386/NOANSWER.HT_
if not exist (0xff)/I386/NOCONTNT.CN_ echo /I386/NOCONTNT.CN_
if not exist (0xff)/I386/NOFTS.CH_ echo /I386/NOFTS.CH_
if not exist (0xff)/I386/NOISE.CHS echo /I386/NOISE.CHS
if not exist (0xff)/I386/NOISE.CHT echo /I386/NOISE.CHT
if not exist (0xff)/I386/NOISE.DA_ echo /I386/NOISE.DA_
if not exist (0xff)/I386/NOISE.DE_ echo /I386/NOISE.DE_
if not exist (0xff)/I386/NOISE.ENG echo /I386/NOISE.ENG
if not exist (0xff)/I386/NOISE.ENU echo /I386/NOISE.ENU
pause 4461
if not exist (0xff)/I386/NOISE.ES_ echo /I386/NOISE.ES_
Note that 'pause 4438' is not executed!!!

If I add more characters to the file before line 4435, then it fails before 4435 - so it is the number of characters in the .lst file that counts, not the number of lines.

if not exist (0xff)/I386/NEWBTM1.JP_ echo /I386/NEWBTM1.JP_
if not exist (0xff)/I386/NEWBTM8.JP_ echo /I386/NEWBTM8.JP_
pause 4414
if not exist (0xff)/I386/NEWDEV.DL_ echo /I386/NEWDEV.DL_
if not exist (0xff)/I386/NEWEMAIL.WA_ echo /I386/NEWEMAIL.WA_SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
if not exist (0xff)/I386/NEWEULA.HT_ echo /I386/NEWEULA.HT_SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
if not exist (0xff)/I386/NEWEULA2.HT_ echo /I386/NEWEULA2.HT_SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
if not exist (0xff)/I386/NEWFEAT1.CH_ echo /I386/NEWFEAT1.CH_SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
if not exist (0xff)/I386/NEWFEAT1.HL_ echo /I386/NEWFEAT1.HL_SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
pause 4420
if not exist (0xff)/I386/NEWFEAT2.CH_ echo /I386/NEWFEAT2.CH_SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
if not exist (0xff)/I386/NEWFEAT2.HL_ echo /I386/NEWFEAT2.HL_SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
if not exist (0xff)/I386/NEWFEAT3.CH_ echo /I386/NEWFEAT3.CH_SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
if not exist (0xff)/I386/NEWFEAT3.HL_ echo /I386/NEWFEAT3.HL_SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
if not exist (0xff)/I386/NEWFEAT4.CH_ echo /I386/NEWFEAT4.CH_SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
if not exist (0xff)/I386/NEWFEAT4.HL_ echo /I386/NEWFEAT4.HL_SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
if not exist (0xff)/I386/NEWFEAT5.CH_ echo /I386/NEWFEAT5.CH_SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
pause 4428
if not exist (0xff)/I386/NEWFEAT5.HL_ echo /I386/NEWFEAT5.HL_SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
if not exist (0xff)/I386/NEWMARK1.JP_ echo /I386/NEWMARK1.JP_
if not exist (0xff)/I386/NEWMARK8.JP_ echo /I386/NEWMARK8.JP_
if not exist (0xff)/I386/NEWS.PN_ echo /I386/NEWS.PN_
if not exist (0xff)/I386/NEWSTRYS.WM_ echo /I386/NEWSTRYS.WM_
if not exist (0xff)/I386/NEWTOP1.JP_ echo /I386/NEWTOP1.JP_
pause 4435
if not exist (0xff)/I386/NEWTOP8.JP_ echo /I386/NEWTOP8.JP_
if not exist (0xff)/I386/NEXTDOWN.JP_ echo /I386/NEXTDOWN.JP_
if not exist (0xff)/I386/NEXTLINK.DL_ echo /I386/NEXTLINK.DL_
if not exist (0xff)/I386/NEXTOFF.JP_ echo /I386/NEXTOFF.JP_
if not exist (0xff)/I386/NEXTOVER.JP_ echo /I386/NEXTOVER.JP_
pause 4438
if not exist (0xff)/I386/NEXTUP.JP_ echo /I386/NEXTUP.JP_
if not exist (0xff)/I386/NIPX.MI_ echo /I386/NIPX.MI_
...
2012yaya2007 Create_lst.cmd is automatic execution script, works on Windows. It builds *.lst for all ISOs near the script. In archive files from test flash drive, original ISOs replaced by empty files. flash_drive.7z.txt
steve6375 On grub4dos-0.4.5c-2016-01-18.7z no those errors. ISOs and *.lst was the same, so problem in grub4dos-0.4.6a-2016-04-13.7z.
steve6375 On grub4dos-0.4.5c-2016-01-18.7z no those errors. ISOs and *.lst was the same, so problem in grub4dos-0.4.6a-2016-04-13.7z.
correct, but the files in the iso are found OK. The problem is just having a very large .lst file. It is not a problem with finding files inside the ISO.
steve6375 Ok, I understand. yaya2007 Thanks for support!
It has nothing to do with the ISO system. The size of "en_winxp_pro_with_sp3_vl.lst" is too large.
Yes, it is due to large .lst file BUT as at1ant says, grub4dos 0.4.6a 2016-01-18 works, but 2016-04-13 gives errors.
More than 256Kb, it may cause memory conflict. As for the conflict or not, it depends on the specific circumstances.