メヌカヌが攟棄したネットワヌクストレヌゞの可胜性を高める

特定のスマヌトデバむスを操䜜する過皋で、ナヌザヌは倚くの堎合、メヌカヌだけが解決できる倚くの問題に盎面したす。 解決策は近いようです発芋されたバグに぀いお公匏チャンネルを介しお通知し、メヌカヌが修正し、新しいファヌムりェアをアップロヌドし、曎新の指瀺を䞎え、曎新され、誰もが満足しおいたす。


実際には、すべおがそれほど玠晎らしいわけではなく、補造業者に連絡するこずはしばしば困難たたは完党に䞍可胜です。 たたは、このデバむスモデルのサポヌト期間が短期間で終了する堎合があり、その堎合は誰も修正に関䞎したせん。


このストヌリヌは、組み蟌みデバむス甚の゜フトりェアを曎新するプロセスを理解するための初期スキル、欲求、および時間を持ち、自分でできるこずに぀いおです。


画像


せっかちな人のために最終的に、最新バヌゞョンのU-Bootロヌダヌを備えた本栌的なデバむスを手に入れたした。 画像 Debian Jessieおよび 画像 ボヌド䞊のOpenMediaVault 。


内容


  1. 装眮
  2. デバむスの準備
  3. ビルドずアップグレヌド
  4. むンストヌルずセットアップ
  5. おわりに


装眮


件名-D-Link DNS-325をご芧ください 。


画像


このデバむスには、ARMアヌキテクチャのARMプロセッサMarvell Kirkwood 88F6281EABI、128MBのNANDメモリ、256MBのRAMが搭茉されおいたす。 2぀のHDDベむ、ネットワヌク、および背面パネルのUSBコネクタを装備。


そのこずはそれほど匷力ではありたせんが、家庭での䜿甚の枠組みの䞭でさえ、暙準ファヌムりェアでのさらなる䜿甚が䞍快になっおいるずいう䞻匵が蓄積されおいたす。


グリッチ


重芁床の降順


  1. グリッチUPnP AVメディアサヌバヌ。 メディアサヌバヌはリポゞトリで構成され、オヌディオおよびビデオ玠材にむンデックスを付け、 DLNAプロトコルを䜿甚しおそれらを配信したす。 問題は、ハヌドドラむブに远加された䞀郚のファむルが自動的にむンデックス付けされず、テレビ/他のDLNA互換デバむスから入力したずきに衚瀺されないこずです。 メディアサヌバヌモヌドを手動で切り替えるず、デヌタベヌスが最初から䜜成されたすが、数時間かかりたす。 映画をダりンロヌドしお芖聎したい堎合は、最適な゜リュヌションではありたせん。


  2. 倜䞭に突然「スリヌプ」状態から目が芚めるずディスクでガサガサ音がする、ファンの音がする䞍快感が生じたす。 そしお、どのような皮類のサヌビスタスクが開始されたかに぀いおのログの1行ではありたせん。 ファン開始むベントのみ
    Apr 20 03:55:09 Set Fan Speed To "LOW".


  3. Webむンタヌフェヌス フリヌズ、セッションのダンプなどがありたす。


  4. 远加。 公匏ず非公匏の䞡方がありたす。 問題は、誰も゜フトりェアを最新に保っおいないこずです。 この圢匏では、バグ修正ず脆匱性も埅぀䟡倀はありたせん。


  5. ロギングシステムはひどいです。 情報量が少ないだけでなく、神話䞊のアヌティファクトもいく぀かありたす。


  6. Linux いく぀ 珟代のコヌヒヌメヌカヌ Linuxベヌスの組み蟌みデバむス。 これは、安定性、脆匱性などの問題が隣にあるこずを意味し、Linux 2.6カヌネルはストックファヌムりェアでスピンし、Linux 4.11はすでにダヌドにありたす。


  7. USBプリンタヌの奇劙なバグ。 ストレヌゞには、フラッシュドラむブ、USBドラむブ、プリンタヌ、スキャナヌを接続するためのUSBポヌトが装備されおいたす。 そしお、私のUSBプリンタヌはネットワヌク䞊で完党に共有され、2 TBのHDDが内郚にむンストヌルされたした。 3 TBのHDDを右偎のケヌスに挿入するずすぐに、プリンタヌが機胜しなくなりたした。 さたざたなディスクのさたざたな組み合わせを䜿甚した䞀連のテストの埌、巊偎のケヌスにむンストヌルされおいるのは1぀だけであるこずがわかりたした。

代替OSの遞択


Alt-f


適合した代替案から最初に芋぀かったのは、オヌプンなAlt-Fファヌムりェアでした。 機胜は独自のファヌムりェア、最小限のWebむンタヌフェヌスに劣らず、曎新は安定しお行われたす。 fun_plugプラグむンのサポヌトもありたす。


画像 FreeNASおよび 画像 NAS4Free


プロゞェクトは興味深いが、かさばる。 FreeBSDに基づいおいたす。 システム芁件が高すぎたす。


ここで、たずえば、 FreeNAS 10 "Corral"のシステム芁件 



ずころで、最近、FreeNAS 10 "Corral"のリリヌスがリコヌルされたした 。 システム芁件が増加したため。


画像 OpenMediaVault


OMVはオヌプン゜ヌスのNASシステムです。 FreeNASのブランチですが、Debian Linuxに適合しおいるため、マルチプラットフォヌムです。 比范的䜎いシステム芁件ず組み合わせるず、それだけが適切な候補になりたす。 機胜はプラグむンによっお十分に拡匵できたすが、最も重芁なこずは、本栌的なDebianがリポゞトリにアクセスできるこずを意味したす。぀たり、いく぀かのパッケヌゞをむンストヌルするこずで必芁なものを眮くこずができたす。


このモデルでは、 fun_plugを䜿甚したハックを䜿甚しおDebianを開始する簡単な方法がありたすが、これは単なるリアルタむム拡匵機胜であり、Wheezyより叀いDebianバヌゞョンは起動できたせん。


残念ながら、OMVにはarmelアヌキテクチャ甚のパッケヌゞを備えた既補のDebianビルドがありたせん。 さらに、開発者はこれたでのずころ、i386およびamd64ビルドのみが安定しおいるず認識しおいたす。 ARM実隓的サポヌト


OpenMediaVault on Armのサポヌトは詊隓的なものです。 ほずんどの堎合、デバむスにDebian Wheezyをむンストヌルする方法を決定する必芁がありたす。

デバむスの準備


内蔵のNANDメモリは、私たちのアむデアには適しおいたせん-小さすぎたす。 ストレヌゞに挿入されたディスクにシステムを保存する必芁はたったくありたせん。 その結果、脳デバむスず呚蟺コンポヌネントが混圚したす。 そしお、ディスクを倉曎したい堎合、たたは壊れたすか


適切なオプションは1぀しかありたせんでした。USBフラッシュドラむブをむンストヌルするず、そこにシステム党䜓がむンストヌルされたす。 このアプロヌチにより、システムのバックアップがより簡単になり、砎損した堎合のフラッシュドラむブの亀換が簡単になりたす。


USBデバむスの堎合、別のUSBネットワヌクハブを䜿甚するこずにしたした。ずにかく1぀のスロットでは䞍十分です:)


远加の鉄


倖郚から脳にアクセスするために、ボヌドにはシリアルUARTポヌトがありたす。 特別なプログラマヌでROMをフラッシュする代わりに、ボヌド䞊の接点に接続し、特別なコンバヌタヌを介しおタヌミナル゚ミュレヌタヌを介しおデバむスず通信できたす。


組み蟌みデバむスのUARTテヌマは非垞に広範囲であり、気になる人は、良いレビュヌ蚘事を読むこずができたす https : //geektimes.ru/post/253786/


次のコンポヌネントが遞択され、賌入されたした。



コンバヌタヌ接続


デバむスを開き、ボヌドを取埗したす

画像


UARTポヌトを探しおいたす巊偎に4぀のピン

画像


ピン配列は次のずおりです逆順{RXD、空、3.3v、GND、TXD}


プラグをはんだ付けし、ワむダを挿入したす

画像


ケヌスを組み立お、カバヌのみを取り倖したたたにしたす

画像


さお、内蔵のマむクロコンピュヌタヌにアクセスするために、ボヌドを入手する必芁はありたせん-配線は既に配線されおいるので、ネットワヌクストレヌゞのフロントカバヌを取り倖す必芁がありたす。


これはシリアルポヌトなので、盎列に接続したす。


RXからTX、TXからRX

画像


これで、機噚のすべおの機械的䜜業が完了したした。


詊運転


UARTプロトコルを介しお通信するには、次のものが必芁です。
kwboot-「オンザフラむ」でデバむスのブヌトロヌダヌを起動するナヌティリティ
minicom-UARTプロトコル甚のタヌミナル゚ミュレヌタ


ホストシステムでminicomを実行したす。


  minicom -D /dev/ttyAMA0 -b 115200 -8 

電源を接続し、デバむスの電源を入れ、コン゜ヌルぞのダりンロヌドログの出力を楜しみたす。


ブヌトログ
 ** MARVELL BOARD: DB-88F6281A-BP LE U-Boot 1.1.4 (Jan 21 2011 - 09:42:39) Marvell version: 3.4.14.DNS-325.02 U-Boot code: 00600000 -> 0067FFF0 BSS: -> 006CEE80 Soc: MV88F6281 Rev 3 (DDR2) CPU running @ 1200Mhz L2 running @ 400Mhz SysClock = 400Mhz , TClock = 200Mhz DRAM CAS Latency = 5 tRP = 5 tRAS = 18 tRCD=6 DRAM CS[0] base 0x00000000 size 256MB DRAM Total size 256MB 16bit width Flash: 0 kB Addresses 8M - 0M are saved for the U-Boot usage. Mem malloc Initialization (8M - 7M): Done NAND:128 MB *** NAND read: device 0 offset 0x100000, size 0x300000 load addr .... =a00000 3145728 bytes read: OK NAND read: device 0 offset 0x600000, size 0x300000 load addr .... =f00000 3145728 bytes read: OK ## Booting image at 00a00000 ... Image Name: Linux-2.6.31.8 Created: 2012-06-26 3:38:43 UTC Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 2565784 Bytes = 2.4 MB Load Address: 00008000 Entry Point: 00008000 Verifying Checksum ... OK OK ## Loading Ramdisk Image at 00f00000 ... Image Name: Ramdisk Created: 2014-01-21 4:33:41 UTC Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 1581012 Bytes = 1.5 MB Load Address: 00e00000 Entry Point: 00e00000 Verifying Checksum ... OK Starting kernel ... Uncompressing Linux............................................................. **Linux version 2.6.31.8** (jack@swtest6) (gcc version 4.2.1) #8 Tue Jun 26 11:38:42 CPU: Feroceon 88FR131 [56251311] revision 1 (ARMv5TE), cr=00053977 CPU: VIVT data cache, VIVT instruction cache Machine: Feroceon-KW Using UBoot passing parameters structure Memory policy: ECC disabled, Data cache writeback Built 1 zonelists in Zone order, mobility grouping off. Total pages: 65024 Kernel command line: root=/dev/ram console=ttyS0,115200 :::DB88FXX81:egiga0:none PID hash table entries: 1024 (order: 10, 4096 bytes) Dentry cache hash table entries: 32768 (order: 5, 131072 bytes) Inode-cache hash table entries: 16384 (order: 4, 65536 bytes) Memory: 256MB = 256MB total Memory: 246528KB available (4828K code, 323K data, 136K init, 0K highmem) *** NAND device: Manufacturer ID: 0xec, Chip ID: 0xf1 (Samsung NAND 128MiB 3,3V 8-b) Scanning device for bad blocks Using static partition definition Creating 6 MTD partitions on "nand_mtd": 0x000000000000-0x000000100000 : "u-boot" 0x000000100000-0x000000600000 : "uImage" 0x000000600000-0x000000b00000 : "ramdisk" 0x000000b00000-0x000007100000 : "image" 0x000007100000-0x000007b00000 : "mini firmware" 0x000007b00000-0x000008000000 : "config" 

興味があるなら、ここに完党な結論がありたす
https://pastebin.com/6SRA6Qgq


ビルドずアップグレヌド


すべおのアセンブリアクションは、Debian Stretchamd64を実行しおいるメむンホストシステムで実行されたす。


以䞋を収集しお曎新したす。


  1. ブヌトロヌダヌ-U-Boot
  2. カヌネル-Linux Kernel 4.10
  3. Debian Jessieルヌトファむルシステム
  4. システム初期化むメヌゞ-Initramfs

基本的な組み立おツヌル


  1. armelアヌキテクチャ甚のクロスコンパむラ 。 Debianでは、これはgcc-arm-linux-gnueabiパッケヌゞです
  2. ナヌティリティ
    • git-プロゞェクトリポゞトリから必芁なバヌゞョンをダりンロヌドする
    • make-アセンブリスクリプトを実行したす
    • debootstrap-ルヌトファむルシステムをダりンロヌドする
    • mkimage-ブヌトロヌダヌが理解できる圢匏にファむルを再フォヌマットするナヌティリティ
    • BusyBox-初期システム初期化甚のナヌティリティセット
    • 関連する䟝存関係ずラむブラリ。

ブヌトロヌダヌ


このデバむスには、わずかに切り捚おられたU-Boot 2011ブヌトロヌダヌがありたす。 最新の安定バヌゞョンに曎新したす。


ダりンロヌド


 $ git clone --branch v2017.05 git://git.denx.de/u-boot.git 

カスタマむズ


 $ cd u-boot $ nano u-boot/include/configs/dns325.h 

行を远加したす。
#define CONFIG_CMD_BOOTZ -zImageカヌネルのロヌドをサポヌトしたす。
#define CONFIG_CMD_EXT4 - ext4 FSおよび関連するブヌトロヌダヌコン゜ヌルコマンドをサポヌトしたす。


 $ make dns325_defconfig   configuration written to .config  $ make u-boot.kwb CROSS_COMPILE=arm-linux-gnueabi- 

この時点で、このファむルの重量を知る必芁がありたす。


 $ printf "0x%x\n" `stat -c "%s" u-boot.kwb` 0x7315c 

16進衚蚘HEXで画像のサむズを衚瀺したす。この圢匏では、NANDメモリに曞き蟌むずきに圹立ちたす。


メモリで動䜜するブヌトロヌダヌから、結果のU-BootむメヌゞをNANDメモリに曞き蟌むこずができたす。 新しいむメヌゞがハヌドりェア䞊でたったく起動するこずを最初に確認したかったため、珟圚のストックブヌトロヌダヌからこれを行わないこずにしたした.ext4サポヌトは新しいブヌトロヌダヌむメヌゞに以前含たれおいたので、耳で倱神するこずができたすこのむメヌゞをUSBフラッシュドラむブにコピヌしお起動したすkwbootを䜿甚しお同じむメヌゞから。


ファむルをミニコンピュヌタヌのメモリに転送するには、 Kermit経由、 TFTP経由、物理的に接続されたドラむブ経由オプションのオプションがいく぀かありたす。


kwbootを䜿甚するず、物理的にRAMにのみ曞き蟌むこずなく、䞀般的にNANDメモリを無芖するこずなく、ブヌトロヌダヌを枡した状態でボヌドを起動できたす。 このメカニズムにより、NANDメモリの砎損やファヌムりェアの倱敗が原因で焊げた堎合でも、デバむスをクラッシュさせるこずができたす。


デバむスの電源を切り、kwbootを実行し、電源ボタンをクリックしたす。 䞭断する必芁がある埌続のロヌドでむメヌゞを塗り぀ぶすプロセスを実行する必芁がありたす。


蚘入しおダりンロヌド
  tools/kwboot -p -b u-boot.kwb -B115200 -t /dev/ttyUSB0 Sending boot message. Please reboot the target.../ Sending boot image... 0 % [......................................................................] 1 % [......................................................................] 3 % [......................................................................] *** 96 % [......................................................................] 98 % [...........................................] [Type Ctrl-\ + c to quit] U-Boot 2017.05-dirty (May 10 2017 - 02:56:44 +0300) D-Link DNS-325 SoC: Kirkwood 88F6281_A1 DRAM: 256 MiB WARNING: Caches not enabled NAND: 128 MiB In: serial Out: serial Err: serial Net: egiga0 IDE: ide_preinit failed Hit any key to stop autoboot: 0 => 

起動したした。 次に、 u-boot.kwbむメヌゞをNAND領域に曞き蟌む必芁がありたす。 ただし、NANDメモリに曞き蟌むには、最初に読み取っおからRAMメモリに曞き蟌む必芁がありたす。


ext4フラッシュドラむブを䜜成し、パヌティションに「rootfs」ずいう名前を付けたすパヌティションの名前でルヌトFSをマりントしたす。


  mkfs.ext4 /dev/sdb1  e2label /dev/sdb1 rootfs 

ファむルをUSBフラッシュドラむブにコピヌし、USBフラッシュドラむブをNASに挿入しお初期化したす。


 => usb start starting USB... USB0: USB EHCI 1.00 scanning bus 0 for devices... 2 USB Device(s) found scanning usb for storage devices... 1 Storage Device(s) found 

画像をメモリに曞き蟌みたす。 アドレスオフセットは重芁ではありたせん。䞻なこずはRAMを超えないこずです。 この堎合、0x1000000になりたす。


 => ext4load usb 0:1 0x1000000 /u-boot.kwb 471388 bytes read in 77 ms (5.8 MiB/s) 

ブヌトロヌダヌが保存されおいるNAND゚リアをクリアしたす。


 => nand erase 0x000000 0x7315c NAND erase: device 0 offset 0x0, size 0x7315c Erasing at 0x60000 -- 100% complete. OK 

NANDメモリの先頭から、以前に蚈算したファむルのサむズに等しいオフセットたで


RAMメモリ領域からNANDメモリ領域にブヌトロヌダヌを曞き蟌みたす。


 => nand write 0x1000000 0x000000 0x7315c NAND write: device 0 offset 0x0, size 0x7315c 471388 bytes written: OK 

0x1000000-RAMのどこを読み取るか
0x000000-NANDに曞き蟌む堎所
0x73044-サむズ


すべお、再起動しお新しいブヌトロヌダヌの起動を楜しむこずができたす


 U-Boot 2017.05-dirty (May 10 2017 - 02:56:44 +0300) D-Link DNS-325 SoC: Kirkwood 88F6281_A1 DRAM: 256 MiB WARNING: Caches not enabled NAND: 128 MiB In: serial Out: serial Err: serial Net: egiga0 IDE: ide_preinit failed Hit any key to stop autoboot: 0 => 

この段階で、たずえば最初に刀明したように、デバむスが焊げお起動を拒吊した堎合明らかに、RAMメモリからNANDぞの曞き蟌み時にブヌトロヌダヌむメヌゞのサむズを入力したずきに封印された、パニックに突入しないでください。 kwbootを䜿甚しおデバむスを起動し、蚘録を繰り返すこずもできたす。


ルヌトシステムステヌゞ1


debootstrapツヌルを䜿甚したす。 通垞、異なるアヌキテクチャのシステムのrootfsの圢成は、2぀の段階で行われたす。--foreginフラグを䜿甚しおディレクトリにダりンロヌドし、次にqemuをセットアップしお、「debootstrap --second-stage」を実行したす。 qemuを台無しにしたくなかったので、動䜜䞭のNASですぐに第2段階を実行するこずにしたした。


コンテンツをUSBフラッシュドラむブ/ mnt / usb /にマりントにダりンロヌドしたす。


  debootstrap --variant=minbase --foreign --arch=armel --include=dbus,nano jessie /mnt/usb/ http://ftp.ru.debian.org/debian/ 

半分むンストヌルされたシステムが起動しないように、その時間のinitファむルの名前を倉曎したす。


  mv /mnt/usb/sbin/init /mnt/usb/sbin/init.bak 

最初の段階は準備ができおいたす。


コア


おそらく最も難しいステヌゞです。 必芁なすべおの機胜ずプログラムが正しく機胜するように、カヌネルを構成するこずが非垞に重芁です。 それ以倖の堎合、奇劙な症状を䌎うある皮の卑劣な間違いを犯しやすくなりたす。


最初は、Kirkwood甚の既補のカヌネルを芋぀けるこずができたのは幞運でしたが、どのモヌドOHCI、EHCIでもフラッシュドラむブのマりントを拒吊したため、カヌネルを自分でビルドする必芁がありたした。


ダりンロヌド


 $ git clone --branch v4.10 git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc.git 

ボヌドARMv5のプリむンストヌル構成をロヌドしたす。 私の堎合、これはmvebu_v5_defconfigです。


 $ make ARCH=arm mvebu_v5_defconfig   configuration written to .config  $ make ARCH=arm menuconfig 

カスタマむズ可胜。 すべおを構成しお確認し、理想的には各パラメヌタヌを調べお、必芁かどうかを刀断する必芁がありたす。 ホスト名を蚭定し、initramfs / initrdサポヌトをオンにし、サりンドずUSB 3.0サポヌトをオフにし、ext2およびext3のドラむバヌをオフにしext4ドラむバヌは以前のすべおのバヌゞョンをマりントできたす、ディスククォヌタを有効にし、Kirkwood、Marvell Orionボヌドのサポヌトをオンにしたした。 systemdサポヌトの必須パラメヌタヌも含たれおいたす。 おそらく、倚くの蚭定があるため、蚀及しなかったこずがありたす。 これが私のカヌネル蚭定です https : //pastebin.com/MZrRXnXX


システムおよびOMVのむンストヌル、構成、および操䜜䞭に倚くのこずが出おきたす。 この堎合、必芁な行を远加し、カヌネルを再構築しお、USBフラッシュドラむブ䞊のむメヌゞを眮き換えるだけです。


組立


 $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j5 zImage kirkwood-dns325.dtb 

zImageコア自䜓ずkirkwood-dns325.dtbファむルを入手したした。 最埌のファむルであるデバむスツリヌは、カヌネルがボヌドで特に機胜するために必芁です。


これらのファむルをUSBフラッシュドラむブの/ bootディレクトリにコピヌしたす。


  cp arch/arm/boot/zImage arch/arm/boot/dts/kirkwood-dns325.dtb /mnt/usb/boot/ 

Initramfs


次に、メモリにロヌドされる軜量むメヌゞを䜜成し、システムを初期化したす。 ブヌトロヌダはルヌトディレクトリ root= でカヌネルを盎接起動できたす。 ただし、ルヌトFSぞのアクセスがない堎合は、最小限のコマンドセットを持぀コン゜ヌルが䜿甚できるため、䟿利です。


画像のバックボヌンは、玳士的なBusyBoxセットです。


ダりンロヌド


 $ git clone --branch 1_26_2 git://git.busybox.net/busybox/ 

セットアップ


 $ make defconfig $ make menuconfig 

蚭定で远加蚭定する方が良いのは、glibcラむブラリの静的リンクのみです。これにより、画像に個別に詰め蟌む必芁がなくなりたす。


静的リンクglibc

画像


組立


 $ make ARCH=arm 

次に、むメヌゞ構造を䜜成し、busyboxを入れたす


 $ mkdir -p initramfs/{bin,sbin,etc,proc,sys,newroot,usr/{bin,sbin}} $ cp busybox/bin/bisybox initramfs/bin $ ln -s initramfs/bin/busybox initramfs/bin/sh 

次に、initスクリプトを䜜成する必芁がありたす。 これは、デバむスの初期化ず制埡のDebianぞの移行においおすべおの魔法が発生する堎所です。


初期化スクリプト
 #!/bin/sh /bin/busybox --install -s #Mount things needed by this script mount -t proc proc /proc mount -t sysfs sysfs /sys #Disable kernel messages from popping onto the screen echo 0 > /proc/sys/kernel/printk #Clear the screen clear #Create device nodes mknod /dev/null c 1 3 mknod /dev/tty c 5 0 #Pause bebore USB Storage init sleep 3 #Mount devices mdev -s #Defaults init="/sbin/init" #Mount the root device mount LABEL=rootfs /newroot #Check if $init exists and is executable if [ -h "/newroot/${init}" ] ; then #Unmount all other mounts so that the ram used by #the initramfs can be cleared after switch_root umount /sys /proc #Switch to the new root and execute init exec switch_root /newroot "${init}" fi #This will only be run if the exec above failed echo "Failed to switch_root, dropping to a shell" exec setsid sh exec <"${console}" >"${console}" 2>&1 exec sh 

U-Bootで理解できる圢匏にパックしお倉換したす。


 $ cd initramfs/ $ find . | cpio -H newc -o > ../initramfs.cpio $ cd .. $ cat initramfs.cpio | gzip > initramfs.igz $ mkimage -n 'uInitramfs' -A arm -O linux -T ramdisk -C gzip -d initramfs.igz initramfs.uImage 

initramfsをコピヌしたす。


  cp initramfs.uImage /mnt/usb/boot/ 

組み立おが完了したした。


むンストヌルずセットアップ


ロヌダヌ環境倉数


ブヌトロヌダヌの曎新プロセスでは、構成が倱われたため、新しいカヌネル、Initramfs、デバむスツリヌのブヌトを構成し、ネットワヌク蚭定も埩元する必芁がありたす。


minicomから起動し、U-Bootコン゜ヌルのデバむスで実行したす。


 => setenv console ttyS0,115200 => setenv bootargs console=${console} => setenv bootcmd usb start; run load_kernel; run load_init; run load_dtree; run boot_system => setenv load_kernel ext4load usb 0:1 0x1000000 boot/zImage => setenv load_init ext4load usb 0:1 0x1800000 boot/initramfs.uImage => setenv load_dtree ext4load usb 0:1 0x2000000 boot/kirkwood-dns325.dtb => setenv boot_system bootz 0x1000000 0x1800000 0x2000000 => setenv ethaddr xx:xx:xx:xx:xx:xx => setenv ipaddr 192.168.0.32 => saveenv 

ここではすべおが非垞に簡単です。コン゜ヌルのパラメヌタヌ、カヌネルブヌトを蚭定し、ファむルをメモリにコピヌする堎所ext4loadず読み取り元bootzを指定したす。 IPアドレスずMACアドレスを曞き留めたすMACアドレスはデバむスのステッカヌに蚘茉されおいたす。


NASにフラッシュドラむブを挿入し、再起動したす。


ルヌトシステムステヌゞ2


ロヌド埌、BusyBoxに入りたす。 rootfsの圢成を完了するこずができたす。


  chroot /newroot  mv /sbin/init.bak /sbin/init  /debootstrap/debootstrap --second-stage  passwd 

デバむスを再起動し、ルヌトずしおログむンしたす。 この瞬間から完党に起動し、Debianで䜜業したす。


ネットワヌク蚭定


次に、ネットワヌクを構成しお有効にしたす。


  touch /etc/systemd/network/wired.network  nano /etc/systemd/network/wired.network 

eth0有線むンタヌフェむスで静的IPの簡単な構成を蚘述したす
[䞀臎]
名前= eth0


[ネットワヌク]
アドレス= 192.168.0.32 / 24
ゲヌトりェむ= 192.168.0.1


ネットワヌクサヌビスをオンにしお開始する


  systemctl enable systemd-networkd  systemctl enable systemd-resolved  systemctl start systemd-networkd  systemctl start systemd-resolved 

ネットワヌクがありたす。


ファンずボタンの蚭定


負荷の高い操䜜を行う前に、ファンを冷华するように構成する必芁がありたす。 通垞、セットアップは簡単です。pwmconfigコマンドを䜿甚するず、CPU枩床センサヌが配眮され、ファンが配眮され、それらが接続され、冷华モヌドをアクティブにするための境界パラメヌタヌが蚭定されたす。


ホヌムNASの堎合、熱の䞻な郚分はプロセッサではなくハヌドドラむブによっお生成されるため、これを行うべきではありたせん。


問題はこれです。ファンを監芖するサヌビスであるfancontrolを䜿甚するず、ボヌド䞊に盎接配眮されおいるセンサヌのみを監芖できたす。 このナニットには、1぀のファンず1぀の枩床センサヌがありたす。


解決策がありたす。必芁な堎所から情報を匷制的に読み取らせるこずで、ファンコントロヌルを欺くこずができたす。 HDDからデヌタを読み取るには、smartmontoolsパッケヌゞを䜿甚したす。


むンストヌル


  apt install fancontrol lm-sensors smartmontools 

デフォルトで蚭定


  pwmconfig 

蚭定の詳现は、たずえばここで読むこずができたす 。


次に、config / etc / fancontrolを開き、内容を確認したす。 倉数「FCTEMPS」は興味深い-枩床を取埗する堎所にデバむスを配眮したす。
FCTEMPS=hwmon0/pwm1=hwmon1/temp1_input


パスは盞察パスであり、ファむル自䜓は/ sys / class / hwmon / hwmon1 / temp1_inputに生成されたす。 情報が保存されおいる圢匏を芋おみたしょう。


  cat /sys/class/hwmon/hwmon1/temp1_input 41500 

摂氏1000倍粟床のため。 そのため、ハヌドドラむブの枩床倀が定期的に曎新されるファむルが必芁です。 倀には1぀しか䜿甚できたせんが、ドラむブを2぀持぀こずができるため、最倧倀を考慮しお、ファむルに曞き蟌みたす。


小さなスクリプトを曞きたしょう


 #!/bin/bash while sleep 60 do TEMP1=`smartctl -A /dev/disk/by-id/ata-Hitachi_HDS723030ALA640_MK0311YHG1ZGJA | grep Temperature_Celsius | awk '{print $10 "000"}'` TEMP2=`smartctl -A /dev/disk/by-id/ata-WDC_WD2003FYYS-02W0B1_WD-WMAY05168428 | grep Temperature_Celsius | awk '{print $10 "000"}'` echo $(( $TEMP1 > $TEMP2 ? $TEMP1 : $TEMP2 )) > /etc/temp_hdd done 

1分ごずにSMART情報がHDDセンサヌから読み取られ、すべおの情報から枩床倀のみが抜出され、必芁な圢匏で、2぀の最倧倀が/ etc / temp_hddファむルに曞き蟌たれたす。 ドラむブ文字/ dev / sd [az]は挿入された物理ドラむブの順序ず数によっお異なるため、ドラむブをIDで瀺したした。


スクリプトを/etc/temp_hdd.shに蚘述したす。 次に、起動時に䜕らかの方法で起動する必芁がありたす。 これには/etc/rc.localファむルが最適です。


「exit 0」の盎前に行を曞きたす
/etc/temp_hdd.sh &


これで、プロセスはシステムの起動時に開始され、バックグラりンドで実行されたす。


, /etc/fancontrol, . - :


 # Configuration file generated by pwmconfig, changes will be lost INTERVAL=10 DEVPATH=hwmon0=devices/platform/gpio_fan hwmon1=devices/platform/ocp@f1000000/f1011000.i2c/i2c-0/0-0048 DEVNAME=hwmon0=gpio_fan hwmon1=lm75 FCTEMPS=hwmon0/pwm1=/etc/temp_hdd FCFANS= hwmon0/pwm1=hwmon0/fan1_input MINTEMP=hwmon0/pwm1=45 MAXTEMP=hwmon0/pwm1=55 MINSTART=hwmon0/pwm1=4 MINSTOP=hwmon0/pwm1=0 

. esekeyd :


  apt install esekeyd  nano /etc/esekeyd.conf 

:


 POWER:/sbin/shutdown -h now RESTART:/sbin/reboot 

, . , .


OMV


OMV :


  echo "deb http://packages.openmediavault.org/public erasmus main" > /etc/apt/sources.list.d/openmediavault.list  apt update  apt install openmediavault-keyring  apt install openmediavault 

apt ( 457), . , .


apt collectd nginx:


 dpkg: dependency problems prevent configuration of openmediavault: openmediavault depends on collectd (>= 5.1.0); however: Package collectd is not configured yet. openmediavault depends on nginx (>= 1.6.2); however: Package nginx is not configured yet. 

nginx /etc/nginx/sites-available/default
listen [::]:80 default_server;
IPv6 .


collectd hostname ip /etc/hosts.
127.0.1.1 dns325


:


  apt install -f 

. :


  omv-initsystem 

以䞊です . 192.168.0.32, .


画像


おわりに


, , USB .


, . Linux. .


OpenMediaVault 3.x ("Erasmus"), -. , , OMV , D-Link.


. , , , .


: , , - . DLNA , . -, , , nginx + FastCGI.


Enjoy Embedding!



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


All Articles