-
Notifications
You must be signed in to change notification settings - Fork 0
/
support.html
278 lines (231 loc) · 10.2 KB
/
support.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
<!DOCTYPE html>
<html>
<title>Documents</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Montserrat">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js?lang=css&skin=default"/>
</script>
<style>
.post .prettyprint {
overflow-x:auto;
overflow-y:auto;
max-height:400px;
}
</style>
<style>
body,h1,h2,h3,h4,h5,h6 {font-family: "Lato", sans-serif}
.w3-bar,h1,button {font-family: "Montserrat", sans-serif}
.fa-coffee {font-size:200px}
li.L0, li.L1, li.L2, li.L3,
li.L5, li.L6, li.L7, li.L8 {
list-style-type: decimal !important;
}
a:hover {
color: dimgray;
background-color: transparent;
}
li {
line-height: 32px; /* 設定文字行距 */
}
</style>
<body>
<!-- Navbar -->
<div class="w3-top">
<div class="w3-bar w3-dark-grey w3-card-4 w3-left-align w3-large">
<a class="w3-bar-item w3-button w3-hide-medium w3-hide-large w3-right w3-padding-large w3-hover-white w3-large w3-red" href="javascript:void(0);" onclick="myFunction()" title="Toggle Navigation Menu"><i class="fa fa-bars"></i></a>
<a href="home.html" class="w3-bar-item w3-button w3-padding-large w3-hover-white">Home</a>
<a href="support.html" class="w3-bar-item w3-button w3-hide-small w3-padding-large w3-white">Documents</a>
<!-- <a href="contact.html" class="w3-bar-item w3-button w3-hide-small w3-padding-large w3-hover-white">Contribute</a> -->
<a href="https://github.com/Cuju-ft/Cuju" class="w3-bar-item w3-button w3-hide-small w3-padding-large w3-hover-white">Source</a>
</div>
<!-- Navbar on small screens -->
<div id="navDemo" class="w3-bar-block w3-white w3-hide w3-hide-large w3-hide-medium w3-large">
<a href="home.html" class="w3-bar-item w3-button w3-padding-large">Home</a>
<a href="support.html" class="w3-bar-item w3-button w3-padding-large">Documents</a>
<!-- <a href="contact.html" class="w3-bar-item w3-button w3-padding-large">Contribute</a> -->
<a href="https://github.com/Cuju-ft/Cuju" class="w3-bar-item w3-button w3-padding-large">Source</a>
</div>
</div>
<!-- First Grid -->
<div class="w3-row-padding w3-padding-64 w3-container">
<div class="w3-content">
<div class="w3-twothird">
<h2>Cuju Start Guide</h2>
<h3>Cuju test execution environment</h3>
<HR>
<ul>
<li>If you just want to test Cuju, you can use this qemu disk image(cuju-diskQ-c.img) and follow the Setup document to setup qemu let it can execute this disk image </li>
<ul><li><a href="https://drive.google.com/drive/folders/1O4p1VxFXt80DWkdZFXlRxfMyzR3cqQip">Cuju execution environment qemu disk image and Setup document</a> </li></ul>
<ul></ul>
</ul>
<h3>The environment prepare</h3>
<HR>
<ul>
<li>Assume you have already builded Primary, Backup and NFS node</li>
<ul style="list-style-type:square">
<li style="color:lightslategray; font-style:oblique; font-weight:bold;">A recommended topology
<a href="topology.png" target="_blank">below</a>:</li>
<img border=0 src="topology.png" width="100%" title="Cuju topology" id="Img3">
</ul>
<ul>
<li>If you only have one or two machine, you can reference this setting</li>
<ul style="list-style-type:square">
<li style="color:lightslategray; font-style:oblique; font-weight:bold;">Another recommended topology
<a href="topology2.png" target="_blank">below</a>:</li>
<img border=0 src="topology2.png" width="100%" title="Cuju topology" id="Img3">
</ul>
<li>Open the Intel virtualization support (VT-x) in your bios.</li>
<li>Install OS in all nodes: <a href="https://drive.google.com/file/d/0B9au9R9FzSWKUjRZclBXbXB0eEk/view">Ubuntu-16.04-desktop-amd64.iso</a> </li>
<li> Install related packages in all nodes</li>
<pre class="prettyprint" id="quine"> $ sudo apt-get update
$ sudo apt-get install vim gcc make gdb fakeroot build-essential \
kernel-package libncurses5 libncurses5-dev zlib1g-dev \
libglib2.0-dev qemu xorg bridge-utils openvpn vncviewer \
libssl-dev libpixman-1-dev nfs-common
</pre>
<li> Set up the bridge and network environment </li>
<ul><li> You can follow our recommended topology to set up the network environment </li></ul>
<ul><li> The example of network interfaces set up below (edit your /etc/network/interfaces):</li></ul>
<pre class="prettyprint linenums"><code>#NFS node
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.11.1
netmask 255.255.255.0
gateway 192.168.11.254
dns-nameservers 8.8.8.8 </code>
</pre>
<pre class="prettyprint linenums"><code>#Primary node
auto lo
iface lo inet loopback
auto br0
iface br0 inet static
bridge_ports eth0
bridge_maxwait 0
address 192.168.11.2
netmask 255.255.255.0
gateway 192.168.11.254
dns-nameservers 8.8.8.8
auto eth0
iface eth0 inet static
address 0.0.0.0
auto eth1
iface eth1 inet static
address 192.168.111.1
netmask 255.255.255.0 </code>
</pre>
<pre class="prettyprint linenums"> <code>#Backup node
auto lo
iface lo inet loopback
auto br0
iface br0 inet static
bridge_ports eth0
bridge_maxwait 0
address 192.168.11.3
netmask 255.255.255.0
gateway 192.168.11.254
dns-nameservers 8.8.8.8
auto eth0
iface eth0 inet static
address 0.0.0.0
auto eth1
iface eth1 inet static
address 192.168.111.2
netmask 255.255.255.0 </code>
</pre>
<ul><li>Build the high-speed connections with Primary and Backup nodes by the eth1</li></ul>
<ul><li>After editing these network interfaces, type "/etc/init.d/networking restart" or reboot</li></ul>
<li>Install the NFS service (Network FileSystem) in NFS node; then create a NFS forder placing the VM image</li>
<pre class="prettyprint"> $ sudo apt-get install nfs-kernel-server</pre>
<ul><li>Insert this line in "/etc/exports" to add your NFS forder: </li></ul>
<pre class="prettyprint"> /home/[your username]/nfsfolder *(rw,no_root_squash,no_subtree_check) </pre>
<ul><li>After editing /etc/exports, type "/etc/init.d/nfs-kernel-server restart" or reboot</li></ul>
<li>Install the NFS client in Primary and Backup nodes; then mount the NFS forder</li>
<pre class="prettyprint"> $ apt-get install nfs-common
$ mount -t nfs 192.168.11.1:/home/[your username]/nfsfolder /home/[your username]/data</pre>
<li>In NFS node, go to your nfs forder, then download
<a href="https://github.com/Cuju-ft/Cuju" target="_blank">Cuju</a>
and build a VM image file (or download our <a href="https://drive.google.com/file/d/0B9au9R9FzSWKNjZpWUNlNDZLcEU/view?usp=sharing"> Ubuntu-16.04 VM image file</a>, the account/password is root/root), they will be synced with Primary and Backup node.</li>
<li>Before launching your VM, you should update kvm module in Primary and Backup nodes: </li>
<ul><li>reinsmodkvm.sh</li></ul>
<pre class="prettyprint linenums">#!/bin/sh
cd /your_work_path/Cuju/kvm
lsmod | grep kvm
sudo rmmod kvm_intel
sudo rmmod kvm
sudo modprobe irqbypass
sudo insmod ./x86/kvm.ko
sudo insmod ./x86/kvm-intel.ko
lsmod | grep kvm
</pre>
<li>Execute "reinsmodkvm.sh" before launching VM in Primary and Backup nodes </li>
</ul>
<h3>Cuju Compile and Execute</h3>
<ul>
<li>See README.md on <a href="https://github.com/Cuju-ft/Cuju/blob/master/README.md"> GitHub </a></li>
</ol>
</div>
</div>
</div>
<!-- Second Grid -->
<div class="w3-row-padding w3-light-grey w3-padding-64 w3-container">
<div class="w3-content">
<div class="w3-third w3-center">
<img border=0 src="cuju_fig.png" width="50%" title="Cuju" >
</div>
<div class="w3-twothird">
<h2>Support</h2>
<ul>
<li> <h4>Papers </h4></li>
<ul style="list-style-type:square">
<li style="color:lightslategray; font-style:oblique; font-weight:bold;">P.-J. Tisao, Y.-F. Sun, L.-H. Chen and C.-Y. Cho, "Efficient Virtualization-Based Fault Tolerance," In: International Computer Symposium (ICS), 2016.
</li>
</ul>
</ul>
<ul>
<li> <h4>Presentations </h4></li>
<ul style="list-style-type:square">
<li style="color:lightslategray; font-style:oblique; font-weight:bold;">P.-J. Tisao and Y.-S. Lin, <a href="https://drive.google.com/file/d/0B9au9R9FzSWKalFhLUh5Zkk2ckU/view">"Cuju: An Open Source Project for Virtualization-Based Fault Tolerance,"</a> In: Conference for Open Source Coders, Users and Promoters (COSCUP), Taipei, Taiwan, August, 2017.</li>
</ul>
</ul>
<ul>
<li> <h4>Developements </h4></li>
<ul style="list-style-type:square">
<li style="color:lightslategray; font-style:oblique; font-weight:bold;">Cuju project source is based on<a href="https://www.qemu.org/"> QEMU 2.8.0</a></li>
</ul>
<ul style="list-style-type:square">
<li style="color:lightslategray; font-style:oblique; font-weight:bold;"><a href="cujuft_binary_version_guide.pdf">Experimental binary version guide</a></li>
</ul>
</ul>
</div>
</div>
</div>
<!--
<div class="w3-container w3-center w3-black w3-opacity w3-padding-64">
<i class="fa fa-flask" style="font-size:60px;"></i>
<br>
<a href="https://hackmd.io/OwFgbARsCGYAwFoQFMwBMkGZ4IBwQDNcEI4CAmOZAY2DQmVyA===?view" target="_blank">Experiment Results</a>
</div>
-->
<script>
// Used to toggle the menu on small screens when clicking on the menu button
function myFunction() {
var x = document.getElementById("navDemo");
if (x.className.indexOf("w3-show") == -1) {
x.className += " w3-show";
} else {
x.className = x.className.replace(" w3-show", "");
}
}
function scrollWin(x, y) {
window.scrollBy(x, y);
}
</script>
</body>
</html>