A execução de make com a sequência do kernel vermagic com parênteses causa o erro de sintaxe / bin / sh

2

Eu estou no Ubuntu Server 12.04 x86_64 e eu preciso construir o módulo do kernel do Android CyanogenMod 7.2. Meu celular tem uma ROM personalizada e um kernel corrigido:

adb shell cat /proc/version

rendimentos

Linux version 2.6.37.3-cyanogenmod-gf3345ef-dirty (subbotin@avs234) (gcc version 4.4.0 (GCC) ) #2 PREEMPT Sun Mar 13 14:55:50 MSK 2011

Eu tenho essa configuração de variável, além de variáveis de toolchain, etc.

export LOCALVERSION="-cyanogenmod-gf3345ef-dirty (subbotin@avs234)"

Quando executo make ( observe que no Ubuntu bash é dash ) recebo o seguinte:

CHK    include/linux/version.h
/bin/sh: 1: Syntax error: "(" unexpected (expecting ")")
make: ***[include/generated/utsrelease.h] Error 2

No entanto, se eu remover "(subbotin @ avs234)" o kernel compila muito bem. Eu preciso de uma string vermagic completa, pois suspeito que este módulo do kernel não seja carregado por causa da diferença na string de versão. Qual é o problema com parênteses?

Uma descrição mais detalhada: O dispositivo é HTC Desire (bravo) GSM e o aplicativo é EDS Lite ( link ). Eu segui parcialmente este link e este é um guia de compilação do módulo do kernel link . No último link, é mencionado que a string vermagic provavelmente deve corresponder completamente. Quando tento carregar este módulo a partir do menu de montagem do aplicativo, recebo 'falha ao carregar o módulo do kernel'

#get repo tool
mkdir -p ~/bin 
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo 
chmod a+x ~/bin/repo 

#clone repo for cm-kernel
mkdir -p ~/Android/kernel 
cd ~/Android/kernel 
git clone git://github.com/CyanogenMod/cm-kernel.git 
cd cm-kernel

#pull the kernel configuration from the device
#my config file is here: http://pastebin.com/aHA2mETG
adb pull /proc/config.gz ~/Android/kernel/cm-kernel
cd ~/Android/kernel/cm-kernel
gunzip config.gz
#replace CONFIG_LOCALVERSION and CONFIG_LOCALVERSION_AUTO with null string
sed 's/CONFIG_LOCALVERSION\([[:alnum:][:punct:]]\)*//' config > .config
cp config .config

#toolchain from http://developer.android.com/sdk/index.html#download (sdk tools)

export CROSS_COMPILE=~/Android/Toolchain/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
export CCOMPILER=~/Android/Toolchain/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
export ARCH=arm
export SUBARCH=arm
export LOCALVERSION="-cyanogenmod-gf3345ef-dirty (subbotin@avs234)"
make oldconfig

#Answer "no" CONFIG_LOCALVERSION_AUTO (the second prompt) request.
make

#download EDS kernel module src http://www.sovworks.com/downloads.html
#extract to ~/Android/km
cd ~/km
make -C ~/Android/kernel/cm-kernel\
 ARCH=arm CROSS_COMPILE=~/Android/Toolchain/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-\
 EXTRA_CFLAGS=-fno-pic\
 SUBDIRS=~/Android/km modules

#if LOCALVERSION="-cyanogenmod-gf3345ef-dirty" then vermagic string is as in the following
modinfo eds.ko
#...
vermagic:       2.6.37.6-cyanogenmod-gf3345ef-dirty preempt mod_unload ARMv7 

upd: só notei que a versão estável do kernel atualmente instalado (que é 3) não é igual à versão estável do kernel construído (6). Não tenho certeza se eles são compatíveis - talvez o problema esteja com a sequência da versão do kernel instalada depois de tudo?

    
por Dmitrii S. 19.07.2013 / 23:20

1 resposta

0

However, if I remove "(subbotin@avs234)" the kernel compiles just fine.

Você não precisa disso no LOCALVERSION. "subbotin @ avs234" é apenas o que compilou o kernel (usuário @ host). Não faz parte da string de versão nem é necessário para qualquer coisa relacionada à compilação do kernel.

    
por 27.03.2014 / 18:01