Compilação automática do kernel Linux-libre 3.14.16
Publicado por Mário RPG (última atualização em 15/08/2014)
[ Hits: 2.909 ]
Homepage: www.fsfla.org
Download scriptkernel-libre-3.14.16.sh
Script em bash para compilação automática do kernel Linux-libre 3.14.16 no Ubuntu/Debian 32 bits para PC/notebooks que tenham no mínimo 2 GB de memória RAM. Ele baixa e compila tudo automaticamente usando "CFLAGS -MARCH=NATIVE + -Ofast", só sendo necessário escolher a arquitetura exata do seu processador no menuconfig.
Como executar no terminal:
$ time sudo bash scritpkernel-libre-3.14.16.sh
Página do projeto:
http://sourceforge.net/projects/scriptkernel/
#!/bin/bash # Licensa GPL3 # # DEBIAN LIKE # # NECESSARIO versão GCC-4.7.3 ou superior # # Tamanho final da pasta /usr/src/linux-3.14.xx = 9.6 GB # # Tempo de compilação ~150 min. # ########################################################### #versão do kernel a ser compilado kernel=3.14 #path de atualização patchkernel=3.14.16 #patch BFQ #bfq=3.4.0-v4 #patch do kernel ubuntu: 0001... 0002... 0003... 0004... site: http://kernel.ubuntu.com/~kernel-ppa/mainline/ P1=0001-base-packaging.patch P2=0002-debian-changelog.patch P3=0003-configs-based-on-Ubuntu-3.13.0-8.27.patch #P4=0004-configs-based-on-Ubuntu-3.4.0-5.11.patch #apelido do kernel ubuntu apelido=utopic #patch ck #patchck=3.4-ck3 #sufixo ckk=amd #.config antigo kernelantigo=atual ############################################ # não precisa mexer em mais nada aqui ################################## #arquitetura: amd64 ou i386 # criado por Stivekx - forum ubuntu-br ####### arqt=$(dpkg --print-architecture) #CL=CONCURRENCY_LEVEL do processador # criado por Stivekx ############ CL=$(grep -c processor /proc/cpuinfo) ################################## ########baixando compiladores e dependencias######################################################## sudo apt-get update sudo apt-get install kernel-package libncurses5 libncurses5-dev build-essential patch gcc make gzip bzip2 lzip lzma lzop lrzip lrzsz xz-utils -y sudo apt-get install gcc-4.7 -y #################################################################################################### ###### deletando patchs antigos ############# #sudo rm /usr/src/patch-$patchkernel #sudo rm /usr/src/patch-$patchck #sudo rm /usr/src/*.patch #sudo rm /usr/src/0002-debian-changelog.patch #sudo rm /usr/src/0003-default-configs.patch #sudo rm /usr/src/0001-block-cgroups-kconfig-build-bits-for-BFQ-v4-$kernel.patch #sudo rm /usr/src/0002-block-introduce-the-BFQ-v4-I-O-sched-for-$kernel.patch ############################################ ####### sudo mkdir /usr/src/bkpatch sudo mv /usr/src/*.patch /usr/src/bkpatch ####### cd /usr/src wget -c http://www.linux-libre.fsfla.org/pub/linux-libre/releases/$kernel-gnu/linux-libre-$kernel-gnu.tar.bz2 #wget -c http://www.kernel.org/pub/linux/kernel/v3.x/linux-$kernel.tar.bz2 sudo tar -jxpvf /usr/src/linux-libre-$kernel-gnu.tar.bz2 sudo mv /usr/src/linux-$kernel /usr/src/linux-libre-$patchkernel-$ckk wget -c http://www.linux-libre.fsfla.org/pub/linux-libre/releases/$patchkernel-gnu/patch-$kernel-gnu-$patchkernel-gnu.xz #wget -c http://www.kernel.org/pub/linux/kernel/v3.x/patch-$patchkernel.xzy #wget -c http://ck.kolivas.org/patches/3.0/$kernel/$patchck/patch-$patchck.bz2 #wget -c http://algo.ing.unimo.it/people/paolo/disk_sched/patches/$bfq/0001-block-cgroups-kconfig-build-bits-for-BFQ-v4-$kernel.patch #wget -c http://algo.ing.unimo.it/people/paolo/disk_sched/patches/$bfq/0002-block-introduce-the-BFQ-v4-I-O-sched-for-$kernel.patch #ubuntu patch wget -c http://kernel.ubuntu.com/~kernel-ppa/mainline/v$patchkernel-$apelido/$P1 wget -c http://kernel.ubuntu.com/~kernel-ppa/mainline/v$patchkernel-$apelido/$P2 wget -c http://kernel.ubuntu.com/~kernel-ppa/mainline/v$patchkernel-$apelido/$P3 wget -c http://kernel.ubuntu.com/~kernel-ppa/mainline/v$patchkernel-$apelido/$P4 sudo xz -d /usr/src/patch-$kernel-gnu-$patchkernel-gnu.xz #sudo bunzip2 /usr/src/patch-libre-$patchck.bz2 cd /usr/src/linux-libre-$patchkernel-$ckk sudo patch -p1 < /usr/src/patch-$kernel-gnu-$patchkernel-gnu #sudo patch -p1 < /usr/src/patch-$patchck #sudo patch -p1 < /usr/src/0001-block-cgroups-kconfig-build-bits-for-BFQ-v4-$kernel.patch #sudo patch -p1 < /usr/src/0002-block-introduce-the-BFQ-v4-I-O-sched-for-$kernel.patch sudo patch -p1 < /usr/src/$P1 sudo patch -p1 < /usr/src/$P2 sudo patch -p1 < /usr/src/$P3 sudo patch -p1 < /usr/src/$P4 ###################### sleep 2 sudo rm /boot/download cd /boot sudo wget -c http://sourceforge.net/projects/scriptkernel/files/config-14-x86/download #sudo wget -c http://sourceforge.net/projects/scriptkernel/files/config-14-atom32/download #sudo wget -c http://sourceforge.net/projects/scriptkernel/files/config-kernel-12/download sudo cp /boot/download /usr/src/linux-libre-$patchkernel-$ckk/.config #### criado por Stivekx ############# #config_file=$(locate /boot/config-* | sort -r | head -1) #sudo cp $config_file /usr/src/linux-$patchkernel-$ckk ######################### ############# Editando o Makefile ###################### sudo sed -e 's/EXTRAVERSION\([ = ]\+\)/EXTRAVERSION = -amd/g' /usr/src/linux-libre-$patchkernel-$ckk/Makefile > /usr/src/linux-libre-$patchkernel-$ckk/mk && mv /usr/src/linux-libre-$patchkernel-$ckk/mk /usr/src/linux-libre-$patchkernel-$ckk/Makefile cd /usr/src/linux-libre-$patchkernel-$ckk #sudo gedit Makefile sleep 3 sudo make menuconfig ######## Retirando Modulos Problematicos ############ sudo sed 's/CONFIG_RTS5139=m/# CONFIG_RTS5139 is not set/g' /usr/src/linux-libre-$patchkernel-$ckk/.config > /usr/src/linux-libre-$patchkernel-$ckk/aa && mv /usr/src/linux-libre-$patchkernel-$ckk/aa /usr/src/linux-libre-$patchkernel-$ckk/.config sleep 2 sudo sed 's/CONFIG_IGB=m/# CONFIG_IGB is not set/g' /usr/src/linux-libre-$patchkernel-$ckk/.config > /usr/src/linux-libre-$patchkernel-$ckk/bb && mv /usr/src/linux-libre-$patchkernel-$ckk/bb /usr/src/linux-libre-$patchkernel-$ckk/.config sleep 2 sudo sed 's/CONFIG_IGB_DCA=y/# CONFIG_IGB_DCA is not set/g' /usr/src/linux-libre-$patchkernel-$ckk/.config > /usr/src/linux-libre-$patchkernel-$ckk/cc && mv /usr/src/linux-libre-$patchkernel-$ckk/cc /usr/src/linux-libre-$patchkernel-$ckk/.config sleep 2 sudo sed 's/CONFIG_IGBVF=m/# CONFIG_IGBVF is not set/g' /usr/src/linux-libre-$patchkernel-$ckk/.config > /usr/src/linux-libre-$patchkernel-$ckk/dd && mv /usr/src/linux-libre-$patchkernel-$ckk/dd /usr/src/linux-libre-$patchkernel-$ckk/.config sleep 2 sudo sed 's/CONFIG_E1000E=m/# CONFIG_E1000E is not set/g' /usr/src/linux-libre-$patchkernel-$ckk/.config > /usr/src/linux-libre-$patchkernel-$ckk/ee && mv /usr/src/linux-libre-$patchkernel-$ckk/ee /usr/src/linux-libre-$patchkernel-$ckk/.config sleep 3 ###################################################### ############ script criado por Stivekx ####################### #!/bin/bash #Script para automatizar a mudança das flags na hora de compilar o kernel. #Mais informações sobre como compilar o kernel para seu processador: #http://ubuntuforum-br.org/index.php/topic,81718.0.html #Modo de usar: #Após baixar o kernel, descompactar, criar um link simbólico para ele no /usr/src/linux: # cd /usr/src/linux # sudo su # chmod +x script.sh # ./script.sh #O script deve ser executado como root. Recomendo que use sudo su - e rode o script ao invés de sudo sh script.sh #Script criado por André Steinn #Aqui é a lista de arquivos que ele vai dar replace no -march= por -march=native. Você pode mudar essa lista de arquivos passando a lista pela opção a e separados pro virgula #e.g.: ./script.sh -a arch/x86/boot/compressed/Makefile,arch/x86/boot/Makefile,arquivo1,arquivo2,arquivo3 arquivos=( "arch/x86/boot/compressed/Makefile" "arch/x86/boot/Makefile" "arch/x86/kernel/acpi/realmode/Makefile" "arch/x86/Kconfig.cpu" "arch/x86/Makefile" "arch/x86/Makefile_32.cpu") #Aqui eu verifico se a pessoa passou algum argumento na hora de executar o script while getopts ":a:c" opt; do case $opt in a) echo "Você setou uma lista de arquivos personalizada: $OPTARG" >&2 IFS=',' read -ra arquivos <<< "$OPTARG" ;; \?) echo "Opção inválida: -$OPTARG" >&2 exit 1 ;; esac done #Aqui eu faço um loop e altero os arquivos, removendo o -march=() por -march=native for i in "${arquivos[@]}" do echo "Path no arquivo:"$i sed -e 's/-march=\([A-Z0-9a-z]\+\)/-march=native -Ofast /g' $i > "$i.file_changed" mv "$i.file_changed" $i done ################ sleep 3 #time sudo CONCURRENCY_LEVEL=2 make-kpkg --initrd kernel_image kernel_headers modules_image #time sudo CONCURRENCY_LEVEL=$CL make-kpkg --initrd kernel_image kernel_headers modules_image #cd /usr/src #sudo dpkg -i linux-image-$patchkernel-$ckk\_$patchkernel-$ckk-10.00.Custom_$arqt.deb linux-headers-$patchkernel-$ckk\_$patchkernel-$ckk-10.00.Custom_$arqt.deb cd /usr/src/linux-libre-$patchkernel-$ckk time sudo make -j2 time sudo make modules_install time sudo make install sleep 3 cd /lib/modules ls #sudo mkinitramfs -o /boot/initrd.img-$patchkernel-$ckk $patchkernel-$ckk sudo update-grub sleep 5 echo 'tudo belezinha'
Dicas e explicações de comandos do Linux - rápidos e reeditáveis
Automatizar a importação de chave privada GPG (GnuPG)
Manipular um arquivo txt como se fosse uma planilha de calculo
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (15)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)
Pendrive não formata de jeito nenhum (4)