Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #Script para automatizar a mudança das flags na hora de compilar o kernel.
- #Mais informações sobre como compilar o kernel para seu processador:
- #http://ubuntuforum-br.org/index.php/topic,81718.0.html
- #Modo de usar:
- #Após baixar o kernel, descompactar, criar um link simbólico para ele no /usr/src/linux:
- # cd /usr/src/linux
- # sudo su
- # chmod +x script.sh
- # ./script.sh
- #O script deve ser executado como root. Recomendo que use sudo su - e rode o script ao invés de sudo sh script.sh
- #Script criado por André Steinn
- #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
- #e.g.: ./script.sh -a arch/x86/boot/compressed/Makefile,arch/x86/boot/Makefile,arquivo1,arquivo2,arquivo3
- 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")
- #Aqui eu verifico se a pessoa passou algum argumento na hora de executar o script
- while getopts ":a:c" opt; do
- case $opt in
- a)
- echo "Você setou uma lista de arquivos personalizada: $OPTARG" >&2
- IFS=',' read -ra arquivos <<< "$OPTARG"
- ;;
- \?)
- echo "Opção inválida: -$OPTARG" >&2
- exit 1
- ;;
- esac
- done
- #Nessa linha eu pego qual a familia do processador dela, entre outras informações do sistema dela.
- #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.
- 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
- #vamos dar replace no Makefile
- sed "s/HOSTCFLAGS/HOSTCFLAGS = -Wall -Wmissing-prototypes -Wstrict-prototypes -02 -pipe $cflag \n#HOSTCFLAGS/g" Makefile > Makefile2
- mv Makefile2 Makefile #"Gambiarra", se usar sed Makefile > Makefile Nao dá certo, arquivo fica vazio
- #Aqui eu faço um loop e altero os arquivos, removendo o -march=() por -march=native
- for i in "${arquivos[@]}"
- do
- echo "Path no arquivo:"$i
- sed -e 's/-march=\([A-Z0-9a-z]\+\)/-march=native/g' $i > "$i.file_changed"
- mv "$i.file_changed" $i
- done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement