2026年版 はじめてのミニPC おすすめモデル紹介
この記事では「オフィスワーク向け」と「ゲーム&AI向け」の2つの用途に分けて、 はじめてミニPCを購入する方でも選びやすいおすすめモデルを紹介します。
この記事に掲載しているOpenWrtの設定方法は執筆時点で最新のOpenWrt22.03に基づいています。 過去もしくは最新版のOpenWrtではこの記事の内容が当てはまらないかもしれません。予めご了承ください。
この記事では、OpenWrt専用パッケージマネージャーソフト(opkg)の基本的な使い方と自作パッケージ用リポジトリの設定方法について紹介します。
自作パッケージ用リポジトリの設定では、前回記事で作成したduckdump用にリポジトリを設定します。 これによって、opkgが管理するパッケージリスト情報に自作パッケージのduckdumpを登録します。
リポジトリを介することで、自作パッケージのインストールだけでなく、アップグレードも可能になります。
それでは行ってみましょう。
この記事は以下の環境で実施した結果を元に作成しています。
また、記事内で紹介するコンソール表記は次の通りです。
user:~/openwrt$ command
root@OpenWrt:~# command
なお、前提環境として、開発用PCからOpenWrtデバイスにSSH接続できる必要があります。予め確認しておきましょう。 ※SSH接続の仕方が不明な方は連載記事の第3回を参考にしてください。
ここでは、opkgの主なコマンドについて紹介します。
root@OpenWrt:~# opkg update
root@OpenWrt:~# opkg install <package> or <ipk file>
root@OpenWrt:~# opkg remove <package>
root@OpenWrt:~# opkg upgrade
アップグレードをするには予め、updateコマンドでパッケージリストを最新のものに更新しておく必要があります。
root@OpenWrt:~# opkg list [<package>]
opkg list-installed [<package>]で実行します。
他にもたくさんのコマンドがありますので、ヘルプ画面を確認して各コマンド・オプションについて理解しましょう。
opkgでは、ターゲットデバイス用のリポジトリ設定とパッケージ取得時に使用する公開鍵をファイル別に次の階層に分け、管理しています。 各設定ファイルとディレクトリについて説明します。
distfeeds.confとcustomfeeds.conf
リポジトリURLを管理する設定ファイルです。
updateコマンドやinstallコマンドを実行したときに、これらの設定ファイルに記載されたリポジトリから指定パッケージリスト情報やパッケージ本体をダウンロードします。 設定ファイルは2つ存在しますので、それぞれのファイルについて説明します。
①distfeeds.conf
デフォルトリポジトリのURLを記載したファイルです。
次はRaspberry Pi3Bのdistfeeds.confの記載例です。
root@OpenWrt:/etc/opkg# cat distfeeds.conf
src/gz openwrt_core https://downloads.openwrt.org/snapshots/targets/bcm27xx/bcm2710/packages
src/gz openwrt_base https://downloads.openwrt.org/snapshots/packages/aarch64_cortex-a53/base
ターゲットデバイス用のリポジトリURLが記載されています。このファイルの内容はファームウェアイメージ作成時におけるbuildrootのターゲットデバイス設定で自動決定されます。
②customfeeds.conf
ユーザー指定のカスタムリポジトリURLを記載する設定ファイルです。
root@OpenWrt:/etc/opkg# cat customfeeds.conf # add your custom package feeds here # # src/gz example_feed_name http://www.example.com/path/to/files
この設定ファイルはデフォルトでは空です。
次節では、このcustomfeeds.confに対して、開発用PC上に構築した簡易WebサーバーのURLを記載します。
簡易Webサーバーのドキュメントルートをローカルリポジトリとして設定することで、そのドキュメントルートに存在する自作パッケージのダウンロードを可能にします。
keysディレクトリ
パッケージダウンロードに使用する公開鍵ファイル(Ed25519鍵)を管理するディレクトリです。
公開鍵ファイル(と署名鍵ファイル)は第2回記事で紹介した「make -j1 V=s」(と次節で紹介する「make package/index」)によって作成されます。OpenWrtデバイスはリポジトリにアクセスしたときに
公開鍵と署名鍵の照合により、パッケージをダウンロードします。これによって、パッケージ改ざんなどに対する対策を図っています。
このように、opkgの設定はとても単純です。
次節ではcustomfeeds.confにローカルリポジトリURLを追記して、そこからパッケージをダウンロード・インストール・アップグレード
してみます。
開発用PC上に構築した簡易Webサーバーのドキュメントルートをローカルリポジトリとしてopkgに認識させ、そこから対象パッケージをダウンロード・インストール・ アップグレードする方法について紹介します。※アップグレードは次節で紹介します。
パッケージ情報の作成と更新
第6回記事では、開発用PCのopenwrtディレクトリ直下で「make package/duckdump/compile」を実行することにより、duckdumpパッケージ(ipkファイル)を作成しました。
しかし、このときの処理は自作アプリ(duckdump)のパッケージ本体であるipkファイルを作成するのみです。 opkgがパッケージ情報を認識するためにはパッケージ本体だけでなく、パッケージ情報(Packagesファイル)も必要です。
パッケージ情報は、次のコマンドをopenwrtディレクトリ直下で実行することで作成可能です。
kamo@kamo:~/openwrt$ make package/index
これにより、OpenWrt SDKが管理する全てのパッケージ情報が作成・更新されます。
パッケージを管理するディレクトリ(補足)を見てみると、Packagesと呼ばれるファイルに次のようなパッケージ情報が記載されているのが確認できます。
補足:第6回のパッケージ作成により、duckdumpパッケージは~/openwrt/bin/packages/aarch64_cortex-a53/utakamoに存在します。ちなみにaarch64_cortex-a53ディレクトリは Raspberry Pi3Bに搭載されるプロセッサの名前です。このディレクトリはbuildrootのターゲットデバイス設定で自動生成されるものです。また、その配下のutakamoは前回記事のMakefileを基に自動生成されたものです。
なお、上記コマンド(make package/index)によって、Packagesファイルと同階層に存在するPackages.sigにダウンロード用の署名情報も作成されます。この署名はopkgがリポジトリからパッケージ情報(Packagesファイル)を取得する際に、改ざんデータ チェックをするために使用されるものです。今回の例では、Packages.sigは公開鍵ファイル「b9f20e769269373c」によって署名付けされたことが分かります。
公開鍵はOpenWrtディレクトリのbuild_dir(もしくは、staging_dir)内に存在します。今回のターゲットデバイス(Raspberry Pi3B)では「~/openwrt/build_dir/target-aarch64_cortex-a53_musl/root-bcm27xx/etc/opkg/keys/b9f20e769269373c」 がPackages.sigの作成に使用されました。このOpenWrtディレクトリに対して「make V=s」を実行して作成したファームウェアイメージは、この公開鍵「b9f20e769269373c」をOpenWrtデバイス環境の/etc/opkg/keysに記録するように設定しています。
今回は第2回記事により、自分でOpenWrtのファームウェアイメージを作成してRaspberry Pi3Bにインストールしています。そのため、OpenWrtの/etc/opkg/keysには、私の開発用PCが管理する OpenWrt SDKのbuildrootが使用するパッケージの公開鍵情報(b9f20e769269373c)が予め入っています。
これで後はリポジトリを介して、opkgにこのパッケージ情報をロードすることで、インストール可能パッケージとして自作アプリ(duckdump)の存在を認識させることが出来ます。
ということで、次はリポジトリを設定してみましょう。
リポジトリ設定とパッケージインストール
まず最初に、duckdumpパッケージ本体を持つ、開発用PC上のディレクトリをドキュメントルートとする簡易Webサーバーを次のコマンドで構築します。
※このコマンドを実行するときのカレントディレクトリはパッケージが存在するディレクトリである必要があります。
kamo@kamo:~/openwrt/bin/packages/aarch64_cortex-a53/utakamo$ sudo python3 -m http.server 80
上記コマンドは第6回記事で取り上げたものと同じです。
python3でカレントディレクトリをドキュメントルートとする簡易Webサーバーを80番ポートで立てています。
開発用PC上にWebサーバーを立てたら、次はOpenWrt側の/etc/opkg/customfeeds.confに開発用PCのIPアドレス(URL)を指定します。 今回、私の開発用PCのIPアドレスは192.168.4.203/24でしたので、次のように記載します。
root@OpenWrt:/etc/opkg# vi customfeeds.conf # add your custom package feeds here # src/gz utakamo http://192.168.4.203
customfeeds.confへの記載が終わったら、さっそく次のコマンドでopkgにduckdumpパッケージ情報をロードさせましょう。
root@OpenWrt:~# opkg update
これによって、duckdumpがopkgのパッケージリストに追加されます。
続いて次のコマンドにより、duckdumpをインストールすることができます。
root@OpenWrt:~# opkg install duckdump
一連の操作をまとめると次のようになります。
左の開発用PCコンソール側で簡易Webサーバーを動作させつつ、右のOpenWrtコンソール側でupdateコマンドによりパッケージ情報を取得した後、 installコマンドを実行してduckdumpパッケージをインストールします。
前節で紹介したリポジトリ設定とパッケージのインストールが出来れば、アップグレードは簡単です。
今回の記事で題材にした自作アプリのduckdumpに何らかの修正が加わり、バージョンアップした場合は前節で紹介した「make package/index」を バージョンアップ版のdudckdumpパッケージ作成後にOpenWrtディレクトリ直下で再実行してください。
※なお、パッケージのバージョン番号を変更するには第6回記事で紹介したMakeファイルのPKG_VERSIONの値を変更するだけです。
これにより、前節で紹介したPackagesの記載内容が更新されます。
後は、開発用PC上に簡易Webサーバーを立て、customfeeds.confにURLを設定後、次のコマンドを実行することでOpenWrtにインストール済みの対象アプリケーション
(今回の例ではduckdump)がアップグレードできます。
root@OpenWrt:~# opkg update root@OpenWrt:~# opkg upgrade duckdump
一連の操作をまとめると次のようになります。
左の開発用PCコンソール側で簡易Webサーバーを動作させつつ、右のOpenWrtコンソール側でupdateコマンドにより最新パッケージ情報を取得した後、 upgradeコマンドでduckdumpをアップグレードしています。
今回はOpenWrt専用パッケージマネージャーソフト(opkg)の基本的な使い方とリポジトリの設定方法について紹介しました。
基本的なコマンドの使用方法を解説し、リポジトリを設定してパッケージのダウンロード・インストール・アップグレードなんかもやってみました。
今回は開発PC上の簡易Webサーバーが管理するディレクトリを(ローカル)リポジトリとして設定しましたが、もちろんインターネット上に配置したWebサーバーの特定ディレクトリをリポジトリとして設定することも可能です。
そのときは、リポジトリとするディレクトリパスを含めたWebサーバーのURLをopkgのcustomfeeds.confに記載すればOKです。
個人レベルでそこまでする人は少ないと思われますが、もし、試してみたい方はこの記事の内容をご参考ください。 ※追記:このブログにリポジトリを設置してみました。詳細は次節を参照してください。
せっかくなので、OpenWrt用自作アプリのリポジトリをこのブログサイトのサーバー上に設置してみました。
以下にリポジトリURLと公開鍵、パッケージリストを掲載します。
一応、Raspberry Piの全シリーズ別にリポジトリを用意しましたが、3以外はインストール確認をしていません。 大丈夫だと思いますが、念のため。
①リポジトリURL情報
| ターゲットデバイス | リポジトリURL |
|---|---|
| Raspberry Pi1 | https://utakamo.com/repo/openwrt/raspi1/uci |
| Raspberry Pi2 | https://utakamo.com/repo/openwrt/raspi2/uci |
| Raspberry Pi3 | https://utakamo.com/repo/openwrt/raspi3/uci |
| Raspberry Pi4 | https://utakamo.com/repo/openwrt/raspi4/uci |
②公開鍵情報
以下に、Raspberry Pi用リポジトリの公開鍵情報を掲載します。
Raspberry Pi1
Key-ID:af3a2f5c8960d37c
Key-Data:RWSvOi9ciWDTfGBeRyhLiz2aAXvuPDLQ7U/AAozOEpkEogknVpmSF8Lq
ダウンロード (https://utakamo.com/repo/openwrt/raspi1-pub-key/af3a2f5c8960d37c)
Raspberry Pi2
Key-ID:c330562967f97fa4
Key-Data:RWTDMFYpZ/l/pEFdyvHT5YU3WYgVuWF9g9rcBigaydFnp10HNM+RfOZz
ダウンロード (https://utakamo.com/repo/openwrt/raspi2-pub-key/c330562967f97fa4)
Raspberry Pi3
Key-ID:9acc38ae4227c445
Key-Data:RWSazDiuQifERVGu0omjRfQPT6B1YTIRDj0hrNLRN1rqqUlr6oSxY8an
ダウンロード (https://utakamo.com/repo/openwrt/raspi3-pub-key/9acc38ae4227c445)
Raspberry Pi4
Key-ID:9766b87701122436
Key-Data:RWSXZrh3ARIkNrxG/dzqRk4bQgbZRm02NvW+uRRmzPnCCgz3u0GrCUme
ダウンロード (https://utakamo.com/repo/openwrt/raspi4-pub-key/9766b87701122436)
③パッケージリスト情報
リポジトリに入っているパッケージは以下の通りです。
| アプリケーション | 説明 | 最新バージョン |
|---|---|---|
| duckdump | OpenWrt開発学習用パケットキャプチャソフト(IPv4対応) | 1.0-1 |
| uci-sample01 | C言語ライブラリlibuciのサンプルプログラム(uci_alloc_context関数確認用) | 1.0-1 |
| uci-sample02 | C言語ライブラリlibuciのサンプルプログラム(uci_lookup_ptr関数確認用その1) | 1.0-1 |
| uci-sample03 | C言語ライブラリlibuciのサンプルプログラム(uci_lookup_ptr関数確認用その2) | 1.0-1 |
| uci-sample04 | C言語ライブラリlibuciのサンプルプログラム(uci_foreach_element関数確認用) ※uci showコマンドと同等のソフトウェアです。 | 1.0-1 |
| uci-sample05 | C言語ライブラリlibuciのサンプルプログラム(uci_set関数確認用) ※uci setコマンドと同等のソフトウェアです。 | 1.0-1 |
| uci-sample06 | C言語ライブラリlibuciのサンプルプログラム(uci_add_section関数確認用) ※uci addコマンドと同等のソフトウェアです。 | 1.0-1 |
| uci-sample07 | C言語ライブラリlibuciのサンプルプログラム(uci_add_list関数確認用) ※uci add_listコマンドと同等のソフトウェアです。 | 1.0-1 |
| uci-sample08 | C言語ライブラリlibuciのサンプルプログラム(uci_del_list関数確認用) ※uci del_listコマンドと同等のソフトウェアです。 | 1.0-1 |
| uci-sample09 | C言語ライブラリlibuciのサンプルプログラム(uci_reorder_section関数確認用) ※uci reorderコマンドと同等のソフトウェアです。 | 1.0-1 |
| uci-sample10 | C言語ライブラリlibuciのサンプルプログラム(uci_rename関数確認用) ※uci renameコマンドと同等なソフトウェアです。 | 1.0-1 |
| uci-sample11 | C言語ライブラリlibuciのサンプルプログラム(uci_delete関数確認用) ※uci deleteコマンドと同等なソフトウェアです。 | 1.0-1 |
| uci-sample12 | C言語ライブラリlibuciのサンプルプログラム(uci_commit関数確認用) ※uci commitコマンドと同等なソフトウェアです。 | 1.0-1 |
■上記リポジトリから特定パッケージをインストールする手順
ここではopkgに対して、Raspberry Pi3(B)用リポジトリを設定してduckdumpをインストールする例を紹介します。
手順1:customfeeds.confの編集
/etc/opkg/customfeeds.confを次のように記述します。
root@OpenWrt:/etc/opkg# vi customfeeds.conf # add your custom package feeds here # src/gz utakamo https://utakamo.com/repo/openwrt/raspi3/uci
手順2:公開鍵情報の登録
上記に掲載したRaspberry Pi3用の公開鍵情報を/etc/opkg/keysにダウンロードします。
root@OpenWrt:/etc/opkg/keys# wget https://utakamo.com/repo/openwrt/raspi3-pub-key/9acc38ae4227c445
手順3:opkg updateコマンドの実行
updateコマンドでリポジトリの各パッケージ情報を認識させ、installコマンドでパッケージを指定して実行すれば完了です。
root@OpenWrt:~# opkg update root@OpenWrt:~# opkg install duckdump
コマンドが通ると、次のようなコンソール画面が表示され、duckdumpが起動します。
root@OpenWrt:~# opkg install duckdump
Installing duckdump (1.0-1) to root...
Downloading https://utakamo.com/repo/openwrt/raspi3/uci/duckdump_1.0-1_aarch64_cortex-a53.ipk
Installing libpcap1 (1.10.1-4) to root...
Downloading https://downloads.openwrt.org/snapshots/packages/aarch64_cortex-a53/base/libpcap1_1.10.1-4_aarch64_cortex-a53.ipk
Configuring libpcap1.
Configuring duckdump.
duckdump start [target: wlan0]
以上で、リポジトリ設定からパッケージのインストールまで全て紹介できました。
おまけ:duckdumpの使い方と今後の展望
ここでインストールしたduckdumpは指定インタフェース上に流れるパケットのキャプチャログを/tmp/duckdump/cap.logに記録するアプリです。
デフォルトのキャプチャターゲットNICはwlan0なので、変更したい場合は次のコマンドを実行してください。 これはキャプチャターゲットNICをeth0に変更する例です。
root@OpenWrt:~# uci set duckdump.target.nic=eth0 root@OpenWrt:~# /etc/init.d/duckdump restart
2022年12月現在、このduckdumpはパケットキャプチャソフトとして基礎的な処理しかできません。 そのため、今後はキャプチャ対象のパケットを増やすと共に、ubusやrpcdの連携実装やLuCI用ページを設けるなどの改良を施すかもしれません。 24時間帯別の各端末通信量をグラフ表示したり、firewallのように特定端末に対してフィルタリング処理を掛けるのも 楽しそうです。
duckdumpの開発を継続する場合は、その度に仕組みや実装方法を記事にしていきたいと思います。
7回に渡って紹介したOpenWrt開発入門はこの記事で終わりになります。
少しでも、OpenWrtについて理解してもらえたら幸いです。 (今後も既存記事のプチリライトをちょくちょくやっていきますので、見直しみると分かりやすくなっているかもしれません。)
ちなみに、今回は実験的に連載形式の記事を作りましたが、結構な時間と労力が掛かりました。
今後はライトな記事も混ぜながら、プログラミングやネットワークなどについて投稿していきたいと思います。 もちろん、OpenWrtについても投稿していきますのでよろしくお願いします。
2026年版 はじめてのミニPC おすすめモデル紹介
この記事では「オフィスワーク向け」と「ゲーム&AI向け」の2つの用途に分けて、 はじめてミニPCを購入する方でも選びやすいおすすめモデルを紹介します。
OCuLinkとは何か? 小型PCやミニPCの購入前に知っておきたいポイントを整理
OCuLinkとは何かを、小型PCやミニPCの購入を検討している人向けに整理します。USB4やThunderboltとの違い、eGPU用途で気にしたいポイント、製品ページでの確認点をまとめています。
2026年版 目元ケアに使いたい アイウォーマー・アイマッサージャーおすすめ5選
アイウォーマー・アイマッサージャーを初めて選ぶ人向けに、温熱、加圧、タッピング、EMS、装着感、安全性を整理し、代表モデル5機種を紹介します。
初心者向けノートパソコンおすすめ10選 失敗しにくい選び方を整理
ノートパソコンを初めて選ぶ人向けに、比較しやすい10機種を紹介します。メモリ、ストレージ、画面サイズ、重さ、Office有無、保証の見方を整理します。
2026年版 ロボット掃除機の選び方 おすすめモデル5選
ロボット掃除機の選び方を、吸引力、水拭き、マッピング、全自動ステーション、障害物回避から整理し、代表メーカーとモ デルを紹介します。
2026年版 ドローンの選び方 基礎知識とおすすめモデル5選
ドローンを初めて購入する人向けに、基礎知識について整理し、DJI・HOVERAir・Potensicの代表モデルを紹介します。