Results 1 to 2 of 2

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

Threaded View

  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.

Posting Permissions

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


1TB Samsung 840 EVO Internal 2.5

1TB Samsung 840 EVO Internal 2.5" SATA III SSD MZ7TE1T0HMHP Solid State Drive

$69.83



960GB Samsung M.2 PM983 SSD PCIe NVMe 22110 Solid State Drive MZ1LB960HAJQ-00007 picture

960GB Samsung M.2 PM983 SSD PCIe NVMe 22110 Solid State Drive MZ1LB960HAJQ-00007

$74.68



HPGYT DELL 960GB SATA 6Gb/s 2.5in Internal SSD 0HPGYT MTFDDAK960TCB picture

HPGYT DELL 960GB SATA 6Gb/s 2.5in Internal SSD 0HPGYT MTFDDAK960TCB

$59.00



SM883 HXM7404Q 2.5 Samsung 960GB SATA6.0Gbps MZ7KH960HAJR-00005 MZ-7KH9600 SSD picture

SM883 HXM7404Q 2.5 Samsung 960GB SATA6.0Gbps MZ7KH960HAJR-00005 MZ-7KH9600 SSD

$95.00



Patriot P210 128GB 256GB 512GB 1TB 2TB 2.5

Patriot P210 128GB 256GB 512GB 1TB 2TB 2.5" SATA 3 6GB/s Internal SSD PC/MAC Lot

$14.99



Netac 1TB 2TB 512GB Internal SSD 2.5'' SATA III 6Gb/s Solid State Drive lot picture

Netac 1TB 2TB 512GB Internal SSD 2.5'' SATA III 6Gb/s Solid State Drive lot

$13.99



Fanxiang SSD 512GB 1TB 2TB 4TB 2.5'' SSD SATA III Internal Solid State Drive lot picture

Fanxiang SSD 512GB 1TB 2TB 4TB 2.5'' SSD SATA III Internal Solid State Drive lot

$13.99



Samsung - Geek Squad Certified Refurbished 980 PRO 1TB Internal SSD PCIe Gen ... picture

Samsung - Geek Squad Certified Refurbished 980 PRO 1TB Internal SSD PCIe Gen ...

$71.99



Fanxiang 4TB 2TB 1TB SSD 550MB/s 2.5'' SATA III Internal Solid State Drive lot picture

Fanxiang 4TB 2TB 1TB SSD 550MB/s 2.5'' SATA III Internal Solid State Drive lot

$209.99



Fanxiang 256GB 512GB 1TB 2TB 4TB Internal SSD 2.5

Fanxiang 256GB 512GB 1TB 2TB 4TB Internal SSD 2.5" SATA III 6GB/s for PC/MAC Lot

$178.19