有線BOINCを使用してライブ配信を構築し、ネットワーク経由で配信することが決定されました。 コンピューターの電源を入れ、F12を押し、目的のアイテムを選択しました-そしてすでに人類に利益をもたらします!
プラットフォームはDebianによって選択されました。a)長い間馴染みがあり、b)このトピックに関するすばらしいマニュアルがあります。 それにも関わらず、レーキはなくてはならず、この場合、ほとんどすべての新しいレーキは、イメージのかなり長い再組み立てを意味します。 この投稿が管理者の時間を節約すると同時に、WCGのようなすばらしいプロジェクトの存在を思い出すことを願っています。
すべてが非常に閉鎖された環境で行われ、セキュリティにほとんど注意を払う必要がなかったことに注意してください。 おそらく、あなたの場合、セキュリティには追加の作業が必要になります。
準備する
システムは次のもので構成されています。
- ネットワークブートサーバー。
- NFSサーバー
- 組立ステーション
1.ネットワークブートサーバー。 すべての準備が整ったので、構成済みのTFTPとDHCPは、プロジェクトからシンクライアント用に残されました。 そうでない場合は、新しいものを選ぶのは簡単です。 一言で言えば、tftpd-hpaをインストールして実行し、DHCPでパラメーター66と67を指定します。ネットワークに誰も入れないでください(私の場合、これらは士官候補生です)。これは危険です。 BIOSに加えて、TFTPサーバーのブートメニューの一部をパスワードで保護できます。
2. NFSサーバー。 まず、BOINCはそのプロセスでデータを保存できるはずです。 ローカルハードドライブに触れることができないことを前提としているため、NFSが
/srv/boinc-nfs
などのディレクトリに書き込むことを許可します。 ここで、各コンピューターは、MACアドレスと一致する名前のサブディレクトリを作成します。 第二に、
/srv/debian-live
ディレクトリは、ネットワークブートのルートFSになります。 だから:
mkdir /srv/debian-live mkdir /srv/boinc-nfs chown nobody:nogroup /srv/boinc-nfs chmod 755 /srv/boinc-nfs
/etc/exports
追加します。
/srv/boinc-nfs *(rw,sync,no_root_squash,no_subtree_check) /srv/debian-live *(ro,async,no_root_squash,no_subtree_check)
その後、サービスを再起動します(何らかの理由で、推奨される
exportfs -rv
結果が得られませんでした)。
/etc/init.d/nfs-kernel-server restart
3.アセンブリステーション。 通常のDebian Wheezyを備えた単なる仮想マシンです。
live-build
パッケージがインストールされ、メインジョブが実行されます。 ここにインターネットがあるはずです。
組立工程
集合ステーションに向かいます。
mkdir /srv/live-default && cd /srv/live-default
NFSサーバーのアドレスを指定して、ディストリビューションの基本構成を作成します。
lb config -b netboot --net-root-path "/srv/debian-live" --net-root-server "192.168.15.20"
ディレクトリの特定のツリーが形成され、その中に異なるコンテンツがあります。アセンブリをカスタマイズできます。 以下を追加します。
1.
config/package-lists/boinc.list
アセンブリに必要なパッケージのリスト。 書き込みます:
boinc-client nfs-common
2.
config/includes.chroot/etc/init.d/boinc-preps
-NFSをマウントし、BOINCを構成し、ホスト名を変更するinitスクリプト( おそらく同じホスト名がWCGによるコンピューターの識別を妨げ、多くのタスクが実行されます)切り離された状態)。 このスクリプトでは、NFSのアドレスと、パスワードなしの管理が許可されるホストのアドレスを挿入する必要があります。 スクリプトの内容:
#!/bin/bash ### BEGIN INIT INFO # Provides: boinc-preps # Required-Start: nfs-common # Required-Stop: # Should-Start: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Various stuff for BOINC # Description: Various stuff for BOINC ### END INIT INFO PATH=/sbin:/usr/sbin:/bin:/usr/bin . /lib/init/vars.sh do_start () { MYMAC=`ifconfig eth0 | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}' | sed s/://g` ancien=`hostname` nouveau=DYNWCG-$MYMAC mkdir -p /mnt/boinc-nfs mount 192.168.15.20:/srv/boinc-nfs /mnt/boinc-nfs && mkdir -p /mnt/boinc-nfs/$MYMAC service boinc stop sed -i "s/^BOINC_DIR=.*/BOINC_DIR=\/mnt\/boinc-nfs\/$MYMAC/;s/^BOINC_USER=.*/BOINC_USER=\"root\"/" /etc/default/boinc-client echo "192.168.10.60" > /mnt/boinc-nfs/$MYMAC/remote_hosts.cfg echo "192.168.10.61" >> /mnt/boinc-nfs/$MYMAC/remote_hosts.cfg echo "" >> /mnt/boinc-nfs/$MYMAC/gui_rpc_auth.cfg for file in \ /etc/hostname \ /etc/hosts # #/etc/ssh/ssh_host_rsa_key.pub \ #/etc/ssh/ssh_host_dsa_key.pub \ # SSH do [ -f $file ] && sed -i.old -e "s:$ancien:$nouveau:g" $file done invoke-rc.d hostname.sh start invoke-rc.d networking force-reload service boinc start } case "$1" in start|"") do_start ;; restart|reload|force-reload|status) echo "Error: argument '$1' not supported" >&2 exit 3 ;; stop) # NOP exit 3 ;; *) echo "Usage: ... [start|stop]" >&2 exit 3 ;; esac :
3.
config/hooks/boinc-preps-init.chroot
アセンブリ中に実行され、前のアイテムから
boinc-preps
をオートロードに追加する1つのコマンドからのスクリプト:
#!/bin/sh update-rc.d boinc-preps defaults
必要な設定を追加した後、アセンブリ自体を開始します。
lb build
この値は、結果の
binary.netboot.tar
ファイルです。
/srv
ます。
cd /srv && tar -xvf live-default/binary.netboot.tar
/srv/debian-live
(ネットワークブートのルートFS)および
/srv/tftpboot
(TFTPサーバーのファイル)に解凍されます。 私の場合、アセンブリステーションとNFSサーバーは1台のコンピューターであるため、
/srv/debian-live
既にその場所にあります。
tftpboot
の内容は既製のブートメニューであり、TFTPサーバーに配置する必要があります。 私は自分のメニューで動作するTFTPサーバーを持っているので、その動作を確認しませんでした。ここからはデータの一部だけが必要でした。 最初に、すべてのファイルを
tftpboot/live/
からTFTPサーバーに
images/debian-live/
(TFTPサーバーのルートディレクトリに相対的)でコピーしました。 次に、
tftpboot/live.cfg
からテキストを借用して、新しいメニュー項目を追加し、この状態に変更します(ここでは、NFSサーバーのアドレスも指定する必要があります)。
label live-686-pae menu label BOINC-live (686-pae) linux images/debian-live/vmlinuz1 initrd images/debian-live/initrd1.img append boot=live config nosplash root=/dev/nfs nfsroot=192.168.15.20:/srv/debian-live
今、すべてがその場所にあります。
アセンブリ後にルートFSの内容を確認する場合は、ルートFSで起動する必要はありません;単にループデバイスとしてマウントできます。
mount -o loop,ro /srv/debian-live/live/filesystem.squashfs /mnt/squash/
新しいパラメーターでディストリビューションを再構築する必要がある場合は、その前に
lb clean --binary
または
lb clean
を実行できます。
使用する
- コンピューターの電源を入れ、ネットワーク経由でブートを選択します(通常はF12キーを押してください)。
- ブートメニューに応じて、「BOINC-live」項目を選択するか、タイムアウトによってロードされるまで単に待機します。
- 表示されるコマンドラインで(すべてが正常に実行された場合)、
sudo ifconfig
(パスワードを入力する必要はありません)を書き込み、IPアドレスを書き込みます。 - 制御コンピューター(
config/includes.chroot/etc/init.d/boinc-preps
指定したコンピューターの1つ)でboinc-managerを実行し、「詳細-コンピューターの変更」をクリックします(このボタンは「フルビュー」のみにあります) ) この場合、BOINCはユーザーにパスワードを要求しないでください。 - 接続後、ウィザードが表示されます。このウィザードでは、プロジェクト(私の場合はWorld Community Grid)を選択し、ログイン/パスワードを入力する必要があります。
すべて数分で、「実行準備完了」および「動作」状態の新しいタスクが作成されます。
この手順は、各コンピューター(より正確には、各MACアドレス)に対して1回だけ実行する必要があります。 別の場所で長い操作を行った後に戻ってきても、コンピューターはNFSサーバー上のMACアドレスでデータを見つけ、電源を入れた直後に動作を続けます(一部のタスクのみが既に期限切れになりますが、これは些細なことで、新しいタスクを受け取ります)。
まとめ
未解決のままであるもの:
- WCGでの自動ログイン。 おそらく、プロジェクトの設定を画像に埋め込むと、手で何も入力する必要はありませんが、許容できる時間内に解決策がグーグルにならなくなります。
- メール通知。 「sudo ifconfig」を入力しないようにするために、起動したコンピューターのアドレスを管理者に自動的に送信できます。 しかし、私は松葉杖を持っていたのでこれをしませんでした。代わりに前の段落を実装する方が良いです。
- NFSサーバーのIPは2回表示されますが、おそらくそのうちの1つを削除できます。
- eth0インターフェイスのMACアドレスは、コンピューターディレクトリの作成に常に使用されます。 良いかどうか、私は確かに言うことはできません。
コンピューターを退屈させないでください! そしてコメントを書いて、私は喜んで記事に答えるか補足します。