-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
203 lines (174 loc) · 8.59 KB
/
Makefile
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
SRC_ROOT=/scrap/matanb
KERNEL_SRC=$(SRC_ROOT)/linux
# VMware
VMWARE_VM=$(SRC_ROOT)/src/vm-machines/archlinux/archlinux.vmx
VMWARE_VM_REPACK=$(SRC_ROOT)/src/vm-machines/archlinux/archlinux-000001.vmdk
# KVM
#KVM_RELEASE=wheezy
#KVM_RELEASE=jessie
KVM_RELEASE=sid
KVM_PACKAGES=openssh-server,python,perl,vim,pciutils,ibverbs-utils,libibverbs-dev,libmlx5-dev,infiniband-diags,opensm,librdmacm-dev,rdmacm-utils,libnl-3-200,libnl-route-3-200,gdb
KVM_SHARED=$(SRC_ROOT)/kvm_shared
KVM_SHARED_USER=$(KVM_SHARED)/usr
KVM_SHARED_MODULES=$(KVM_SHARED)/modules
KVM_IMAGE=$(SRC_ROOT)/dev-scripts/build
RDMACORE_SRC=$(SRC_ROOT)/rdma-core
# SimX
#SIMX_BIN=$(SRC_ROOT)/simx_bin/bin/qemu-system-x86_64
SIMX_BIN=$(SRC_ROOT)/simx/x86_64-softmmu/qemu-system-x86_64
# LIBS
LIBIBVERBS_SRC=$(SRC_ROOT)/libibverbs/
LIBMLX5_SRC=$(SRC_ROOT)/libmlx5/
LIBRDMACM_SRC=$(SRC_ROOT)/librdmacm
# Strace
STRACE_SRC=$(SRC_ROOT)/strace-code/
ssh:
@ssh root@localhost -p4444
kvm:
@echo "Start KVM image"
@# add -s option for running gdb
@# and run "ggb vmlinux"
@kvm -kernel $(KERNEL_SRC)/arch/x86_64/boot/bzImage -drive \
file=$(KVM_IMAGE)/$(KVM_RELEASE).img,if=virtio,format=raw \
-append 'root=/dev/vda console=hvc0 debug rootwait rw' \
-chardev stdio,id=stdio,mux=on,signal=off \
-device virtio-serial-pci \
-device virtconsole,chardev=stdio \
-mon chardev=stdio \
-display none \
-net nic,model=virtio,macaddr=52:54:00:12:34:56 \
-net user,hostfwd=tcp:127.0.0.1:4444-:22 \
-fsdev local,id=fs1,path=/images/SOURCE,security_model=passthrough \
-device virtio-9p-pci,fsdev=fs1,mount_tag=host-code
simx:
@echo "Start SimX image"
@# add -s option for running gdb
@# and run "ggb vmlinux"
@TERM=xterm-256color $(SIMX_BIN) -enable-kvm -kernel $(KERNEL_SRC)/arch/x86/boot/bzImage -drive \
file=$(KVM_IMAGE)/$(KVM_RELEASE).img,if=virtio,format=raw \
-no-reboot -nographic \
-m 1024M -append 'root=/dev/vda console=hvc0 debug rootwait rw' \
-chardev stdio,id=stdio,mux=on,signal=off \
-device virtio-serial-pci \
-device virtconsole,chardev=stdio \
-mon chardev=stdio \
-display none \
-net nic,model=virtio,macaddr=52:54:00:12:34:56 \
-net user,hostfwd=tcp:127.0.0.1:4444-:22 \
-fsdev local,id=fs1,path=$(SRC_ROOT),security_model=passthrough \
-device virtio-9p-pci,fsdev=fs1,mount_tag=host-code \
-fsdev local,id=fs2,path=$(KVM_SHARED_USER),security_model=passthrough \
-device virtio-9p-pci,fsdev=fs2,mount_tag=user \
-fsdev local,id=fs3,path=$(KVM_SHARED_MODULES)/lib/modules,security_model=passthrough \
-device virtio-9p-pci,fsdev=fs3,mount_tag=modules \
-netdev user,id=hostnet0 -device e1000,netdev=hostnet0,id=net0,mac=00:50:56:18:25:09 \
-netdev tap,id=hostnet1,ifname="simx_tap0",script=./qemu-ifup -device connectx4,netdev=hostnet1,id=net1,mac=52:54:00:b5:47:32 \
-netdev tap,id=hostnet2,ifname="simx_tap1",script=./qemu-ifup -device connectx4,netdev=hostnet2,id=net2,mac=52:54:00:b5:47:34 \
# -device vfio-pci,host=04:00.0,id=hostdev0,bus=pci.0,addr=0xa,rombar=0 \
# -device vfio-pci,host=04:00.1,id=hostdev1,bus=pci.0,addr=0xb,rombar=0
simx1:
@echo "Start SimX image"
@# add -s option for running gdb
@# and run "ggb vmlinux"
@TERM=xterm-256color $(SIMX_BIN) -enable-kvm -kernel $(KERNEL_SRC)/arch/x86/boot/bzImage -drive \
file=$(KVM_IMAGE)/$(KVM_RELEASE).img,if=virtio,format=raw \
-no-reboot -nographic \
-m 1024M -append 'root=/dev/vda console=hvc0 debug rootwait rw' \
-chardev stdio,id=stdio,mux=on,signal=off \
-device virtio-serial-pci \
-device virtconsole,chardev=stdio \
-mon chardev=stdio \
-display none \
-net nic,model=virtio,macaddr=52:54:00:12:34:57 \
-net user,hostfwd=tcp:127.0.0.1:4445-:22 \
-fsdev local,id=fs1,path=$(SRC_ROOT),security_model=passthrough \
-device virtio-9p-pci,fsdev=fs1,mount_tag=host-code \
-fsdev local,id=fs2,path=$(KVM_SHARED_USER),security_model=passthrough \
-device virtio-9p-pci,fsdev=fs2,mount_tag=user \
-fsdev local,id=fs3,path=$(KVM_SHARED_MODULES)/lib/modules,security_model=passthrough \
-device virtio-9p-pci,fsdev=fs3,mount_tag=modules \
-netdev user,id=hostnet0 -device e1000,netdev=hostnet0,id=net0,mac=00:50:56:18:25:0a \
-netdev tap,id=hostnet1,ifname="simx1_tap0",script=./qemu-ifup -device connectx4,netdev=hostnet1,id=net1,mac=52:54:00:b5:47:33
kvm-prepare-folder:
@echo "Build Debian $(KVM_RELEASE) image"
@sudo rm -rf build
@mkdir -p build/kvm-image
@sudo debootstrap --include=$(KVM_PACKAGES) $(KVM_RELEASE) build/kvm-image http://debian.co.il/debian/
@sudo sed -i '/^root/ { s/:x:/::/ }' build/kvm-image/etc/passwd
@echo 'V0:23:respawn:/sbin/getty 115200 hvc0' | sudo tee -a build/kvm-image/etc/inittab
@printf '\nauto eth0\niface eth0 inet dhcp\n' | sudo tee -a build/kvm-image/etc/network/interfaces
@printf '\nMaxLevelConsole=crit\n' | sudo tee -a build/kvm-image/etc/systemd/journald.conf
@echo 1
@sudo mkdir build/kvm-image/root/.ssh/
@sudo mkdir build/kvm-image/home/code
@sudo mkdir build/kvm-image/lib/modules
@echo 2
@sudo rm -rf build/kvm-image/usr/local/*
@echo 3
@printf 'host-code /home/code 9p defaults 0 0\nuser /usr/local 9p defaults 0 0\nmodules /lib/modules 9p defaults 0 0\n' | sudo tee -a build/kvm-image/etc/fstab
@echo 4
@cat ~/.ssh/id_?sa.pub | sudo tee build/kvm-image/root/.ssh/authorized_keys
kvm-make-img:
@dd if=/dev/zero of=build/$(KVM_RELEASE).img bs=1M seek=4095 count=1
@mkfs.ext4 -F build/$(KVM_RELEASE).img
@sudo mkdir -p build/mnt-$(KVM_RELEASE)
@sudo mount -o loop build/$(KVM_RELEASE).img build/mnt-$(KVM_RELEASE)
@sudo cp -a build/kvm-image/. build/mnt-$(KVM_RELEASE)/.
@sudo umount build/mnt-$(KVM_RELEASE)
@sudo rm -rf build/mnt-$(KVM_RELEASE)
@echo "Image was built successfuly"
kvm-image: kvm-prepare-folder kvm-make-img
clean-kvm-image:
@sudo rm -rf build/$(KVM_RELEASE).img build/mnt-$(KVM_RELEASE) build/kvm-image
vmware-config:
@cp configs/vmware-config $(KERNEL_SRC)/.config
kvm-config:
@cp configs/kvm-config $(KERNEL_SRC)/.config
clean-shared:
@rm -rf $(KVM_SHARED)/*
libs:
@echo "Build libibverbs"
@cd $(LIBIBVERBS_SRC)/; ./autogen.sh; ./configure --prefix=$(KVM_SHARED_USER) --sysconfdir=/etc CFLAGS="-I$(KVM_SHARED_USER)/include -g" LDFLAGS="-L$(KVM_SHARED_USER)/lib -L$(KVM_IMAGE)/kvm-image/usr/lib/x86_64-linux-gnu" CPPFLAGS=-I$(KVM_SHARED_USER)/include; $(MAKE); $(MAKE) install
@echo "Build libmlx5"
@cd $(LIBMLX5_SRC)/; ./autogen.sh; ./configure --prefix=$(KVM_SHARED_USER) CFLAGS="-I$(KVM_SHARED_USER)/include -g" LDFLAGS="-L$(KVM_SHARED_USER)/lib -L$(KVM_IMAGE)/kvm-image/usr/lib/x86_64-linux-gnu" CPPFLAGS=-I$(KVM_SHARED_USER)/include; $(MAKE); $(MAKE) install
rdma-core:
@echo "Build rdma-core"
@cd $(RDMACORE_SRC)/build; cmake ../ -DCMAKE_INSTALL_PREFIX:PATH=$(KVM_SHARED_USER) -DBUILD_INCLUDE:PATH=$(KVM_SHARED_USER)/include -DBUILD_LINK:PATH=$(KVM_IMAGE)/kvm-image/lib/x86_64-linux-gnu/ -DSYS_LINK:PATH=$(KVM_IMAGE)/kvm-image/usr/lib/x86_64-linux-gnu -G"Unix Makefiles" -DNL3_LIBRARIES:PATH="$(KVM_IMAGE)/kvm-image/usr/lib/x86_64-linux-gnu/libnl-3.so.200;$(KVM_IMAGE)/kvm-image/usr/lib/x86_64-linux-gnu/libnl-route-3.so.200" -DNL3_INCLUDE_DIRS:PATH=/usr/include/libnl3; $(MAKE); $(MAKE) install
librdmacm:
@echo "Build librdmacm"
@cd $(LIBRDMACM_SRC)/; ./autogen.sh; ./configure --prefix=$(KVM_SHARED_USER) CFLAGS="-I$(KVM_SHARED_USER)/include -g" LDFLAGS="-L$(KVM_SHARED_USER)/lib -L$(KVM_IMAGE)/kvm-image/usr/lib/x86_64-linux-gnu" CPPFLAGS=-I$(KVM_SHARED_USER)/include; $(MAKE); $(MAKE) install
build:
@echo "Start kernel build"
@make -C $(KERNEL_SRC) oldconfig
@make -C $(KERNEL_SRC) -j8
khi:
@echo "Install kernel headers"
@make -C $(KERNEL_SRC) headers_install INSTALL_HDR_PATH=$(KVM_SHARED_USER)
modules_install:
@cd $(KERNEL_SRC)/; make modules_install INSTALL_MOD_PATH=$(KVM_SHARED_MODULES)
strace:
@cd $(STRACE_SRC)/; ./bootstrap; ./configure --prefix=$(KVM_SHARED) CFLAGS=-I$(KVM_SHARED)/include LDFLAGS=-L$(KVM_SHARED)/lib CPPFLAGS=-I$(KVM_SHARED)/include; $(MAKE); $(MAKE) install
shared: clean-shared khi strace libs
scp:
@ssh -p4444 root@localhost "rm -rf /home/leonro/src/kvm-shared"
@scp -r -P4444 /home/leonro/src/kvm-shared root@localhost:/home/leonro/src/
test:
@ssh -p4444 root@localhost "/home/leonro/src/kvm-shared/bin/ibv_devinfo"
stop-vmware-vm:
@echo "Stop VMware VM"
@vmrun stop $(VMWARE_VM)
start-vmware-vm:
@echo "Start VMware VM"
@vmrun start $(VMWARE_VM)
update-vmware-vm:
@echo "Patch boot partition"
@mkdir -p build
@mkdir -p build/vmware
@vmware-mount $(VMWARE_VM_REPACK) build/vmware
@sudo cp -v $(KERNEL_SRC)/arch/x86/boot/bzImage build/vmware/vmlinuz-linux-dev
@sudo cp -v $(KERNEL_SRC)/System.map build/vmware
@vmware-mount -d build/vmware
@rmdir -rf build/vmware
vmware-vm: stop-vmware-vm update-vmware-vm start-vmware-vm
all:
@echo "Do nothing!!!!!"