Advertisement
Guest User

ERRO ao rodar sudo kfn

a guest
Jul 19th, 2012
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 86.26 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # Kernel for Newbies - 2012 João Guilherme C.
  4. # https://sourceforge.net/projects/kfn/
  5. # http://facebook.com/kernelfornewbies
  6.  
  7. # "Kernel for Newbies" é um simples assistente para sistemas baseados no Debian, para construir, customizar, compilar e instalar seu kernel. É necessário um mínimo de informação para construir o "cérebro" de seu sistema, ele se encarrega das instalações de dependências, downloads de pacotes, patches, aplicações de configurações, compilação, instalação do kernel, atualização do bootloader e ainda passa roupa... automaticamente!
  8.  
  9. # KFN pode ser usado em máquinas a partir de 256MB de RAM, sistemas 32/64bits, PCS, Notebooks, Consoles (PS3), máquinas virtuais (VirtualBox, VMware e Parallels) e sistemas embarcados, suportando processadores Intel, AMD, PowerPC, ARM, VIA, Transmeta e de outros fabricantes, podendo ser usado em máquinas com baixo poder de processamento até grande servidores com até 1024 processadores, teoricamente.
  10.  
  11. # Se isto não bastasse, o KFN detecta a melhor configuração do seu processador para obter a melhor otimização de velocidade para sua arquitetura. Ou se preferir, pode selecionar uma opção na ampla lista de configurações de otimização de processador!
  12.  
  13. # KFN utiliza uma interface simples, porém com muitas opções, adotando diálogos amigáveis.
  14.  
  15. # Você pode verificar usando o próprio menú as versões mais recentes para o KFN e para o Kernel Linux! A partir da versão 1.8 do KFN, não será mais necessário realizar o download e a atualização manualmente, o KFN se encarrega de ambas as duas.
  16.  
  17. # Você deseja compilar uma versão x do Kernel, mas sua distribuição ja o instalou em seu sistema? Não se preocupe! Você pode manter varias compilações instaladas em sua máquina. Uma mesma versão do Kernel pode ser instalada em seu sistema usando a compilação da sua distribuição ou do KFN. Você pode compilar desde 2.6.x até as versões mais recentes do Kernel!
  18.  
  19. # Além disso, você pode conferir os relatórios gerados em /usr/src/kfn, para simples conferência ou para solução de problemas.
  20.  
  21. #### Dicas: ####################################################################
  22.  
  23. # Mantenha o KFN sempre atualizado!
  24. # NUNCA compile um Kernel usando hardware com overclock! Isso pode causar erros durante a compilação.
  25. # Mantenha sua distribuição atualizada.
  26. # Elimine, periodicamente, versões antigas ou desnecessárias do Kernel, a fim de economizar espaço em disco.
  27. # Não use Windows :)
  28. # Encontrou um problema ou quer contribuir com o Kernel for Newbies? Entre em contato com nosso forum:
  29. #   https://sourceforge.net/p/kfn/discussion/general/
  30.  
  31. # Tudo o que é necessário para executar o Kernel for Newbies:
  32. #   -Apenas um sistema conectado à internet :)
  33.  
  34. # Se o Kernel for Newbies é util a você, você pode contribuir com o projeto:
  35. #   -Enviando sujestões, relatando bugs.
  36. #   -Enviando relatorios recentes gerados pelo KFN em /usr/src/kfn para nossa discussão em https://sourceforge.net/p/kfn/discussion/general/
  37.  
  38. #### Instalação: ###############################################################
  39.  
  40. # Simplesmente execute: (sem usar o # no começo da linha)
  41. #   sudo ./kfn.sh
  42. # O KFN realizará a instalação automaticamente.
  43.  
  44. #### Executando o KFN: #########################################################
  45.  
  46. # Simplesmente execute: (sem usar o # no começo da linha)
  47. #   sudo kfn
  48.  
  49. #### Executando o KFN em outros idiomas: #######################################
  50.  
  51. # A partir da versão 2.1, algumas versões podem ter 2 ou mais idiomas, sendo o padrão o
  52. # Português Brasileiro. Para selecionar outros idiomas simplesmente execute: (sem usar o # no começo da linha)
  53.  
  54. #   sudo kfn <idioma abreviado>
  55.  
  56. # exemplo:
  57.  
  58. #   sudo kfn en
  59.  
  60. #### Créditos e Changelog (README): ############################################
  61.  
  62. # Por favor, verifique os créditos e changelog em:
  63.  
  64. #   http://sourceforge.net/projects/kfn/files/README
  65.  
  66. ################################################################################
  67.  
  68. KFNVERSION=2.1
  69. MAINKERNEL=3.4.5
  70. KERNELVERSION=$MAINKERNEL
  71. TITLEMSG="Kernel for Newbies v$KFNVERSION"
  72. RELEASEDATE=05/jul/2012
  73. KFNFORUM="https://sourceforge.net/p/kfn/discussion/general/"
  74. KFNLINKUPDATE="http://sourceforge.net/projects/kfn/files/kfn.sh"
  75. DEPENDENCES="axel build-essential bzip2 dialog fakeroot g++ gcc gzip initramfs-tools kernel-package libc6 libncurses libnotify-bin qt3-dev-tools tar wget sensors"
  76.  
  77. ################################################################################
  78.  
  79. _GENERALOPTIONS="Sistema: Kernel `uname -r` - `cat /etc/issue.net` (`file /bin/bash | cut -d' ' -f3`/`dpkg --print-architecture`)"
  80. _KERNELVERSIONTXT="Versão do Kernel"
  81. _SOURCEPACKAGE="Fonte do pacote"
  82. _URL="URL/Caminho"
  83. _CORES="Núcleos a serem usados"
  84. _CORES1="núcleos"
  85. _CORE1="núcleo"
  86. _COMPILERAMDISK="Compilar via RAMDISK"
  87. _WHENCOMPLETE="Comando ao terminar"
  88. _STARTPROCESS="Iniciar processos"
  89. _YES="Sim"
  90. _NO="Não"
  91. _AUTO="Automático"
  92. _CANCEL="Cancelar"
  93. _ERROR="[ Erro ]"
  94. _OK="[  OK  ]"
  95. _32BITERROR="Seu sistema operacional não é um sistema 64-bits, no qual não poderá trabalhar com a RAMDISK necessária."
  96. _NOROOT="$TITLEMSG\nDesculpe, é necessário executar este programa como usuário Root.\nExperimente executar como: 'sudo kfn'"
  97. _CHECKDEP="Verificando dependências..."
  98. _SUCESSFULLINSTALL="\nAs dependências foram instaladas corretamente."
  99. _ERRORDEP="Erro ao instalar as dependências. Possiveis causas:\033[0m\n\n1- O pacote de programas do sistema está desatualizado.\n    Execute o comando 'sudo apt-get update' e tente novamente.\n2- O computador pode não estar conectado à Internet.\n    Verifique as conexões de rede ou contate o administrador ou o provedor.\n3- O apt-get pode estar ocupado no momento.\n    Não é possivel usar duas ou mais instâncias do apt-get ao mesmo tempo.\n4- O sistema não possui o apt-get ou não é um 'debian-like'.\n    Consulte a ajuda online do $TITLEMSG para mais detalhes.\n\nSe todas as possibilidades acima estão 'satisfeitas', experimente instalar\nmanualmente as seguintes dependências em falta:"
  100. _NOTINSTALLED="não instalado"
  101. _UPDATEREPO="Atualizando repositórios"
  102. _INSTALLINGDEP="Instalando as dependências:"
  103. _CHECKINSTALLEDDEP="Verificando se as dependências foram instaladas corretamente..."
  104. _CANCELEDINSTDEP="Processo cancelado pelo usuário.\nSem as devidas dependências não será possivel continuar."
  105. _CANCELED="Processo cancelado pelo usuário."
  106. _MISSINGPKG="* Os seguintes pacotes necessários não estão instalados:"
  107. _INSTALLDEPQUESTION="Deseja instalar as dependências em falta?"
  108. _OPTIONSRAMDISK="Selecione o tamanho da RAMDISK:"
  109. _DONTUSE="Não utilizar"
  110. _ERRORDOWNLOAD="Falha ao baixar o pacote. Isso pode ter ocorrido devido a conexão com a internet ou a versão do pacote solicitada não existe."
  111. _LOWMEM="para  7GB RAM ou menos"
  112. _8GB="para  8GB RAM ou mais"
  113. _10GB="para 10GB RAM ou mais"
  114. _12GB="para 12GB RAM ou mais"
  115. _14GB="para 14GB RAM ou mais"
  116. _16GB="para 16GB RAM ou mais"
  117. _18GB="para 18GB RAM ou mais"
  118. _OPTIONSCORE="Selecione o número de núcleos a serem usados durante a compilação. Recomenda-se utilizar `grep "processor" /proc/cpuinfo | wc -l` núcleos para este sistema. Utilizar mais núcleos ou menos núcleos que a quantidade real de núcleos do(s) processador(es) pode causar queda de performance durante a compilação."
  119. _USELOCALFILE="Usar um arquivo local"
  120. _DOWNLOADFROMURL="Baixar a partir de uma URL"
  121. _PLATFORM="Plataforma"
  122. _OPTIONSPLATFORM="Selecione a plataforma desejada:"
  123. _PLATFORMGENERIC="Genérico / GRUB"
  124. _PLATFORMPS3="PlayStation 3 / kboot"
  125. _OPTIONSDOWNLOAD="Selecione uma forma de adquirir o pacote do Kernel:"
  126. _DOWNLOADFROMKERNELORG="Baixar pacote de Kernel.org"
  127. _DELETEPREVIOUSDIR="Removendo arquivo linux-$KERNELVERSION.tar.bz2 previamente baixado."
  128. _OPTIONSWHENCOMPLETE="Executar ação ao terminar:"
  129. _RUMCMD="Executar comando personalizado"
  130. _SHUTDOWN="Desligar"
  131. _REBOOT="Reiniciar"
  132. _DELETEPREVIOUSFILE="Removendo arquivo"
  133. _NOTHINGTODO="Nada a fazer"
  134. _MENUCONFIG="menuconfig (modo texto)"
  135. _MAKEMENUCONFIG="menuconfig"
  136. _XCONFIG="xconfig (modo gráfico)"
  137. _MAKEXCONFIG="xconfig"
  138. _CONFIGMODE="Modo de configuração"
  139. _UPDATEINITRAMFS="Gerando initramfs"
  140. _OPTIONSSETUP="Selecione uma interface de configuração:"
  141. _INVALIDVERSION="Versão do Kernel inválida. Digite valores como $MAINKERNEL ou 3.1"
  142. _ENTERURL="Digite a URL do pacote a ser baixado:"
  143. _ENTERLOCAL="Digite o caminho do pacote:"
  144. _ERRORURL="O arquivo digitado não existe. Verifique o caminho digitado."
  145. _RUNENDCOMMAND="Digite o comando a ser executado ao término:"
  146. _DOWNLOADINGKERNEL="Baixando pacote do Kernel"
  147. _DOWNLOADCOMPLETE="Download concluido."
  148. _COPYINGSOURCE="Copiando pacote para"
  149. _EXTRACTINGSOURCE="Extraindo pacote para"
  150. _COMPILING="Compilando"
  151. _ENTERKERNELVERSION="Digite a versão do Kernel (ex: $MAINKERNEL)"
  152. _STARTINGPROCESS="Iniciando processos de compilação"
  153. _DELETINGDIR="Removendo pasta previamente trabalhada:"
  154. _ERRORCONFIG="Não foi possivel localizar o arquivo .config, necessário para compilar o Kernel. Na interface de configuração, salve antes de sair."
  155. _COMPILINGKERNEL="Compilando Kernel"
  156. _INSTALLINGMODULES="Instalando módulos"
  157. _INSTALLINGKERNEL="Instalando Kernel"
  158. _UPDATEINITFAMFS="Atualizando Initramfs"
  159. _UPDATINGKBOOT="Atualizando o kboot.conf:"
  160. _UPDATINGGRUB="Atualizando GRUB"
  161. _GETVERSION="Verificar última versão do Kernel"
  162. _ENTERVERSION="Digitar versão desejada"
  163. _SELECTKERNEL="Versão do Kernel"
  164. _AUTODEFINECORE="Definir automaticamente"
  165. _ERRORUPDATEVERSION="Erro ao verificar a última versão do Kernel. Verifique a conexão com a internet."
  166. _UMOUNTINGRAMDISK="Desmontando RAMDISK"
  167. _COPYINGFILESTOUSRSRC="Copiando arquivos para"
  168. _TOTALEXECUTIONTIME="Tempo total de execução:"
  169. _COMPILATIONCOMPLETEFINISH="Compilação concluida. Novo Kernel instalado:"
  170. _DELETEDEB="Removendo pacotes conflitantes"
  171. _RUNUPDATE="Verificar atualizações"
  172. _UPDATEEXECNOUP="Esta versão do KFN é a mais recente"
  173. _UPDATEEXECNEW="Novo Kernel for Newbies disponível:"
  174. _UPDATENOEXEC="Verifique atualização do Kernel e do KFN"
  175. _KERNELNOTINSTALLED="FATAL: Kernel não instalado corretamente"
  176. _SUCESSFULLKERNELINSTALLED="Kernel instalado corretamente"
  177. _HEADERSNOTINSTALLED="FATAL: Cabeçalhos não instalados corretamente"
  178. _SUCESSFULLHEADERSINSTALLED="Cabeçalhos instalados corretamente"
  179. _UNABLE="Desativado"
  180. _ERRORKERNELHEADERS="* Houve falha ao instalar o Kernel ou os cabeçalhos, isso pode causar malfuncionamento do sistema se executar este Kernel. Se você acredita que esta pode ser uma falha do $TITLEMSG, não deixe de nos comunicar em nosso forum, em:\n"
  181. _OTHERS="Outros"
  182. _SELECTPROC="Atenção: o uso INCORRETO de CFLAGS para seu processador pode causar problemas na compilação do Kernel, tornando-o instável ou até mesmo inoperável. O uso CORRETO de CFLAGS pode proporcionar grande ganho de desempenho em diversos casos."
  183. _OPTIMIZATION="Performance (CFLAGS)"
  184. _TESTCOMPILATION="Executando teste de compilação"
  185. _ERRORTESTCOMPILE="O GCC não compilou o teste com sucesso. Verifique se seu GCC está funcionando corretamente, caso contrário, experimente reinstalá-lo ou atualizá-lo. Você deseja continuar a compilação mesmo assim?"
  186. _PASSTESTCOMPILE="Teste concluído com sucesso."
  187. _TESTCOMPILATIONERROR="Falha ao executar o teste de compilação.\nO Sistema retornou o seguinte resultado:"
  188. _AUTOCONFIG="Auto configurar"
  189. _AUTOCONFIGERROR="Não foi possivel habilitar a configuração automática: Configuração do Kernel `uname -r` não encontrada."
  190. _CPCONFIG="Utilizando o arquivo de configuração do Kernel `uname -r`"
  191. _COMPRESS="Compactando pacotes compilados do Kernel"
  192. _COMPRESSOK="Pacote do Kernel compactado em:"
  193. _COMPRESSERROR="Erro desconhecido ao compactar pacote do Kernel."
  194. _EXISTKERNEL="Ja existe um kernel com a versão selecionada instalada em seu sistema. Deseja removê-lo?"
  195. _VERSIONRUN="A versão selecionada do Kernel é a mesma em execução:\n\n`uname -r`\n\nSelecione outra versão do Kernel ou reinicie o sistema utilizando uma versão diferente do Kernel."
  196. _VERSIONRUN1="A versão selecionada do Kernel é a mesma em execução: `uname -r`. Selecione outra versão do Kernel ou reinicie o sistema utilizando uma versão diferente do Kernel."
  197. _REMOVEKERNEL="Desinstalando Kernel"
  198. _CANCELREMOVEKERNEL="Remoção do Kernel cancelada. Não é possivel continuar."
  199. _ERRORMACOS="\nDesculpe, mas o Kernel for Newbies não pode ser executado em Mac OS X.\nEntretanto, você poderá executá-lo no Linux em uma máquina virtual :)\n"
  200. _AUTODETECT="Auto detectar"
  201. _AUTODETECT1="Detectar automaticamente"
  202. _CFLAGSMSG="A melhor configuração de performance para esta máquina é:"
  203. _WAIT="Aguarde enquanto o sistema realiza algumas verificações..."
  204. _APPLYCFLAGS="Aplicando configurações de performance"
  205. _APPLYPATCH="Aplicar Patches"
  206. _APPLYPATCH1="Aplicando Patches"
  207. _DOWNLOADPATCH="Baixando Patches"
  208. _DEFAULTKERNEL="Kernel Padrão (KFN)"
  209. _INSTALLKERNEL="Instalando Kernel"
  210. _SELECTKERNEL="Kernel selecionado"
  211. _SAVEDLOG="Log salvo em:"
  212. _NEWVERSION="Nova versão está disponível:"
  213. _NEWVERSION1="Deseja atualizar para a versão mais recente?"
  214. _DEVELOPER="Modo desenvolvedor"
  215. _UPDATEOK="Atualização concluída.\nExecute novamente o Kernel for Newbies."
  216. _UPDATINGKFN="Atualizando $TITLEMSG para a versão mais recente"
  217. _CHECKKFNUPDATE="Verificando atualizações do Kernel for Newbies"
  218. _CHECKKERNELUPDATE="Verificando atualizações do Kernel em Kernel.org"
  219. _404URL="O arquivo do link do Kernel não existe ou não está disponivel no momento. Verifique o link ou tente mais tarde."
  220. _KERNELVERSIONCHECK=" << novo Kernel disponível"
  221. _KERNELVERSIONCHECK1="Novo Kernel Linux disponível:"
  222. _KERNELVERSIONCHECKOK=" - Seu kernel está atualizado"
  223. _NOSPACE="Não há espaço suficiente em disco. É Necessário ter, no mínimo, 7 GB em disco livres para a compilação do Kernel. Você atualmente tem"
  224. _NOSPACE1="GB livres em disco. Elimine programas desnecessários, arquivos temporários, compilações e Kerneis antigos para liberar mais espaço em disco. Você pode continuar por sua conta e risco."
  225. _DETECTEDVERSION="Versão reconhecida:"
  226. _INSTALLBIN="Instalando Kernel for Newbies"
  227. _OKSETUP="Instalação concluída. Execute o comando:\n\n    sudo kfn\n\npara executar o $TITLEMSG"
  228. _TEMPERATURE="Temperatura do processador"
  229. _EXITLOG="Kernel for Newbies foi encerrado. Log salvo em:"
  230. _IWANTDESTROY="Microsoft"
  231.  
  232. ################################################################################
  233.  
  234. # English - Translated by: motomagx
  235.  
  236. if [ "$1" == "en" ]
  237. then
  238. _GENERALOPTIONS="System: Kernel `uname -r` - `cat /etc/issue.net` (`file /bin/bash | cut -d' ' -f3`/`dpkg --print-architecture`)"
  239. _KERNELVERSIONTXT="Kernel version"
  240. _SOURCEPACKAGE="Package source"
  241. _URL="URL/Patch"
  242. _CORES="Cores to use"
  243. _CORES1="cores"
  244. _CORE1="core"
  245. _COMPILERAMDISK="Compile via RAMDISK"
  246. _WHENCOMPLETE="Run when finished"
  247. _STARTPROCESS="Start process"
  248. _YES="Yes"
  249. _NO="No"
  250. _AUTO="Automatic"
  251. _CANCEL="Cancel"
  252. _ERROR="[ Fail ]"
  253. _OK="[  OK  ]"
  254. _32BITERROR="Your system isn't an 64-bits system, then cannot run with RAMDISK."
  255. _NOROOT="$TITLEMSG\nSorry, you must run this program as user ROOT.\nTry running: 'sudo kfn'"
  256. _CHECKDEP="Checking dependences..."
  257. _SUCESSFULLINSTALL="\nThe dependences has sucessfully installed."
  258. _ERRORDEP="Error installing dependencies. Possible causes:\n\n 1-Software bundle system is outdated.\n Execute the command 'sudo apt-get update' and try again.\n 2-The computer can not be connected to the Internet.\n Check the network connections or contact your administrator or ISP.\n 3-apt-get can be busy at the moment.\n can not use two or more instances of apt-get while.\n 4-O system does not have apt-get or is not a 'debian-like'.\n Refer to online help for details $TITLEMSG.\n\nIf all the above possibilities are 'satisfied', try installing\nmanually the following dependencies missing:"
  259. _NOTINSTALLED="not installed"
  260. _UPDATEREPO="Updating repo"
  261. _INSTALLINGDEP="Checking dependences:"
  262. _CHECKINSTALLEDDEP="Checking if the dependences has correctly installed..."
  263. _CANCELEDINSTDEP="Proccess canceled by the user.\nWithout the needed dependences isn't possible to be continue."
  264. _CANCELED="Proccess canceled by the user."
  265. _MISSINGPKG="* The packages isnt installed:"
  266. _INSTALLDEPQUESTION="Do you want to install the needed dependences?"
  267. _OPTIONSRAMDISK="Select the size of RAMDISK:"
  268. _DONTUSE="Do not use"
  269. _ERRORDOWNLOAD="Failed to download package. This may have occurred due to Internet connection or the version of the package requested does not exist."
  270. _LOWMEM="for  7GB RAM or more"
  271. _8GB="for  8GB RAM or more"
  272. _10GB="for 10GB RAM or more"
  273. _12GB="for 12GB RAM or more"
  274. _14GB="for 14GB RAM or more"
  275. _16GB="for 16GB RAM or more"
  276. _18GB="for 18GB RAM or more"
  277. _OPTIONSCORE="Select the number of cores to be used during compilation. It is recommended to use `grep processor /proc/cpuinfo | wc -l` core for this system. Using more cores or fewer cores than the actual amount of core(s) of processor(s) may cause performance drop during compilation."
  278. _USELOCALFILE="Use local file"
  279. _DOWNLOADFROMURL="Download from URL"
  280. _PLATFORM="Platform"
  281. _OPTIONSPLATFORM="Select the needed platform:"
  282. _PLATFORMGENERIC="Generic / GRUB"
  283. _PLATFORMPS3="PlayStation 3 / kboot"
  284. _OPTIONSDOWNLOAD="Select how you want to get the kernel source:"
  285. _DOWNLOADFROMKERNELORG="Download from Kernel.org"
  286. _DELETEPREVIOUSDIR="Deleting file linux-$KERNELVERSION.tar.bz2 previously downloaded."
  287. _OPTIONSWHENCOMPLETE="Run when finished:"
  288. _RUMCMD="Run customized command"
  289. _SHUTDOWN="Shutdown"
  290. _REBOOT="Reboot"
  291. _DELETEPREVIOUSFILE="Deleting file"
  292. _NOTHINGTODO="Nothing to do"
  293. _MENUCONFIG="menuconfig (text mode)"
  294. _MAKEMENUCONFIG="menuconfig"
  295. _XCONFIG="xconfig (grafic mode)"
  296. _MAKEXCONFIG="xconfig"
  297. _CONFIGMODE="Setup mode"
  298. _UPDATEINITRAMFS="Generating initramfs"
  299. _OPTIONSSETUP="Select the config interface:"
  300. _INVALIDVERSION="Invalid kernel version. Enter value like $MAINKERNEL or 3.1"
  301. _ENTERURL="Enter the URL to download:"
  302. _ENTERLOCAL="Enter the path of source:"
  303. _ERRORURL="The file not exist. Check the path."
  304. _RUNENDCOMMAND="Enter the command to run when finished:"
  305. _DOWNLOADINGKERNEL="Downloading Kernel source"
  306. _DOWNLOADCOMPLETE="Download complete."
  307. _COPYINGSOURCE="Copying package to"
  308. _EXTRACTINGSOURCE="Extracting package to"
  309. _COMPILING="Compiling"
  310. _ENTERKERNELVERSION="Type the Kernel version (ex: $MAINKERNEL)"
  311. _STARTINGPROCESS="Starting process"
  312. _DELETINGDIR="Deleting previously worked directory:"
  313. _ERRORCONFIG="Não foi possivel localizar o arquivo .config, necessário para compilar o Kernel. Na interface de configuração, salve antes de sair."
  314. _COMPILINGKERNEL="Compiling kernel"
  315. _INSTALLINGMODULES="Installing modules"
  316. _INSTALLINGKERNEL="Instalando Kernel"
  317. _UPDATEINITFAMFS="Updating Initramfs"
  318. _UPDATINGKBOOT="Updating kboot.conf:"
  319. _UPDATINGGRUB="Updatingo GRUB"
  320. _GETVERSION="Check the last version of Kernel"
  321. _ENTERVERSION="Type the needed version"
  322. _SELECTKERNEL="Kernel version"
  323. _AUTODEFINECORE="Auto define"
  324. _ERRORUPDATEVERSION="Failed to check the latest Kernel version. Check your internet connection."
  325. _UMOUNTINGRAMDISK="Umounting RAMDISK"
  326. _COPYINGFILESTOUSRSRC="Copying files to"
  327. _TOTALEXECUTIONTIME="Total time execution:"
  328. _COMPILATIONCOMPLETEFINISH="Compilation finished. New kernel installed:"
  329. _DELETEDEB="Deleting conclicting packages"
  330. _RUNUPDATE="Check updates"
  331. _UPDATEEXECNOUP="This ins the last KFN version"
  332. _UPDATEEXECNEW="New Kernel disponible:"
  333. _UPDATENOEXEC="Check Kernel and KFN updates"
  334. _KERNELNOTINSTALLED="FATAL: Fail to install Kernel"
  335. _SUCESSFULLKERNELINSTALLED="Sucessfully Kernel installation"
  336. _HEADERSNOTINSTALLED="FATAL: Headers are not installed correctly"
  337. _SUCESSFULLHEADERSINSTALLED="Headers are not installed correctly"
  338. _UNABLE="Disabled"
  339. _ERRORKERNELHEADERS="* Failed to install the kernel or headers, it can cause malfunction of the system to run this kernel. If you believe this may be a failure of the $TITLEMSG, be sure to communicate in our forum at:\n"
  340. _OTHERS="Others"
  341. _SELECTPROC="Warning: INCORRECT usage of CFLAGS for your CPU can cause problems when compiling the kernel, making it unstable or even inoperable. The CORRECT use of CFLAGS can provide large performance gain in many cases."
  342. _OPTIMIZATION="Performance (CFLAGS)"
  343. _TESTCOMPILATION="Running test build"
  344. _ERRORTESTCOMPILE="GCC did not compile the test successfully. Check if your GCC is working correctly, otherwise, try to reinstall it or update it. You want to continue to build anyway?"
  345. _PASSTESTCOMPILE="Testing completed successfully."
  346. _TESTCOMPILATIONERROR="Failed to run the test build.\nThe system returned the following results:"
  347. _AUTOCONFIG="Auto setup"
  348. _AUTOCONFIGERROR="Unable to enable automatic configuration: Kernel Configuration `uname -r` not found."
  349. _CPCONFIG="Using the configuration file of Kernel `uname -r`"
  350. _COMPRESS="Compressing compiled kernel packages"
  351. _COMPRESSOK="Compressed Kernel package in:"
  352. _COMPRESSERROR="Unknown error while compressing the Kernel package."
  353. _EXISTKERNEL="There is already a kernel with the selected version installed on your system. Do you want to remove it?"
  354. _VERSIONRUN="The selected version of the same kernel is running:\n\n`uname -r`\n\nPlease select another version of the kernel or reboot the system using a different version of the Kernel."
  355. _VERSIONRUN1="The selected version of the kernel is running the same: `uname -r`. Select another version of the kernel or reboot the system using a different version of the Kernel."
  356. _REMOVEKERNEL="Removing Kernel"
  357. _CANCELREMOVEKERNEL="Removing the Kernel canceled. Cannot continue."
  358. _ERRORMACOS="\nSorry, but the Kernel for Newbies can not run on Mac OS X.\nYou can run it on Linux in a virtual machine :)\n"
  359. _AUTODETECT="Auto detect"
  360. _AUTODETECT1="Auto detect"
  361. _CFLAGSMSG="The best performance setting for this machine is:"
  362. _WAIT="Wait while the system performs some checks..."
  363. _APPLYCFLAGS="Applying performance settings"
  364. _APPLYPATCH="Applying Patches"
  365. _APPLYPATCH1="Applying Patches"
  366. _DOWNLOADPATCH="Downloading Patches"
  367. _DEFAULTKERNEL="Default Kernel (KFN)"
  368. _INSTALLKERNEL="Installing Kernel"
  369. _SELECTKERNEL="Selected Kernel"
  370. _SAVEDLOG="Log saved in:"
  371. _NEWVERSION="New version is available:"
  372. _NEWVERSION1="Want to upgrade to the latest version?"
  373. _DEVELOPER="Developer mode"
  374. _UPDATEOK="Update complete.\nRun Kernel nor Newbies again."
  375. _UPDATINGKFN="Updating $TITLEMSG to the latest version"
  376. _CHECKKFNUPDATE="Checking for updates of Kernel for Newbies"
  377. _CHECKKERNELUPDATE="Checking for Kernel updates in Kernel Kernel.org"
  378. _404URL="The file link kernel does not exist or is not available at this time. Check the link or try again later."
  379. _KERNELVERSIONCHECK=" << new Kernel available"
  380. _KERNELVERSIONCHECK1="New Kernel available:"
  381. _KERNELVERSIONCHECKOK=" - Its kernel is updated"
  382. _NOSPACE="There is enough disk space. Should you have at least 7 GB free disk to compile a kernel. You currently have"
  383. _NOSPACE1="GB free disk space. Eliminate unnecessary programs, temporary files, compilations and old kernels to free up more disk space. You can continue at your own risk."
  384. _DETECTEDVERSION="Version recognized:"
  385. _INSTALLBIN="Installing Kernel for Newbies"
  386. _OKSETUP="Installation complete. Run:\n\n    sudo kfn\n\nto run $TITLEMSG"
  387. _TEMPERATURE="Processor temperature"
  388. _EXITLOG="Kernel for Newbies was terminated. Log saved in:"
  389. _IWANTDESTROY="Microsoft"
  390. fi
  391.  
  392. ################################################################################
  393.  
  394. # Variáveis com valores padrão: (evite alterá-las, caso contrário, muito cuidado)
  395.  
  396. KERNELVERSIONCHECK=""
  397. _DOWNLOADTXT="$_DOWNLOADFROMKERNELORG"
  398. _WHENCOMPLETETXT="$_NOTHINGTODO"
  399. NUMBERCORE=`grep "processor" /proc/cpuinfo | wc -l`
  400. _NUMBERCORE=$NUMBERCORE
  401. RAMDISKTXT="$_NO"
  402. RAMDISK=0
  403. RAMDISKSIZE=0
  404. RAMDISKMOUNT=0
  405. SELECTEDCORE=0
  406. _PLATFORMTXT="$_PLATFORMGENERIC"
  407. URL=0
  408. _SETUPTXT="$_MENUCONFIG"
  409. _INTERFACE="$_MAKEMENUCONFIG"
  410. ARCH="`dpkg --print-architecture`"
  411. _CODENAMETXT="kfn-$ARCH"
  412. _UPDATEEXECTXT="$_UPDATENOEXEC"
  413. _CFLAGSTXT="$_AUTODETECT1"
  414. _SETCFLAGS=1
  415. _MODCFLAGS=0
  416. _PATCHTXT="$_NO"
  417. _MENUCFLAGS=0
  418. DEBIANCOUNTER=200
  419. FREESIZE=7340032
  420.  
  421. ################################################################################
  422.  
  423. LOGKFN="/usr/src/kfn/`date +[%m-%d-%y]-%Hh%Mm%Ss.log`"
  424.  
  425. if [ "$1" == "log" ]
  426. then
  427.     LASTFILE=`cat /usr/src/kfn/.last`
  428.     EXITLOG=0
  429.     while [ $EXITLOG == 0 ]
  430.     do
  431.         TESTLOG=`echo $LASTFILE | grep "Exit:" | wc -l`
  432.  
  433.         if [ $TESTLOG == 1 ]
  434.         then
  435.             echo -e "\033[1;31m$_EXITLOG\n$LOGKFN\033[0m $PACKAGE: $_NOTINSTALLED\033[0m"
  436.             exit
  437.         fi
  438.         clear
  439.         cat $LASTFILE
  440.         TEMPERATURE=(`sensors | grep temp1 -m 1`)
  441.             echo -e "\033[1;36m$_TEMPERATURE: ${TEMPERATURE[1]}\033[0m"
  442.         sleep 1
  443.     done
  444. fi
  445.  
  446. if [ -f /boot/config-`uname -r` ]
  447. then
  448.     AUTOCONFIG=1
  449.     _AUTOCONFIGTXT="$_NO"
  450.     ENABLEAUTOCONFIG=1
  451. else
  452.     AUTOCONFIG=0
  453.     _AUTOCONFIGTXT="$_NO"
  454.     ENABLEAUTOCONFIG=0
  455. fi
  456.  
  457. if [ -f /mach_toh ]
  458. then
  459.     echo -e "\033[1;31m$_ERRORMACOS\033[0m"
  460.     exit
  461. fi
  462.  
  463. if [ "$USER" != root ]
  464. then
  465.     echo -e "\033[1;36m$_NOROOT\033[0m"
  466.     exit
  467. fi
  468.  
  469. if [ ! -d $HOME/.kfn/ ]
  470. then
  471.     mkdir $HOME/.kfn/
  472. else
  473.     rm -r $HOME/.kfn/
  474.     mkdir $HOME/.kfn/
  475. fi
  476.  
  477. if [ ! -d /usr/src/kfn ]
  478. then
  479.     mkdir /usr/src/kfn
  480. fi
  481.  
  482. chmod 777 /usr/src/kfn
  483.  
  484. echo $LOGKFN > /usr/src/kfn/.last
  485.  
  486. touch "$LOGKFN"
  487.  
  488. chmod 777 -R /usr/src/kfn
  489.  
  490. echo "$MAINKERNEL" > $HOME/.kfn/kernelversion
  491.  
  492. echo "[`date +%H:%M:%S`] Start: `date +%d/%m/%Y` - `date +%H:%M:%S`" >> "$LOGKFN"
  493. echo "[`date +%H:%M:%S`] $TITLEMSG - Release: $RELEASEDATE" >> "$LOGKFN"
  494. CPUINFO=`grep -m 1 "model name" /proc/cpuinfo` && CPUINFO="`echo ${CPUINFO/model/}`" && CPUINFO="`echo ${CPUINFO/name/}`" && CPUINFO="`echo ${CPUINFO/:/}`"
  495. echo "[`date +%H:%M:%S`] Processador: $CPUINFO (`grep "processor" /proc/cpuinfo | wc -l` núcleos)" >> "$LOGKFN"
  496. MEM=(`free -o -m`)
  497. MEM=${MEM[7]}
  498. echo "[`date +%H:%M:%S`] Memória RAM: $MEM MB" >> "$LOGKFN"
  499. echo "[`date +%H:%M:%S`] $_DEFAULTKERNEL: $MAINKERNEL" >> "$LOGKFN"
  500. echo "[`date +%H:%M:%S`] $_GENERALOPTIONS" >> "$LOGKFN"
  501. echo "[`date +%H:%M:%S`] gcc: `gcc --version | grep gcc -m 1`" >> "$LOGKFN"
  502. echo "[`date +%H:%M:%S`] cc: `cc --version | grep cc -m 1`" >> "$LOGKFN"
  503. echo "[`date +%H:%M:%S`] g++: `g++ --version | grep g++ -m 1`" >> "$LOGKFN"
  504. echo "[`date +%H:%M:%S`] make: `make --version | grep Make -m 1`" >> "$LOGKFN"
  505. echo "[`date +%H:%M:%S`] dialog: `dialog --version`" >> "$LOGKFN"
  506. echo "[`date +%H:%M:%S`] axel: `axel --version | grep Axel -m 1`" >> "$LOGKFN"
  507. echo "[`date +%H:%M:%S`] wget: `wget --version | grep Wget -m 1`" >> "$LOGKFN"
  508.  
  509. ################################################################################
  510.  
  511. _exit() # Função "exit" personalizada para evitar problemas com RAMDISK
  512. {
  513.     if [ "$RAMDISK" -eq "1" ]
  514.     then
  515.         umount $HOME/.kfn/ramdisk
  516.     fi
  517.     echo "[`date +%H:%M:%S`] Exit: `date +%d/%m/%Y` - `date +%H:%M:%S`" >> "$LOGKFN"
  518.     echo
  519.     echo -e "\033[1;36m[`date +%H:%M:%S`] $_SAVEDLOG $LOGKFN\n\033[0m"
  520.     touch $HOME/.kfn/timer_exit
  521.     killall kfn
  522.     killall kfn.sh
  523. }
  524.  
  525. ################################################################################
  526.  
  527. _hddfree() # Função que verifica se o HD possui espaço suficiente livre para executar os processos
  528. {
  529.     HDDFREE=(`df | grep /dev/`)
  530.    
  531.     if [ ${HDDFREE[3]} -le "$FREESIZE" ] # Sendo "7340032" o valor de 7GB (o sistema ja trabalhda com a multiplicação final em kilobytes)
  532.     then
  533.         HDDFREE1=$((${HDDFREE[3]}/1048576))
  534.         dialog --title "$TITLEMSG" --msgbox "\n$_NOSPACE $HDDFREE1 $_NOSPACE1" 11 75
  535.         echo "[`date +%H:%M:%S`] $_NOSPACE $HDDFREE1 $_NOSPACE1" >> "$LOGKFN"
  536.         echo
  537.     fi
  538. }
  539.  
  540. ################################################################################
  541.  
  542. _numbercore() # Função que define o número de núcleos do processador da máquina
  543. {
  544.     if [ $SELECTEDCORE == 0 ]
  545.     then
  546.         case "$NUMBERCORE" in
  547.             1|2|3|4|6|8|10|12|14|16|20|24|32|48|64|96|112|128|192|225|256|384|448|512|1024)
  548.             ;;
  549.             *)  NUMBERCORE="2"
  550.         esac
  551.     fi
  552. }
  553.  
  554. ################################################################################
  555.  
  556. clear
  557. echo -e "\033[1;36mKernel for newbies (v$KFNVERSION)\033[0m"
  558. echo
  559. echo -e "\033[1;36m$_CHECKDEP\033[0m"
  560. echo
  561.  
  562. TESTDEP1=0
  563. TRY_INSTALL=0
  564.  
  565. ################################################################################
  566.  
  567. _cancel() # Função que exibe uma mensagem caso o usuário cancele uma operação
  568. {
  569.     dialog --title "$TITLEMSG" --msgbox "\n$_CANCELED" 7 40
  570.     clear
  571.     _exit
  572. }
  573.  
  574. ################################################################################
  575.  
  576. _check_dep() # Função que verifica se há dependências em falta no sistema
  577. {
  578.     DEP=""
  579.     TESTDEP=0
  580.     DEPPKG="$DEPENDENCES"
  581.     INSTALLEDPKG="`dpkg --get-selections`" 
  582.     for PACKAGE in $DEPPKG
  583.     do
  584.         if [ `echo $INSTALLEDPKG | grep $PACKAGE | wc -l` -eq 0 ]
  585.         then
  586.             DEP="$DEP $PACKAGE"
  587.             echo -e "\033[1;31m$_ERROR\033[0m $PACKAGE: $_NOTINSTALLED\033[0m"
  588.             TESTDEP=1
  589.         else
  590.             echo -e "\033[1;36m$_OK\033[0m $PACKAGE\033[0m"
  591.         fi
  592.     done
  593.  
  594.     INSTALLDEP=0
  595.  
  596.     if [ ! -f /usr/bin/kfn ]
  597.     then
  598.         echo -e "\033[1;36m\n$_INSTALLBIN\033[0m"
  599.         echo "[`date +%H:%M:%S`] $_INSTALLBIN" >> "$LOGKFN"
  600.         wget $KFNLINKUPDATE -O /usr/bin/kfn
  601.         chmod 777 /usr/bin/kfn
  602.         echo "[`date +%H:%M:%S`] $_UPDATEOK" >> "$LOGKFN"
  603.         echo -e "\033[1;36m\n$_OKSETUP\033[0m"
  604.         _exit
  605.     fi
  606. }
  607.  
  608. _check_dep
  609.  
  610. ################################################################################
  611.  
  612. _gensubversion() # Função que gera a versão, subversão e revisão do Kernel para finalidades de compilação e instalação
  613. {
  614.     KERNELVERSION=`cat $HOME/.kfn/kernelversion`
  615.     KERNELVERSION=`echo ${KERNELVERSION/./ }`
  616.     KERNELVERSION=`echo ${KERNELVERSION/./ }`
  617.     KERNELVERSION1=($KERNELVERSION)
  618.     KERNEL1=`echo ${KERNELVERSION1[0]}`
  619.     KERNEL2=`echo ${KERNELVERSION1[1]}`
  620.     KERNEL3=`echo ${KERNELVERSION1[2]}`
  621.  
  622.     case "$KERNEL1" in
  623.         0|1|2|3|4|5|6|7|8|9)
  624.         ;;
  625.         *)  ERROR=1
  626.         ;;
  627.     esac
  628.     case "$KERNEL2" in
  629.         0|1|2|3|4|5|6|7|8|9)
  630.         ;;
  631.         *)  ERROR=1
  632.         ;;
  633.     esac
  634.     case "$KERNEL3" in
  635.         0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40)
  636.         ;;
  637.         *)  KERNEL3=0 # para se adaptar à nova numeração, qualquer valor INTEIRO
  638.         ;;        # diferente entre 0 e 40 é assumido como 0. O script se encarrega
  639.     esac              # com o resto.
  640.  
  641.     # Gerando regras para a versão:
  642.  
  643.     if [ "$ERROR" != 1 ]
  644.     then
  645.         if [ "$KERNEL3" -eq 0 ]
  646.         then
  647.             KERNELVERSION="$KERNEL1.$KERNEL2"
  648.         else
  649.             KERNELVERSION="$KERNEL1.$KERNEL2.$KERNEL3"
  650.         fi
  651.        
  652.         if [ "$KERNEL1" -eq 2 ]
  653.         then
  654.             KERNELVERSION="$KERNEL1.$KERNEL2.$KERNEL3"
  655.         fi
  656.        
  657.         if [ "$KERNEL1" -eq "3" ] # Versão
  658.         then
  659.             GENSUBVERSION=x
  660.         else               
  661.             GENSUBVERSION=$KERNEL2
  662.         fi
  663.     else
  664.         dialog --title "$TITLEMSG" --msgbox "\n$_INVALIDVERSION" 8 60
  665.         KERNELVERSION=$MAINKERNEL
  666.     fi
  667. }
  668.  
  669. ################################################################################
  670.  
  671. install_dep() # Função que instala as dependêncas no sistema (se permitido)
  672. {
  673.     case "$INSTALLDEP" in
  674.         1)  echo -e "\033[1;36m$_UPDATEREPO\033[0m"
  675.         apt-get update
  676.         echo -e "\033[1;36m$_INSTALLINGDEP$DEP\033[0m"
  677.         apt-get install $DEP ncurses-dev -y
  678.         TESTDEP1=1
  679.         # onde $DEP fica os valores das dependências em falta
  680.         echo
  681.         echo -e "\033[1;36m$_CHECKINSTALLEDDEP\033[0m"
  682.         echo
  683.         TRY_INSTALL=1
  684.         _check_dep
  685.         _set_dep # _set_dep é repetido aqui para testar se as dependências
  686.             ;;  # foram instaladas corretamente.
  687.         2)  echo -e "\033[1;36m$_CANCELEDINSTDEP\033[0m"
  688.         _exit
  689.             ;;
  690.         *)  echo
  691.         echo -e "$_MISSINGPKG\033[1;36m$DEP\033[0m"
  692.         echo -e "$_INSTALLDEPQUESTION (\033[1;36m 1=$_YES\033[0m / \033[1;31m2=$_NO \033[0m)"
  693.         read INSTALLDEP
  694.         install_dep
  695.         ;;
  696.     esac
  697. }
  698.  
  699. ################################################################################
  700.  
  701. _set_dep() # Função que verifica se as dependências estão instaladas
  702. {
  703.     if [ $TESTDEP -eq 1 ]
  704.     then
  705.         if [ $TRY_INSTALL -eq 1 ]
  706.         then
  707.             echo
  708.             echo -e "\033[1;31m $_ERRORDEP\n\n\033[1;36m$DEP\033[0m"
  709.             _exit
  710.         fi
  711.         install_dep
  712.     fi
  713. }
  714.  
  715. _set_dep
  716.  
  717. if [ $TESTDEP1 -eq 1 ]
  718. then
  719.     dialog --title "$TITLEMSG" --msgbox "$_SUCESSFULLINSTALL" 7 50
  720. fi
  721.  
  722. _hddfree
  723.  
  724. ################################################################################
  725.  
  726. _check_bit() # Função que verifica se o processador da máquina é arquitetura 32 ou 64 bits. Isso depende do sistema operacional em execução. Esta função depende da arquitetura para habilitar (ou não) a compilação via RAMDISK. Não recomendo "burlar" esta função para trabalhar em máquinas 32 bits ou com pouca memória RAM, pois pode haver resultados inesperados.
  727. {
  728.     CHKBIT=`file /bin/bash | cut -d' ' -f3`
  729.     if [ "$CHKBIT" == "64-bit" ]
  730.     then
  731.         RAMDISKSIZE=$( dialog --title "$TITLEMSG" \
  732.               --stdout                            \
  733.               --menu "$_OPTIONSRAMDISK"           \
  734.               0 0 0                               \
  735.               "$_DONTUSE" "$_LOWMEM"              \
  736.               "7G" "$_8GB"                        \
  737.               "8G" "$_10GB"                       \
  738.               "9G" "$_10GB"                       \
  739.               "10G" "$_12GB"                      \
  740.               "11G" "$_12GB"                      \
  741.               "12G" "$_14GB"                      \
  742.               "13G" "$_14GB"                      \
  743.               "14G" "$_16GB"                      \
  744.               "15G" "$_16GB"                      \
  745.               "16G" "$_18GB" )
  746.         case $RAMDISKSIZE in
  747.             7G|8G|9G|10G|11G|12G|13G|14G|15G|16G)
  748.                 RAMDISK=1
  749.                 RAMDISKTXT="$_YES ($RAMDISKSIZE)"
  750.                     ;;
  751.             *)  RAMDISK=0
  752.                 RAMDISKTXT="$_NO"
  753.                     ;;
  754.         esac
  755.     else
  756.         dialog --title "$TITLEMSG" --msgbox "\n$_32BITERROR" 8 60
  757.         notify-send -i gtk-dialog-warning -u normal "$TITLEMSG" "$_32BITERROR"
  758.         RAMDISK=0
  759.         RAMDISKTXT="$_NO"
  760.     fi
  761. }
  762.  
  763. ################################################################################
  764.  
  765. _selectcore() # Função que permite ao usuário definir o número de núcleos a serem usados durante a compilação
  766. {
  767.     NUMBERCORE=$( dialog --title "$TITLEMSG" \
  768.               --stdout                            \
  769.               --menu "$_OPTIONSCORE"              \
  770.               0 70 0             \
  771.               "0" "$_AUTODEFINECORE"  \
  772.               "1" "$_CORE1"  \
  773.               "2" "$_CORES1"  \
  774.               "3" "$_CORES1"  \
  775.               "4" "$_CORES1"  \
  776.               "6" "$_CORES1"  \
  777.               "8" "$_CORES1"  \
  778.               "10" "$_CORES1" \
  779.               "12" "$_CORES1" \
  780.               "14" "$_CORES1" \
  781.               "16" "$_CORES1" \
  782.               "20" "$_CORES1" \
  783.               "24" "$_CORES1" \
  784.               "32" "$_CORES1" \
  785.               "48" "$_CORES1" \
  786.               "64" "$_CORES1" \
  787.               "96" "$_CORES1" \
  788.               "112" "$_CORES1" \
  789.               "128" "$_CORES1" \
  790.               "192" "$_CORES1" \
  791.               "225" "$_CORES1" \
  792.               "256" "$_CORES1" \
  793.               "384" "$_CORES1" \
  794.               "448" "$_CORES1" \
  795.               "512" "$_CORES1" \
  796.               "1024" "$_CORES1" \
  797.               "$_CANCEL" "" )
  798.  
  799.         case $NUMBERCORE in
  800.             1|2|3|4|6|8|10|12|14|16|20|24|32|48|64|96|112|128|192|225|256|384|448|512|1024) SELECTEDCORE=1
  801.                     ;;
  802.             *) NUMBERCORE="$_NUMBERCORE"
  803.                     ;;
  804.         esac
  805. }
  806.  
  807. ################################################################################
  808.  
  809. _getkernelversion() # Função responsável por gerar o link de download do kernel de acordo com sua versão
  810. {
  811.     if [ -f $HOME/.kfn/kernelversion ]
  812.     then
  813.         rm $HOME/.kfn/kernelversion
  814.     fi
  815.     if [ -f $HOME/.kfn/release ]
  816.     then
  817.         rm $HOME/.kfn/release
  818.     fi
  819.     if [ -f $HOME/.kfn/kernel.org ]
  820.     then
  821.         rm $HOME/.kfn/kernel.org
  822.     fi
  823.  
  824.     echo -e "\033[1;36m\n\n[`date +%H:%M:%S`] $_CHECKKFNUPDATE\033[0m"
  825.     echo "[`date +%H:%M:%S`] $_CHECKKFNUPDATE" >> "$LOGKFN"
  826.  
  827.     wget $KFNLINKUPDATE -q -O $HOME/.kfn/kfn.sh
  828.     chmod 777 $HOME/.kfn/kfn.sh
  829.  
  830.     KFNVERSIONUPDATE=`cat $HOME/.kfn/kfn.sh | grep KFNVERSION -m 1`
  831.     TESTKFNVERSION="$KFNVERSIONUPDATE"
  832.     KFNVERSIONUPDATE=`echo ${KFNVERSIONUPDATE/'KFNVERSION='/}`
  833.  
  834.     echo -e "\033[1;36m[`date +%H:%M:%S`] $_CHECKKERNELUPDATE\033[0m"
  835.     echo "[`date +%H:%M:%S`] $_CHECKKERNELUPDATE" >> "$LOGKFN"
  836.  
  837.     wget www.kernel.org -q -O $HOME/.kfn/kernel.org
  838.  
  839.     KERNELORGVERSION=`cat $HOME/.kfn/kernel.org | grep "http://www.kernel.org/pub/linux/kernel/v" -m 1`
  840.     TESTKERNELVERION="$KERNELORGVERSION"
  841.     KERNELORGVERSION=`echo ${KERNELORGVERSION/'<a href="http://www.kernel.org/pub/linux/kernel/v'/ }`
  842.     KERNELORGVERSION=`echo ${KERNELORGVERSION/'linux-'/ }`
  843.     KERNELORGVERSION=`echo ${KERNELORGVERSION/'/'/ }`
  844.     KERNELORGVERSION=`echo ${KERNELORGVERSION/'.tar.bz2">'/}`
  845.     KERNELORGVERSION1=($KERNELORGVERSION)
  846.     KERNELORGVERSION="${KERNELORGVERSION1[1]}"
  847.  
  848.     if [ `uname -r | grep $KERNELORGVERSION | wc -l` == 0 ]
  849.     then
  850.         KERNELVERSIONCHECK="$_KERNELVERSIONCHECK"
  851.         KERNELVERSIONCHECK1="$_KERNELVERSIONCHECK1 $KERNELORGVERSION"
  852.     else
  853.         KERNELVERSIONCHECK="$_KERNELVERSIONCHECKOK"
  854.         KERNELVERSIONCHECK1="$_KERNELVERSIONCHECKOK"
  855.     fi
  856.  
  857.     TESTKERNELVERION=`echo "$TESTKERNELVERION" | grep kernel -m 1 | wc -l`
  858.  
  859.     if [ "$TESTKERNELVERION" == 1 ]
  860.     then
  861.         echo "$KERNELORGVERSION" > $HOME/.kfn/kernelversion
  862.         _gensubversion
  863.         URL="http://www.kernel.org/pub/linux/kernel/v$KERNEL1.$GENSUBVERSION/linux-$KERNELVERSION.tar.bz2"
  864.     else
  865.         notify-send -i gtk-dialog-warning -u normal "$TITLEMSG" "$_ERRORUPDATEVERSION"
  866.         dialog --title "$TITLEMSG" --msgbox "\n$_ERRORUPDATEVERSION" 8 50
  867.     fi
  868.  
  869.     TESTKFNVERSION="`echo "$TESTKFNVERSION" | grep KFNVERSION -m 1 | wc -l`"
  870.  
  871.     if [ "$TESTKFNVERSION" == 1 ]
  872.     then
  873.         if [ "$KFNVERSIONUPDATE" != "$KFNVERSION" ]
  874.         then
  875.             _UPDATEEXECTXT="$_UPDATEEXECNEW $KFNVERSIONUPDATE"
  876.             notify-send -i gtk-dialog-info -u normal "$TITLEMSG" "$_UPDATEEXECNEW $KFNVERSIONUPDATE\n$KERNELVERSIONCHECK1"
  877.             _gensubversion
  878.             URL="http://www.kernel.org/pub/linux/kernel/v$KERNEL1.$GENSUBVERSION/linux-$KERNELVERSION.tar.bz2"
  879.  
  880.             dialog  --title "$TITLEMSG" --yesno "\n$_NEWVERSION $KFNVERSIONUPDATE \n$_NEWVERSION1 " 8 60
  881.             if [ $? == 0 ]
  882.             then
  883.                 echo -e "\033[1;36m\n[`date +%H:%M:%S`] $_UPDATINGKFN\033[0m"
  884.                 echo "[`date +%H:%M:%S`] $_UPDATINGKFN" >> "$LOGKFN"
  885. #               axel -a $KFNLINKUPDATE -o $HOME/.kfn/kfn.sh
  886. #               chmod 777 $HOME/.kfn/kfn.sh
  887.                 if [ -f /usr/bin/kfn ]
  888.                 then
  889.                     rm /usr/bin/kfn
  890.                 fi
  891.                 if [ -f /home/motomagx/kfn/kfn.sh ]
  892.                 then
  893.                     echo -e "\033[1;36m\n[`date +%H:%M:%S`] $_DEVELOPER\033[0m"
  894.                     echo "[`date +%H:%M:%S`] $_DEVELOPER" >> "$LOGKFN"
  895.                     ln -s /home/motomagx/kfn/kfn.sh /usr/bin/kfn
  896.                     dialog --title "$TITLEMSG" --msgbox "\n$_UPDATEOK" 8 60
  897.                     echo "[`date +%H:%M:%S`] $_UPDATEOK" >> "$LOGKFN"
  898.                     _exit
  899.                 else
  900.                     cp $HOME/.kfn/kfn.sh /usr/bin/kfn
  901.                     dialog --title "$TITLEMSG" --msgbox "\n$_UPDATEOK" 8 60
  902.                     echo "[`date +%H:%M:%S`] $_UPDATEOK" >> "$LOGKFN"
  903.                     _exit
  904.                 fi
  905.             fi
  906.         else
  907.             notify-send -i gtk-dialog-info -u normal "$TITLEMSG" "$_UPDATEEXECNOUP\n$KERNELVERSIONCHECK1"
  908.             _UPDATEEXECTXT="$_UPDATEEXECNOUP"
  909.         fi
  910.     fi
  911. }
  912.  
  913. ################################################################################
  914.  
  915. _kernelsource() # Função que define qual será a fonte do pacote do Kernel.
  916. {
  917.     _DOWNLOADTXT=$( dialog --title "$TITLEMSG"        \
  918.               --stdout                            \
  919.               --menu "$_OPTIONSDOWNLOAD"          \
  920.               0 0 0                               \
  921.               "$_DOWNLOADFROMKERNELORG" ""        \
  922.               "$_USELOCALFILE" ""                 \
  923.               "$_DOWNLOADFROMURL" "" )
  924.  
  925.     case $_DOWNLOADTXT in
  926.         $_DOWNLOADFROMKERNELORG) _gensubversion
  927.             URL="http://www.kernel.org/pub/linux/kernel/v$KERNEL1.$GENSUBVERSION/linux-$KERNELVERSION.tar.bz2"
  928.             ;;
  929.         $_DOWNLOADFROMURL)
  930.             dialog --title "$TITLEMSG" --inputbox "$_ENTERURL" 0 50  2>$HOME/.kfn/url
  931.             URL="`cat $HOME/.kfn/url`"
  932.             ;;
  933.         $_USELOCALFILE)
  934.             dialog --title "$TITLEMSG" --inputbox "$_ENTERLOCAL" 0 50  2>$HOME/.kfn/url
  935.             URL="`cat $HOME/.kfn/url`"
  936.             URL1="`cat $HOME/.kfn/url`"
  937.             if [ ! -f $URL ]
  938.             then
  939.                 dialog --title "$TITLEMSG" --msgbox "\n$_ERRORURL" 8 50
  940.                 $_DOWNLOADTXT="$_DOWNLOADFROMKERNELORG"
  941.                 $KERNELVERSION="$MAINKERNEL"
  942.                 URL="http://www.kernel.org/pub/linux/kernel/v$KERNEL1.$GENSUBVERSION/linux-$KERNELVERSION.tar.bz2"
  943.             fi
  944.             ;;
  945.         $_GETVERSION)
  946.              _getkernelversion
  947.             ;;
  948.         *) _DOWNLOADTXT="$_DOWNLOADFROMKERNELORG"
  949.             ;;
  950.     esac
  951. }
  952.  
  953. ################################################################################
  954.  
  955. _platform() # Função que define a plataforma que o KFN irá trabalhar. Isso é extremamente importante, pois, selecionar uma plataforma diferente da qual você utiliza pode causar efeitos indesejados, como falha na instalação do Kernel
  956. {
  957.     _PLATFORMTXT=$( dialog --title "$TITLEMSG"       \
  958.               --stdout                           \
  959.               --menu "$_OPTIONSPLATFORM"         \
  960.               0 0 0                              \
  961.               "$_PLATFORMGENERIC" ""             \
  962.               "$_PLATFORMPS3" "" )
  963.  
  964.     case "$_PLATFORMTXT" in
  965.         "$_PLATFORMGENERIC")
  966.             ;;
  967.         "$_PLATFORMPS3")
  968.             ;;
  969.         *) _PLATFORMTXT="$_PLATFORMGENERIC"
  970.             ;;
  971.     esac
  972. }
  973.  
  974. ################################################################################
  975.  
  976. _whencomplete() # Função que executa um comando ao terminar a compilação
  977. {
  978.     _WHENCOMPLETETXT=$( dialog --title "$TITLEMSG"    \
  979.               --stdout                            \
  980.               --menu "$_OPTIONSWHENCOMPLETE"      \
  981.               0 0 0                               \
  982.               "$_SHUTDOWN" ""                     \
  983.               "$_REBOOT" ""                       \
  984.               "$_RUMCMD" ""                       \
  985.               "$_NOTHINGTODO" "")
  986.  
  987.     if [ "$_WHENCOMPLETETXT" == "$_SHUTDOWN" ]
  988.     then
  989.         CMD="halt"
  990.     elif [ "$_WHENCOMPLETETXT" == "$_REBOOT" ]
  991.     then
  992.         CMD="reboot"
  993.     elif [ "$_WHENCOMPLETETXT" == "$_RUMCMD" ]
  994.     then
  995.         dialog --title "$TITLEMSG" --inputbox "$_RUNENDCOMMAND" 0 50  2>$HOME/.kfn/runcmd
  996.         CMD=`cat $HOME/.kfn/runcmd`
  997.         _WHENCOMPLETETXT="$CMD"
  998.     else
  999.         _WHENCOMPLETETXT="$_NOTHINGTODO"
  1000.     fi
  1001. }
  1002.  
  1003. ################################################################################
  1004.  
  1005. _setup() # Função que define qual utilitário de configuração do Kernel será utilizado antes da compilação
  1006. {
  1007.     _SETUPTXT=$( dialog --title "$TITLEMSG"    \
  1008.               --stdout                     \
  1009.               --menu "$_CONFIGMODE"        \
  1010.               0 0 0                        \
  1011.               "$_MENUCONFIG" ""            \
  1012.               "$_XCONFIG" "")
  1013.  
  1014.     case "$_SETUPTXT" in
  1015.         "$_MENUCONFIG") _INTERFACE="menuconfig"
  1016.             ;;
  1017.         "$_MENUCONFIG") _INTERFACE="xconfig"
  1018.             ;;
  1019.         *) _SETUPTXT="$_XCONFIG"
  1020.             ;;
  1021.     esac
  1022. }
  1023.  
  1024. ################################################################################
  1025.  
  1026. _clear_tmp() # Função que remove arquivos conflitantes
  1027. {
  1028.     if [ -f linux-$KERNELVERSION.tar.bz2 ]
  1029.     then
  1030.         echo -e "\033[1;36m[`date +%H:%M:%S`] $_DELETEPREVIOUSFILE linux-$KERNELVERSION.tar.bz2\033[0m"
  1031.         echo "[`date +%H:%M:%S`] $_DELETEPREVIOUSFILE linux-$KERNELVERSION.tar.bz2" >> "$LOGKFN"
  1032.         rm linux-$KERNELVERSION.tar.bz2
  1033.     fi
  1034. }
  1035.  
  1036. ################################################################################
  1037.  
  1038. _testdownload() # Função que verifica se o arquivo foi baixado corretamente.
  1039. {
  1040.     if [ ! -f linux-$KERNELVERSION.tar.bz2 ]
  1041.     then
  1042.         notify-send -i gtk-dialog-warning -u normal "$TITLEMSG" "$_ERRORDOWNLOAD"
  1043.         echo "[`date +%H:%M:%S`] $_ERRORDOWNLOAD" >> "$LOGKFN"
  1044.         dialog --title "$TITLEMSG" --msgbox "\n$_ERRORDOWNLOAD" 9 60
  1045.         _exit
  1046.     fi
  1047. }
  1048.  
  1049. ################################################################################
  1050.  
  1051. _ramdisk() # Função que ativa ou desativa a RAMDISK.
  1052. {
  1053.     if [ ! -d $HOME/.kfn/ramdisk ]
  1054.     then
  1055.         mkdir $HOME/.kfn/ramdisk
  1056.     else
  1057.         umount -f $HOME/.kfn/ramdisk
  1058.         rmdir $HOME/.kfn/ramdisk
  1059.         mkdir $HOME/.kfn/ramdisk
  1060.     fi
  1061.     RAMDISKMOUNT=1
  1062. }
  1063.  
  1064. ################################################################################
  1065.  
  1066. _timer() # Função básica de contagem do tempo durante a compilação. Esta função roda paralelamente com o KFN
  1067. {
  1068.     HOUR=0
  1069.     MIN=0
  1070.     SEC=0
  1071.  
  1072.     while [ "`cat $HOME/.kfn/timer`" != "out" ]
  1073.     do
  1074.         if [ ! -f $HOME/.kfn/timer ]
  1075.         then
  1076.             _exit
  1077.         fi
  1078.         SEC=$(($SEC+1))
  1079.         sleep 1
  1080.     done
  1081.    
  1082.     while [ $SEC -ge 60 ]
  1083.     do
  1084.         MIN=$(($MIN+1))
  1085.         SEC=$(($SEC-60))
  1086.     done
  1087.    
  1088.     while [ $MIN -ge 60 ]
  1089.     do
  1090.         HOUR=$(($HOUR+1))
  1091.         MIN=$(($MIN-60))
  1092.     done
  1093.    
  1094.     case "$SEC" in
  1095.         0) SEC=00
  1096.                 ;;
  1097.         1) SEC=01
  1098.                 ;;
  1099.         2) SEC=02
  1100.                 ;;
  1101.         3) SEC=03
  1102.                 ;;
  1103.         4) SEC=04
  1104.                 ;;
  1105.         5) SEC=05
  1106.                 ;;
  1107.         6) SEC=06
  1108.                 ;;
  1109.         7) SEC=07
  1110.                 ;;
  1111.         8) SEC=08
  1112.                 ;;
  1113.         9) SEC=09
  1114.                 ;;
  1115.     esac
  1116.    
  1117.     case "$MIN" in
  1118.         0) MIN=00
  1119.                 ;;
  1120.         1) MIN=01
  1121.                 ;;
  1122.         2) MIN=02
  1123.                 ;;
  1124.         3) MIN=03
  1125.                 ;;
  1126.         4) MIN=04
  1127.                 ;;
  1128.         5) MIN=05
  1129.                 ;;
  1130.         6) MIN=06
  1131.                 ;;
  1132.         7) MIN=07
  1133.                 ;;
  1134.         8) MIN=08
  1135.                 ;;
  1136.         9) MIN=09
  1137.                 ;;
  1138.     esac
  1139.    
  1140.     case "$HOUR" in
  1141.         0) HOUR=00
  1142.                 ;;
  1143.         1) HOUR=01
  1144.                 ;;
  1145.         2) HOUR=02
  1146.                 ;;
  1147.         3) HOUR=03
  1148.                 ;;
  1149.         4) HOUR=04
  1150.                 ;;
  1151.         5) HOUR=05
  1152.                 ;;
  1153.         6) HOUR=06
  1154.                 ;;
  1155.         7) HOUR=07
  1156.                 ;;
  1157.         8) HOUR=08
  1158.                 ;;
  1159.         9) HOUR=09
  1160.                 ;;
  1161.     esac
  1162.     echo "$HOUR:$MIN:$SEC" > $HOME/.kfn/time # Salva o tempo total
  1163.     echo done > $HOME/.kfn/exit # Diz ao KFN que o timer está encerrado
  1164. }
  1165.  
  1166. ################################################################################
  1167.  
  1168. _download() # Função que realiza o download do pacote do kernel
  1169. {
  1170.     _clear_tmp
  1171.     cd /usr/src/
  1172.     echo -e "\033[1;36m[`date +%H:%M:%S`] $_DOWNLOADINGKERNEL $KERNELVERSION:\033[0m"
  1173.     echo "[`date +%H:%M:%S`] $_DOWNLOADINGKERNEL $KERNELVERSION" >> "$LOGKFN"
  1174.     wget --spider --quiet "$URL" && URLTEST=1 || URLTEST=0
  1175.     if [ $URLTEST == 1 ]
  1176.     then
  1177.         axel -a "$URL" -o /usr/src/linux-$KERNELVERSION.tar.bz2
  1178.         _testdownload
  1179.         echo -e "\033[1;36m[`date +%H:%M:%S`] $_DOWNLOADCOMPLETE\033[0m"
  1180.         echo "[`date +%H:%M:%S`] $_DOWNLOADCOMPLETE" >> "$LOGKFN"
  1181.     else
  1182.         echo "[`date +%H:%M:%S`] $_404URL" >> "$LOGKFN"
  1183.         dialog --title "$TITLEMSG" --msgbox "\n$_404URL" 9 60
  1184.         _exit
  1185.     fi
  1186. }
  1187.  
  1188. ################################################################################
  1189.  
  1190. _kernelversion() # Função que permite ao usuário selecionar o kernel a ser compilado
  1191. {
  1192.     SELECTKERNEL=$( dialog --title "$TITLEMSG"         \
  1193.               --stdout                             \
  1194.               --menu "$_SELECTKERNEL"              \
  1195.               0 0 0                                \
  1196.               "$_ENTERVERSION" ""                  \
  1197.               "$_GETVERSION" "" )
  1198.  
  1199.     case $SELECTKERNEL in
  1200.         "$_ENTERVERSION")
  1201.             dialog --title "$TITLEMSG" --inputbox "$_ENTERKERNELVERSION" 0 50  2>$HOME/.kfn/kernelversion
  1202.             KERNELVERSIONCHECK=""
  1203.             _gensubversion
  1204.             URL="http://www.kernel.org/pub/linux/kernel/v$KERNEL1.$GENSUBVERSION/linux-$KERNELVERSION.tar.bz2"
  1205.                 ;;
  1206.         "$_GETVERSION")
  1207.             _getkernelversion
  1208.                 ;;
  1209.         *)
  1210.                 ;;
  1211.     esac
  1212.     URL="http://www.kernel.org/pub/linux/kernel/v$KERNEL1.$GENSUBVERSION/linux-$KERNELVERSION.tar.bz2"
  1213. }
  1214.  
  1215. ################################################################################
  1216.  
  1217. _autoconfig() # Função que define se o kernel será auto configurado baseando-se na confiuração do Kernel em execução
  1218. {
  1219.     if [ $ENABLEAUTOCONFIG -eq 1 ] 
  1220.     then
  1221.         if [ "$_AUTOCONFIGTXT" == "$_YES" ]
  1222.         then
  1223.             _AUTOCONFIGTXT="$_NO"
  1224.         else
  1225.             _AUTOCONFIGTXT="$_YES"
  1226.         fi
  1227.     else
  1228.         notify-send -i gtk-dialog-warning -u normal "$TITLEMSG" "$_AUTOCONFIGERROR"
  1229.         dialog --title "$TITLEMSG" --msgbox "\n$_AUTOCONFIGERROR" 8 60
  1230.     fi
  1231. }
  1232.  
  1233. ################################################################################
  1234.  
  1235. _test_cflags()
  1236. {
  1237.     case $CFLAGSTXT in
  1238.         "K6")       CHOST="i586-pc-linux-gnu"
  1239.                 CFLAGS="-march=k6 -O2 -pipe -fomit-frame-pointer"
  1240.                 CXXFLAGS="${CFLAGS}"
  1241.                 ;;
  1242.         "K6-2") CHOST="i586-pc-linux-gnu"
  1243.                 CFLAGS="-march=k6-2 -O2 -pipe -fomit-frame-pointer"
  1244.                 CXXFLAGS="${CFLAGS}"
  1245.                 ;;
  1246.         "Geode LX") CHOST="i486-pc-linux-gnu"
  1247.                 CFLAGS="-march=geode -Os -mmmx -m3dnow -fno-align-jumps -fno-align-functions -fno-align-labels -fno-align-loops -pipe -fomit-frame-pointer"
  1248.                 CXXFLAGS="${CFLAGS}"
  1249.                 ;;
  1250.         "Geode GX1")    CHOST="i586-pc-linux-gnu"
  1251.                 CFLAGS="-march=pentium-mmx -O2 -pipe -fomit-frame-pointer"
  1252.                 CXXFLAGS="${CFLAGS}"
  1253.                 ;;
  1254.         "K6-3") CHOST="i586-pc-linux-gnu"
  1255.                 CFLAGS="-march=k6-3 -O2 -pipe -fomit-frame-pointer"
  1256.                 CXXFLAGS="${CFLAGS}"
  1257.                 ;;
  1258.         "Duron")    CHOST="i686-pc-linux-gnu"
  1259.                 CFLAGS="-march=athlon-tbird -O2 -pipe -fomit-frame-pointer"
  1260.                 CXXFLAGS="${CFLAGS}"
  1261.                 ;;
  1262.         "Mobile Duron") CHOST="i686-pc-linux-gnu"
  1263.                 CFLAGS="-march=athlon-tbird -O2 -pipe -fomit-frame-pointer"
  1264.                 CXXFLAGS="${CFLAGS}"
  1265.                 ;;
  1266.         "Duron Morgan") CHOST="i686-pc-linux-gnu"
  1267.                 CFLAGS="-march=athlon-xp -O2 -pipe -fomit-frame-pointer"
  1268.                 CXXFLAGS="${CFLAGS}"
  1269.                 ;;
  1270.         "Athlon")   CHOST="i686-pc-linux-gnu"
  1271.                 CFLAGS="-march=athlon -O2 -pipe -fomit-frame-pointer"
  1272.                 CXXFLAGS="${CFLAGS}"
  1273.                 ;;
  1274.         "Athlon Thunderbird")   CHOST="i686-pc-linux-gnu"
  1275.                 CFLAGS="-march=athlon-tbird -O2 -pipe -fomit-frame-pointer"
  1276.                 CXXFLAGS="${CFLAGS}"
  1277.                 ;;
  1278.         "Athlon (Palomino) XP/Duron")   CHOST="i686-pc-linux-gnu"
  1279.                 CFLAGS="-march=athlon-xp -O2 -pipe -fomit-frame-pointer"
  1280.                 CXXFLAGS="${CFLAGS}"
  1281.                 ;;
  1282.         "Athlon 4") CHOST="i686-pc-linux-gnu"
  1283.                 CFLAGS="-march=athlon-4 -O2 -pipe -fomit-frame-pointer"
  1284.                 CXXFLAGS="${CFLAGS}"
  1285.                 ;;
  1286.         "Athlon XP/Geode NX")   CHOST="i686-pc-linux-gnu"
  1287.                 CFLAGS="-march=athlon-4 -O2 -pipe -fomit-frame-pointer"
  1288.                 CXXFLAGS="${CFLAGS}"
  1289.                 ;;
  1290.         "Athlon MP")    CHOST="i686-pc-linux-gnu"
  1291.                 CFLAGS="-march=athlon-mp -O2 -pipe -fomit-frame-pointer"
  1292.                 CXXFLAGS="${CFLAGS}"
  1293.                 ;;
  1294.         "Athlon 64")    CHOST="i686-pc-linux-gnu"
  1295.                 CFLAGS="-march=k8 -O2 -pipe -fomit-frame-pointer"
  1296.                 CXXFLAGS="${CFLAGS}"
  1297.                 ;;
  1298.         "Athlon 64 (64bit Kernel)") CHOST="x86_64-pc-linux-gnu"
  1299.                 CFLAGS="-march=k8 -O2 -pipe"
  1300.                 CXXFLAGS="${CFLAGS}"
  1301.                 ;;
  1302.         "Athlon 64 X2") CHOST="i686-pc-linux-gnu"
  1303.                 CFLAGS="-march=k8 -O2 -pipe -fomit-frame-pointer"
  1304.                 CXXFLAGS="${CFLAGS}"
  1305.                 ;;
  1306.         "Athlon 64 X2 (64bit Kernel)")  CHOST="x86_64-pc-linux-gnu"
  1307.                 CFLAGS="-march=k8 -O2 -pipe"
  1308.                 CXXFLAGS="${CFLAGS}"
  1309.                 ;;
  1310.         "1xx Opteron")  CHOST="i686-pc-linux-gnu"
  1311.                 CFLAGS="-O2 -march=opteron -msse3 -pipe -fomit-frame-pointer"
  1312.                 CXXFLAGS="${CFLAGS}"
  1313.                 ;;
  1314.         "1xx Opteron (64bit Kernel)")   CHOST="x86_64-pc-linux-gnu"
  1315.                 CFLAGS="-march=opteron -O2 -pipe"
  1316.                 CXXFLAGS="${CFLAGS}"
  1317.                 ;;
  1318.         "2xx/8xx Opteron")  CHOST="x86_64-pc-linux-gnu"
  1319.                 CFLAGS="-march=opteron -O2 -pipe"
  1320.                 CXXFLAGS="${CFLAGS}"
  1321.                 ;;
  1322.         "22xx Dual-Core Opteron")   CHOST="x86_64-pc-linux-gnu"
  1323.                 CFLAGS="-march=opteron -O2 -pipe"
  1324.                 CXXFLAGS="${CFLAGS}"
  1325.                 ;;
  1326.         "23xx Quad-Core Barcelona") CHOST="x86_64-pc-linux-gnu"
  1327.                 CFLAGS="-march=barcelona -O2 -pipe"
  1328.                 CXXFLAGS="${CFLAGS}"
  1329.                 ;;
  1330.         "61xx Eight-Core Magny-Cours")  CHOST="x86_64-pc-linux-gnu"
  1331.                 CFLAGS="-mtune=amdfam10 -O2 -pipe"
  1332.                 CXXFLAGS="${CFLAGS}"
  1333.                 ;;
  1334.         "Athlon X2 7x50, Phenom X3/X4, Phenom II (64bit Kernel)")   CHOST="x86_64-pc-linux-gnu"
  1335.                 CFLAGS="-march=amdfam10 -O2 -pipe"
  1336.                 CXXFLAGS="${CFLAGS}"
  1337.                 ;;
  1338.         "Athlon II X2/X3/X4, Turion II (64bit Kernel)") CHOST="x86_64-pc-linux-gnu"
  1339.                 CFLAGS="-march=amdfam10 -O2 -pipe"
  1340.                 CXXFLAGS="${CFLAGS}"
  1341.                 ;;
  1342.         "Sempron / Sempron64 / Sempron Family WirNet")  CHOST="i686-pc-linux-gnu"
  1343.                 CFLAGS="-march=athlon-xp -O2 -pipe -fomit-frame-pointer"
  1344.                 CXXFLAGS="${CFLAGS}"
  1345.                 ;;
  1346.         "Sempron / Sempron64 / Sempron Family WirNet (64bit Kernel)")   CHOST="x86_64-pc-linux-gnu"
  1347.                 CFLAGS="-march=k8 -O2 -pipe"
  1348.                 CXXFLAGS="${CFLAGS}"
  1349.                 ;;
  1350.         "Sempron / Sempron64 / Sempron Family WirNet (Socket 754/AM2) (64bit Kernel)")  CHOST="x86_64-pc-linux-gnu"
  1351.                 CFLAGS="-march=k8 -msse3 -O2 -pipe"
  1352.                 CXXFLAGS="${CFLAGS}"
  1353.                 ;;
  1354.         "Sempron / Sempron64 / Sempron Family WirNet (Socket AM3) (64bit Kernel)")  CHOST="x86_64-pc-linux-gnu"
  1355.                 CFLAGS="-march=amdfam10 -O2 -pipe"
  1356.                 CXXFLAGS="${CFLAGS}"
  1357.                 ;;
  1358.         "Turion64 / X2 / Ultra / Sempron")  CHOST="i686-pc-linux-gnu"
  1359.                 CFLAGS="-march=athlon-xp -msse3 -O2 -pipe -fomit-frame-pointer"
  1360.                 CXXFLAGS="${CFLAGS}"
  1361.                 ;;
  1362.         "Turion64 / X2 / Ultra / Sempron (64bit Kernel)")   CHOST="x86_64-pc-linux-gnu"
  1363.                 CFLAGS="-march=k8 -msse3 -O2 -pipe"
  1364.                 CXXFLAGS="${CFLAGS}"
  1365.                 ;;
  1366.         "Mobile Sempron")   CHOST="i686-pc-linux-gnu"
  1367.                 CFLAGS="-march=athlon-xp -msse3 -O2 -pipe -fomit-frame-pointer"
  1368.                 CXXFLAGS="${CFLAGS}"
  1369.                 ;;
  1370.         "Mobile Sempron (64bit Kernel)")    CHOST="x86_64-pc-linux-gnu"
  1371.                 CFLAGS="-march=k8 -msse3 -O2 -pipe"
  1372.                 CXXFLAGS="${CFLAGS}"
  1373.                 ;;
  1374.         "C-30, C-50, C-60, E-350, E-450 series")    CHOST="x86_64-pc-linux-gnu"
  1375.                 CFLAGS="-march=amdfam10 -O2 -pipe -mno-3dnow -mcx16 -mpopcnt -msse3 -msse4a -mmmx"
  1376.                 CXXFLAGS="${CFLAGS}"
  1377.                 ;;
  1378.         "C-30, C-50, C-60, E-350, E-450 series (64bit Kernel)") CHOST="i686-pc-linux-gnu"
  1379.                 CFLAGS="-march=amdfam10 -O2 -pipe -fomit-frame-pointer -mno-3dnow -mcx16 -mpopcnt -msse3 -msse4a -mmmx"
  1380.                 CXXFLAGS="${CFLAGS}"
  1381.                 ;;
  1382.         "A4/A6/A8-XXXX (Llano) (64bit Kernel)") CFLAGS="-O2 -march=amdfam10 -mcx16 -mpopcnt -pipe"
  1383.                 CXXFLAGS="${CFLAGS}"
  1384.                 CHOST="x86_64-pc-linux-gnu"
  1385.                 USE="mmx mmxext sse sse2 sse3 sse4a"
  1386.                 ;;
  1387.         "FX-8xxx/6xxx/4xxx (Bulldozer) (64bit Kernel)") CFLAGS="-O2 -pipe -fomit-frame-pointer -march=bdver1 -mtune=bdver1 -mcx16 -msahf -maes -mpclmul -mpopcnt -mabm -mlwp -mavx"
  1388.                 CXXFLAGS="${CFLAGS}"
  1389.                 CHOST="x86_64-pc-linux-gnu"
  1390.                 ;;
  1391.         "Pentium I")    CHOST="i586-pc-linux-gnu"
  1392.                 CFLAGS="-march=pentium -O2 -pipe -fomit-frame-pointer"
  1393.                 CXXFLAGS="${CFLAGS}"
  1394.                 ;;
  1395.         "Pentium MMX")  CHOST="i586-pc-linux-gnu"
  1396.                 CFLAGS="-march=pentium-mmx -O2 -pipe -fomit-frame-pointer"
  1397.                 CXXFLAGS="${CFLAGS}"
  1398.                 ;;
  1399.         "Pentium Pro")  CHOST="i686-pc-linux-gnu"
  1400.                 CFLAGS="-march=pentiumpro -O2 -pipe -fomit-frame-pointer"
  1401.                 CXXFLAGS="${CFLAGS}"
  1402.                 ;;
  1403.         "Pentium II")   CHOST="i686-pc-linux-gnu"
  1404.                 CFLAGS="-march=pentium2 -O2 -pipe -fomit-frame-pointer"
  1405.                 CXXFLAGS="${CFLAGS}"
  1406.                 ;;
  1407.         "Celeron (Mendocino), aka Celeron1")    CHOST="i686-pc-linux-gnu"
  1408.                 CFLAGS="-march=pentium2 -O2 -pipe -fomit-frame-pointer"
  1409.                 CXXFLAGS="${CFLAGS}"
  1410.                 ;;
  1411.         "Pentium III/ Mobile Celeron")  CHOST="i686-pc-linux-gnu"
  1412.                 CFLAGS="-march=pentium3 -O2 -pipe -fomit-frame-pointer"
  1413.                 CXXFLAGS="${CFLAGS}"
  1414.                 ;;
  1415.         "Celeron (Coppermine)") CHOST="i686-pc-linux-gnu"
  1416.                 CFLAGS="-march=pentium3 -O2 -pipe -fomit-frame-pointer"
  1417.                 CXXFLAGS="${CFLAGS}"
  1418.                 ;;
  1419.         "Celeron (Willamette)") CHOST="i686-pc-linux-gnu"
  1420.                 CFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer"
  1421.                 CXXFLAGS="${CFLAGS}"
  1422.                 ;;
  1423.         "Pentium M(Centrino)/Celeron M")    CHOST="i686-pc-linux-gnu"
  1424.                 CFLAGS="-march=pentium-m -O2 -pipe -fomit-frame-pointer"
  1425.                 CXXFLAGS="${CFLAGS}"
  1426.                 ;;
  1427.         "Mobile Pentium 4-M (Northwood)")   CHOST="i686-pc-linux-gnu"
  1428.                 CFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer"
  1429.                 CXXFLAGS="${CFLAGS}"
  1430.                 ;;
  1431.         "Pentium 4")    CHOST="i686-pc-linux-gnu"
  1432.                 CFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer"
  1433.                 CXXFLAGS="${CFLAGS}"
  1434.                 ;;
  1435.         "Pentium 4 (Prescott) / Celeron D") CHOST="i686-pc-linux-gnu"
  1436.                 CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
  1437.                 CXXFLAGS="${CFLAGS}"
  1438.                 ;;
  1439.         "Pentium 4 (Prescott) / Celeron D (64bit Kernel)")  CHOST="x86_64-pc-linux-gnu"
  1440.                 CFLAGS="-march=nocona -O2 -pipe"
  1441.                 CXXFLAGS="${CFLAGS}"
  1442.                 ;;
  1443.         "Pentium D 8xx / 9xx")  CHOST="i686-pc-linux-gnu"
  1444.                 CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
  1445.                 CXXFLAGS="${CFLAGS}"
  1446.                 ;;
  1447.         "Pentium D 8xx / 9xx (64bit Kernel)")   CHOST="x86_64-pc-linux-gnu"
  1448.                 CFLAGS="-march=nocona -O2 -pipe"
  1449.                 CXXFLAGS="${CFLAGS}"
  1450.                 ;;
  1451.         "Xeon w/o EM64T")   CHOST="i686-pc-linux-gnu"
  1452.                 CFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer"
  1453.                 CXXFLAGS="${CFLAGS}"
  1454.                 ;;
  1455.         "Xeon w/EM64T (also Pentium 4 P6xx or Celeron M 5xx)")  CHOST="i686-pc-linux-gnu"
  1456.                 CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
  1457.                 CXXFLAGS="${CFLAGS}"
  1458.                 ;;
  1459.         "Xeon w/EM64T (also Pentium 4 P6xx or Celeron M 5xx) (64bit Kernel)")   CHOST="x86_64-pc-linux-gnu"
  1460.                 CFLAGS="-march=nocona -O2 -pipe"
  1461.                 CXXFLAGS="${CFLAGS}"
  1462.                 ;;
  1463.         "Core 2 Solo/Duo, Pentium Dual-Core T20xx/T21xx")   CHOST="i686-pc-linux-gnu"
  1464.                 CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
  1465.                 CXXFLAGS="${CFLAGS}"
  1466.                 ;;
  1467.         "Core 2 Duo/Quad, Xeon 51xx/53xx/54xx/3360, Pentium Dual-Core T23xx+/Exxxx, Celeron Dual-Core")                 CHOST="i686-pc-linux-gnu"
  1468.                 CFLAGS="-march=core2 -O2 -pipe -fomit-frame-pointer"
  1469.                 CXXFLAGS="${CFLAGS}"
  1470.                 ;;
  1471.         "Core 2 Duo/Quad, Xeon 51xx/53xx/54xx/3360, Pentium Dual-Core T23xx+/Exxxx, Celeron Dual-Core (64bit Kernel)")  CHOST="x86_64-pc-linux-gnu"
  1472.                 CFLAGS="-march=core2 -O2 -pipe"
  1473.                 CXXFLAGS="${CFLAGS}"
  1474.                 ;;
  1475.         "Core i7 and Core i5, Xeon 55xx")   CHOST="i686-pc-linux-gnu"
  1476.                 CFLAGS="-march=prescott -O2 -fomit-frame-pointer -pipe"
  1477.                 CXXFLAGS="${CFLAGS}"
  1478.                 ;;
  1479.         "Core i7 and Core i5, Xeon 55xx (64bit Kernel - GCC 4.3)")  CHOST="x86_64-pc-linux-gnu"
  1480.                 CFLAGS="-march=core2 -mtune=generic -O2 -pipe"
  1481.                 CXXFLAGS="${CFLAGS}"
  1482.                 ;;
  1483.         "Core i7 and Core i5, Xeon 55xx (64bit Kernel - GCC 4.6)")  CHOST="x86_64-pc-linux-gnu"
  1484.                 CFLAGS="-march=corei7 -O2 -pipe"
  1485.                 CXXFLAGS="${CFLAGS}"
  1486.                 ;;
  1487.         "Atom 230, Atom 330, Atom N-Series")    CHOST="i686-pc-linux-gnu"
  1488.                 CFLAGS="-march=native -O2 -fomit-frame-pointer -pipe -mfpmath=sse"
  1489.                 CXXFLAGS="${CFLAGS}"
  1490.                 ;;
  1491.         "Atom 230, Atom 330, Atom N-Series (64bit Kernel)") CHOST="x86_64-pc-linux-gnu"
  1492.                 CFLAGS="-march=atom -O2 -pipe"
  1493.                 CXXFLAGS="${CFLAGS}"
  1494.                 ;;
  1495.         "Sparc")    CHOST="sparc-unknown-linux-gnu"
  1496.                 CFLAGS="-O2 -pipe"
  1497.                 CXXFLAGS="${CFLAGS}"
  1498.                 ;;
  1499.         "Sparc 64") CHOST="sparc-unknown-linux-gnu"
  1500.                 CFLAGS="-mcpu=ultrasparc -O2 -pipe"
  1501.                 CXXFLAGS="${CFLAGS}"
  1502.                 ;;
  1503.         "HPPA 1.1") CHOST="hppa1.1-unknown-linux-gnu"
  1504.                 CFLAGS="-O2 -pipe -mschedule=7100LC -march=1.1 -fomit-frame-pointer"
  1505.                 CXXFLAGS="${CFLAGS}"
  1506.                 ;;
  1507.         "HPPA 2.0") CHOST="hppa2.0-unknown-linux-gnu"
  1508.                 CFLAGS="-O2 -pipe -mschedule=8000 -march=2.0 -fomit-frame-pointer"
  1509.                 CXXFLAGS="${CFLAGS}"
  1510.                 ;;
  1511.         "Alpha ev56")   CHOST="alpha-unknown-linux-gnu"
  1512.                 CFLAGS="-mcpu=ev56 -mieee -O2 -pipe"
  1513.                 CXXFLAGS="${CFLAGS}"
  1514.                 ;;
  1515.         "Alpha ev67")   CHOST="alpha-unknown-linux-gnu"
  1516.                 CFLAGS="-mieee -mcpu=ev67 -Wa,-mev6 -O2 -pipe "
  1517.                 CXXFLAGS="${CFLAGS}"
  1518.                 ;;
  1519.         "Cyrix MediaGX")    CHOST="i586-pc-linux-gnu"
  1520.                 CFLAGS="-march=pentium-mmx -O2 -pipe -fomit-frame-pointer"
  1521.                 CXXFLAGS="${CFLAGS}"
  1522.                 ;;
  1523.         "TI OMAP2") CHOST="arm-gentoo-linux-gnueabi"
  1524.                 CFLAGS="-march=armv6j -Os -pipe -fomit-frame-pointer -mtune=arm1136jf-s -mfpu=vfp"
  1525.                 CXXFLAGS="${CFLAGS}"
  1526.                 ;;
  1527.         "MIPS (Cobalt RaQ2)")   CHOST="mipsel-unknown-linux-gnu"
  1528.                 CFLAGS="-Os -mips4 -mabi=32 -pipe"
  1529.                 CXXFLAGS="${CFLAGS}"
  1530.                 ;;
  1531.         "PXA270")   CHOST="armv5te-iwmmxt-linux-gnueabi"
  1532.                 CFLAGS="-O2 -march=iwmmxt -mtune=iwmmxt -pipe"
  1533.                 CXXFLAGS="${CFLAGS}"
  1534.                 ;;
  1535.         "Kirkwood (Sheevaplug and alike)")  CFLAGS="-O2 -pipe -march=armv5te -mtune=xscale -fweb -frename-registers -fomit-frame-pointer"
  1536.                 CXXFLAGS="${CFLAGS}"
  1537.                 CHOST="armv5tel-softfloat-linux-gnueabi"
  1538.                 ;;
  1539.         "Transmeta Crusoe") CHOST="i686-pc-linux-gnu"
  1540.                 CFLAGS="-march=i686 -Os -mmmx -pipe -fomit-frame-pointer"
  1541.                 CXXFLAGS="${CFLAGS}"
  1542.                 ;;
  1543.         "Transmeta Efficeon")   CHOST="i686-pc-linux-gnu"
  1544.                 CFLAGS="-mtune=pentium3 -msse2 -O2 -pipe -falign-functions=0 -falign-jumps=0 -falign-loops=0"
  1545.                 CXXFLAGS="${CFLAGS}"
  1546.                 ;;
  1547.         "Eden") CHOST="i686-pc-linux-gnu"
  1548.                 CFLAGS="-march=c3-2 -mtune=c3-2 -pipe  -mfpmath=sse,387 -msse2 -mmmx -msse"
  1549.                 ;;
  1550.         "Esther C5J (Via C7)")  CHOST="i686-pc-linux-gnu"
  1551.                 CFLAGS="-march=i686 -mmmx -msse -msse2 -msse3 -O2 -pipe -fomit-frame-pointer"
  1552.                 CXXFLAGS="${CFLAGS}"
  1553.                 ;;
  1554.         "Esther C5J (Via C7) (Safe Build)") CHOST="i686-pc-linux-gnu"
  1555.                 CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
  1556.                 CXXFLAGS="${CFLAGS}"
  1557.                 ;;
  1558.         "C3 Nehemiah (C5X/C5XL/C5P)")   CHOST="i686-pc-linux-gnu"
  1559.                 CFLAGS="-march=c3-2 -O2 -pipe -fomit-frame-pointer"
  1560.                 CXXFLAGS="${CFLAGS}"
  1561.                 ;;
  1562.         "C3 Nehemiah (C5X/C5XL/C5P) (i686 code)")   CHOST="i686-pc-linux-gnu"
  1563.                 CFLAGS="-march=c3-2 -mtune=generic -O2 -pipe -fomit-frame-pointer"
  1564.                 CXXFLAGS="${CFLAGS}"
  1565.                 ;;
  1566.         "C3 Samuel/Ezra (Via EPIA)")    CHOST="i586-pc-linux-gnu"
  1567.                 CFLAGS="-march=c3 -m3dnow -O2 -pipe -fomit-frame-pointer"
  1568.                 CXXFLAGS="${CFLAGS}"
  1569.                 ;;
  1570.         "Cell Broadband Engine (PlayStation 3)")    CHOST="powerpc64-unknown-linux-gnu"
  1571.                 CFLAGS="-O2 -pipe -mcpu=cell"
  1572.                 CXXFLAGS="${CFLAGS}"
  1573.                 ;;
  1574.         "PowerPC 750cx (G3e) (Nintendo Gamecube / Wii)")    CHOST="powerpc-unknown-linux-gnu"
  1575.                 CFLAGS="-mcpu=750 -O2 -pipe"
  1576.                 CXXFLAGS="${CFLAGS}"
  1577.                 ;;
  1578.         "PowerPC 601")  CHOST="powerpc-unknown-linux-gnu"
  1579.                 CFLAGS="-mcpu=601 -O2 -pipe"
  1580.                 CXXFLAGS="${CFLAGS}"
  1581.                 ;;
  1582.         "PowerPC 603")  CHOST="powerpc-unknown-linux-gnu"
  1583.                 CFLAGS="-mcpu=603 -O2 -pipe"
  1584.                 CXXFLAGS="${CFLAGS}"
  1585.                 ;;
  1586.         "PowerPC 603e") CHOST="powerpc-unknown-linux-gnu"
  1587.                 CFLAGS="-mcpu=603e -O2 -pipe"
  1588.                 CXXFLAGS="${CFLAGS}"
  1589.                 ;;
  1590.         "PowerPC 604")  CHOST="powerpc-unknown-linux-gnu"
  1591.                 CFLAGS="-mcpu=604 -O2 -pipe"
  1592.                 CXXFLAGS="${CFLAGS}"
  1593.                 ;;
  1594.         "PowerPC 604e") CHOST="powerpc-unknown-linux-gnu"
  1595.                 CFLAGS="-mcpu=604e -O2 -pipe"
  1596.                 CXXFLAGS="${CFLAGS}"
  1597.                 ;;
  1598.         "PowerPC 750/745/755 (G3)") CHOST="powerpc-unknown-linux-gnu"
  1599.                 CFLAGS="-mcpu=750 -Os -pipe"
  1600.                 CXXFLAGS="${CFLAGS}"
  1601.                 ;;
  1602.         "PowerPC 7400/7410 (G4)")   CHOST="powerpc-unknown-linux-gnu"
  1603.                 CFLAGS="-mcpu=7400 -O2 -pipe -maltivec -mabi=altivec"
  1604.                 CXXFLAGS="${CFLAGS}"
  1605.                 ;;
  1606.         "PowerPC 744x/745x (G4 second generation)") CHOST="powerpc-unknown-linux-gnu"
  1607.                 CFLAGS="-mcpu=7450 -O2 -pipe -maltivec -mabi=altivec"
  1608.                 CXXFLAGS="${CFLAGS}"
  1609.                 ;;
  1610.         "PowerPC 970 (G5)") CHOST="powerpc64-unknown-linux-gnu"
  1611.                 CFLAGS="-O2 -pipe -mcpu=970"
  1612.                 CXXFLAGS="${CFLAGS}"
  1613.                 ;;
  1614.         "PowerPC (Generic)")    CHOST="powerpc-unknown-linux-gnu"
  1615.                 CFLAGS="-O2 -pipe"
  1616.                 CXXFLAGS="${CFLAGS}"
  1617.                 ;;
  1618.         *) _CFLAGSTXT="$_UNABLE"
  1619.                 ;;
  1620.     esac
  1621. }
  1622.  
  1623. ################################################################################
  1624.  
  1625. _CFLAGS_amd()
  1626.  
  1627. {
  1628.     CFLAGSTXT=$( dialog --title "$TITLEMSG" \
  1629.               --stdout \
  1630.               --menu "$_SELECTPROC" \
  1631.               0 80 12 \
  1632.         "A4/A6/A8-XXXX (Llano) (64bit Kernel)" "" \
  1633.         "Athlon X2 7x50, Phenom X3/X4, Phenom II (64bit Kernel)" "" \
  1634.         "Athlon II X2/X3/X4, Turion II (64bit Kernel)" "" \
  1635.         "Athlon 64" "" \
  1636.         "Athlon 64 (64bit Kernel)" "" \
  1637.         "Athlon 64 X2" "" \
  1638.         "Athlon 64 X2 (64bit Kernel)" "" \
  1639.         "Athlon" "" \
  1640.         "Athlon Thunderbird" "" \
  1641.         "Athlon (Palomino) XP/Duron" "" \
  1642.         "Athlon 4" "" \
  1643.         "Athlon XP/Geode NX" "" \
  1644.         "Athlon MP" "" \
  1645.         "C-30, C-50, C-60, E-350, E-450 series" "" \
  1646.         "C-30, C-50, C-60, E-350, E-450 series (64bit Kernel)" "" \
  1647.         "Duron" "" \
  1648.         "Duron Morgan" "" \
  1649.         "FX-8xxx/6xxx/4xxx (Bulldozer) (64bit Kernel)" "" \
  1650.         "Geode LX" "" \
  1651.         "Geode GX1" "" \
  1652.         "K6" "" \
  1653.         "K6-2" "" \
  1654.         "K6-3" "" \
  1655.         "Mobile Duron" "" \
  1656.         "Mobile Sempron" "" \
  1657.         "Mobile Sempron (64bit Kernel)" "" \
  1658.         "Sempron / Sempron64 / Sempron Family WirNet" "" \
  1659.         "Sempron / Sempron64 / Sempron Family WirNet (64bit Kernel)" "" \
  1660.         "Sempron / Sempron64 / Sempron Family WirNet (754/AM2) (64bit Kernel)" "" \
  1661.         "Sempron / Sempron64 / Sempron Family WirNet (AM3) (64bit Kernel)" "" \
  1662.         "Turion64 / X2 / Ultra / Sempron" "" \
  1663.         "Turion64 / X2 / Ultra / Sempron (64bit Kernel)" "" \
  1664.         "1xx Opteron" "" \
  1665.         "1xx Opteron (64bit Kernel)" "" \
  1666.         "2xx/8xx Opteron" "" \
  1667.         "22xx Dual-Core Opteron" "" \
  1668.         "23xx Quad-Core Barcelona" "" \
  1669.         "61xx Eight-Core Magny-Cours" "" \
  1670.         "$_CANCEL" "" )
  1671.  
  1672.     _CFLAGSTXT="$CFLAGSTXT"
  1673.  
  1674.     _test_cflags
  1675.  
  1676. }
  1677.  
  1678. ################################################################################
  1679.  
  1680. _CFLAGS_intel()
  1681.  
  1682. {
  1683.     CFLAGSTXT=$( dialog --title "$TITLEMSG" \
  1684.               --stdout \
  1685.               --menu "$_SELECTPROC" \
  1686.               0 80 12 \
  1687.         "Atom 230, Atom 330, Atom N-Series" "" \
  1688.         "Atom 230, Atom 330, Atom N-Series (64bit Kernel)" "" \
  1689.         "Celeron (Mendocino), aka Celeron1" "" \
  1690.         "Celeron (Coppermine)" "" \
  1691.         "Celeron (Willamette)" "" \
  1692.         "Core 2 Duo/Quad, Xeon 51xx/53xx/54xx/3360, Pentium Dual-Core T23xx+/Exxxx, Celeron Dual-Core" "" \
  1693.         "Core 2 Duo/Quad, Xeon 51xx/53xx/54xx/3360, Pentium Dual-Core T23xx+/Exxxx, Celeron Dual-Core (64bit Kernel)" "" \
  1694.         "Core 2 Solo/Duo, Pentium Dual-Core T20xx/T21xx" "" \
  1695.         "Core i7 and Core i5, Xeon 55xx" "" \
  1696.         "Core i7 and Core i5, Xeon 55xx (64bit Kernel - GCC 4.3)" "" \
  1697.         "Core i7 and Core i5, Xeon 55xx (64bit Kernel - GCC 4.6)" "" \
  1698.         "Pentium I" "" \
  1699.         "Pentium II" "" \
  1700.         "Pentium III/ Mobile Celeron" "" \
  1701.         "Pentium MMX" "" \
  1702.         "Pentium Pro" "" \
  1703.         "Pentium M(Centrino)/Celeron M" "" \
  1704.         "Pentium 4" "" \
  1705.         "Pentium 4 (Prescott) / Celeron D" "" \
  1706.         "Pentium 4 (Prescott) / Celeron D (64bit Kernel)" "" \
  1707.         "Pentium D 8xx / 9xx" "" \
  1708.         "Pentium D 8xx / 9xx (64bit Kernel)" "" \
  1709.         "Mobile Pentium 4-M (Northwood)" "" \
  1710.         "Xeon w/o EM64T" "" \
  1711.         "Xeon w/EM64T (also Pentium 4 P6xx or Celeron M 5xx)" "" \
  1712.         "Xeon w/EM64T (also Pentium 4 P6xx or Celeron M 5xx) (64bit Kernel)" "" \
  1713.         "$_CANCEL" "" )
  1714.  
  1715.     _CFLAGSTXT="$CFLAGSTXT"
  1716.  
  1717. _test_cflags
  1718.  
  1719. }
  1720.  
  1721. ################################################################################
  1722.  
  1723. _CFLAGS_powerpc()
  1724.  
  1725. {
  1726.     CFLAGSTXT=$( dialog --title "$TITLEMSG" \
  1727.               --stdout \
  1728.               --menu "$_SELECTPROC" \
  1729.               0 80 12 \
  1730.         "Cell Broadband Engine (PlayStation 3)" "" \
  1731.         "PowerPC 750cx (G3e) (Nintendo Gamecube / Wii)" "" \
  1732.         "PowerPC 601" "" \
  1733.         "PowerPC 603" "" \
  1734.         "PowerPC 603e" "" \
  1735.         "PowerPC 604" "" \
  1736.         "PowerPC 604e" "" \
  1737.         "PowerPC 750/745/755 (G3)" "" \
  1738.         "PowerPC 7400/7410 (G4)" "" \
  1739.         "PowerPC 744x/745x (G4 second generation)" "" \
  1740.         "PowerPC 970 (G5)" "" \
  1741.         "PowerPC (Generic)" "" \
  1742.         "$_CANCEL" "" )
  1743.  
  1744.     _CFLAGSTXT="$CFLAGSTXT"
  1745.  
  1746. _test_cflags
  1747.  
  1748. }
  1749.  
  1750. ################################################################################
  1751.  
  1752. _CFLAGS_via()
  1753.  
  1754. {
  1755.     CFLAGSTXT=$( dialog --title "$TITLEMSG" \
  1756.               --stdout \
  1757.               --menu "$_SELECTPROC" \
  1758.               0 80 12 \
  1759.         "C3 Nehemiah (C5X/C5XL/C5P)" "" \
  1760.         "C3 Nehemiah (C5X/C5XL/C5P) (i686 code)" "" \
  1761.         "C3 Samuel/Ezra (Via EPIA)" "" \
  1762.         "Eden" "" \
  1763.         "Esther C5J (Via C7)" "" \
  1764.         "Esther C5J (Via C7) (Safe Build)" "" \
  1765.         "$_CANCEL" "" )
  1766.  
  1767.     _CFLAGSTXT="$CFLAGSTXT"
  1768.  
  1769. _test_cflags
  1770.  
  1771. }
  1772.  
  1773. ################################################################################
  1774.  
  1775. _CFLAGS_transmeta()
  1776.  
  1777. {
  1778.     CFLAGSTXT=$( dialog --title "$TITLEMSG" \
  1779.               --stdout \
  1780.               --menu "$_SELECTPROC" \
  1781.               0 80 12 \
  1782.         "Transmeta Crusoe" "" \
  1783.         "Transmeta Efficeon" "" \
  1784.         "$_CANCEL" "" )
  1785.  
  1786.     _CFLAGSTXT="$CFLAGSTXT"
  1787.  
  1788. _test_cflags
  1789.  
  1790. }
  1791.  
  1792. ################################################################################
  1793.  
  1794. _CFLAGS_others()
  1795.  
  1796. {
  1797.     CFLAGSTXT=$( dialog --title "$TITLEMSG" \
  1798.               --stdout \
  1799.               --menu "$_SELECTPROC" \
  1800.               0 80 12 \
  1801.         "Sparc" "" \
  1802.         "Sparc 64" "" \
  1803.         "HPPA 1.1" "" \
  1804.         "HPPA 2.0" "" \
  1805.         "Alpha ev56" "" \
  1806.         "Alpha ev67" "" \
  1807.         "Cyrix MediaGX" "" \
  1808.         "TI OMAP2" "" \
  1809.         "MIPS (Cobalt RaQ2)" "" \
  1810.         "PXA270" "" \
  1811.         "Kirkwood (Sheevaplug and alike)" "" \
  1812.         "$_CANCEL" "" )
  1813.  
  1814.     _CFLAGSTXT="$CFLAGSTXT"
  1815.  
  1816. _test_cflags
  1817.  
  1818. }
  1819.  
  1820. ################################################################################
  1821.  
  1822. _auto_CFLAGS() # Detecta automaticamente a melhor configuração para a máquina
  1823. {
  1824.  
  1825.     if [ $_MENUCFLAGS -eq 1 ]
  1826.     then
  1827.         dialog --title "$TITLEMSG" --infobox "\n$_WAIT" 4 80
  1828.     else
  1829.         echo -e "\033[1;36m\n$_WAIT\n\033[0m"
  1830.     fi
  1831.     NATIVE=(`cc -march=native -E -v - </dev/null 2>&1 | grep " -march="`)
  1832.  
  1833.     COUNTER=0
  1834.     FOUND=0
  1835.  
  1836.     while [ $FOUND -eq 0 ]
  1837.     do
  1838.         if [ `echo "${NATIVE[$COUNTER]}" | grep 'march' | wc -l` == "1" ]
  1839.         then
  1840.             CFLAGS="${NATIVE[$COUNTER]}"
  1841.             FOUND=1
  1842.         else
  1843.             COUNTER=$(($COUNTER+1))
  1844.         fi
  1845.     done
  1846.  
  1847.     COUNTER=$(($COUNTER+1))
  1848.     FOUND=0
  1849.  
  1850.     while [ $FOUND -eq 0 ]
  1851.     do
  1852.         if [ `echo "${NATIVE[$COUNTER]}" | grep fstack-protector | wc -l` == "0" ]
  1853.         then
  1854.             if [ $COUNTER -eq $DEBIANCOUNTER ] # Patch para usuários debian e algumas arquiteturas mais antigas
  1855.             then
  1856.                 FOUND=1
  1857.             else
  1858.                 CFLAGS="$CFLAGS ${NATIVE[$COUNTER]}"
  1859.                 COUNTER=$(($COUNTER+1))
  1860.             fi # Fim do patch
  1861.         else
  1862.             FOUND=1
  1863.         fi
  1864.     done
  1865.     _CFLAGSTXT="$_AUTODETECT1"
  1866.     echo "[`date +%H:%M:%S`] CFLAGS ($CPUINFO): $CFLAGS" >> "$LOGKFN"
  1867. }
  1868.  
  1869. ################################################################################
  1870.  
  1871. _apply_patch() # Função que habilita (ou desabilita) o uso de patches no Kernel
  1872. {
  1873.     if [ "$_PATCHTXT" == "$_YES" ]
  1874.     then
  1875.         _PATCHTXT="$_NO"
  1876.     else
  1877.         _PATCHTXT="$_YES"
  1878.     fi
  1879. }
  1880.  
  1881. ################################################################################
  1882.  
  1883. _CFLAGS() # Função que define as CFLAGS a serem utilizadas. Utilizar CFLAGS incorretamente pode comprometer a compilação
  1884. {
  1885.     _CFLAGS1=$( dialog --title "$TITLEMSG"                                        \
  1886.               --stdout                                                        \
  1887.               --menu "$_SELECTPROC"                                           \
  1888.               0 80 10                                                         \
  1889.               "$_AUTODETECT" ""                                               \
  1890.               "AMD" "Athlon, Duron, Sempron, Phenom, Opteron, Turion, FX..."  \
  1891.               "Intel" "Pentium, Celeron, Atom, i3, i5, i7, Xeon..."           \
  1892.               "PowerPC" "Cell Broadband Engine, G3, G4, G5, Wii, GC..."       \
  1893.               "VIA" "Eden, Esther, C3, C7, Samuel, Ezra..."                   \
  1894.               "Transmeta" "Crusoe, Efficeon"                                  \
  1895.               "$_OTHERS" "Sparc, HPPA, Alpha, Cyrix, TI, MIPS, ARM..."        \
  1896.               "$_UNABLE" ""                                                   \
  1897.               "$_CANCEL" "" )
  1898.  
  1899.     case $_CFLAGS1 in
  1900.         "AMD") _CFLAGS_amd
  1901.             ;;
  1902.         "Intel") _CFLAGS_intel
  1903.             ;;
  1904.         "VIA") _CFLAGS_via
  1905.             ;;
  1906.         "PowerPC") _CFLAGS_powerpc
  1907.             ;;
  1908.         "Transmeta") _CFLAGS_transmeta
  1909.             ;;
  1910.         "$_AUTODETECT") _auto_CFLAGS
  1911.             ;;
  1912.         "$_OTHERS") _CFLAGS_others
  1913.             ;;
  1914.         "$_UNABLE")_CFLAGSTXT="$_UNABLE"
  1915.             ;;
  1916.         "$_CANCEL")_CFLAGSTXT="$_UNABLE"
  1917.             ;;
  1918.     esac
  1919. }
  1920.  
  1921. ################################################################################
  1922.  
  1923. _startprocess() # Função padrão. Nela é realizada todas as tarefas do KFN :)
  1924. {  
  1925.     echo "################################################################################" >> "$LOGKFN"
  1926.     echo -e "\033[1;36m\n[`date +%H:%M:%S`] $_STARTINGPROCESS\033[0m"
  1927.     echo "[`date +%H:%M:%S`] $_STARTINGPROCESS" >> "$LOGKFN"
  1928.  
  1929.     echo "[`date +%H:%M:%S`] $_SELECTKERNEL: $KERNELVERSION" >> "$LOGKFN"
  1930.  
  1931.     if [ "`uname -r`" == "$KERNEL1.$KERNEL2.$KERNEL3-$_CODENAMETXT" ]
  1932.     then
  1933.         notify-send -i gtk-dialog-warning -u normal "$TITLEMSG" "$_VERSIONRUN"
  1934.         dialog --title "$TITLEMSG" --msgbox "\n$_VERSIONRUN" 12 60
  1935.         echo "[`date +%H:%M:%S`] $_VERSIONRUN1" >> "$LOGKFN"
  1936.         _exit
  1937.     fi
  1938.     TESTDEINSTALL=`dpkg --get-selections | grep linux-image-$KERNEL1.$KERNEL2.$KERNEL3-$_CODENAMETXT`
  1939.     if [ `dpkg --get-selections | grep linux-image-$KERNEL1.$KERNEL2.$KERNEL3-$_CODENAMETXT | wc -l` -eq 1 ]
  1940.     then
  1941.         if [ `echo $TESTDEINSTALL | grep deinstall | wc -l` -ne 1 ]
  1942.         then
  1943.             dialog  --title "$TITLEMSG" --yesno "\n$_EXISTKERNEL" 8 60
  1944.             if [ $? != 0 ]
  1945.             then
  1946.                 echo -e "\033[1;31m\n[`date +%H:%M:%S`] $_CANCELREMOVEKERNEL\033[0m"
  1947.                 echo "[`date +%H:%M:%S`] $_CANCELREMOVEKERNEL" >> "$LOGKFN"
  1948.                 notify-send -i gtk-dialog-warning -u normal "$TITLEMSG" "$_CANCELREMOVEKERNEL"
  1949.                 _exit
  1950.             else
  1951.                 echo -e "\033[1;36m\n[`date +%H:%M:%S`] $_REMOVEKERNEL $KERNEL1.$KERNEL2.$KERNEL3-$_CODENAMETXT\033[0m"
  1952.                 echo "[`date +%H:%M:%S`] $_REMOVEKERNEL $KERNEL1.$KERNEL2.$KERNEL3-$_CODENAMETXT" >> "$LOGKFN"
  1953.                 apt-get remove linux-image-$KERNEL1.$KERNEL2.$KERNEL3-$_CODENAMETXT linux-headers-$KERNEL1.$KERNEL2.$KERNEL3-$_CODENAMETXT -y
  1954.             fi
  1955.         fi
  1956.     fi
  1957.  
  1958.     echo -e '#include <stdio.h>\nmain()\n{\nprintf("Hello KFN!");\n}' > $HOME/.kfn/test.c
  1959.  
  1960.     echo -e "\033[1;36m[`date +%H:%M:%S`] $_TESTCOMPILATION\033[0m"
  1961.     echo "[`date +%H:%M:%S`] $_TESTCOMPILATION" >> "$LOGKFN"
  1962.  
  1963.     gcc $HOME/.kfn/test.c -o $HOME/.kfn/test
  1964.  
  1965.     TESTGCC="`$HOME/.kfn/test`"
  1966.  
  1967.     if [ "$TESTGCC" != "Hello KFN!" ]
  1968.     then
  1969.         notify-send -i gtk-dialog-warning -u normal "$TITLEMSG" "$_ERRORTESTCOMPILE"
  1970.         echo "[`date +%H:%M:%S`] $_ERRORTESTCOMPILE" >> "$LOGKFN"
  1971.         dialog  --title "$TITLEMSG" --yesno "\n$_ERRORTESTCOMPILE" 10 60
  1972.         if [ $? != 0 ]
  1973.         then
  1974.             _exit
  1975.         else
  1976.             echo -e "\033[1;31m\n[`date +%H:%M:%S`] $_TESTCOMPILATIONERROR $TESTGCC\033[0m"
  1977.             echo "[`date +%H:%M:%S`] $_TESTCOMPILATIONERROR $TESTGCC" >> "$LOGKFN"
  1978.         fi
  1979.     else
  1980.         echo -e "\033[1;36m[`date +%H:%M:%S`] $_PASSTESTCOMPILE\033[0m"
  1981.         echo "[`date +%H:%M:%S`] $_PASSTESTCOMPILE" >> "$LOGKFN"
  1982.     fi
  1983.  
  1984.     cd /usr/src
  1985.     if [ -d linux-$KERNELVERSION ]
  1986.     then
  1987.         echo -e "\033[1;36m[`date +%H:%M:%S`] $_DELETINGDIR /usr/src/linux-$KERNELVERSION\033[0m"
  1988.         echo "[`date +%H:%M:%S`] $_DELETINGDIR /usr/src/linux-$KERNELVERSION" >> "$LOGKFN"
  1989.         rm -r linux-$KERNELVERSION
  1990.     fi
  1991.  
  1992.     echo -e `ls` > $HOME/.kfn/testdeb
  1993.  
  1994.     TESTDEB=`grep ".deb" $HOME/.kfn/testdeb | wc -l`
  1995.  
  1996.     if [ $TESTDEB -ne 0 ]
  1997.     then
  1998.         echo -e "\033[1;36m[`date +%H:%M:%S`] $_DELETEDEB\033[0m"
  1999.         echo "[`date +%H:%M:%S`] $_DELETEDEB" >> "$LOGKFN"
  2000.         rm *.deb
  2001.         rm $HOME/.kfn/testdeb
  2002.     fi
  2003.  
  2004.     if [ ! -f $HOME/.kfn/exit ]
  2005.     then
  2006.         touch $HOME/.kfn/exit
  2007.     fi
  2008.  
  2009.     if [ -f $HOME/.kfn/time ]
  2010.     then
  2011.         rm $HOME/.kfn/time
  2012.         touch $HOME/.kfn/time
  2013.     else
  2014.         touch $HOME/.kfn/time
  2015.     fi
  2016.  
  2017.     if [ ! -f $HOME/.kfn/timer ]
  2018.     then
  2019.         touch $HOME/.kfn/timer
  2020.     else
  2021.         rm $HOME/.kfn/timer
  2022.         touch $HOME/.kfn/timer
  2023.     fi
  2024.  
  2025.     if [ "$RAMDISK" -eq 1 ]
  2026.     then
  2027.         mount -t tmpfs -o size=$RAMDISKSIZE tmpfs $HOME/.kfn/ramdisk
  2028.         _ramdisk
  2029.         mkdir /usr/src/linux-$KERNELVERSION
  2030.         mount -o bind $HOME/.kfn/ramdisk /usr/src/linux-$KERNELVERSION
  2031.     fi
  2032.  
  2033.     case "$_DOWNLOADTXT" in
  2034.         "$_DOWNLOADFROMKERNELORG") _gensubversion
  2035.             _download
  2036.             ;;
  2037.         "$_DOWNLOADFROMURL") _gensubversion
  2038.             _download
  2039.             ;;
  2040.         "$_USELOCALFILE") _gensubversion
  2041.             if [ "$URL1" != "/usr/src/linux-$KERNELVERSION.tar.bz2" ]
  2042.             then
  2043.                 cp "$URL1" /usr/src/linux-$KERNELVERSION.tar.bz2
  2044.                 echo -e "\033[1;36m[`date +%H:%M:%S`] $_COPYINGSOURCE /usr/src\033[0m"
  2045.             fi
  2046.             ;;
  2047.     esac
  2048.     cd /usr/src/
  2049.     if [ "$_PATCHTXT" == "$_YES" ]
  2050.     then
  2051.         # Baixando patches
  2052.  
  2053.         echo -e "\033[1;36m[`date +%H:%M:%S`] $_DOWNLOADPATCH\033[0m"
  2054.         echo "[`date +%H:%M:%S`] $_DOWNLOADPATCH" >> "$LOGKFN"
  2055.  
  2056.         axel -a http://kernel.ubuntu.com/~kernel-ppa/mainline/v$KERNEL1.$KERNEL2.$KERNEL3-quantal/0001-base-packaging.patch -o /usr/src/0001-base-packaging.patch
  2057.         axel -a http://kernel.ubuntu.com/~kernel-ppa/mainline/v$KERNEL1.$KERNEL2.$KERNEL3-quantal/0002-debian-changelog.patch -o /usr/src/0002-debian-changelog.patch
  2058.         axel -a http://kernel.ubuntu.com/~kernel-ppa/mainline/v$KERNEL1.$KERNEL2.$KERNEL3-quantal/0003-default-configs.patch -o /usr/src/0003-default-configs.patch
  2059.     fi
  2060.     CHECKSUM=(`md5sum /usr/src/linux-$KERNELVERSION.tar.bz2`)
  2061.     CHECKSUM1=(`md5sum /usr/src/0001-base-packaging.patch`)
  2062.     CHECKSUM2=(`md5sum /usr/src/0002-debian-changelog.patch`)
  2063.     CHECKSUM3=(`md5sum /usr/src/0003-default-configs.patch`)
  2064.  
  2065.     echo -e "\033[1;36m[`date +%H:%M:%S`] MD5SUM linux-$KERNELVERSION.tar.bz2: \033[0m${CHECKSUM[0]}"
  2066.     echo "[`date +%H:%M:%S`] MD5SUM $KERNELVERSION.tar.bz2: ${CHECKSUM[0]}" >> "$LOGKFN"
  2067.  
  2068.     echo -e "\033[1;36m[`date +%H:%M:%S`] MD5SUM 0001-base-packaging.patch: \033[0m${CHECKSUM1[0]}"
  2069.     echo "[`date +%H:%M:%S`] MD5SUM 0001-base-packaging.patch: ${CHECKSUM[0]}" >> "$LOGKFN"
  2070.  
  2071.     echo -e "\033[1;36m[`date +%H:%M:%S`] MD5SUM 0002-debian-changelog.patch: \033[0m${CHECKSUM2[0]}"
  2072.     echo "[`date +%H:%M:%S`] MD5SUM 0002-debian-changelog.patch: ${CHECKSUM[0]}" >> "$LOGKFN"
  2073.  
  2074.     echo -e "\033[1;36m[`date +%H:%M:%S`] MD5SUM 0003-default-configs.patch: \033[0m${CHECKSUM3[0]}"
  2075.     echo "[`date +%H:%M:%S`] MD5SUM 0003-default-configs.patch: ${CHECKSUM[0]}" >> "$LOGKFN"
  2076.  
  2077.     echo -e "\033[1;36m[`date +%H:%M:%S`] $_EXTRACTINGSOURCE /usr/src/linux-$KERNELVERSION\033[0m"
  2078.     echo "[`date +%H:%M:%S`] $_EXTRACTINGSOURCE /usr/src/linux-$KERNELVERSION" >> "$LOGKFN"
  2079.  
  2080.     tar jxf linux-$KERNELVERSION.tar.bz2
  2081.  
  2082.     cd linux-$KERNELVERSION
  2083.    
  2084.     if [ "$_AUTOCONFIGTXT" == "$_YES" ]
  2085.     then
  2086.         echo -e "\033[1;36m[`date +%H:%M:%S`] $_CPCONFIG"
  2087.         echo "[`date +%H:%M:%S`] $_CPCONFIG" >> "$LOGKFN"
  2088.         cp /boot/config-`uname -r` /usr/src/linux-$KERNELVERSION/.config
  2089.     else
  2090.         echo -e "\033[1;36m[`date +%H:%M:%S`] $_COMPILING $_INTERFACE\033[0m"
  2091.         echo "[`date +%H:%M:%S`] $_COMPILING $_INTERFACE" >> "$LOGKFN"
  2092.         make $_INTERFACE
  2093.     fi
  2094.  
  2095.     # Verifica se o arquivo .config, necessária para a configuração do Kernel, existe:
  2096.  
  2097.     if [ ! -f /usr/src/linux-$KERNELVERSION/.config ]
  2098.     then
  2099.         notify-send -i gtk-dialog-warning -u normal "$TITLEMSG" "$_ERRORCONFIG"
  2100.         echo "[`date +%H:%M:%S`] $_ERRORCONFIG" >> "$LOGKFN"
  2101.         dialog --title "$TITLEMSG" --msgbox "\n$_ERRORCONFIG" 9 60
  2102.         _exit
  2103.     fi
  2104.  
  2105.     _timer & # Inicia o timer
  2106.  
  2107.     cd /usr/src/linux-$KERNELVERSION
  2108.  
  2109.     if [ "$_PATCHTXT" == "$_YES" ]
  2110.     then
  2111.         mv /usr/src/0001-base-packaging.patch /usr/src/linux-$KERNELVERSION
  2112.         mv /usr/src/0002-debian-changelog.patch /usr/src/linux-$KERNELVERSION
  2113.         mv /usr/src/0003-default-configs.patch /usr/src/linux-$KERNELVERSION
  2114.  
  2115.         # Aplicando patches
  2116.  
  2117.         echo -e "\033[1;36m[`date +%H:%M:%S`] $_APPLYPATCH1\033[0m"
  2118.         echo "[`date +%H:%M:%S`] $_APPLYPATCH1" >> "$LOGKFN"
  2119.  
  2120.         patch -p1 < 0001-base-packaging.patch
  2121.         patch -p1 < 0002-debian-changelog.patch
  2122.         patch -p1 < 0003-default-configs.patch
  2123.  
  2124.         # Aplicando CFLAGS
  2125.  
  2126.         echo -e "\033[1;36m[`date +%H:%M:%S`] $_APPLYCFLAGS\033[0m"
  2127.         echo "[`date +%H:%M:%S`] $_APPLYCFLAGS (CFLAGS): $CFLAGS" >> "$LOGKFN"
  2128.         sed -e "s/HOSTCFLAGS   = -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer/HOSTCFLAGS = $CFLAGS/g"  Makefile > Makefile1
  2129.         rm Makefile
  2130.         mv Makefile1 Makefile
  2131.         sed -e "s/-march=\([A-Z0-9a-z]\+\)/$CFLAGS/g"  arch/x86/boot/compressed/Makefile > arch/x86/boot/compressed/Makefile1
  2132.         rm arch/x86/boot/compressed/Makefile
  2133.         mv arch/x86/boot/compressed/Makefile1 arch/x86/boot/compressed/Makefile
  2134.         sed -e "s/-march=\([A-Z0-9a-z]\+\)/$CFLAGS/g"  arch/x86/boot/Makefile > arch/x86/boot/Makefile1
  2135.         rm arch/x86/boot/Makefile
  2136.         mv arch/x86/boot/Makefile1 arch/x86/boot/Makefile
  2137.         sed -e "s/-march=\([A-Z0-9a-z]\+\)/$CFLAGS/g"  arch/x86/kernel/acpi/realmode/Makefile > arch/x86/kernel/acpi/realmode/Makefile1
  2138.         rm arch/x86/kernel/acpi/realmode/Makefile
  2139.         mv arch/x86/kernel/acpi/realmode/Makefile1 arch/x86/kernel/acpi/realmode/Makefile
  2140.         sed -e "s/-march=\([A-Z0-9a-z]\+\)/$CFLAGS/g"  arch/x86/Kconfig.cpu > arch/x86/Kconfig.cpu1
  2141.         rm arch/x86/Kconfig.cpu
  2142.         mv arch/x86/Kconfig.cpu1 arch/x86/Kconfig.cpu
  2143.         sed -e "s/-march=\([A-Z0-9a-z]\+\)/$CFLAGS/g"  arch/x86/Makefile > arch/x86/Makefile1
  2144.         rm arch/x86/Makefile
  2145.         mv arch/x86/Makefile1 arch/x86/Makefile
  2146.         sed -e "s/-march=\([A-Z0-9a-z]\+\)/$CFLAGS/g"  arch/x86/Makefile_32.cpu > arch/x86/Makefile_32.cpu1
  2147.         rm arch/x86/Makefile_32.cpu
  2148.         mv arch/x86/Makefile_32.cpu1 arch/x86/Makefile_32.cpu
  2149.     fi
  2150.  
  2151.     # Compilando o Kernel:
  2152.  
  2153.     echo -e "\033[1;36m[`date +%H:%M:%S`] $_COMPILINGKERNEL $KERNELVERSION\033[0m"
  2154.     echo "[`date +%H:%M:%S`] $_COMPILINGKERNEL $KERNELVERSION" >> "$LOGKFN"
  2155.     notify-send -i gtk-dialog-info -u normal "$TITLEMSG" "$_COMPILINGKERNEL $KERNELVERSION"
  2156.  
  2157.     make-kpkg --initrd --append-to-version=-$_CODENAMETXT kernel_image kernel_headers kernel_source modules modules_image -j$NUMBERCORE
  2158.  
  2159.     # Instalação do Kernel:
  2160.  
  2161.     echo -e "\033[1;36m[`date +%H:%M:%S`] $_INSTALLKERNEL $KERNELVERSION\033[0m"
  2162.     echo "[`date +%H:%M:%S`] $_INSTALLKERNEL $KERNELVERSION" >> "$LOGKFN"
  2163.     dpkg -i /usr/src/*.deb
  2164.  
  2165.     # Instalando Initramfs:
  2166.  
  2167.     echo -e "\033[1;36m[`date +%H:%M:%S`] $_UPDATEINITRAMFS\033[0m"
  2168.     echo "[`date +%H:%M:%S`] $_UPDATEINITRAMFS" >> "$LOGKFN"
  2169.  
  2170.     # Como o initramfs necessita do valor EXATO da versão do kernel, devemos
  2171.     # informá-lo com a Versão, Subversão e Revisão, ex: 3.2.3 , por isso que
  2172.     # a variável $KERNELVERSION não é utilizada aqui:
  2173.  
  2174.     if [ "$_PLATFORMTXT" == "$_PLATFORMPS3" ]
  2175.     then
  2176.         mkinitramfs -o initrd.img $KERNEL1.$KERNEL2.$KERNEL3-$_CODENAMETXT # Modo PlayStation 3
  2177.     else
  2178.         update-initramfs -k $KERNEL1.$KERNEL2.$KERNEL3-$_CODENAMETXT -u    # Modo Computador
  2179.     fi
  2180.  
  2181.     # Atualizando o bootloader:
  2182.  
  2183.     # Nota: no PlayStation 3 o bootloader lê o arquivo /etc/kboot.conf
  2184.     # para iniciar o sistema.
  2185.  
  2186.     case $_PLATFORMTXT in
  2187.     "$_PLATFORMPS3")
  2188.         echo -e "\033[1;36m[`date +%H:%M:%S`] $_INSTALLINGKERNEL\033[0m"
  2189.         cp initrd.img /boot/initrd.img-$KERNEL1.$KERNEL2.$KERNEL3-$_CODENAMETXT
  2190.         cp vmlinux /boot/vmlinux-$KERNEL1.$KERNEL2.$KERNEL3-$_CODENAMETXT
  2191.         cp .config /boot/config-$KERNEL1.$KERNEL2.$KERNEL3-$_CODENAMETXT
  2192.         cp System.map /boot/System.map-$KERNEL1.$KERNEL2.$KERNEL3-$_CODENAMETXT
  2193.         echo 'echo $1 > $HOME/.kfn/hd_root' > $HOME/.kfn/hd_root.sh
  2194.         chmod 777 $HOME/.kfn/hd_root.sh
  2195.         $HOME/.kfn/hd_root.sh `mount`
  2196.         HDROOT=`cat $HOME/.kfn/hd_root`
  2197.         echo -e "\033[1;36m[`date +%H:%M:%S`] $_UPDATINGKBOOT\033[0m\n"
  2198.         echo -e "message=/etc/kboot.msg\ndefault=linux\ntimeout=100\nlinux='/boot/vmlinux-$KERNEL1.$KERNEL2.$KERNEL3-$CODENAME initrd=/boot/initrd.img-$KERNEL1.$KERNEL2.$KERNEL3-$CODENAME root=$HDROOT quiet video=ps3fb:mode:5'\nold='/boot/vmlinux initrd=/boot/initrd.img root=$HDROOT quiet video=ps3fb:mode:5'" > /etc/kboot.conf
  2199.         cat /etc/kboot.conf
  2200.             ;;
  2201.     "$_PLATFORMGENERIC")
  2202.         echo -e "\033[1;36m[`date +%H:%M:%S`] $_UPDATINGGRUB\033[0m"
  2203.         echo "[`date +%H:%M:%S`] $_UPDATINGGRUB" >> "$LOGKFN"
  2204.         update-grub
  2205.             ;;
  2206.     esac
  2207.  
  2208.     if [ "$RAMDISK" -eq 1 ]
  2209.     then
  2210.         echo -e "\033[1;36m[`date +%H:%M:%S`] $_UMOUNTINGRAMDISK\033[0m"
  2211.         echo "[`date +%H:%M:%S`] $_UMOUNTINGRAMDISK" >> "$LOGKFN"
  2212.         umount /usr/src/linux-$KERNELVERSION
  2213.         mkdir /usr/src/linux-$KERNELVERSION
  2214.         echo -e "\033[1;36m[`date +%H:%M:%S`] $_COPYINGFILESTOUSRSRC /usr/src/linux-$KERNELVERSION\033[0m"
  2215.         echo "[`date +%H:%M:%S`] $_COPYINGFILESTOUSRSRC /usr/src/linux-$KERNELVERSION" >> "$LOGKFN"
  2216.         cp $HOME/.kfn/ramdisk/linux-$KERNELVERSION/* /usr/src/linux-$KERNELVERSION
  2217.     fi
  2218.     echo
  2219.  
  2220.     cd /usr/src
  2221.  
  2222.     # Compactando arquivos finais do Kernel para posterior uso:
  2223.  
  2224.     if [ -f linux-kernel-$KERNEL1.$KERNEL2.$KERNEL3-$_CODENAMETXT.tar.bz2 ]
  2225.     then
  2226.         rm linux-kernel-$KERNEL1.$KERNEL2.$KERNEL3-$_CODENAMETXT.tar.bz2
  2227.     fi
  2228.  
  2229.     echo -e "\033[1;36m[`date +%H:%M:%S`] $_COMPRESS\n\033[0m"
  2230.     echo "[`date +%H:%M:%S`] $_COMPRESS" >> "$LOGKFN"
  2231.     tar -cf linux-kernel-$KERNEL1.$KERNEL2.$KERNEL3-$_CODENAMETXT.tar *.deb
  2232.     bzip2 linux-kernel-$KERNEL1.$KERNEL2.$KERNEL3-$_CODENAMETXT.tar
  2233.  
  2234.     # Testando se o Kernel e os "headers" foram instalados corretamente:
  2235.  
  2236.     if [ `dpkg --get-selections | grep linux-image-$KERNEL1.$KERNEL2.$KERNEL3-$_CODENAMETXT | wc -l` -eq 0 ]
  2237.     then
  2238.         echo -e "\033[1;31m[`date +%H:%M:%S`] $_ERROR linux-image-$KERNEL1.$KERNEL2.$KERNEL3-$_CODENAMETXT\033[0m $_KERNELNOTINSTALLED\033[0m"
  2239.         echo "[`date +%H:%M:%S`] $_ERROR linux-image-$KERNEL1.$KERNEL2.$KERNEL3-$_CODENAMETXT $_KERNELNOTINSTALLED" >> "$LOGKFN"
  2240.         TESTKERNEL=1
  2241.     else
  2242.         echo -e "\033[1;36m[`date +%H:%M:%S`] $_OK linux-image-$KERNEL1.$KERNEL2.$KERNEL3-$_CODENAMETXT\033[0m $_SUCESSFULLKERNELINSTALLED\033[0m"
  2243.         echo "[`date +%H:%M:%S`] $_OK linux-image-$KERNEL1.$KERNEL2.$KERNEL3-$_CODENAMETXT $_SUCESSFULLKERNELINSTALLED" >> "$LOGKFN"
  2244.     fi
  2245.  
  2246.     if [ `dpkg --get-selections | grep linux-headers-$KERNEL1.$KERNEL2.$KERNEL3-$_CODENAMETXT | wc -l` -eq 0 ]
  2247.     then
  2248.         echo -e "\033[1;31m[`date +%H:%M:%S`] $_ERROR linux-headers-$KERNEL1.$KERNEL2.$KERNEL3-$_CODENAMETXT\033[0m $_HEADERSNOTINSTALLED\033[0m"
  2249.         echo "[`date +%H:%M:%S`] $_ERROR linux-headers-$KERNEL1.$KERNEL2.$KERNEL3-$_CODENAMETXT $_HEADERSNOTINSTALLED" >> "$LOGKFN"
  2250.         TESTKERNEL=1
  2251.     else
  2252.         echo -e "\033[1;36m[`date +%H:%M:%S`] $_OK linux-headers-$KERNEL1.$KERNEL2.$KERNEL3-$_CODENAMETXT\033[0m $_SUCESSFULLHEADERSINSTALLED\033[0m"
  2253.         echo "[`date +%H:%M:%S`] $_OK linux-headers-$KERNEL1.$KERNEL2.$KERNEL3-$_CODENAMETXT $_SUCESSFULLHEADERSINSTALLED" >> "$LOGKFN"
  2254.     fi
  2255.  
  2256.     if [ "$TESTKERNEL" == "1" ]
  2257.     then
  2258.         notify-send -i gtk-dialog-warning -u normal "$TITLEMSG" "$_ERRORKERNELHEADERS $KFNFORUM"
  2259.         echo -e "\n\033[1;31m[`date +%H:%M:%S`] $_ERRORKERNELHEADERS\033[0m\033[1;36m$KFNFORUM\033[0m\n"
  2260.         echo "[`date +%H:%M:%S`] $_ERRORKERNELHEADERS $KFNFORUM" >> "$LOGKFN"
  2261.     fi
  2262.  
  2263.     # Finalização:
  2264.  
  2265.     echo out > $HOME/.kfn/timer # Envia a solicitação de encerramento ao _timer
  2266.  
  2267.     while [ "`cat $HOME/.kfn/exit`" != "done" ] # Aguarda a resposta do _timer
  2268.     do
  2269.         sleep 1
  2270.     done
  2271.  
  2272.     TOTALENDTIME="`cat $HOME/.kfn/time`"
  2273.  
  2274.     echo
  2275.     echo -e "\033[1;36m$_TOTALEXECUTIONTIME $TOTALENDTIME\nFinalizado em `date +%d/%m/%Y` às `date +%H:%M:%S`\033[0m"
  2276.     echo "[`date +%H:%M:%S`] $_TOTALEXECUTIONTIME $TOTALENDTIME Finalizado em `date +%d/%m/%Y` às `date +%H:%M:%S`" >> "$LOGKFN"
  2277.     echo -e "\033[1;36m$_COMPILATIONCOMPLETEFINISH $KERNELVERSION-$_CODENAMETXT (`file /bin/bash | cut -d' ' -f3`)\033[0m"
  2278.     echo "[`date +%H:%M:%S`] $_COMPILATIONCOMPLETEFINISH $KERNELVERSION-$_CODENAMETXT (`file /bin/bash | cut -d' ' -f3`)" >> "$LOGKFN"
  2279.  
  2280.     notify-send -i gtk-dialog-info -u normal "$TITLEMSG" "$_COMPILATIONCOMPLETEFINISH $KERNELVERSION-$_CODENAMETXT (`file /bin/bash | cut -d' ' -f3`): $KERNELVERSION"
  2281.  
  2282.     # Reinicia, desliga o sistema ou executa um comando após terminar o processo:
  2283.  
  2284.     if [ "$_WHENCOMPLETETXT" != "$_NOTHINGTODO" ]
  2285.     then
  2286.         echo "[`date +%H:%M:%S`] $CMD" >> "$LOGKFN"
  2287.         $CMD
  2288.         _exit
  2289.     else
  2290.         _exit
  2291.     fi
  2292. }
  2293.  
  2294. ################################################################################
  2295.  
  2296. _menu()
  2297. {
  2298.     echo $KERNELVERSION > $HOME/.kfn/kernelversion
  2299.     if [ "$URL" == "0" ]
  2300.     then
  2301.         _gensubversion
  2302.         URL="http://www.kernel.org/pub/linux/kernel/v$KERNEL1.$GENSUBVERSION/linux-$KERNELVERSION.tar.bz2"
  2303.     fi
  2304.     _numbercore
  2305.     if [ $_SETCFLAGS -eq 1 ]
  2306.     then
  2307.         _auto_CFLAGS
  2308.         _SETCFLAGS=0
  2309.     fi
  2310.     _MENUCFLAGS=1
  2311. }
  2312.  
  2313. ################################################################################
  2314.  
  2315. while true # Menu principal
  2316. do
  2317.     _menu
  2318.     MAINACTION=$( dialog --title "$TITLEMSG"                               \
  2319.               --stdout                                                 \
  2320.               --menu "$_GENERALOPTIONS"                                \
  2321.               0 90 14                                                  \
  2322.               "$_KERNELVERSIONTXT" "$KERNELVERSION$KERNELVERSIONCHECK" \
  2323.               "$_SOURCEPACKAGE" "$_DOWNLOADTXT"                        \
  2324.               "$_URL" "$URL"                                           \
  2325.               "$_CORES" "$NUMBERCORE $_CORES1"                         \
  2326.               "$_WHENCOMPLETE" "$_WHENCOMPLETETXT"                     \
  2327.               "$_PLATFORM" "$_PLATFORMTXT"                             \
  2328.               "$_CONFIGMODE" "$_SETUPTXT"                              \
  2329.               "$_OPTIMIZATION" "$_CFLAGSTXT"                           \
  2330.               "$_AUTOCONFIG" "$_AUTOCONFIGTXT"                         \
  2331.               "$_APPLYPATCH" "$_PATCHTXT"                              \
  2332.               "$_COMPILERAMDISK" "$RAMDISKTXT"                         \
  2333.               "$_RUNUPDATE" "$_UPDATEEXECTXT"                          \
  2334.               "$_STARTPROCESS" ""                                      \
  2335.               "$_CANCEL" "" )
  2336.  
  2337.     case $MAINACTION in
  2338.         "$_COMPILERAMDISK")   _check_bit
  2339.             ;;
  2340.         "$_SOURCEPACKAGE")    _kernelsource
  2341.             ;;
  2342.         "$_KERNELVERSIONTXT") _kernelversion
  2343.             ;;
  2344.         "$_PLATFORM")         _platform
  2345.             ;;
  2346.         "$_WHENCOMPLETE")     _whencomplete
  2347.             ;;
  2348.         "$_STARTPROCESS")     _startprocess
  2349.             ;;
  2350.         "$_CONFIGMODE")       _setup
  2351.             ;;
  2352.         "$_OPTIMIZATION")     _CFLAGS
  2353.             ;;
  2354.         "$_CORES")            _selectcore
  2355.             ;;
  2356.         "$_APPLYPATCH")       _apply_patch
  2357.             ;;
  2358.         "$_RUNUPDATE")        _getkernelversion
  2359.             ;;
  2360.         "$_AUTOCONFIG")       _autoconfig
  2361.             ;;
  2362.         "$_CANCEL")           echo && _exit
  2363.             ;;
  2364.     esac
  2365. done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement