Como compilar o efivar?

1

Eu estou tentando compilar o efivar-0.23 para meu LFS , mas quando eu o descompacte, execute o seguinte comando:

make libdir="/usr/lib/" bindir="/usr/bin/" mandir="/usr/share/man/" includedir=/usr/include/" V=1 -j1

Eu recebo um erro, que NVME_IOCTL_ID não é declarado. Eu procurei em toda a internet pela resposta, mas a única coisa que descobri é que preciso corrigir o arquivo. Eu encontrei vários patches, mas nada ajuda (talvez eu esteja instalando-os incorretamente ..). Este é o último patch que eu tentei: link .

Eu entrei no diretório efivar sem filtro e executei: patch -Np1 ../efivar.patch , mas estava fazendo qualquer coisa. Era como se estivesse fazendo alguma coisa, mas nada aconteceu.

Eu tentei patch < ../efivar.patch do diretório não marcado, mas o sistema começou a fazer perguntas ...

System: File to patch:
Me: Makefile
System: patching file Makefile
Hunk #1 FAILED at 12.
1 out of 1 hunk FAILED -- saving rejects to file Makefile.rej
The next patch would delete the file efivar-drop-options-not-supported-by-lower-version-gcc.patch,
which does not exist! Assume -R? [n]
Me: y
System: patching file efivar-drop-options-not-supported-by-lower-version-gcc.patch
The next patch would delete the file efivar_0.21.bb,
which does not exist! Assume -R? [n]
Me: y
patching file efivar_0.21.bb
patching file efivar_0.23.bb

Eu tentei diferentes combinações de respostas e diferentes patches. Eu também digitei manualmente nos arquivos necessários para ser corrigido para ter certeza de que contém o que é necessário (porque eu não tenho certeza se esse patch funciona).

Então, basicamente, estou no mesmo ponto com uma variável não declarada e muito tempo perdido sem saber o que fazer. Alguma idéia?

    
por New Face 24.04.2016 / 14:37

1 resposta

2

efivar A versão 0.23 precisa de um patch para funcionar com cabeçalhos de kernel a partir de 4.4 (e kernels posteriores), porque o cabeçalho define NVME_IOCTL_ID alterado (foi renomeado de nvme.h para nvme_ioctl.h ).

Para criar efivar em seu sistema, você precisará da "Alternativa para renomear linux / nvme.h" patch. Para aplicar isso, vá para o diretório que contém o código-fonte efivar (com a fonte 0.23 e nenhuma alteração) e execute

curl https://github.com/rhinstaller/efivar/commit/3a0ae7189fe96355d64dc2daf91cf85282773c66.patch | patch -p1

Então você deve ser capaz de construir efivar corretamente com cabeçalhos do kernel 4.4.

Já que você tem um arquivo de cabeçalho nvme.h , provavelmente ainda terá problemas com NVME_IOCTL_ID neste momento. Você pode aplicar outro patch que evite usá-lo completamente, "libefiboot: reprojetar o NVME, de modo que tenhamos a EUI correta e não precisemos de cabeçalhos de kernel " (este patch requer o anterior):

curl https://github.com/rhinstaller/efivar/commit/8910f45c27fadba0904f707e7c40ad80bf828f7e.patch | patch -p1

Com esses dois patches, você pode criar efivar , independentemente de onde (e se) os cabeçalhos do kernel definem NVME_IOCTL_ID .

    
por 24.04.2016 / 15:28