NASのクロスコンパイル

LinuxをuClibcで実行しているNASデバイスの機能をどのように拡張できるかを説明したいと思います。 uClibcがそうでない場合、シンボリックリンクと環境変数の操作が成功する可能性があります。

ルートシェルを取得する方法は考えません。 メカニズムが多すぎるため、すべて特定のモデルに依存しています。 NASのハッキング専用サイトでは、ルートシェルを取得するさまざまな方法について説明し、特定のモデルのハッキングコミュニティのサイトへのリンクを提供しています。

この記事の目的は、欠落している機能をNASに追加することがいかに簡単かを示し、いくつかの落とし穴を指摘することです。

槍の破壊を開始する前に、お使いのデバイス専用のサイトにアクセスしてください-NASをハッキングするためのコミュニティリストにあります 。 重要な情報だけでなく、既製のバイナリ、役立つヒントなどもあります。 まず、ルートシェルを取得する方法に興味があります。 2番目-uClibcとカーネルのバージョン。

ソースコレクション。


メーカーのウェブサイトにアクセスします。 そこに、高い確率で、GPL_sources.tgzのようなファイルをダウンロードできます。このファイルには、NASの設定を含むカーネルがあります。 さらに幸運な場合は、デバイスのコンパイル環境であるツールチェーンのソースがあります。 私の場合、ツールチェーンのソースはありませんでした。 さらに、 この素晴らしい環境のサイトでは、必要なバージョンのuClibc(0.9.26)のツールチェーンをダウンロードすることはできません。 ただし、送信元アドレスだけでなく、必要なパッチもあるという注意があります。 メーカーのウェブサイトにカーネルがなかった場合は、 kernel.orgからいつでもダウンロードできます。 カーネルのバージョンがそれぞれ2.6または2.4の場合、 module-init-toolsまたはmodutilsも必要です

環境を準備します。


まず、ツールチェーンを構築する必要があります。 Linuxではこれは難しくありませんが、BSDではgmakeが必要です。 彼らはあなたがcygwinでコンパイルできると言っています、私はそれを試していません。 Makefileでは、ARCH:= XXXを配置する必要があることに注意してください。XXXはNASのアーキテクチャであり、LINUX_SOURCE:= kernel-headers-K.KK.KK.tar.bz2で、K.KK.KKはカーネルバージョンです。

NASで実行されるプログラムをコンパイルできるようになりました。

これを行うには、まず、PATHのツールチェーンバイナリにパスを追加します。たとえば、
$ export PATH=$PATH:~/uclibc-toolchain-src-20040609/gcc-3.3.x/toolchain_i386/bin

次に、。/ configureを実行するときに、キー--host = XXX-linuxを追加する必要があります。XXXはNASのアーキテクチャです。たとえば、
$ ./configure --host=i386-linux

注意してください! 私のNASにはi386アーキテクチャがありますが、おそらくあなたのアーキテクチャは別のものです。

カーネルモジュール(ファイルシステムドライバーやNFSサーバーなど)を追加する場合は、module-init-toolsまたはmodutilsとカーネル自体をコンパイルする必要があります。 ツールチェーンからgccをCCとして指定することを忘れないでください。 また、モジュールはカーネルと同じgccバージョンでコンパイルする必要があることに注意してください。 したがって、2つのツールチェーンが必要な場合に状況が発生する可能性があります。1つはカーネル用のgcc、もう1つはユーザーランド用のgccのお気に入りバージョンです。

すべて準備完了


これで、必要なプログラムをコンパイルして、NASで実行できます。 追加の操作は必要ありません。

まず、核NFSサーバーを作りたかった。 カーネルモジュールとnfs-utilsをコンパイルしましたが、すべてを起動できませんでした。 多くの実りのない研究の後、私は気付きました:私はモジュールを間違ったバージョンのgccでコンパイルしました。 これは、modutilsからのinsmodによって私に言われました。 その前に、busyboxを提供するinsmodを使用しました。 最悪のこと、私は言わなければならない。 gccのさまざまなバージョンに関する警告など、有用な情報は提供されません。

したがって、modutilsを使用することを強くお勧めします。 モジュールを正しくコンパイルすると、すべてが機能しました!

私のNASでは、敗者空間のサマは5 MB /秒、敗者空間のnfsは4.5 MB /秒、核のnfsは7 MB /秒を提供します。 負荷が100%ではないと思われます。

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


All Articles