Produzi um .tar.gz
arquivo no Windows que contém alguns arquivos para atualizar o firmware por meio de um dispositivo Linux. A atualização falhou e um colega de trabalho mencionou que o problema era porque ele .tar.gz
não tinha o Linux signing
que esperava ter. . . Isso é realmente uma coisa? Devo presumir que sim, mas estou bastante curioso. Eu sei que os arquivos text/xml precisam ter Unix LF
EOL
convenções vs Windows CRLF
e suspeito que minha tentativa inicial falhou porque esqueci isso inicialmente.
A questão principal aqui é se um .tar.gz
arquivo criado em Windows
é ou não idêntico a um criado em Linux
e, em caso afirmativo, como detectar/modificar essas informações programaticamente Windows Environment
? Existe uma maneira programática no Windows de detectar/forçar um arquivo .tar.gz a ser " Linux Signed
" quando parece não haver dados relevantes de minha própria pesquisa ou isso é um equívoco do meu colega de trabalho? (Pesquisar no Google qualquer coisa .tar.gz
relacionada Windows
produz muitos artigos inúteis para esta questão específica. . .
As informações abaixo são as melhores que posso encontrar no sistema operacional Windows nos diferentes arquivos em uso. . .
Fiz o pacote inicial no 7-Zip, e os arquivos dentro dele foram mostrados como -rwxrwxrwx dentro do .tar incorporado, com o próprio .tar aparecendo FAT
para oHost OS
Em seguida, refiz o pacote usando os novos Windows Tar
comandos (NEAT!!). O 7-Zip mostra os arquivos dentro dele, então -rw-rw-rw-
presumo que eles sejam legíveis e graváveis. Todas as outras convenções necessárias para fazer com que este processo funcione. A única diferença além das permissões foi a Host OS
exibição Unix
.
Meu colega de trabalho me deu um utilitário produzido por nossa equipe de software que produz quase o mesmo pacote que eu produzi. Algumas diferenças - os arquivos dentro -rw-r--r--
são Host OS
listados FAT
como 7-Zip.
Mesmo que minha segunda tentativa tenha "funcionado", ainda havia alguns problemas estranhos acontecendo, e novamente ele insistiu que era porque os arquivos .tar.gz não eram Linux Signed
. . . Estou chamando um pouco de engano aqui, mas gostaria de confirmar se isso é realmente uma coisa e, em caso afirmativo, como alguém detecta/força programaticamente um .tar.gz
arquivo a ser Linux Signed?
. Isso pode ser feito via CMD
ou PowerShell
? Estou bastante familiarizado com VB.Net
/ c#
e, Batch
mas não muito mais ainda.
Os primeiros arquivos eram 'Somente leitura' segundo o colega de trabalho - presumindo que fosse porque estava CRLF EOL
no sistema Linux, e acredito que o problema principal seja este. Também presumo que coisas "estranhas" aconteceram porque eu tentei enviar o mesmo pacote novamente. (Acredito que nosso sistema não tenha um mecanismo embutido para verificar se era a mesma versão de antes ou depois e por isso nunca termina. . .)
É difícil saber se o seu colega de trabalho tem o nome errado para alguma coisa ou está simplesmente errado.
"assinar" quase certamente se referiria à assinatura digital de algo e, para isso, seria necessária uma chave secreta que não fosse distribuída a todos.
Não há assinatura digital do Linux provando que ela veio do Linux. Se tal coisa existisse, ela precisaria ser colocada em todas as máquinas Linux e, portanto, não seria secreta, seria totalmente inútil e não provaria nada. Não há uma maneira confiável de determinar se um arquivo tar veio de uma máquina Linux.
Como você está discutindo atualizações de firmware, é possível que o hardware espere que o conteúdo seja assinado digitalmente por terceiros. Ou seja, o hardware poderia estar se recusando a aceitar qualquer firmware que não fosse assinado pelo fornecedor do hardware. Nesse caso, o fornecedor do hardware manteria a chave secreta e não haveria nada que você pudesse fazer para modificá-la. Esse é o palpite mais próximo que tenho para entender os comentários do seu colega de trabalho. Francamente, não parece que foi isso que seu colega de trabalho quis dizer.