マーズボード。 Debian ルーター ハウツー


こんにちは、コミュニティ! Allwinner A10チップの素晴らしいボード-MarsBoardについてはすでに書きました。 その投稿は「はじめに」のようなものでした。同じものは、この奇跡的な敵対技術を本格的なWiFiアクセスポイントとパートタイムルーターに変えることに専念します。 ポイントを構築するには、Debianサーバーの構築が役立ちます(ちなみに、カーネルも構築します:))とTP-Link TL7200ND USBアダプター。 プロバイダーへの接続のタイプはPPPoEです。 に興味がありますか? 猫へようこそ。

序文の代わりに


正直に言うと、そのようなアイデアを思いついた途端、私は多くの落とし穴に会わなければならないとは思いもしませんでした。 それがおそらくLinuxである理由です...ちなみに、記事のすべての操作は、Ubuntu OSを実行しているコンピューターとSDカード用のカードリーダーを使用して行われます。 そしてすぐに、すべてのアクションを実行するターミナルセッションでsudo suを実行することをお勧めします。

システム


私の実験では、スリッパをベッドに運ぶブルドーザーを放棄することに決めました。 Debian Serverの完成したビルドを見つけることができましたが、カーネルで遊ぶ必要がありました。 しかし、それについては後で。 実際、インストールは2つ(またはそれ以上)のGB SDCardにイメージを記録し、ブートローダーをインストールする(ボードのオフサイトから)だけになります。

行きましょう。 SDCardをコンピューターに接続し、 fdisk -lを使用して、カードデバイスの名前を確認します。 /dev/sdcます。 さらに、記事内のカードデバイスをsdXと呼びsdXX代わりに、文字を置き換えます。
必要なものをすべてダウンロードします。 システム (アセンブリ2013-Sep-20 10:32:33のアクションを検討します )、 uboot.binsunxi-spl.bin
次:
  1. ダウンロードしたファイルがあるフォルダーに移動します
  2. システムをカードに書き込みます。
     bzip2 -dc a10-debian-server-2gb.2013-09-20.img.bz2 > /dev/sdX 
  3. ブートローダーを作成します。
     dd if=spl/sunxi-spl.bin of=/dev/sdX bs=1024 seek=8 dd if=u-boot.bin of=/dev/sdX bs=1024 seek=32 

システムはインストールされました。素晴らしいです。

ダンスを始めましょう-ドライバー


実際、これから、それらの同じ落とし穴についてつまずくというサガ全体が始まりました。 アダプタが動作するRalinkチップのドライバは、「古い」と「新しい」の2種類であることが判明しました。 古いドライバーはapt-getを介して自動的にインストールされ、そのまま使用できますが、管理モードでのみ機能します。つまり、 アダプタは既存のポイントにのみ接続できますが、このポイント自体を作成することはできません。 ポイントを作成するには、アダプターをマスターモードに切り替える必要があります。このためには、非常に「新しい」ドライバーが必要です。 これらの新しいクールなfireだけが...収集する必要があります。 まあ、収集してください。

www.ralinktech.com/support.php?s=2にアクセスしてRT2870_Firmware_V22をダウンロードします。 / lib /ファームウェアを解凍してSDカードのファイルシステムに書き込みます
次に、compat-wirelessをダウンロードします: www.orbit-lab.org/kernel/compat-wireless-2.6 これは実際にコンパイルする必要があるものです。

しかし、それほど単純ではありません。 私はLinuxのみを扱っているため、ドライバーをコンパイルするには現在のカーネルのソースが必要であることを発見したとき、非常に驚​​きました。 そして、システムでそれらを見つけられなかったとき、彼はさらに驚いた。 幸いなことに、アセンブリの作成者はそこで使用されたカーネル構成を親切に提供してくれました。 ソースコードの収集に使用します。 それでは、ドライバーから少し脱線して、カーネルの再構築を考えてみましょう。

コア


先ほど言ったように、fireを作るにはカーネルソースが必要で、特定のソースを作るには...ユニバーサルlinux-sunxiソースが必要です。 また、カーネルに組み込まれているドライバーバージョンをモジュールに組み込むために、構成をわずかに調整する必要があります。 したがって、それらをcompat-wirelessに置き換えることができます。

まず、必要なものをすべてコンピューターに配置します。
 apt-get install git build-essential fakeroot kernel-package u-boot-tools zlib1g-dev libncurses5-dev 

そして、このリポジトリを/etc/apt/sources.listファイルに追加します。
 deb http://www.emdebian.org/debian/ unstable main 

次に、aptを更新してクロスコンパイラーを配置します。
 apt-get update apt-get install emdebian-archive-keyring apt-get install gcc-4.7-arm-linux-gnueabihf ln -sf `which arm-linux-gnueabihf-gcc-4.7 ` /usr/local/bin/arm-linux-gnueabihf-gcc 

次に、githubからカーネルソースコードをダウンロードする必要があります。 リポジトリを自分で複製し、ソースフォルダーに移動して、バージョン3.4に切り替えます。
 git clone https://github.com/linux-sunxi/linux-sunxi linux-sunxi cd linux-sunxi git checkout sunxi-3.4 

次に、基本的なカーネル構成ファイルをダウンロードし、名前を.configに変更して、ルートソースフォルダーに配置します。 これで少し構成しました。 「80211」で接続されているすべてのものをモジュールモードにする必要があります。 これを行うには、次を実行します。
 ARCH=arm make menuconfig 

このコマンドは、擬似グラフィックカーネル構成ユーティリティを構築します。 その中でNetworkingを選択し、次にWirelessを選択します。 次の行を1つずつ選択して、キーボードのMキーを押します。
 cfg80211 - wireless configuration API Common routines for IEEE802.11 drivers Generic IEEE 802.11 Networking Stack (mac80211) 

結果は次のようになります。

次に、「 Exit 」をクリックし、もう一度「 Exit 」をクリックします。 メインメニューに移動し、下にスクロールして[ Save an Alternate Configuration File ]をクリックしSave an Alternate Configuration File 。 ユーティリティを確認して終了します。
構成したコアのすべてが、今では組み立てることができます。 次のコマンドを実行します。
 export ARCH=arm export DEB_HOST_ARCH=armhf export CONCURRENCY_LEVEL=`grep -m1 cpu\ cores /proc/cpuinfo | cut -d : -f 2` fakeroot make-kpkg --arch arm --cross-compile arm-linux-gnueabihf- --initrd --append-to-version=-mykernel kernel_image kernel_headers make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- EXTRAVERSION=-mykernel uImage cp arch/arm/boot/uImage ../uImage 

結果として、コンパイル後、1レベル上のディレクトリに3つのファイルがあります。カーネルを含むパッケージ、ソースを含むパッケージ、およびuImageです。 イメージのあるフラッシュドライブはまだ切断されていませんか? そこで、3つのファイルすべてをルートルートにアップロードします。 次に、USBフラッシュドライブをボードに挿入し、SSHを使用してカーネルパッケージとソースパッケージを配置します。 オフにして、コンプに戻ります。 次に、カーネルのセクション(script.bin、uImageなどのファイルがあります)に移動し、2番目のセクションのルートから新しいuImageを置き換えてコピーします。 新しいカーネルで起動し、SSHターミナルで次のコマンドを記述します。
 ln -s /usr/src/linux-headers-$(uname -r) /lib/modules/$(uname -r)/source ln -s /usr/src/linux-headers-$(uname -r) /lib/modules/$(uname -r)/build 

以上で、システムはドライバーをコンパイルする準備ができました。

ドライバーを収集し続けます


解凍したcompat-wirelessのフォルダーに移動します(ダウンロードしたことを覚えていますか?)。 私たちは実施します:
 ./scripts/driver-select rt2x00 make make install 

次に、「古い」ドライバーをブラックリストに書き込みます。 /etc/modprobe.d/blacklist.confファイルに次の行を追加します。
 blacklist rt2870sta blacklist rt5370sta 

過負荷です。

ルーター自体の構成


それでは、インターネットを配布し、ローカルネットワークを整理するために必要なものをすべてインストールします。 DHCPサーバーとして、dnsmasqを選択しました。アクセスポイントはhostapdによって制御され、プロバイダーへの接続はpppoeconfユーティリティによって提供されます。 インターネットではこの問題に関する多くの情報があるため、ここではIptablesを使用したファイアウォールの構成については検討しませんが、基本的なプロブロのみを示します。 彼は私たちにとって不可欠です。 それで、彼らは運転しました。
SSHを介して再度接続し、必要なものをすべて配置します。
 apt-get install hostapd dnsmasq pppoeconf 


1. hostapdを構成する

hostapdは、ソフトウェアWiFiアクセスポイントを作成および管理するためのユーティリティです。 2つの場所から構成できます。
最初は/etc/default/hostapdです。 自動起動セットアップ。 そこでのすべての記述を次の行に置き換えます。
 RUN_DAEMON = yes DAEMON_CONF="/etc/hostapd/hostapd.conf" 

2番目は/etc/hostapd/hostapd.confです。 基本設定。 ここで多くのパラメータを設定できますが、設定を示し、そこに入力した内容と理由のみを説明します。
 # ,    : interface=wlan0 #   : driver=nl80211 #   : ssid=MyAP #  ,       : country_code=RU #  : hw_mode=g # ,     : channel=8 #       : macaddr_acl=0 auth_algs=1 wpa=2 wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP #   : wpa_passphrase=superpass 


2. dnsmasqの構成

dnsmasq-直感的な設定ファイルと多数のCookieを備えたDHCP-DNS-TFTPサーバー。 また、彼は/etc/default/に構成ファイルを持っていますが、それには何も面白いものがないので、触れません。 メインの設定/etc/dnsmasq.conf扱いましょう。 hostapdと同様に、構成オプションについて説明します。
 # ,   : interface=wlan0 # ,         (    ,    ): except-interface=ppp0 #  : bind-interfaces cache-size=1000 domain-needed bogus-priv #          : dhcp-authoritative # . -    : dhcp-lease-max=100 #    (c, ,  ): dhcp-range=192.168.1.5,192.168.1.100,12h 


3.インターフェイスの構成
次のステップは、PPPoE接続の適切な構成に必要な構成であるため、インターフェースを構成することです。 ご存じのように、インターフェイスは/ etc / network / interfacesファイルで設定されます。 このフォームに持ってきます:
 #  ,  : auto lo iface lo inet loopback # ,  : auto eth0 iface eth0 inet dhcp #  : auto wlan0 iface wlan0 inet static #     : address 192.168.1.1 #  : netmask 255.255.255.0 #  : broadcast 192.168.1.255 


4. PPPoEを構成する

pppoeconfユーティリティは、プロバイダーとの接続を半自動で構成するための擬似グラフィックインターフェイスを提供します。 これは、ターミナルで同じ名前のコマンドを入力することにより行われます。
 pppoeconf 

その後、すべてが直観的に明確になり、設定が成功すると、次のようなエントリがネットワークインターフェイス設定ファイルに追加されます。
 auto ppp0 iface ppp0 inet ppp pre-up /sbin/ifconfig eth0 up provider dsl-provider 


5.基本的な転送

最後のステップは、ローカルネットワークから外部ネットワークへ、またはその逆へのパケット転送を設定することです( マスカレード
この同じMASQUERADEをインストールし、システム起動時にiptablesに自動ロード設定を行うには、次を実行します。
 iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE iptables -A FORWARD -o eth0 -j ACCEPT iptables -A FORWARD -o ppp0 -j ACCEPT iptables-save > /etc/wifi-iptables.conf echo '#!/bin/sh' > /etc/network/if-up.d/iptables echo 'iptables-restore < /etc/wifi-iptables.conf' >> /etc/network/if-up.d/iptables chmod +x /etc/network/if-up.d/iptables 

再起動しています...

結論の代わりに


Fuuuhhh、まあ、それがすべてです。 疲れた? しかし今では、かなりスマートなボードをベースにした、機能するルーターがあります。 私のテストによると、オンラインゲームのpingは15〜25ミリ秒を超えず、2週間の稼働時間の後、システム全体が一度ダウンしました。これはジャグリングパワーによって回復しました。
栄養といえば。 アダプターとともにデバイスを安定して動作させるには、少なくとも1000mAの電力用に設計された電源が必要であることが判明しました。 ノキアのパルス充電器は適合しないことに注意してください! 一致するプラグにだまされないでください!

最後に、ニックネームRMと彼の素晴らしいリソースを持っている人に感謝したいと思います。
PS:建設的な批判には非常に感謝しますが、 ここで泡を吐く必要はないこと強調します 。 手順の数を減らす方法や改善策を知っている場合は、共有してください。記事を更新します。

Source: https://habr.com/ru/post/J197862/


All Articles