Advertisement
Guest User

steinn

a guest
Sep 2nd, 2011
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.35 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. #Script para automatizar a mudança das flags na hora de compilar o kernel.
  4. #Mais informações sobre como compilar o kernel para seu processador:
  5. #http://ubuntuforum-br.org/index.php/topic,81718.0.html
  6.  
  7. #Modo de usar:
  8. #Após baixar o kernel, descompactar, criar um link simbólico para ele no /usr/src/linux:
  9. # cd /usr/src/linux
  10. # sudo su
  11. # chmod +x script.sh
  12. # ./script.sh
  13. #O script deve ser executado como root. Recomendo que use sudo su - e rode o script ao invés de sudo sh script.sh
  14.  
  15.  
  16. #Script criado por André Steinn
  17.  
  18. #Aqui é a lista de arquivos que ele vai dar replace no -march= por -march=native. Você pode mudar essa lista de arquivos passando a lista pela opção a e separados pro virgula
  19. #e.g.: ./script.sh -a arch/x86/boot/compressed/Makefile,arch/x86/boot/Makefile,arquivo1,arquivo2,arquivo3
  20.  
  21. arquivos=( "arch/x86/boot/compressed/Makefile" "arch/x86/boot/Makefile" "arch/x86/kernel/acpi/realmode/Makefile" "arch/x86/Kconfig.cpu" "arch/x86/Makefile" "arch/x86/Makefile_32.cpu")
  22.  
  23. #Aqui eu verifico se a pessoa passou algum argumento na hora de executar o script
  24. while getopts ":a:c" opt; do
  25.   case $opt in
  26.     a)
  27.       echo "Você setou uma lista de arquivos personalizada: $OPTARG" >&2
  28.     IFS=',' read -ra arquivos <<< "$OPTARG"
  29.       ;;
  30.     \?)
  31.       echo "Opção inválida: -$OPTARG" >&2
  32.       exit 1
  33.       ;;
  34.   esac
  35. done
  36.  
  37. #Nessa linha eu pego qual a familia do processador dela, entre outras informações do sistema dela.
  38. #Ele retorna algo similar a: -march=amdfam10 -mcx16 -msahf -mpopcnt -mabm --param l1-cache-size=64 --param l1-cache-line-size=64 --param l2-cache-size=1024 -mtune=amdfam10 -fstack-protector. Exemplo que ele retornou do meu processador.
  39. cflag="-march="$(cc -march=native -E -v - </dev/null 2>&1 | grep cc1 | awk -F "-march=" '{print $2}')  #retorna o valor total a ser usado no cflags
  40.  
  41. #vamos dar replace no Makefile
  42. sed "s/HOSTCFLAGS/HOSTCFLAGS   = -Wall -Wmissing-prototypes -Wstrict-prototypes -02 -pipe $cflag \n#HOSTCFLAGS/g" Makefile > Makefile2
  43. mv Makefile2 Makefile #"Gambiarra", se usar sed Makefile > Makefile Nao dá certo, arquivo fica vazio
  44.  
  45. #Aqui eu faço um loop e altero os arquivos, removendo o -march=() por -march=native
  46. for i in "${arquivos[@]}"
  47. do
  48.     echo "Path no arquivo:"$i
  49.     sed -e 's/-march=\([A-Z0-9a-z]\+\)/-march=native/g'  $i > "$i.file_changed"
  50.     mv "$i.file_changed" $i
  51. done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement