Como faço para atualizar o kernel do Debian Wheezy offline?

5

Estou usando o Debian ( Wheezy ) com a versão do kernel 3.2.0-4 amd64 e quero atualizar meu kernel para a versão mais recente, como 3.13.3 stable , mas não tenho conexão com a internet para meu Debian OS. Instalei ambos os pacotes "usb-modeswitch" e "usb-modeswitch-data", mas o Debian não detectou meu dongle usb do modem 3g.

Eu fiz o download da fonte do kernel 3.13.3 tar.xz de kernel.org . Como posso compilar e atualizar de 3.2 para 3.13.3 sem uma conexão com a internet?

    
por Sensor 19.02.2014 / 14:14

4 respostas

9

O caminho mais fácil: backports

Eu assumo que você precisa do novo kernel para fazer seu modem funcionar. Se você pode viver com 3.12 ao invés de 3.13, pelo menos por enquanto, então ao invés de recompilar o kernel a partir do código-fonte, você pode apenas usar o Debian Backports. [update: Agora backports é até 3,14]

Você pode pegar o pacote manualmente em packages.debian.org (atualização: agora 3.14) em um computador com conexão à Internet. Também pegue o initramfs-tools (haverá um link na página). Coloque ambos em um pendrive e instale com dpkg -i .

Você também pode ver o pacote linux-image-amd64 ou o semelhante para sua arquitetura, para descobrir a versão mais recente.

Quando você tiver uma conexão com a Internet no computador, a página de backports terá instruções completas sobre como configurá-lo para que você obter atualizações, mas resumindo:

  1. Edite /etc/apt/sources.list e adicione deb http://YOURMIRROR.debian.org/debian wheezy-backports main
  2. Para instalar um pacote de backports, use -t wheezy-backports , por exemplo, aptitude -t wheezy-backports install linux-image-amd64

O caminho mais difícil: fontes de kernel upstream

Note que você perderá os patches do Debian dessa maneira, a menos que você os aplique manualmente.

Configure o kernel como em Configurando, compilando e instalando um Linux personalizado kernel mas não o instale. (Você também pode roubar o arquivo de configuração do Debian, mas cuidado, ele constrói quase tudo, então levará muito tempo para compilar). Em vez disso, execute make deb-pkg . Isto irá gerar vários pacotes Debian. Você deseja instalar o linux-image- e, possivelmente, linux-headers- e linux-firmware-image- . Você não precisa instalar o pacote (% imensamente) linux-image-*-dbg .

    
por 19.02.2014 / 17:39
3

Como Graeme aponta, 3.13 está atualmente em experimental. Minha sugestão é fazer o download e, em seguida, aplicar o procedimento fornecido em Seção 4.2 do Manual do Kernel Debian: Reconstruindo os pacotes oficiais do kernel do Debian . se tudo correr bem, isso criará um pacote Debian customizado para wheezy.

Eu não usei este procedimento, mas estou interessado em saber como fazer isso. Se você tiver problemas, pergunte aqui. Eu gostaria de adicionar uma resposta à pergunta de goldilock que descreve como construir um pacote Debian a partir de fontes do kernel Debian.

NOTA: Eu posso dar a este procedimento um giro se tiver uma chance. A probabilidade disso seria grandemente aumentada se alguém tentasse primeiro e relatasse problemas. : -)

NOTA 2: Veja também Seção 1.2 do Manual Debian do Kernel: Autores e Contribuintes . O atual mantenedor é Ben Hutchings. que também é um desenvolvedor de kernel e responde a perguntas e comentários. Por isso, incentivo todos a enviar melhorias para o manual.

NOTA 3: Uma execução preliminar neste procedimento revela que o pacote 3.13 está listando gcc 4.8 como uma dependência. É difícil acreditar que o 4.8 é realmente necessário como uma dependência, mas em qualquer caso, se as dependências de compilação precisarem ser alteradas, isso torna o procedimento muito mais difícil.

NOTA 4: Graças a algum trabalho de detetive da derobert, descobrimos que mudar a versão do compilador em debian/config/defines era provavelmente o caminho a percorrer. Para completar, o patch que estou usando atualmente contra as fontes do Debian está abaixo.

Eu uso os seguintes comandos para tentar criar:

fakeroot debian/rules source

seguido por

fakeroot make -f debian/rules.gen binary-arch_amd64_none_amd64

No entanto, isso ainda procura por 4.8 e falhas, embora o primeiro comando claramente tenha feito algumas reescritas para 4.7.

UPDATE: eu levo de volta. Isso funciona desde que os arquivos corrigidos sejam novos o suficiente (mais recentes do que outros arquivos de origem na compilação). Eu notei que isso funcionou quando eu estalei e empurrei meu patch (usando o Mercurial Queues), que atualizava automaticamente o registro de data e hora dos arquivos. Sim, isso é tão estranho quanto parece, mas posso reproduzir o problema.

Eu postei na lista de discussão debian-kernel e na lista de discussão do manual do kernel. Veja o erro nos scripts de compilação do kernel da Debian . Eu não publiquei um relatório de bug formal, porque não tenho certeza de qual pacote enviar o bug.

UPDATE 2: Parece que isso pode ter sido uma forma de erro do usuário. Como pode ser visto na mensagem que eu escrevi, o problema é com timestamps. Make usa timestamps, e meu uso de controle de versão confundi-lo, também levando em conta o fato de que make está reconstruindo alguns dos arquivos de origem neste caso.

# HG changeset patch
# Parent 81a16b960a67fa08c9a298bc03c5acfd3d6f7437

diff -r 81a16b960a67 debian/config/amd64/defines
--- a/debian/config/amd64/defines
+++ b/debian/config/amd64/defines
@@ -5,7 +5,7 @@
 kernel-arch: x86

 [build]
-debug-info: true
+debug-info: false

 [image]
 bootloaders: grub-pc extlinux lilo
diff -r 81a16b960a67 debian/config/defines
--- a/debian/config/defines
+++ b/debian/config/defines
@@ -23,7 +23,7 @@
  sparc
  sparc64
  x32
-compiler: gcc-4.8
+compiler: gcc-4.7
 featuresets:
  none
  rt
@@ -50,4 +50,4 @@

 # initramfs-generators
 initramfs-fallback: linux-initramfs-tool
-initramfs-tools: initramfs-tools (>= 0.110~)
+initramfs-tools: initramfs-tools (>= 0.109.1)
diff -r 81a16b960a67 debian/config/i386/defines
--- a/debian/config/i386/defines
+++ b/debian/config/i386/defines
@@ -28,7 +28,7 @@
  i386/config.486

 [686-pae_build]
-debug-info: true
+debug-info: false

 [686-pae_description]
 hardware: modern PCs
    
por 19.02.2014 / 16:11
2

Compilar um kernel a partir da fonte upstream é uma tarefa muito complexa, eu não recomendaria isso, a menos que você já tenha experiência ou tenha muito tempo para aprender. O que provavelmente é uma idéia melhor é fazer o download de um Debian .deb para um kernel recente, transferi-lo e instalar com dpkg .

O kernel 3.12 usado atualmente no teste Debian / instável pode ser baixado aqui

http://ftp.uk.debian.org/debian/pool/main/l/linux/linux-image-3.12-1-amd64_3.12.9-1_amd64.deb

O kernel 3.13 atualmente nos repositórios experimental do Debian pode ser encontrado aqui:

http://ftp.uk.debian.org/debian/pool/main/l/linux/linux-image-3.13-trunk-amd64_3.13-1~exp1_amd64.deb

Como @Faheem apontou, o binário do kernel acima depende de uma versão diferente initramfs-tools do que está atualmente disponível em stable. É possível fazer o download de uma instalação junto com o kernel, o pacote pode ser baixado em:

http://ftp.uk.debian.org/debian/pool/main/i/initramfs-tools/initramfs-tools_0.115_all.deb

Para instalar, coloque os dois arquivos do pacote baixado no mesmo diretório (digamos, dir ) e execute:

sudo dpkg -Ri dir

Este processo é atualmente factível. À medida que o Debian Jessie (testes) e o Wheezy se tornam mais distantes, mais dependências podem ser necessárias, tornando-as menos viáveis e, eventualmente, impossíveis. Os links acima irão, é claro, expirar, no entanto links diretos para baixar versões mais recentes desses pacotes podem sempre ser encontrados navegando pelo link

Atualizar

Como sugerido por @derobert, é melhor usar um kernel backport, em vez de um teste / instável / experimental. Atualmente, o backport de Wheezy é 3.12.9, o mesmo que para testes e instável. Um link de download direto está aqui:

http://ftp.uk.debian.org/debian/pool/main/l/linux/linux-image-3.12-0.bpo.1-amd64_3.12.9-1~bpo70+1_amd64.deb

O pacote initramfs-tools necessário ainda é o mesmo, assim como as instruções de instalação.

Além disso, o que eu não sabia (além do lixo agora removido sobre a desinstalação do kernel atual), é que links de download para pacotes podem ser encontrados na parte inferior de páginas de pacotes em link que é mais fácil de navegar. Ele também tem links de download para todos os espelhos e não apenas o que eu usei no Reino Unido.

Se você tiver que compilar a partir do código-fonte, é melhor começar com um pacote fonte Debian. Aqui estão alguns links sobre como trabalhar com pacotes de código-fonte do Debian:

https://wiki.debian.org/SourcePackage

https://www.debian.org/doc/manuals/apt-howto/ch-sourcehandling.en.html

Você pode fazer o download dos três arquivos necessários para o 3.12 acima diretamente, através dos links no lado direito da página a seguir:

https://packages.debian.org/testing/linux-image-3.12-1-amd64

E o kernel experimental aqui:

https://packages.debian.org/experimental/kernel/linux-image-3.13-trunk-amd64

@Faheem realmente tentou isso, então sua resposta é melhor para isso.

    
por 19.02.2014 / 14:43
0

Já existe muita informação no site, por isso vou repetir o que é de conhecimento geral:

Existem várias vantagens para fazer isso com kpkg :

  • qualquer kernel serve, se todos os requisitos forem atendidos
  • você pode instalar rapidamente e também desinstalar rapidamente o seu kernel com dpkg
por 19.02.2014 / 15:07

Tags