ローカルopenwrt/LEDEソフトウェアソースにパッケージを追加し、Packageを更新します.Sig署名ファイル、Signature check failed問題の解決

16911 ワード

まず、なぜローカルソフトウェアソースを構築するのか、openwrt/LEDE安定版ソフトウェア、駆動バージョンが古いのか、trunk版は更新が速く、システムが数日インストールされ、公式サーバからopkgソフトウェアを使用しようとするとインストールできない可能性があるので、最善の解決策はローカルにソフトウェアソースを構築することです.使用しているシステムバージョンのすべてのソフトウェアを保存します.また、公式のソースは海外にあり、アクセス速度が非常に遅く、ローカルのソースを使用してイントラネット帯域幅を満たすことができます.
公式のソフトウェアソースはシステムの基本ソフトウェアと少ない機能プラグインだけで、ローカルにクローン化すると、ローカルソースに対する完全な権限があり、ソースに新しいコンパイルされたソフトウェアを追加することができます.
ソフトウェアの互換性を保証するために、一般的にソースに追加されたソフトウェアは、対応するソースから提供されるSDKパッケージを使用する必要があります.システムのソースコードとバージョンが一致しないSDKパッケージのソフトウェアがインストールされない可能性があります.
ソースにソフトウェアを追加するには、まずコンパイルされたipkファイルをサーバにアップロードするに違いありません.次に、インデックスに新しいパッケージの情報を追加します.パッケージ生成のディレクトリには、私たちが選択したパッケージのほかに3つのファイル生成があります.Packages,Packages.gz,Packages.manifest、これらのファイルはパッケージのインデックスを提供しています(SDKでmake package/xxxx/compileを使用してパッケージを生成した後、インデックスは生成されません.makeを直接使用します).インデックスは次のようなものです.
Package: gdut-drcom
Version: 1.6.8-3
Depends: libc
License: GPL-3.0+
Section: net
Architecture: mips_24kc
Installed-Size: 18513
Filename: gdut-drcom_1.6.8-3_mips_24kc.ipk
Size: 19427
SHA256sum: 4e35ea4c3efd54b0e7c02e90706dd61eb5645f1b8e7466b3c87f5247a0cdcc6e
Description:  gdut-drcom for openwrt is a third party drcom client openwrt.

インデックス情報を得た後は、これらの情報をソフトウェアソースサーバのインデックスに挿入し、パッケージのアルファベット順に挿入し、既存のファイル構造を乱さないようにすることが望ましい.
3つのインデックスファイルを更新したら、まずルーティングに行ってソースサーバを変更します.プロファイルは/etc/opkg/distfeedsです.confは、元のフォーマットでサーバアドレスをローカルサーバアドレスに変更します
#src/gz reboot_core http://downloads.lede-project.org/snapshots/targets/ar71xx/generic/packages                                                   
#src/gz reboot_base http://downloads.lede-project.org/snapshots/packages/mips_24kc/base                                                           
#src/gz reboot_luci http://downloads.lede-project.org/snapshots/packages/mips_24kc/luci                                                           
#src/gz reboot_packages http://downloads.lede-project.org/snapshots/packages/mips_24kc/packages                                                   
#src/gz reboot_routing http://downloads.lede-project.org/snapshots/packages/mips_24kc/routing                                                     
#src/gz reboot_telephony http://downloads.lede-project.org/snapshots/packages/mips_24kc/telephony                                                 

src/gz reboot_packages http://10.99.100.160:8082/lede/package/mips_24kc/packages                                                                  
src/gz reboot_base http://10.99.100.160:8082/lede/package/mips_24kc/base                                                                          
src/gz reboot_luci http://10.99.100.160:8082/lede/package/mips_24kc/luci                                                                          
src/gz reboot_routing http://10.99.100.160:8082/lede/package/mips_24kc/routing                                                                    
src/gz reboot_telephony http://10.99.100.160:8082/lede/package/mips_24kc/telephony  

保存後にopkg updateを実行してローカルインデックスを更新
root@LEDE:~# opkg update
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/packages/Packages.gz
Updated list of available packages in /var/opkg-lists/reboot_packages
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/packages/Packages.sig
Signature check passed.
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/base/Packages.gz
Updated list of available packages in /var/opkg-lists/reboot_base
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/base/Packages.sig
Signature check failed.
Remove wrong Signature file.
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/luci/Packages.gz
Updated list of available packages in /var/opkg-lists/reboot_luci
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/luci/Packages.sig
Signature check passed.
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/routing/Packages.gz
Updated list of available packages in /var/opkg-lists/reboot_routing
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/routing/Packages.sig
Signature check passed.
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/telephony/Packages.gz
Updated list of available packages in /var/opkg-lists/reboot_telephony
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/telephony/Packages.sig
Signature check passed.

ルーティングがローカルのソースサーバからインデックスを更新しているのが見えますが、私たちが修正したbaseのpackage署名が通らず、インターネットで一晩検索して、やっとopenwrt公式フォーラムで署名の生成方法を見つけました.私はここでもう一度翻訳しましょう.まず、署名を生成するツール--usign、ubuntuでaptのインストールが成功しません.長い間悩んでいたが、結局sdkの中でこのツールを見つけた.このツールは、sdkディレクトリ/staging_に隠されていた.dir/host/binでは、公式フォーラムの方法に従って署名を生成する最初のステップとして、一対の公開鍵と秘密鍵を生成し、公開鍵はルーティングのために署名ファイルを検証し、秘密鍵は署名ファイルを生成するために使用する.
hokamyuen@hokamyuen-linux:~/lede-sdk-ar71xx-generic_gcc-5.4.0_musl.Linux-x86_64/staging_dir/host/bin$ ./usign -G -s mime.key -p mime.pub

ステップ2では、生成された秘密鍵を利用してサーバ上のPackagesファイルに署名ファイルを生成し、Packagesファイルが現在のディレクトリにない場合はパスを付ける
hokamyuen@hokamyuen-linux:~/lede-sdk-ar71xx-generic_gcc-5.4.0_musl.Linux-x86_64/staging_dir/host/bin$ ./usign -S -m Packages -s mime.key -x Packages.sig

ステップ3では、署名ファイルをサーバにアップロードし、公開鍵をルーティングにアップロードし、ルーティングに生成した公開鍵を追加します.
root@LEDE:~# scp [email protected]:~/lede-sdk-ar71xx-generic_gcc-5.4.0_musl.Linux-x86_64/staging_dir/host/bin/mime.pub /tmp
hokamyuen@192.168.1.150's password: 
mime.pub                                                                                                        100%  104     0.1KB/s   00:00    
root@LEDE:~# cd /tmp
root@LEDE:/tmp# opkg-key add mime.pub
root@LEDE:/tmp# 

最後に、ルーティングでソフトウェアインデックスを再更新します.
root@LEDE:/tmp# opkg update
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/packages/Packages.gz
Updated list of available packages in /var/opkg-lists/reboot_packages
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/packages/Packages.sig
Signature check passed.
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/base/Packages.gz
Updated list of available packages in /var/opkg-lists/reboot_base
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/base/Packages.sig
Signature check passed.
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/luci/Packages.gz
Updated list of available packages in /var/opkg-lists/reboot_luci
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/luci/Packages.sig
Signature check passed.
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/routing/Packages.gz
Updated list of available packages in /var/opkg-lists/reboot_routing
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/routing/Packages.sig
Signature check passed.
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/telephony/Packages.gz
Updated list of available packages in /var/opkg-lists/reboot_telephony
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/telephony/Packages.sig
Signature check passed.

見ることができて、署名は通過して、ハハハハ!次にopkgで直接サーバからインストールソフトウェアをコンパイルできます
root@LEDE:/tmp# opkg install gdut-drcom
Installing gdut-drcom (1.6.8-3) to root...
Downloading http://10.99.100.160:8082/lede/package/mips_24kc/base/gdut-drcom_1.6.8-3_mips_24kc.ipk
Configuring gdut-drcom.
post install: patching ppp.sh
patched!
post install: patching ppp.sh
patched!
'radio0' is disabled
root@LEDE:/tmp# 

最後にインデックスを追加する注意事項を書きます.パッケージのインデックスはサーバよりも奇妙なものが多くなります.例えば、
Package: libstdcpp
Version: 5.4.0-1
License: GPL-3.0-with-GCC-exception
Section: libs
Status: unknown hold not-installed
Essential: yes
Architecture: mips_24kc
Installed-Size: 375927
Filename: libstdcpp_5.4.0-1_mips_24kc.ipk
Size: 374075
SHA256sum: 689a6a67156f76afcafb4f3d545b02ac7972aa87ddb7b165406d98abe63fc070
Description:  GNU Standard C++ Library v3

多く出てきたStatusとEssentialの項目を削除すればいいです.
参考記事:https://forum.openwrt.org/viewtopic.php?id=57733