PBFT to red hat 7.2のインストール

11102 ワード

1.Red Hat 7.2を取り付ける
物理マシン:ubuntu 12.04+仮想マシン:kvm
仮想マシンマネージャvirt-managerを使用してred hat 7.2をインストールします(ISOファイル:enigma-i 386-disc 1.iso+enigma-i 386-disc 2.iso)
仮想マシンを構築するステップ5の高度なオプションのネットワークモードで、ブリッジbr 0を使用する「Specify shared device name」を選択する.ubuntuにブリッジを設定する
auto lo                                                                              
iface lo inet loopback

auto br0 
iface br0 inet static
bridge_ports eth0
address 192.168.1.2
netmask 255.255.255.0
gateway 192.168.1.1

 
「Installation Type」を選択する場合は、「customインストール」を選択します.
ディスクのパーティション化
ubuntuで確立したブリッジアドレスに基づいてip(本人ipは192.168.1.1150に設定)を設定し、dhcp方式を使用しない
rootパスワードを入力してユーザーを作成
「Package Group Selection」を選択する場合、「Network Support」と「Software Development」のみが保持されます.「Individual Package Selection」にチェックマークを付けた後、「Applications/Internetのopensshに関するものをすべて選択して依存パッケージをインストールします.これにより、全体のインストールサイズは494 MBしかありません.
インストールを開始します.インストール中に一度ディスクを交換します.virt-managerでインストールするとディスクが交換しやすくなります.「グラフィックスコンソールの表示」から「仮想ハードウェアの詳細の表示」バーに切り替え、IDE CDROMを切断し、新しいisoファイルを交換してから使用できます.
インストール完了後IDE CDROMをオフにしてシステムを再起動する
2.Red Hat 7.2の設定
1.sshを構成し、パスワードなしログインを実現する
red hatでscpを使用してenigma-i 386-disc 1から.isoではopenssh-server-2.9 p 2-7を.i386.rpmをローカルに引き出してインストールすると、「rpm-qa|grep openssh」にopenssh-clientが表示され、openssh-serverがインストールされます.
物理マシンで
ssh-keygen -t rsa
scp id_rsa.pub york@192.168.1.150:/home/york

仮想マシンで/etc/ssh/sshd_を変更するconfigは
RhostsAuthentication yes
RhostsRSAAuthentication yes
RSAAuthentication yes
PasswordAuthentication yes
PermitEmptyPasswords no

pubファイルをauthorzied_に入力しますkeys、authorized_を変更keys権限は600で、authorized_をコピーします.keysはauthorized_keys2
cat id_rsa.pub >> .ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
cp ~/.ssh/authorized_keys ~/.ssh/authorized_keys2

この場合、パスワードなしで接続できるはずです(物理マシンは仮想マシンに接続されています).
2.rootユーザーを使用して起動時間「vi/etc/grub.conf」を変更し、timeoutを1に変更
3.セルフスタートアップサービス構成プログラムntsysvでsendmailサービスをキャンセルする
4.変更/home/ユーザー/.bash_profile、PATHの後に:/sbin:/usr/sbin:/usr/local/sbin:/usr/kerberos/sbinというパスを追加します.次にコマンド:source.bash_Profile、これはユーザーの環境変数を変更して、ユーザーが他のコマンドを使用できるようにします
3.インストーラ
1.gmp-5.0.5.tar.bz2, sfs-0.6.tar.gz, vim-7.3.tar.bz2, bft-base-src-rh72.tar.gzはscpにより仮想マシンにコピーする
vim,,gmp,sfsを順番にインストール
./configure
make
make install

sfsをインストールするときにsfsグループとユーザーを作成し、configure,make,make install
groupadd sfs;useradd -g sfs sfs

2.最後にbftのlibbyzをコンパイルし、その前にsfsとgmpのヘッダファイルフォルダをリンクする
ln -s /usr/local/include/sfs-0.6 sfs
ln -s ~/bft/gmp-5.0.5 gmp

sfs(/usr/local/include/sfs-0.6)のrabinを再修正する.hの関数(line 62,line 102)
-- Patch the file sfs/rabin.h to add the following method
to rabin_pub:

 bool verify (const char *msg, const unsigned sz, const bigint &s) const {
    bigint m;
    E2 (m, s);
    D1 (m, m);
    sha1ctx sc;
    sc.update (msg, sz);
    return post_verify (&sc, m, nbits);
  }

and the following method to rabin_priv:

bigint sign (const char *msg, unsigned len) const {
    sha1ctx sc;
    sc.update(msg, len);
    bigint m = pre_sign (&sc, nbits);
    E1 (m, m);
    D2 (m, m, rnd.getword ());
    return m;
  }

注記gmp/gmp.h中の4行(line 2227)
#ifdef __cplusplus
__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpz_srcptr);
//__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpq_srcptr);      
//__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpf_srcptr);
__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpz_ptr);
//__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpq_ptr);
//__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpf_ptr);
#endif

最後にlibbyzをコンパイル(libbyzでmakeを実行)
3.difsとsimpleのコンパイル
simpleのmakefileのLIBDRIS行の後ろに「-L/usr/local/lib/sfs-0.6/」(スペース注意)を付ける
そしてmakeはコンパイルで
4.pbftの構成
1.config_をprivateはsimpleにリンクしconfig_private/configもsimpleにコピー
ln -s ../config_private/
cp config_private/config .

2.必要に応じてプロファイルconfigを変更します(serverは前に置いて、後ろはclientで、mbft_0はclientとして他のreplicaとして必要です)
generic
1
1800000
5
234.5.6.8 3669
mbft_1 192.168.1.151 3669 bfaa873efc926cb91646a89e45f96582041e3eed35cde0ef60b5c006cfad883781ee807411b0df3c74dc3ebbbce59c21d67711c83ecf596357c23dba33da338fb5577179a3b6188c59590aa1301eb852c0e14fa9225c0b377fee944eb9fa110ad7a316269e4b13b153887426a347c7c3c5feb1e3107bac4c6e29327b3343c405
mbft_2 192.168.1.152 3669 bfaa873efc926cb91646a89e45f96582041e3eed35cde0ef60b5c006cfad883781ee807411b0df3c74dc3ebbbce59c21d67711c83ecf596357c23dba33da338fb5577179a3b6188c59590aa1301eb852c0e14fa9225c0b377fee944eb9fa110ad7a316269e4b13b153887426a347c7c3c5feb1e3107bac4c6e29327b3343c405              mbft_3 192.168.1.153 3669 bfaa873efc926cb91646a89e45f96582041e3eed35cde0ef60b5c006cfad883781ee807411b0df3c74dc3ebbbce59c21d67711c83ecf596357c23dba33da338fb5577179a3b6188c59590aa1301eb852c0e14fa9225c0b377fee944eb9fa110ad7a316269e4b13b153887426a347c7c3c5feb1e3107bac4c6e29327b3343c405
mbft_4 192.168.1.154 3669 bfaa873efc926cb91646a89e45f96582041e3eed35cde0ef60b5c006cfad883781ee807411b0df3c74dc3ebbbce59c21d67711c83ecf596357c23dba33da338fb5577179a3b6188c59590aa1301eb852c0e14fa9225c0b377fee944eb9fa110ad7a316269e4b13b153887426a347c7c3c5feb1e3107bac4c6e29327b3343c405
mbft_0 192.168.1.150 3669 bfaa873efc926cb91646a89e45f96582041e3eed35cde0ef60b5c006cfad883781ee807411b0df3c74dc3ebbbce59c21d67711c83ecf596357c23dba33da338fb5577179a3b6188c59590aa1301eb852c0e14fa9225c0b377fee944eb9fa110ad7a316269e4b13b153887426a347c7c3c5feb1e3107bac4c6e29327b3343c405
5000
150
9999250000
// The format is:
// Service name
// Maximum number of faults
// Authentication period (ms)
// Number of principals (excluding group)
// IP multicast group address and port
// domain_name IP_address port public_key_base16
// .... (x Number of principals)
// Then the replica specific portion
// view change timeout in mseconds
// status timeout in mseconds
// recovery timeout in mseconds

3./etc/hostsに最初の非コメント行を追加する(最初に検出されるべき)
192.168.1.150   mbft_0

これでsimpleで./サーバはreplicaを構築できます
4.virt-managerを使用して仮想マシンをコピーし、コピーが完了したら設定する必要がある
/etc/hostsに入ります.IPとホスト名の変更
/etc/sysconfig/networkホスト名の変更;
netconfigを利用してipアドレスを修正する.
完了したらsimple,mbft_に入ります1-4号機で実行./server mbft_0号機で実行./クライアントは実行結果を見ることができます
(詳細なエラー原因とデバッグ手順はここでは省略します.参照する必要がある場合は、http://www.cnblogs.com/york-hust/category/394202.htmlを突き刺してインストールlogを確認してください)