# HG changeset patch # User Pascal Bellard # Date 1564665389 -7200 # Node ID 04ffefac5707d0f18bf747b93b57efa6956ffe4d # Parent e66efc062996d0afecce2c8ab1f5280a8b197ef2 Fix loram dos boot diff -r e66efc062996 -r 04ffefac5707 linld/stuff/src/CRTL.ASM --- a/linld/stuff/src/CRTL.ASM Tue Jul 30 10:35:07 2019 +0200 +++ b/linld/stuff/src/CRTL.ASM Thu Aug 01 15:16:29 2019 +0200 @@ -1327,101 +1327,6 @@ ifdef EXTRA p8086 ;*************************************************************** -;char *progname(void) -;*************************************************************** - global _progname:near - proc _progname near - - push si di - mov ah,30h - int 21h - xor di,di - cmp al,3 - mov ax,di - jb @@skip - ;mov es,[cs:2Ch] - mov es,[di+2Ch] - mov cx,sp ; big enough -@@loop: - repne - scasb - scasb - jne @@loop - inc di - inc di -; ax = strdup(bx) ? - mov si,di ; progname @es:di - repne - scasb - mov ax,di - sub ax,si ; progname len - push ax - call malloc_or_die - mov di,ax - pop cx - push ds - push es - pop ds - pop es - rep - movsb - push es - pop ds -@@skip: - pop di si - ret - - endp _progname - - -;*************************************************************** -;_fastcall void chdirname(bx:char *path) -;*************************************************************** - global @chdirname$qpzc:near - proc @chdirname$qpzc near - - cmp [byte bx+1],3Ah ; ':' - jne @@nodisk - mov dl,20h - or dl,[bx] - sub dl,61h - mov ah,0Eh - int 21h - inc bx - inc bx -@@nodisk: - xor cx,cx -@@next: - mov al,[bx] - cmp al,5Ch - jne @@tsteos - mov dx,bx - inc cx -@@tsteos: - inc bx - or al,al - jnz @@next - jcxz @@end - mov bx,dx - push [word bx] - mov [bx],al - ifdef LONG_FILENAME - stc - mov ax,713Bh ; chdir long filename (ds:dx) - int 21h - jnc @@chdirdone - endif - mov ah,3Bh ; chdir(ds:dx) - int 21h -@@chdirdone: - pop [word bx] -@@end: - ret - - endp @chdirname$qpzc - - -;*************************************************************** ;_fastcall char *ultoa(axdx:unsigned long n); ;*************************************************************** global @ultoa$qul:near diff -r e66efc062996 -r 04ffefac5707 linld/stuff/src/CRTLX.H --- a/linld/stuff/src/CRTLX.H Tue Jul 30 10:35:07 2019 +0200 +++ b/linld/stuff/src/CRTLX.H Thu Aug 01 15:16:29 2019 +0200 @@ -5,8 +5,6 @@ extern _fastcall int strcmp(const char* a,const char* b); //extern "C" char* strstr(const char* a,const char* b); extern _fastcall int strstr(const char* a,const char* b); -extern "C" char *progname(void); -extern _fastcall void chdirname(char *path); extern _fastcall unsigned long kver2ul(char *kernel_version); //extern "C" char *ultoa(unsigned long n); extern _fastcall int ultoa(unsigned long n); diff -r e66efc062996 -r 04ffefac5707 linld/stuff/src/LINLD.CPP --- a/linld/stuff/src/LINLD.CPP Tue Jul 30 10:35:07 2019 +0200 +++ b/linld/stuff/src/LINLD.CPP Thu Aug 01 15:16:29 2019 +0200 @@ -89,12 +89,7 @@ load_initrd(); boot_kernel(); } - if(strhead(s,"image=") != -1) { - s+=6; - set_kernel_name: - kernel_name=s; - } - else if(strhead(s,"initrd=") != -1) { + if(strhead(s,"initrd=") != -1) { initrd_name=s+7; } else if(strhead(s,"vga=") != -1) { @@ -140,6 +135,11 @@ ((u16 *)&topmem)[1] = (u16)(strtol(s+4)>>16); goto addincmdline; } + else if(strhead(s,"image=") != -1) { + s+=6; + set_kernel_name: + kernel_name=s; + } else { addincmdline: if(cmdline == (const char *) buf_cmdline + 1) { diff -r e66efc062996 -r 04ffefac5707 linld/stuff/src/MEMCPY32.ASM --- a/linld/stuff/src/MEMCPY32.ASM Tue Jul 30 10:35:07 2019 +0200 +++ b/linld/stuff/src/MEMCPY32.ASM Thu Aug 01 15:16:29 2019 +0200 @@ -93,16 +93,18 @@ xor bx,bx xor si,si mov ax,[srcseg] - xor dx,dx extrn N_LXLSH@4:near call near ptr N_LXLSH@4 add [word srcofs],ax adc [word srcofs+2],dx @@2flat: - mov ax,[word si+srcofs] ; srcofs, dstofs lo - mov dx,[word si+srcofs+2] ; srcofs, dstofs hi - extrn N_LXURSH@4:near - call near N_LXURSH@4 + les ax,[dword si+srcofs] ; srcofs, dstofs + mov dx,es + mov cl,4 +@@loop: + shr dx,1 + rcr ax,1 + loop @@loop or bx,dx ; >=1mb flag push ax ; srcseg, dstseg xor si,-6 diff -r e66efc062996 -r 04ffefac5707 linld/stuff/src/MEMTOP.ASM --- a/linld/stuff/src/MEMTOP.ASM Tue Jul 30 10:35:07 2019 +0200 +++ b/linld/stuff/src/MEMTOP.ASM Thu Aug 01 15:16:29 2019 +0200 @@ -88,14 +88,15 @@ setc dl ; (optimized to death) shld dx,ax,cl shl ax,cl ; (kbytes -> bytes) + ret else xor dx,dx add ah,4h ;account for 1024 low kb adc dx,dx ; (optimized to death) - db 0A9h ; test ax,04B1h - global N_LXLSH@4:near -N_LXLSH@4: - mov cl,4 + db 0A9h ; test ax,0C28Ch + global N_LXLSH@ES:near +N_LXLSH@ES: + mov dx,es global N_LXLSH@:near N_LXLSH@: mov ch,0 @@ -103,30 +104,16 @@ shl ax,1 rcl dx,1 loop @@lp + ret + global N_LXLSH@4:near +N_LXLSH@4: + xor dx,dx + mov cl,4 + jmp N_LXLSH@ endif - ret ; endp _memtop_88 - ifdef NO386 - global N_LXURSH@:near - global N_LXURSH@4:near -; proc N_LXURSH@4 near -N_LXURSH@4: - mov cl,4 -N_LXURSH@: - mov ch,0 -@@loop: - shr dx,1 - rcr ax,1 - loop @@loop - ret - -; endp N_LXURSH@4 - - endif - - ; proc _memtopz near ; call _memtop_e801 diff -r e66efc062996 -r 04ffefac5707 linld/stuff/src/TAZBOOT.CPP --- a/linld/stuff/src/TAZBOOT.CPP Tue Jul 30 10:35:07 2019 +0200 +++ b/linld/stuff/src/TAZBOOT.CPP Thu Aug 01 15:16:29 2019 +0200 @@ -163,8 +163,6 @@ int main(int argc, char *argv[]) { ((u16*) &base_himem)[1] |= (_1m+_64k)>>16; // base_himem = _1m+_64k - argv[0] = progname(); - bootiso(argv); // iso ? parsing is /init.exe stuff ! if (argc < 2) { try_default_args(); @@ -180,14 +178,38 @@ kernel=\\slitaz\\elks\n\ root=/dev/bda1 ro\n"); } - bootiso(argv + 1); - chdirname(*argv); + bootiso(argv + 1); // iso ? parsing is /init.exe stuff ! for (int i=0;;) { char *s; next: argv++; s=*argv; i++; - if (!s) break; + if (!s) { + if (isoreset(iso) != -1) { + s = (char *) initrd_name; + if (isoopen((char *) kernel_name) != -1) { + isokernel(); + } + if (s) { + do { + char *p, c; + for (p = s; *s && *s != ','; s++); + c = *s; *s = 0; + if (isoopen(p) != -1) { + addinitrd(); + } + *s = c; + if (c) s++; + } while (*s); + load_initrds(); + } + } + else { + load_kernel(); + load_initrd(); + } + boot_kernel(); + } #ifdef USE_ARGSTR if ((*(u16 *)s|0x2002) == 0x662F) { // -F /f skip_alloc++; @@ -201,32 +223,32 @@ else strcatb(buf_cmdline,*argv); // FIXME mem ? } #else - if (strhead(s,"kernel=") != -1) { + if (strhead(s,"initrd=") != -1) { + s += 7; + initrd_name = s; + } + else if (strhead(s,"bootfrom=") != -1) { + s += 9; + goto set_iso; + } + else if (strhead(s,"iso=") != -1) { + s += 4; + set_iso: + iso = s; + } + else if (strhead(s,"image=") != -1) { + goto set_kernel; + } + else if(strhead(s,"vga=") != -1) { + *(u16*)&vid_mode = (u16)strtol(s+4); // support normal, extended & ask + } + else if (strhead(s,"kernel=") != -1) { s++; set_kernel: s += 6; set_kernelz: kernel_name = s; } - else if (strhead(s,"image=") != -1) { - goto set_kernel; - } - else if (strhead(s,"initrd=") != -1) { - s += 7; - initrd_name = s; - } - else if (strhead(s,"bootfrom=") != -1) { - s += 9; - set_iso: - iso = s; - } - else if (strhead(s,"iso=") != -1) { - s += 4; - goto set_iso; - } - else if(strhead(s,"vga=") != -1) { - *(u16*)&vid_mode = (u16)strtol(s+4); // support normal, extended & ask - } else switch (*(u16 *)s|0x2002) { case 0x662F: // -F /f skip_alloc++; @@ -255,29 +277,4 @@ }} } #endif - if (isoreset(iso) != -1) { - char *s = (char *) initrd_name; - if (isoopen((char *) kernel_name) != -1) { - isokernel(); - } - if (s) { - while (*s) { - char *p, c; - for (p = s; *s && *s != ','; s++); - c = *s; *s = 0; - if (isoopen(p) != -1) { - addinitrd(); - } - *s = c; - if (c) s++; - } - load_initrds(); - } - } - else { - load_kernel(); - load_initrd(); - } - boot_kernel(); - return _AX; } diff -r e66efc062996 -r 04ffefac5707 linld/stuff/src/XMM.ASM --- a/linld/stuff/src/XMM.ASM Tue Jul 30 10:35:07 2019 +0200 +++ b/linld/stuff/src/XMM.ASM Thu Aug 01 15:16:29 2019 +0200 @@ -109,11 +109,10 @@ ;cwd ;add ax,[word (image_himem bx).size] ; lo m->size ;adc dx,[word (image_himem bx+2).size] ; hi m->size - mov ax,[word (image_himem bx).size] ; lo m->size - mov dx,[word (image_himem bx+2).size] ; hi m->size + les ax,[dword (image_himem bx).size] ; m->size mov cl,16-10 - extrn N_LXLSH@:near - call N_LXLSH@ + extrn N_LXLSH@ES:near + call N_LXLSH@ES inc dx mov ah,9h ;allocate blk of DX kilobytes (<64Mb) endif diff -r e66efc062996 -r 04ffefac5707 linld/stuff/src/pipehole.awk --- a/linld/stuff/src/pipehole.awk Tue Jul 30 10:35:07 2019 +0200 +++ b/linld/stuff/src/pipehole.awk Thu Aug 01 15:16:29 2019 +0200 @@ -1,11 +1,35 @@ -BEGIN { hold=0; is386=0; isload=0; isiso=0; istazboot=0; wascall=0; label="none"; xlabel="" } +BEGIN { hold=0; is386=0; isload=0; isiso=0; istazboot=0; wascall=0; ishimem=0; label="none"; xlabel=""; file="" } function isnum(n) { return match(n,/^[0-9+-]/) } { sub(/segment word public/,"segment byte public") if (/^@.*:$/ || / endp$/) afterjmp=0 - if (/dword ptr/) is386=1 + if (/^ \.386p$/) is386=1 + if (file == "" && /debug S/) { file=$3; gsub(/\"/,"",file) } + if (file == "himem.cpp") { + if (/remaining = m-/) ishimem=1 + if (ishimem == 1 && is386 == 0) { + if (/si\+8\]$/ || /si\+4\]$/ || /si\+16\]$/) next + if (/si\+6\]$/ || /si\+2\]$/ || /si\+14\]$/) sub(/mov dx,/,"les dx,d") + if (/si\+12\],ax/ || /si\+16\],ax/ || /bp-2\],ax/) sub(/,ax/,",es") + if (/do \{/) ishimem=0 + } + } # file == "himem.cpp" + if (file == "load.cpp") { sub(/DGROUP:_imgs\+65534/,"[di-2]") + if (/short @1@366$/) isload=10 + if (isload == 10) { # LOAD.LST + if (/^ je /) next + if (/ptr @die\$qpxzc/) { + $0=" jne @die@" + isload=0 + } + } + if (/setup_sects == 0/) isload=9 + if (isload == 9) { # LOAD.LST + sub(/,0/,",al") + if (/jne/) isload=0 + } if (/fallback\)\[1\] == 0/) isload=8 if (isload == 8) { # LOAD.LST if (/load_image/) isload=0 @@ -14,10 +38,13 @@ if (/cmd_line_ptr =/ && is386 == 0) isload=7 if (isload == 7) { # LOAD.LST if (/add/ || /xor/ || /extrn/ || /N_LXLSH@/ || /cl,4/) next - if (/,ax/) { - sub(/ax/,"8000h") + if (/enable A20 if needed/) { + print " mov word ptr [bx+si],8000h" isload=0 } + if (/,ax/) $0=" mov bx,55" + if (/si-463/) $0=" mov bx,-463" + if (/si-465/) $0=" mov word ptr [bx+si-2],-23745" if (/,dx/) { print " mov cl,12" print " shr ax,cl" @@ -55,7 +82,6 @@ if (isload == 4 && is386 == 0) { # LOAD.LST if (/push/ || /pop/) next if (/ax,cs/) { - print " cwd" sub(/ax,cs/,"bx,cs") } if (/dx,dx/) next @@ -68,9 +94,21 @@ isload=400 } } - if (isload == 400 && /,0/) { + if (isload == 400) { + if (/call/) { + print " extrn N_LXLSH@4:near" + sub(/N_LXLSH@/,"N_LXLSH@4") + } sub(/,0/,",dh") - isload=0 + if (/_base_himem\+2/ || /pop/ || /push/) next + if (/_base_himem$/) { + sub(/mov dx,/,"les dx,d") + isload++ + } + } + if (isload == 401) { + sub(/,ax/,",es") + if (/load_image/) isload=0 } if (isload == 4 && is386) { # LOAD.LST sub(/dx,cs/,"edx,cs") @@ -101,15 +139,39 @@ sub(/,ax/,",cx") if (/version_string/ || /starting linux 1\.3\.73/) isload=0 } - if (/_rm_size=0x200/ || /heap_top = _rm_buf/) isload=1 + if (/Not a kernel/ || /_rm_size=0x200/ || /heap_top = _rm_buf/) isload=1 if (isload == 1) { # LOAD.LST + if (/ptr .die\$qpxzc/) $0="@die@:\n" $0 if (/mov al,byte ptr/ && is386) { print " movzx eax,byte ptr [si]" next } + if (is386 == 0) { + if (/di-5\],ax/) print " cwd" + sub(/,0$/,",dx") + } if (/ax,word ptr/) next if (/^ call/) isload=0 } + } # file == "load.cpp" + if (file == "iso9660.cpp") { + if (/<< SECTORBITS/) isiso=9 + if (isiso == 9) { # ISO9660.LST + if (/dx,/) next + sub(/mov ax,/,"les ax,d") + if (/^ call/) { + print " extrn N_LXLSH@ES:near" + sub(/N_LXLSH@/,"N_LXLSH@ES") + isiso=0 + } + } + if (/filesize =/) isiso=8 + if (isiso == 8) { # ISO9660.LST + if (/ax,/) next + sub(/mov dx,/,"les dx,d") + sub(/,ax/,",es") + if (/filemod/) isiso=0 + } if (/CD001/) isiso=7 if (isiso == 7) { # ISO9660.LST sub(/mov ax,-1/,"dec ax") @@ -137,6 +199,8 @@ sub(/DGROUP:_isostate\+20/,"[si+20]") if (/goto restarted/) isiso=0 } + } # file == "iso9660.cpp" + if (file == "iso9660.cpp" || file == "tazboot.cpp") { if (/do s\+\+; while/) isiso=3 if (/for \(p = s; \*s && \*s \!=/) isiso=3 if (isiso == 3) { # ISO9660.LST, TAZBOOT.LST @@ -147,10 +211,15 @@ if (/al,0/) print " mov al,[" r "]" if (/al,byte ptr/) sub(/mov/,"xchg") if (/byte ptr \[.*\],0/) next - if (/jmp/) print " mov bx,si" + if (/jmp/) { + print " mov bx,si" + $0=" db 0A8h ; test al,xx instead of " $0 + } if (/word ptr \[bp-4\]/) next if (/\) s\+\+;/ || /\],-1/) isiso=0 } + } # file == "iso9660.cpp" || file == "tazboot.cpp" + if (file == "iso9660.cpp") { if (/endname = NULL/) isiso=2 if (isiso == 2) { # ISO9660.LST if (/mov bx,cx/) next @@ -172,10 +241,13 @@ if (/jmp @3@58$/) $0=" je @3@58" sub(/mov ax,-1/,"dec ax") } + } # file == "iso9660.cpp" if (/endp/) { xlabel = ""; goto2=0 } if (/isoopen\(s\+7\)/ && xlabel == "") goto2=1 if (/_vid_mode,ax/ && xlabel == "") goto2=1 + if (/_initrd_name,si/ && xlabel == "") goto2=1 if (/_base_himem\+2,/ && xlabel == "@") goto2=1 + if (/DGROUP:_skip_alloc/ && xlabel == "@") goto2=1 if (/puts\(cmdline\)/ && xlabel == "@@") goto2=1 if (goto2 == 1 && /jmp/) { # TAZBOOT.LST && LINLD.LST print $NF xlabel "@:" @@ -185,6 +257,30 @@ $0=$0 xlabel if (goto2++ == 1) xlabel=xlabel "@" } + if (/if\(\*s>=/) isotazboot=14 + if (isotazboot == 14) { # LINLD.LST + if (/jmp/) { + $0=" db 0A9h ; test ax,xxxx instead of " $0 + isotazboot=0 + } + } + if (file == "tazboot.cpp" && /; s \+= 4/) isotazboot=13 + if (isotazboot == 13) { # TAZBOOT.LST + if (/si,4/) $0=" lea bx,[si+4]" + if (/bx,si/) next + if (/DGROUP:_topmem/ || /set_iso/) isotazboot=0 + } + if (file == "tazboot.cpp" && /case 0x652F:/) isotazboot=12 + if (isotazboot == 12) { # TAZBOOT.LST + sub(/si,word/,"bx,word") + if (/short/) isotazboot=0 + } + if (/return load_kernel/) isotazboot=11 + if (isotazboot == 11) { # TAZBOOT.LST + sub(/call/,"jmp") + if (/ret/ || /pop/) next + if (/endp/) isotazboot=0 + } if (/cmdline=s\+=3/ || /magic \!= 0/ || /&root_dev =/) { isotazboot=10; j="" } if (isotazboot == 10) { # TAZBOOT.LST && LINLD.LST if (/je/ || /jne/) { j=$1; next } @@ -215,9 +311,8 @@ } if (/\+\+isknoppix/) isotazboot=7 if (isotazboot == 7) { # TAZBOOT.LST - if (/al,byte/) sub (/al,byte ptr DGROUP:/,"bx,offset ") - if (/inc/) sub (/al/,"word ptr [bx]") - if (/,al/) next + if (/inc/ || /,al/) next + if (/al,byte/) sub (/mov al,/,"inc ") if (/isokernel/) isotazboot=0 } if (/if \(c\) s\+\+;/) isotazboot=6 @@ -228,6 +323,12 @@ } } if (/static void next_chunk/) isotazboot=5 + if (isotazboot == 501) { + if (/ret/) { + print "@1@86:" + isotazboot=0 + } + } if (isotazboot == 5 || isotazboot == 500) { # TAZBOOT.LST if (/cx,ax/) $0=" xchg ax,bx" if (/ax,word ptr \[si\+28\]/ && isotazboot == 500) next @@ -235,7 +336,19 @@ if (/push/ || /pop/ || /bp,sp/ || /si,/) next sub(/\[si/,"[di") if (/initrd_info/) isotazboot=500 - if (/endp/) isotazboot=0 + if (/bx\+6\]/) next + if (/bx\+4\]/) sub(/mov dx,/,"les dx,d") + sub(/di\+24\],ax/,"di+24],es") + sub(/call/,"jmp") + if (/ret/ || /pop/ || /^@1@86:/) next + if (/_isostate\+14/) next + if (/_isostate\+12/) { + sub(/mov ax,/,"les ax,d") + print + print " mov dx,es" + next + } + if (/ax,-4/) isotazboot++ } if (/0x7FF0/) isotazboot=4 if (isotazboot == 4) { # TAZBOOT.LST @@ -266,6 +379,12 @@ } if (/\[bp-4\],ax/) sub(/ax/,"bx") if (/ax,word ptr \[bx\+2\]/ || /bx,ax/) next + if (/_base_himem\+2,dx/) { + print " mov bx,offset DGROUP:_base_himem+2" + } + sub(/DGROUP:_base_himem,/,"[bx-2],") + sub(/DGROUP:_base_himem\+2,/,"[bx],") + sub(/DGROUP:_base_himem\+3,/,"[bx+1],") if (/@strcmp\$qpxzct1/) isotazboot=0 } if (/static void addinitrd/) isotazboot=100 diff -r e66efc062996 -r 04ffefac5707 syslinux/stuff/iso2exe/bootiso.S --- a/syslinux/stuff/iso2exe/bootiso.S Tue Jul 30 10:35:07 2019 +0200 +++ b/syslinux/stuff/iso2exe/bootiso.S Thu Aug 01 15:16:29 2019 +0200 @@ -177,12 +177,10 @@ movsb ret .org 0x7E00 - - .org 0x7F78 + .org 0x7F40 ////////////////////////////// DOS EXE code /////////////////////////////////// exestart: - cld movw 129, %ax cmpb $0x2F, %al je ishelp @@ -223,6 +221,51 @@ //movb $EXESTR(realmodemsg), %al isvm86: call goputs +//---------- + pushw %di +//------------- insert argv[0] in cmdline ----------------------- + xchgw %ax,%dx // %ax = 0 + movw %ax,%di + movw 0x2C(%di),%es + movw %sp,%cx // big enough +scalp: + repne + scasb + scasb + jne scalp + incw %di + movw %di,%bx + incw %di + pushw %di // %es:%di = programme pathname + repne + scasb + subw %di,%bx + negw %bx + movw $128,%si + addw %bx,(%si) + lodsb + xchgw %ax,%cx + incw %cx + pushw %si +p2lp: + lodsb + movb %al,-2(%bx,%si) + loop p2lp + popw %si + popw %bx + movb $0x20,%al +p1lp: + movb %al,(%si) + incw %si + movb %es:(%bx),%al + incw %bx + cmpw %bx,%di + ja p1lp +//---------- + popw %di + pushw %cs + popw %es +//---------- movw comstart-end_header(%di), %si // .com address pushw %di movb $0x7C/2, %ch // 31K-31.5K, > com length @@ -242,17 +285,13 @@ .ascii "real" // real mode // --------------- Must be in 7FC0 7FFF range ------------------------ mode: - .ascii " m" -ode: - .ascii "ode" + .ascii " mode" .byte EXESTR(eol) noDOS3: - .ascii "DOS3" // DOS3? -need: - .ascii "?" + .ascii "DOS3?" // DOS3? .byte EXESTR(eol) help: - .ascii "SliTaz iso boot." // SliTaz iso boot. + .ascii "SliTaz iso boot" // SliTaz iso boot eol: .ascii "\r\n" .byte 1 // puts will return diff -r e66efc062996 -r 04ffefac5707 syslinux/stuff/iso2exe/init --- a/syslinux/stuff/iso2exe/init Tue Jul 30 10:35:07 2019 +0200 +++ b/syslinux/stuff/iso2exe/init Thu Aug 01 15:16:29 2019 +0200 @@ -1077,6 +1077,8 @@ [ -s /tmp/initrd ] && uncpio /tmp/initrd fi dosync + sed -i 's/ || exit//' /init + [ -s /etc/inittab ] || rm -rf /etc exec ${init:-/init} $cmdline } diff -r e66efc062996 -r 04ffefac5707 syslinux/stuff/iso2exe/iso2exe.sh --- a/syslinux/stuff/iso2exe/iso2exe.sh Tue Jul 30 10:35:07 2019 +0200 +++ b/syslinux/stuff/iso2exe/iso2exe.sh Thu Aug 01 15:16:29 2019 +0200 @@ -309,6 +309,9 @@ find $TMP -print0 | xargs -0 touch -t 197001010100.00 ( cd $TMP; find dev init.exe | cpio -o -H newc ) | compress > rootfs.gz rm -rf $TMP + chmod 644 ${@/init/rootfs.gz} + chown root.root ${@/init/rootfs.gz} + touch -t 197001010100.00 ${@/init/rootfs.gz} ls -l $@ rootfs.gz cp $0 $0.$$ cat >> $0.$$ <