Results 1 to 2 of 2

Thread: Bug in minrt.gz:init from 7.2-7.4.2

  1. #1
    Junior Member registered user
    Join Date
    Aug 2007
    Posts
    16

    Bug in minrt.gz:init from 7.2-7.4.2

    Couldnt believed when i saw this go from 7.2-7.4.2 but the long wait for creation of knopix-data.img led me to this.
    first the comment from /init:
    # I thought that creating a sparse file would be quicker than writing
    # all data completely, but unfortunately, it has bad side effects if
    # the underlying FAT file system is fragmented. -KK
    # dd if="$src" of="$1" bs=1M seek="$(($2 - 1))" count=1


    No, Klause the fast way works with a ext2+ fs but it's the bug below that led you to believe it doesn't!
    Please correct me if I am wrong.Check the fix script below that changes 1 byte (what major work you save):



    The bug is described in the details of the fix script (all to fix one byte in the init script!!!!):

    #!/bin/bash
    # Rev: $Id: fixminirt.sh 618 2015-04-13 23:49:24Z knoppix $
    # Author: koolb@hotmail.com
    # Description: Fix minirt.gz to e2fsck knoppix-data.img from Knoppix7.2-4
    # for USB style installations on HD (or USB of course).
    # Usage: # optionally, specify addtional boot areas besides /mnt-system/boot,
    # eg /dev/sda2/boot
    # fixminitrt.sh [/path/to/additional/boot] # where {iso,sys}linux* dirs are
    #
    # Details:
    # This handles an issue Knoppix 7.2-4 for those booting off USB or have
    # multiple usb style boots to HD or otherwise.
    # This is bug in the minitrt/init script's checkfs() function
    # in Knoppix7.2-7.4.2. checkfs() which igores the file passed.
    # # checkfs partition filesystem
    # checkfs(){
    # local p="$1" ... # we assign to $p
    # ...
    # ... e2fsck -y "$h" ... # bug: uses $h instead of $p: fix $h -> $p
    # ...
    # }
    # This will find all minirt.gz files and update the init script in each.
    # . ~/scripts/functions - used for debugging shell scripts
    echo "$0 v$Revison$"
    export DFTDIRS=$(echo /mnt-system/boot/{sys,iso}linux*)
    export USRDIRS
    [ -d "$1" ] && USRDIRS=$(echo $1/{sys,iso}linux*)
    export MRBFN=minirt INIT="init"
    export MRTMP=$MRBFN MRIOZ=$MRBFN.gz
    export MRORG=$MRIOZ.org
    function abort() {
    echo "$@" && exit 1
    }
    sub patch() {
    local fn=$1
    echo "Patching $fn to $fn.new"
    sed -e 's/\(e2fsck.*\$\)h/\1p/' $fn > $fn.new || abort "No patch applied"
    }
    export src
    for src in $DFTDIRS $USRDIRS
    do if test -d $src && cd $src; then
    echo "Processing $src..."
    [ -n "$DBG" ] && set -x
    [ ! -e $MRORG ] && sudo cp -Ta $MRIOZ $MRORG # Backup
    [ ! -e $MRIOZ ] && sudo cp -Ta $MRORG $MRIOZ # Restore
    [ ! -w $MRIOZ ] && sudo chmod o+rw $MRIOZ
    export td="$(echo $src | sed 's@/@/tmp/@')/$MRBFN"
    export tfo=$td.org tfn=$td.new
    [ -d $td ] && sudo rm -rf $td
    mkdir -p $td || abort "$src: Unable to mkdir -p $td"
    echo "Extracting $src/$MRIOZ to $td && cd $td"
    mkdir -p $BOOTISO $BOOTSYS
    echo "Extracting $src/$MRIOZ to $td && cd $td"
    cd $td || abort "$td: Unable to cd $td"
    [ -e $INIT ] || gzip -dc $src/$MRIOZ | tee $tfo | sudo cpio --no-absolute-filenames -i -d -H newc || abort "$td: Unable to extract $MRIOZ "
    patch $INIT
    lines=$(diff $INIT $INIT.new|wc -l) || abort "$td: diff/patch failed."
    [ -w $INIT ] || sudo chmod o+w $INIT|| abort "$td: Unable to make $INIT writeable"
    if [ "$lines" -eq 4 -o "$lines" -eq 0 ]; then
    [ "$lines" -eq 0 ] && echo "$td: Already Patched but recreating..."
    [ -f $INIT.new ] && rm -f "$INIT" && mv "$INIT.new" "$INIT"
    echo "$td: Patch SUCCESS!. creating new $src/$MRIOZ..."
    find . | sudo cpio -o -H newc | tee $tfn | gzip -c > ../$MRIOZ ||
    abort "$td: Unable to create new ../$MRIOZ"
    sudo cp -v "../$MRIOZ" "$src/$MRIOZ" || abort "$td: cp ../$MRIOZ to $src failed: $(ls -l ../$MRIOZ)"
    for f in $tfo $tfn; do file $f; done
    else abort "$td: Bad patch, expected one change: $(diff $INIT $INIT.new)"
    fi
    for f in $src/$MRIOZ $src/$MRORG; do ls -l $f && sum $f; done
    fi
    done
    Last edited by koolb; 04-16-2015 at 11:57 PM.

  2. #2
    Junior Member registered user
    Join Date
    Aug 2007
    Posts
    16
    fixes: sub patch() # should be function patch()
    add chmod 755 $fn.new as last line of the patch() fn

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  


Atari 400/800/XL/XE Computer SIO2PC - PC/Mac Disk Drive Emulator Adapter/Device picture

Atari 400/800/XL/XE Computer SIO2PC - PC/Mac Disk Drive Emulator Adapter/Device

$15.25



A8picoCart Atari 130 / 65 XE 800 / 1200 XL XEGS multicart UnoCart clone game picture

A8picoCart Atari 130 / 65 XE 800 / 1200 XL XEGS multicart UnoCart clone game

$31.95



Atari Power Cube 800XL, 600XL, 65XE, 130XE  USB-C Power Supply PSU picture

Atari Power Cube 800XL, 600XL, 65XE, 130XE USB-C Power Supply PSU

$11.25



Vintage Atari 800 Computer System Only FOR PARTS OR REPAIR READ picture

Vintage Atari 800 Computer System Only FOR PARTS OR REPAIR READ

$65.00



A8PicoCart Kit Atari XE XL unocart clone multicart cartridge game picture

A8PicoCart Kit Atari XE XL unocart clone multicart cartridge game

$18.95



Atari 1200XL Home Computer In Original Styrofoam & BOX -  picture

Atari 1200XL Home Computer In Original Styrofoam & BOX -

$499.00



UNTESTED LOT 2x Atari 810 1x Atari 850 2x Atari Controllers 1x Atari 410 Tape picture

UNTESTED LOT 2x Atari 810 1x Atari 850 2x Atari Controllers 1x Atari 410 Tape

$274.95



Preppie II Atari 400/800 Star Systems Software/Russ Wetmore Game Clamshell 1983 picture

Preppie II Atari 400/800 Star Systems Software/Russ Wetmore Game Clamshell 1983

$37.99



A8picoCart Atari 130 / 65 XE 800 / 1200 XL XEGS multicart UnoCart clone game picture

A8picoCart Atari 130 / 65 XE 800 / 1200 XL XEGS multicart UnoCart clone game

$29.49



Atari 1050 US Doubler upgrade kit picture

Atari 1050 US Doubler upgrade kit

$35.00