1 OpenWrtの概要
1.1歴史的起源
OpenWrtプロジェクトは、一般的にルーターで使用される組み込みデバイス用のLinuxオペレーティングシステムです。組み込みLinuxオペレーティングシステムの簡単な紹介として、OpenWrtは非常にモジュール化され自動化されており、小さなスペースを占めるだけでなく、強力なネットワークコンポーネントも備えています。中国の多くの国内のホームルーターは、OpenWrtが二次開発に基づいているOpenWrtの影を持っています。主流のルーターファームウェアには、DD-WRT、Tomato、OpenWrtが含まれ、その重要な位置を示しています。
OpenWrtのプロジェクトは、2004年1月に始まった、それは最初のバージョン採用しLinkSys
、ソースコードのを。LinkSysコードが課金されると、Linuxカーネル統合に変更され、OpenWrtは完全にモジュール化され、パッチとドライバーが継続的に導入されます。OpenWrtの主な機能は、その高いスケーラビリティであり、ファイルシステムは書き込み可能です。開発者は変更ごとに完全に再コンパイルする必要はなく、独自のソフトウェアパッケージをコンパイルするだけで、開発プロセスがスピードアップします。さらに、OpenWrtはSDKを提供し、実行中の各ソフトウェアをSDKでコンパイルし、ソフトウェアパッケージとしてインストールおよびアンインストールできます。その主な機能は次のとおりです1
- ソースコードには3つのコードは含まれず、リンクのみが含まれます
- コンパイル時に、異なるプラットフォームに応じて異なるソースコードとパッチをダウンロードし、Makefileを変更して最新のソフトウェアパッケージを入手します。
- 使用
LuCI
私たちの共通のルータのWeb管理インターフェースで、エンドユーザー管理インターフェース、など - UCIユニバーサル構成管理方法
- スクリプトを使用してiptableを呼び出し、ファイアウォール機能を実装します。構成ファイルはUCIファイルに保存されます
- オープンで拡張可能なOPKG形式を使用してアップグレードパッケージをインストールする
1.2 OpenWrtプロジェクトディレクトリ
OpenWrtには次のディレクトリが含まれています
ディレクトリ | 説明文 |
---|---|
./config |
コンパイルオプション構成ファイル:グローバルコンパイル設定、開発者設定、カーネルコンパイル設定が含まれています |
./include |
環境スクリプトの準備、パッチスクリプトのダウンロード、Makefileのコンパイル、手順のコンパイル |
./package |
さまざまなソフトウェアパッケージ。パッケージにはMakefile、パッチ、構成ファイルのみが含まれます。 |
./scripts |
いくつかのスクリプトを保存し、bash、Python、perl、その他のスクリプト言語を使用 |
./target |
特定の組み込みプラットフォームコンテンツを含む組み込みプラットフォーム |
./toolchain |
コンパイラーおよびCライブラリー(gccおよびglibcライブラリーなど) |
./tools |
一般的なコマンド、patch / make / spuashfsなどのファームウェアを生成するための補助ツール |
OpenWrtルートディレクトリには次のファイルが含まれています
ファイル | 説明文 |
---|---|
Config.in |
include / toplevel.mkで確認できるように、これはmake menuconfigに関連付けられたファイルです |
Makefile |
最上位ディレクトリにあるmakeコマンドのエントリファイル |
feeds.conf.default |
一部のサードパーティソフトウェアパッケージをダウンロードするときに使用するアドレスを設定する |
rules.mk |
Makefileで使用されるいくつかの一般的な変数と関数を定義する |
コンパイル後、ソースコードにはさらに多くのファイルが含まれます。ソースコードのコンパイル方法を使用して、特定のプラットフォームをサポートするファームウェアを生成することも、公式イメージを直接ダウンロードすることもできます。公式は、複数のアーキテクチャおよびプラットフォームをサポートするバイナリイメージファイルも提供します。次に、ソースコードのコンパイルとファームウェアの生成、および公式のイメージインストールの基本的な方法を紹介します。そして、OpenWrtの2つの異なるハードウェアプラットフォームにインストールされ表示されます当社のプラットフォームは、OpenWrtのインストールされているARMベースのラズベリーパイプラットフォームおよびx86ベースのWindows仮想マシンを。
2ソースコードをコンパイルする
この方法は、カスタマイズされたOpenWrtに適しています。必要に応じてカスタマイズできます。上級ユーザーの場合は、ソースコードを変更して、二次開発の効果を得ることができます。
2.1ソースコードをダウンロードする
ソースコードはgithubまたはOpenWrtの公式ウェブサイトからダウンロードできます。
# 任选其一
git clone https://github.com/openwrt/openwrt.git
git clone https://git.openwrt.org/openwrt/openwrt.git
2.2インストールプロジェクトの依存関係
ソースコードのインストールとコンパイルに必要な依存パッケージ2:環境サポート:gcc、binutils、bzip2、flex、python3.5 +、perl、make、find、grep、diff、unzip、gawk、getopt、subversion、libz-devおよびlibcヘッダー
Debian / Ubuntuシステム
sudo apt install subversion g++ zlib1g-dev build-essential git python python3 python3-distutils libncurses5-dev gawk gettext \
unzip file libssl-dev wget libelf-dev ecj fastjar java-propose-classpath
Ubuntu 18.04以降
sudo apt install build-essential libncursesw5-dev python unzip
パイドロス30
sudo dnf install @c-development @development-tools @development-libs zlib-static elfutils-libelf-devel gawk unzip file wget python3
CentOS
# CentOS
yum install binutils bzip2 gcc gcc-c++ gawk gettext flex ncurses-devel zlib-devel zlib-static make patch unzip perl-ExtUtils-MakeMaker glibc glibc-devel glibc-static ncurses-libs sed sdcc intltool sharutils bison wget git-core openssl-devel xz
2.3構成ファイルを変更する
デフォルトの構成ファイルを生成し、コンパイル環境のチェックを含むすべての構成を保存し、クロスコンパイルチェーンを生成します
cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
これは、要件を満たすファームウェアの生成を容易にするためにターゲットデバイスで構成する必要がある情報です。ここではRaspberry Piを例に説明します。RaspberryPiのハードウェア情報は、Raspberry Pi Raspberry Pi Raspberry PiバージョンコードDaquanにあります。ハードウェア情報によると、上記に記入してくださいOpenWrt Configuration
ハードウェア情報によると、ターゲットシステムはBroadcom BCM27xxを選択し、以下の項目が自動的に生成されます。手動で変更する必要がある構成オプションは、実際にはオンデマンドでカスタマイズされ、必要ではありません
グローバルビルド設定
- 特許取得済みの機能をサポートしてコンパイルする(デフォルト)
カーネルモジュール
- ブロックデバイス-> kmod-block2mtd(MTD:メモリテクノロジーデバイスメモリテクノロジーデバイス)
- 暗号化APIモジュール-> kmod-crypto-ccm kmod-crypto-cmac
以下もカーネルモジュールサブアイテムに属します
ファイルシステム
- kmod-fs-ext4
- kmod-fs-ntfs
- kmod-fs-vfat
USB Supprot
- kmod-usb-ohci
- kmod-usb-uhci
- kmod-usb-storage-extras
- kmod-usb2
ワイヤレスドライバー
- kmod-ath
- kmod-ath9k-common
- kmod-ath9k-htc
- kmod-brcmfmac
make defconfig
エラーがないことを示す次の情報を入力して印刷します
2.4コンパイル
# 编译前可更新,也可以不更新
make
これにより、カスタマイズされたイメージが作成されます。もちろん、公式のコンパイル済み画像ファイルを使用することもできます。
3 Raspberry Pi OpenWrtイメージのインストール
OpenWrtの公式Webサイトでは、さまざまなハードウェアに適したミラーパッケージを提供しています。Raspberry Piを例にとると、サポートされるイメージは次のとおりです。RaspberryPiを使用してOpenWRTをインストールするのは今回が初めてなので、出荷時のイメージを選択して
ください。他のLinuxディストリビューションのように、公式のイメージのダウンロード速度が遅すぎると思われる場合は、国内版も使用できます提供されたミラーアドレス、中国科学技術大学のOpenWrtミラー
Win32 Disk Imagerは、SDカードにイメージを書き込むために一般的に使用されるツールです。リンク速度が遅すぎると思われる場合は、Baiduからダウンロードすることもできます。
Win32 Disk Imagerを使用して書き込みを行うと、OpenWrtが正常に起動せず、レインボーインターフェースでスタックしてしまうことが問題の原因であることが証明されています。
Etcherは強力な機能を備えた優れたUディスクイメージ作成ツールです。もちろん、Etherソフトウェア自体も非常に大きいので
注意してください。ファイルを書き込む場合は、最初にSDカードをフォーマットする必要があります。SDCardFormatterをお勧めします。
書き込みが成功したら、Raspberry Piを起動し、その後のWebページ構成操作により、Raspberry Piをルーターとして機能させることができます。RaspberryPiラボは、Raspberry PiがOpenWrtをインストールしてスーパールーターを作成するためのより正確な手順を提供します
4仮想マシンにOpenWrtをインストールします
公式Webサイトまたは国内のミラーソースからx86アーキテクチャのOpenWrtをダウンロードします。イメージを解凍して、VMwareサポートに準拠した形式に変換します。
$ gzip -d openwrt-19.07.2-x86-generic-combined-ext4.img.gz
$ sudo qemu-img convert -f raw openwrt-19.07.2-x86-generic-combined-ext4.img -O vmdk openwrt-19.07.2-x86-generic-combined-ext4.vmdk
VMwareは新しい仮想マシンを作成し、パラメーター構成は妥当なものであり、あまり多くのメモリー空間を割り当てません。ディレクトリ内の仮想マシン、仮想マシンを作成した後、我々は、画像の名前を変更します虚拟机名 + vmdk
フォーマットができます。
仮想マシンを開くと、OpenWrtが正常に実行されます!
ホストがOpenWrtにアクセスできるようにIPアドレスを手動で構成して、それらが同じネットワークセグメント上にあるようにする必要があります。OpenWrtの元のネットワークカードをチェックし
て、ホストマシンと物理マシンが同じネットワークセグメント上にあるようにネットワークを構成します。
ifconfig br-lan 192.168.229.100 netmask 255.255.255.0
これで、ルータ幸せな友人がアクセスできる
他の設定に従ってください、あなたがアクセスできるラズベリーPiはスーパーを作成するために、OpenWrtのルータをインストール 3
5まとめ
優れたオープンソースプロジェクトとして、OpenWrtはホームルーターの開発に強固な基盤を築きました。この記事では、OpenWrtを紹介し、その一般的な使用法を分析します。ソースコードのコンパイルの一般的な方法だけでなく、公式のイメージインストール方法も紹介します。OpenWrtイメージをRaspberry Piと仮想マシンの2つの異なるプラットフォームにインストールすることにより、 OpenWrtを知覚的に理解できる。私たちの最終的な目標は、OpenWrtを使用して独自のルーターファームウェアをカスタマイズし、ホームルーターの背後にある原理を包括的に理解できるようにすることです。そのため、OpenWrtの背後にある秘密をさらに掘り下げていきます。