OpenWrtの概要とクイックスタート

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の背後にある秘密をさらに掘り下げていきます。


  1. https://yq.aliyun.com/articles/97610 ↩︎

  2. https://openwrt.org/docs/guide-developer/quickstart-build-images ↩︎

  3. https://www.lxx1.com/3294 ↩︎

元の記事52件を公開 30のような 50,000以上の訪問

おすすめ

転載: blog.csdn.net/song_lee/article/details/104608599