NoPaste

kernel-gcc-export.sh

von rendegast
SNIPPET_DESC:
korrigiert 38975
SNIPPET_CREATION_TIME:
06.12.2015 12:39:17
SNIPPET_PRUNE_TIME:
Unendlich

SNIPPET_TEXT:
  1. #!/bin/sh
  2. # 200908, squeeze: dash als /bin/sh, versteht zBsp kein 'select'
  3. #Sun Sep 28 11:37:30 CEST 2008
  4. # 20090212
  5. # 20100301
  6. # 201212, kernel 3.6-debian, XZ-compressed
  7.  
  8. set | grep -i bash_version              # bash oder dash?
  9. VMLINUZ="${1#/boot/}"
  10. KERNEL_VERSION="${VMLINUZ#vmlinuz-}"
  11. echo "$1" | egrep -q "^/boot/vmlinuz.*" || { beep; echo Erwarte '/boot/KERNEL' als Argument, dann der laufende "$(uname -r)"; KERNEL_VERSION="$(uname -r)"; }
  12.  
  13. gcc_export() {
  14.         #       weitere Kandidaten BZIP2, LZMA, LZO.
  15.         #
  16.         KERNEL=/boot/vmlinuz-"$KERNEL_VERSION"
  17.  
  18.         POSGZ=$(xxd -c1 -l $((0x8000)) "$KERNEL" | grep -A3 ": 1f " | grep -B1 -A2 ": 8b " | grep -B2 -A1 ": 08 " | grep -B3 ": 00 " | awk '$2=="1f" {print $1}')
  19.         POSXZ=$(xxd -c1 -l $((0x8000)) "$KERNEL" | grep -A3 ": fd " | grep -B1 -A2 ": 37 " | grep -B2 -A1 ": 7a " | grep -B3 ": 58 " | awk '$2=="fd" {print $1}')
  20.         # soweit scheint nur eins davon ungleich non-zero
  21.         [ "x$POSGZ" != "x" -a "z$POSXZ" = "z" ] && { POS="$POSGZ"; unzipper=gunzip; }
  22.         [ "z$POSXZ" != "z" -a "x$POSGZ" = "x" ] && { POS="$POSXZ"; unzipper=unxz; }
  23.  
  24.         POS=${POS%:}
  25.         KERNEL_CC_VERSION=$(dd if="$KERNEL" bs=$((0x$POS)) skip=1 2>/dev/null | $unzipper -c 2>/dev/null | strings | egrep -m1 -o "gcc version ..." | cut -d" " -f3)
  26. export KERNEL_CC="gcc-$KERNEL_CC_VERSION"
  27. }
  28.  
  29. gcc_export
  30. echo $KERNEL_CC
  31.  
  32.  

Quellcode

Hier kannst du den Code kopieren und ihn in deinen bevorzugten Editor einfügen. PASTEBIN_DOWNLOAD_SNIPPET_EXPLAIN