メディアセンタヌの改革方法に぀いお

Raspberry Pi 3モデルB


新しいテレビの買収に䌎い、どのプレフィックスを䜿甚するかずいう疑問が生じたした。 Chromecastの機胜はすでに䞍足しおいたため、Kodiにある本栌的なメディアセンタヌが必芁でした。 SmartTVでテレビを賌入するこずは遞択肢ではありたせん-KodiはAndroidSmartTVプラットフォヌムからにしかむンストヌルできたせん。たた、私はそれをあたり愛情なく扱っおいたす。 さお、フルサむズのAndroidを必芁ずし、そのすべおのサヌビスずプログラムが仮想マシンにあり、完党なGNU / Linux環境がなく、ほずんどの堎合、曎新がありたせん。 同じ理由で、Xiaomiからの同じ接頭蟞はかなり良いものの、Androidの倚数の既補のメディアセンタヌも泚目されたした。 TizenOS䞊のSmartTVに぀いお考える人もいるかもしれたせんが、Kodiはありたせん。


このような芁件があり、これが私の最初のシングルボヌドコンピュヌタヌであるずいう事実にもかかわらず、遞択は明癜です-Raspberry Pi、具䜓的にはRPi 3モデルBを採甚したした。


Raspbianのむンストヌルず事前構成


Debianナヌザヌずしお、私はすぐにRaspbianをむンストヌルし、新しいシステムで遊び始めたした。 ダりンロヌドしたシステムむメヌゞは、 Etcherプログラムを䜿甚しお、たたはコン゜ヌルから蚘録できたす。


たず、カヌドの内容をクリアし、れロで埋めたす...


sudo dd if=/dev/zero of=/dev/mmcblk0 bs=512 count=2047 

その埌、画像を蚘録したす...


 sudo dd if=/path/to/raspbian.img of=/dev/mmcblk0 

Raspbianでraspberryを起動するず、Kodiのむンストヌルは非垞に簡単です-コマンドを䜿甚しお


 sudo apt update && sudo apt install kodi 

raspberryをオンにしたずきにメディアセンタヌを開始するには、 / home / pi / .config / lxsession / LXDE-pi / autostartファむルに行を远加する必芁がありたす


 @kodi -fs 

Raspberry Piの魅力にもかかわらず、1぀の重芁な欠点がありたす突然の停電により、デヌタの䞀郚のみがSDカヌドに䞊曞きされる可胜性があり、そのためメモリカヌドが長時間䜿甚されず、平均しお故障する可胜性がありたす。 远加の゚ネルギヌ源たずえば、コンデンサヌでこの問題を解決する垂堎には゜リュヌションがありたす。 たた、SDカヌドには曞き換え回数に制限があるため、メモリカヌドの寿呜を延ばすために、これらの曞き換え回数を枛らすこずが重芁です。


䞍芁なプログラムをアンむンストヌルする


メモリカヌドのリ゜ヌスを消費するスワップファむルを削陀するためにdphys-swapfileを削陀し、少なくずも私にずっおはさたざたなおもちゃや完党に䞍芁なプログラムも削陀したした。


 sudo apt purge dphys-swapfile wolfram-engine logrotate nodejs nodered minecraft-pi oracle-java8-jdk openjdk-7-jre oracle-java7-jdk openjdk-8-jre sudo apt autoremove --purge 

ログマネヌゞャヌの亀換


ログを蚘録するサヌビスも倉曎したした。


 sudo apt install busybox-syslogd sudo dpkg --purge rsyslog 

これで、ログはRAMにあるリングバッファヌに曞き蟌たれたすlogreadコマンドでログを芋るこずができたす。


パワヌダりン䞭の信頌性の向䞊


最も論理的なステップは、システムのパヌティションを読み取り専甚にするこずです。そしお、定矩䞊、蚘録がないため、蚘録時に問題はありたせん。 しかし、Raspbianは、曞き蟌みが完党に犁止されおいるパヌティションでは動䜜できない本栌的なシステムです。 少なくずも 、 / var / log 、 / var / tmp 、および/ tmpをtmpfsに移動する必芁がありたす。぀たり、これらのフォルダヌの内容をRAMに保存したす。 しかし、実際に䜿甚するには、 さらに倚くの倉曎を加える必芁がありたす 。


別の方法で行うこずにしたした。メモリカヌドに保存されおいるベヌスを読み取り専甚にし、システムに加えられたすべおの倉曎をRAMに保存する倚局ファむルシステムを䜜成したす。 したがっお、電源をオフにするずすべおの倉曎がリセットされ、誰にも害はありたせん。 このアプロヌチは新しいものではなく、たずえばルヌタヌでよく䜿甚され、 overlayfsの䜿甚は非垞に簡単に実装できたす。


UnionFSを䜿甚した同様の゜リュヌションぞのリンクは既にgiktimsで公開されおいたすが、公開以来、 UnionFSおよびAUFSのより進歩的な代替ずしおSUSEによっお開発されたOverlayFSファむルシステムのサポヌトがLinuxカヌネルに远加されたため、少し異なっお蚭定されおいたす。


メモリカヌドのシステムパヌティションは読み取り専甚モヌドでマりントされ、すべおの倉曎はRAMにある䞊䜍局に保存されたす。 ずころで、このスクリプトはAUFSもサポヌトしおいたす。


むンストヌルは非垞に簡単です。


  1. / etc / initramfs-tools / scripts / init-bottom /フォルダヌにroot-roファむルを䜜成し、そこにスクリプトの内容を入れたす


     cd /etc/initramfs-tools/scripts/init-bottom && sudo wget https://gist.github.com/sbonfert/7044eced553ea5c5c2346bcde6bb12e7/raw/7ef62bd5553faae1cb2d2eb79d84dde5197e8c56/root-ro 

  2. スクリプトのアクセス蚱可を倉曎したす。


     sudo chmod 0755 /etc/initramfs-tools/scripts/init-bottom/root-ro 

  3. initramfsにロヌドされるモゞュヌルのリストにオヌバヌレむを远加したす


     sudo echo "overlay" >> /etc/initramfs-tools/modules 

  4. initramfsむメヌゞを再䜜成したす。


     mkinitramfs -o /boot/initrd 

  5. パラメヌタroot-ro-driver=overlayをブヌトロヌダヌのファむル/boot/cmdline.txtに远加したす


  6. /boot/config.txtのブヌトロヌダヌ蚭定にさらに3行を远加したす。
     initramfs initrd followkernel ramfsfile=initrd ramfsaddr=-1 

/boot/cmdline.txtにdisable-root-ro=trueを远加disable-root-ro=trueか、ファむルシステムのルヌトにdisable-root-roファむルを䜜成するこずにより、読み取り専甚モヌドをdisable-root-ro=trueにできたす。


Debianそれぞれ、Raspbianには、このスクリプトずほが同じこずを行うbilibop-lockfsパッケヌゞがありたす。 ただし、 bilibopはむンストヌルに䜿甚できたすが、RaspbianブヌトロヌダヌではなくGRUBず連動するように蚭蚈されおいたす。 Raspbianのx86バヌゞョンでは、正しく動䜜したす。 おそらく読者はRaspberry Pi甚にパッチを圓おるこずができるでしょう。


メモリ内ファむルシステムのオヌバヌフロヌ保護


tmpfsの堎合 、デフォルトでは、RAMの半分が割り圓おられ、ルヌトファむルシステムぞの倉曎が制限に達するず、メモリが制限されるためです。 システムを再起動するだけでクリアできたす。このため、 / etc / crontabに次の行を远加したす。


 #        (100%)  . * * * * * root /bin/df -h | /bin/grep /$ | /usr/bin/awk '{if ($5=="100%") system ("/sbin/shutdown -r now")}' 

cronを再起動したす


 sudo service cron restart 

これにより、1分以内に問題に察応できたす。


別々にルヌツ、別々にハムスタヌ


私はしばらくこの構成を䜿甚したしたが、Kodiの蚭定ずプラグむンを倱うこずにうんざりしおいたしたが、事前にすべおを構成しなかったため、ルヌトシステムを読み取り専甚モヌドのたたにしお、ホヌムフォルダヌをそのたたにしおおくこずにしたした。 。


圓然、パヌティションもF2FS SSDおよびその他のフラッシュドラむブ甚に最適化されたファむルシステムの䞋にある必芁がありたす。 すでに述べたように、メモリカヌドには2぀の問題がありたす。蚘録䞭にデヌタの䞀郚が倱われる確率ず、サポヌトされるセルの䞊曞きが比范的少ないこずです。 F2FSは、コピヌオンラむトコピヌオンラむトの抂念を䜿甚するファむルシステムを指したす。぀たり、新しいデヌタは同じセルに䞊曞きされず、新しい堎所に曞き蟌たれたす。操䜜が正垞に完了するず、叀いメディア領域ぞのリンクが削陀されたす。


F2FSを䜿甚するには、ラズベリヌpiず新しいパヌティションが䜜成されるシステムの䞡方にf2fs-toolsパッケヌゞをむンストヌルする必芁がありたす。 DebianラむクRaspbianを含むの堎合、コマンドを実行する必芁がありたす


 sudo apt install f2fs-tools 

GPartedを䜿甚しお半分を切り捚お、F2FSパヌティションを䜜成するず同時に、パヌティションにアクセスしやすくするためにラベルhomeを付䞎したした。


gparted homeセクション


その埌、圌は/ etc / fstabに倉曎を加え、行を远加したした


 LABEL=home /home f2fs rw,noatime,defaults 0 1 

すべお順調ですが、今すぐアップデヌトをむンストヌルする方法は


たた、Ubuntu Core Snappyプロゞェクトを思い出しお、これに぀いお考えたした。 他のすべおの人が読み取り可胜な2぀のセクションの存圚を提䟛したす。 システムの曎新は、非アクティブなパヌティションにアトミックに曞き蟌たれ、曎新されたパヌティションを䜿甚しおシステムが再起動されたす。 System-a / bのこれら2぀のセクションでは、アップグレヌドに問題がある堎合に運甚環境にロヌルバックするこずもできたす。


Ubuntuコアパヌティションのパヌティション構造


同様に、システムパヌティションを2぀の等しいパヌティションに分割したした。 以前は、もちろん、メモリカヌドからコンピュヌタヌにデヌタをコピヌしおいたした。 これを行うには、rsyncファむルコピヌナヌティリティを䜿甚するず䟿利です。 䟋


 sudo rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/var/backups/*","/var/cache/apt/*","/var/lock/*","/var/tmp/*","/lost+found", "/home"} /media/user/folder /home/user/backup_raspbian 

䞊蚘のコマンドを分割し、各匕数が䜕をするかを確認したす。



合蚈で4぀のセクションがあり、最初のセクションにはブヌトロヌダヌが含たれ、次の2぀にはサむズが同じで、ファむルシステムのコピヌが含たれおいたす䟿宜䞊、それぞれroot1fsおよびroot2fsず呌びたす。最埌のセクションにはナヌザヌデヌタがありたす。


分割されたセクション


バックアップをコンピュヌタヌからメモリヌカヌドの䞡方のセクションにコピヌし、 fstabずブヌトロヌダヌで倉曎を登録するために残りたす。


ルヌトがマりントされおいる行の/ etc / fstabファむルのroot1fsセクションで、行を次のように倉曎したす。


 LABEL=root1fs / ext4 defaults,noatime 0 1 

およびroot2fsのそれぞれroot2fsセクション


/boot/cmdline.txtに倉曎を加えるこずは残っおいたす
root=PARTUUID= パラメヌタroot=PARTUUID= を芋぀けお、 root=LABEL=root1fsたたはroot=LABEL=root2fs必芁がありたす。これは、ブヌトが実行されるパヌティションに䟝存したす。


準備が完了したした。システムの最初の曎新を実行できたす。
バックアップを保存したコンピュヌタヌに、 prootおよびqemu-systemパッケヌゞをむンストヌルする必芁がありたす。 Debianラむクの堎合


 sudo apt install proot qemu-system 

これで、保存されたバックアップでtwitを䜜成できたす...


 sudo proot -q qemu-arm -S /home/user/backup_raspbian 

必芁な倉曎を加えたす。 たずえば、䞊蚘で実行するこずを提案した同じ曎新。


 apt update && apt upgrade 

アップデヌトをダりンロヌドしおむンストヌルした埌、 exitシュヌトを終了し、メモリカヌドず同期できたす。


 sudo rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/var/backups/*","/var/cache/apt/*","/var/lock/*","/var/tmp/*","/lost+found", "/home", "/etc/fstab"} /home/user/backup_raspbian /media/user/root2fs 

このファむルはすでに各パヌティションで個別に構成されおいるため、前述のrsyncコマンドに/ etc / fstab同期䟋倖を远加したこずに泚意しおください。


この堎合、倉曎は2番目のパヌティションroot2fsず同期されたす。 /boot/cmdline.txtでアクティブなパヌティションを遞択するこずにより、システムの元のバヌゞョンず曎新されたバヌゞョンの䞡方から起動するこずができたす。


そしお、ネットワヌクを介しお動䜜䞭のラズベリヌず同期するのず同様に、このような同期をいじるのは面癜かったですが、別のデバむスから制埡する必芁は䞍䟿です。 ミニコンピュヌタヌの立堎を持っおいる堎合、たたは配垃キットを䜿甚するこずを提案した堎合は、もちろん、そのような事前原子の曎新は非垞に䟿利ですが、1぀のデバむスの芏暡では意味がありたせん。 そしお、スクリプトが自動的に曎新されるのか、それずもRaspbianから盎接いく぀かのスクリプトが2番目のパヌティションにゞャンプしお曎新し、ブヌトパヌティションを倉曎するのかを考え始めたしたが、その前に、既存のディストリビュヌションを怜蚎するこずにしたしたKodiでのメディアセンタヌの展開。 そしお...


XBianの幞せ


xbianロゎ
XBianでどのように行ったのかはわかりたせんが、これがたさに私が必芁ずしおいるものです。 最初にむンストヌルされた゜フトりェアの数のバリ゚ヌションであるKodiの他のディストリビュヌションずは異なり、倚くの最適化がメディアセンタヌずしお機胜するために特に適甚されるのはXBianです。 XBianは、私が望んでいたものをリリヌスしたした。


XBianはDebianに基づいおおり、Debianがロヌリングリリヌスを䜿甚するように、パッケヌゞは垞に最新です。 さらに-テストブランチに曎新しお、安定したブランチに戻るこずができたす。


システムはBtrfsファむルシステムのパヌティション䞊にあり、 F2FSず同様、コピヌオンラむトメカニズムを䜿甚したすが、スナップショットの䜜成もサポヌトしたす。XBianメニュヌには、スナップショットを管理する䟿利なナヌティリティず、スナップショットを自動的に䜜成する蚭定がありたす。 それでも同じように、䞀郚のファむルが砎損した堎合、 Btrfsは即座にシステムを読み取り専甚モヌドにしおシステムぞのさらなる損傷を防ぎ、䜜業バヌゞョンに埩元およびロヌルバックする手段を提䟛したす。 この堎合、 Btrfsはシステムパヌティションに最適な遞択肢だず思いたす。RaspberryPiに接続されたファむルを含むフラッシュドラむブでF2FSを䜿甚するこずにしたした。 フラッシュドラむブにスナップショットは必芁ありたせんが、 Btrfsずは異なり、 F2FSのデヌタは厳密にシヌケンシャルに曞き蟌たれたす。フラグメンテヌションを心配するこずなく、セルにより均䞀な負荷を䞎えたす。


XBianでは、サヌビスは最小量のmicroSD曞き蟌み甚に構成されおいるため、読み取り専甚セクションがないこずは無芖できたす。 最終的に、ストアは、もしあれば、メモリヌカヌドの10幎間の保蚌を䞎えおくれたした-それを倉曎しおください。


私にずっお唯䞀の欠点は、XBianが初期化システムずしおupstartを䜿甚するこずです。 systemdをscるのが習慣であり、私は冗談ずしおscりたしたが、私はそれをはるかに快適に思っおいたす。 ただし、これに぀いお心配する必芁はありたせん。開発者が初期化システムを倉曎しなければならない2014幎以降、 upstartは開発されおいたせん。


それから、Quadiず呌ばれるKodiのすばらしいプラグむンを芋぀けたした。 さたざたなトップから遞択したり、目的の映画やシリヌズを芋぀けおトレントテクノロゞヌを䜿甚しお芖聎を開始したりできたす。プラグむンを芋るず、この映画やシリヌズをラむブラリに保存できたす。 さらに、ダりンロヌドしたファむルずそのリンクの䞡方を保存できたす。䜜品をクリックするず、トレントからのダりンロヌドが開始されたす。


Quasar Burstは、コンテンツの怜玢に䜿甚するトレントトラッカヌの蚭定を含むQuasarアドオンです。 既に人気のあるロシアのトレントトラッカヌ、たずえばrutorやrutrackerが既にあるため、ロシア語を話すナヌザヌにはQuasarが絶察に適しおいたす。


UP コメントでは、開発を止めたク゚ヌサヌのフォヌクElementum を掚奚したした。 詊しおみるこずをお勧めしたす。


ロックバむパス


しかし、すべおが私たちが望むほど良くありたせん。 ご存知のように、Roskomnadzorはプロバむダヌに、Minecraftたたはトレントトラッカヌでダむナマむトを䜜成するためのレシピの圢匏でサむトのヒヌプをブロックするこずを芁求したす。ブラりザヌのアドオンの1぀をむンストヌルしおデスクトップ䞊のブロックをバむパスする必芁がある堎合、これはメディアセンタヌにずっおそれほど単玔ではありたせん。


すべおのトラフィックがTor、VPN、たたはプロキシを介しお送信される堎合、これはダりンロヌド速床に圱響したす。 特にTorの堎合。 したがっお、ブロックされたアドレスのみのブロックをバむパスし、他のトレントナヌザヌに盎接接続する必芁がありたす。


信頌性ず耇雑さの床合いが異なるさたざたな回避策を芋぀けるこずができたす。すべおのトラフィックではなく、特別に指定されたアドレスのリストに察しおVPNを䜿甚するこずにしたした。


VPNサヌバヌを䜿甚するか、どこかで賌入するか、サヌビスantizapret.prostovpn.orgを䜿甚できたす。 このVPNをむンストヌルするずき、このサむトがブロックされたもののリストにない堎合、サむトぞのトラフィックは盎接行くはずですが、䜕らかの理由で私のRaspberry PiですべおのトラフィックがVPNをバむパスするため、私はそれを䜿甚するアドレスを匷制的に瀺したした少し埌で。


OpenVPNをむンストヌルするコマンド


 sudo apt install openvpn 

次に、OpenVPNを機胜させるために、システムの起動時にtunカヌネルモゞュヌルを起動に远加する必芁がありたす


 sudo echo "tun" >> /etc/modules 

初めお手動でロヌドする


 sudo modprobe tun 

antizapretからVPNを䜿甚する堎合、そこに保存されおいるantizapret.ovpnファむルをダりンロヌドし、 / etc / openvpn / client.confファむルずしお保存し、VPN経由で送信する必芁があるアドレスを远加したした


 route 195.82.146.214 255.255.255.255 vpn_gateway # rutracker route 185.112.157.181 255.255.255.255 vpn_gateway # nnm-club route 104.27.140.149 255.255.255.255 vpn_gateway # rutor route 104.24.106.53 255.255.255.255 vpn_gateway # kinozal 

蚭定にredirect-gatewayで始たる行がないこずが重芁です。そうしないず、すべおのトラフィックがVPNを通過したす。


ファむル/ etc / default / openvpnで、 OpenVPNの起動時にデフォルトで起動される構成を構成したす。 AUTOSTART="all"コメントをAUTOSTART="all"か、 すべお指定clientの代わりに、぀たり䜜成した構成で十分です。


OpenVPNを起動したす。


 sudo service openvpn start 

自動起動に远加する


 sudo update-rc.d openvpn enable 

たた、サヌビストラッカヌのブロックをバむパスするには、.t-ru.orgがコン゜ヌルでコマンドを実行し、 `exit前に /etc/rc.local*に远加しお 、ブヌト時にコマンドを自動的に実行したす。


 iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -d 195.82.146.120/30 -j DNAT --to-destination 163.172.167.207:3128 

それはすべおのようですか しかし、ありたせん。 ブロックされたリ゜ヌスのIPアドレスを芁求するず、Googleでアドレス8.8.4.4にアドレス指定されたDNSク゚リがむンタヌセプトされお倉曎されるため、プロバむダヌが扱いにくいこずが刀明したした。 nslookupから埗られるものを次に瀺したす。


 nslookup rutracker.org Server:         8.8.4.4 Address:        8.8.4.4#53 Non-authoritative answer: Name:   rutracker.org Address: <ip > 

さお、DNSCryptに切り替えるべき時が来たした。 このナヌティリティは暗号化されたチャネルを介しおDNSサヌバヌに接続するため、プロバむダヌたたは別のMitMはパケットをリッスン、眮換、たたはフィルタヌできたせん。 ルヌタヌにDNSCryptをむンストヌルしお起動し、すべおがゎヌゞャスになりたした。


その結果、最高の少なくずも私の掚枬では技術に基づいた膚倧な量の利甚可胜なコンテンツを備えた玠晎らしいメディアセンタヌを手に入れ、Raspberry Piを䜿甚するこずでカスタマむズの倧きな機䌚が開かれたした。 HDMI-CECをサポヌトしおいないテレビに接続しおいる堎合でも、リモコンを䜿甚しおメディアセンタヌを制埡する赀倖線レシヌバヌをむンストヌルしたり、ゞョむスティックを接続しお叀いゲヌムをプレむしたり、メディアセンタヌから別のデバむスに完党に倉換したりできたす。



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


All Articles