This commit is contained in:
parent
e02c4a11a7
commit
e76ecf5009
12 changed files with 176 additions and 18 deletions
14
.gitignore
vendored
14
.gitignore
vendored
|
|
@ -1,8 +1,8 @@
|
||||||
_build/
|
_build/
|
||||||
mirage/
|
unikernel/mirage/
|
||||||
dist/
|
unikernel/dist/
|
||||||
dune.build
|
unikernel/dune.build
|
||||||
dune.config
|
unikernel/dune.config
|
||||||
dune-project
|
unikernel/dune-project
|
||||||
dune-workspace
|
unikernel/dune-workspace
|
||||||
duniverse/
|
unikernel/duniverse/
|
||||||
|
|
|
||||||
64
Makefile
Normal file
64
Makefile
Normal file
|
|
@ -0,0 +1,64 @@
|
||||||
|
# Generated by mirage.v4.10.3
|
||||||
|
|
||||||
|
-include Makefile.user
|
||||||
|
BUILD_DIR = unikernel/
|
||||||
|
MIRAGE_DIR = unikernel/mirage
|
||||||
|
UNIKERNEL_NAME = mte-unix
|
||||||
|
OPAM = opam
|
||||||
|
|
||||||
|
all::
|
||||||
|
@$(MAKE) --no-print-directory depends
|
||||||
|
@$(MAKE) --no-print-directory build
|
||||||
|
|
||||||
|
.PHONY: all lock install-switch pull clean depend depends build repo-add repo-rm depext-lockfile
|
||||||
|
|
||||||
|
repo-add:
|
||||||
|
@printf "\033[2musing overlay repository mirage: [opam-overlays, mirage-overlays] \033[0m\n"
|
||||||
|
$(OPAM) repo add opam-overlays https://github.com/dune-universe/opam-overlays.git || $(OPAM) repo set-url opam-overlays https://github.com/dune-universe/opam-overlays.git
|
||||||
|
$(OPAM) repo add mirage-overlays https://github.com/dune-universe/mirage-opam-overlays.git || $(OPAM) repo set-url mirage-overlays https://github.com/dune-universe/mirage-opam-overlays.git
|
||||||
|
|
||||||
|
|
||||||
|
repo-rm:
|
||||||
|
@printf "\033[2mremoving overlay repository [opam-overlays, mirage-overlays]\033[0m\n"
|
||||||
|
$(OPAM) repo remove opam-overlays https://github.com/dune-universe/opam-overlays.git
|
||||||
|
$(OPAM) repo remove mirage-overlays https://github.com/dune-universe/mirage-opam-overlays.git
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
depext-lockfile: $(MIRAGE_DIR)/$(UNIKERNEL_NAME).opam.locked
|
||||||
|
echo " ↳ install external dependencies for monorepo"
|
||||||
|
env OPAMVAR_monorepo="opam-monorepo" $(OPAM) monorepo depext -y -l $<
|
||||||
|
|
||||||
|
|
||||||
|
$(MIRAGE_DIR)/$(UNIKERNEL_NAME).opam.locked: $(MIRAGE_DIR)/$(UNIKERNEL_NAME).opam
|
||||||
|
@$(MAKE) -s repo-add
|
||||||
|
@echo " ↳ generate lockfile for monorepo dependencies"
|
||||||
|
@env OPAMVAR_monorepo="opam-monorepo" $(OPAM) monorepo lock --require-cross-compile --build-only $(UNIKERNEL_NAME) -l $@ --ocaml-version $(shell ocamlc --version); (ret=$$?; $(MAKE) -s repo-rm && exit $$ret)
|
||||||
|
|
||||||
|
lock::
|
||||||
|
@$(MAKE) -B $(MIRAGE_DIR)/$(UNIKERNEL_NAME).opam.locked
|
||||||
|
@echo "The lock file has been generated. Run 'make pull' to retrieve the sources, or 'make install-switch' to install the host dependencies."
|
||||||
|
|
||||||
|
pull:: $(MIRAGE_DIR)/$(UNIKERNEL_NAME).opam.locked
|
||||||
|
@echo " ↳ fetch monorepo dependencies in the duniverse folder"
|
||||||
|
@env OPAMVAR_monorepo="opam-monorepo" $(OPAM) monorepo pull -l $< -r $(abspath $(BUILD_DIR))
|
||||||
|
@echo "The sources have been pulled to the duniverse folder. Run 'make build' to build the unikernel."
|
||||||
|
|
||||||
|
install-switch:: $(MIRAGE_DIR)/$(UNIKERNEL_NAME).opam
|
||||||
|
@echo " ↳ opam install switch dependencies"
|
||||||
|
@$(OPAM) install $< --deps-only --yes
|
||||||
|
@$(MAKE) -s depext-lockfile
|
||||||
|
@echo "The dependencies have been installed. Run 'make build' to build the unikernel."
|
||||||
|
|
||||||
|
depends depend::
|
||||||
|
@$(MAKE) --no-print-directory lock
|
||||||
|
@$(MAKE) --no-print-directory install-switch
|
||||||
|
@$(MAKE) --no-print-directory pull
|
||||||
|
|
||||||
|
build::
|
||||||
|
dune build --profile release --root . $(BUILD_DIR)dist
|
||||||
|
@echo "Your unikernel binary is now ready in $(BUILD_DIR)dist/mte"
|
||||||
|
@echo "Execute the binary using solo5-hvt, solo5-spt, xl, ..."
|
||||||
|
|
||||||
|
clean::
|
||||||
|
mirage clean
|
||||||
29
data/tls/certificates/foo
Normal file
29
data/tls/certificates/foo
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
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
|
||||||
|
-----END CERTIFICATE-----
|
||||||
52
data/tls/keys/foo
Normal file
52
data/tls/keys/foo
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQDV4NzGCEtadW52
|
||||||
|
ZbIzNJhQ6bbAuV6Sb3rd7iAVDC6Kmu8gIj/7i92uCjKN+lTU0fRAoylxbPu4E6CL
|
||||||
|
aZW0T/kJqvwtTUNDio2DPTwpIzUsfhRLQKJrYPAA3KMmTQ6B9pefFJLfmYV7SPJ8
|
||||||
|
jEX0Y9DD4hzwEq8lt74PKtLP9T+RATACDK1ffcq1XkdTZdDyCBh52nVBGz04eWUN
|
||||||
|
8NebNDjoSPGn3h0HUqNb4DOpUb1Zx6lwzb/qdZCOSMIYsEL/2qA7e9XL8g0ML5Uy
|
||||||
|
gDa+15HfXdErnYdWwOy1LAaAe9TVRoRcufPGeYOBs0jy1B5a0HqkrwioWgFIIFVT
|
||||||
|
PxE8LmeTD7JtoZlOfSNYSD7dkyKjShLeEGo5isRAi/TJxds5NfamybwWYFdvZSWj
|
||||||
|
QMNxMz/NAX63AoYpG3XTiQ4lHjeHkZySy1QacpRtc1XtIN+en99avmOUFvzCFJgG
|
||||||
|
crig6Tr36JlN6LdDe8GsDugkAtDuD/pe1oGPD7ydrDs1tMfv37LVgiOnKYnfwAuf
|
||||||
|
YxRuNnGY0pICDkj36r+qAe4flPU/YOMxL4EWzBSDIf1c3wxb88hiqZOIjJAy2Kgn
|
||||||
|
MV2PdQ4+D1e6HBgXbIwli8Y+TcCeCOAR4A2+0WMUh4A+TJTtUCW60fNU8sWj2P3E
|
||||||
|
toKCjaP7II+7HIQ1x63smBODzVJHewIDAQABAoICADP6NM0vwNhYB6NgbaFCG+42
|
||||||
|
DkLiCdi+nPaIY2WaE0l+A7UkfbYtNI+STNzyRGGAMMLwpCa7nKUMqAyZeVdbxCMU
|
||||||
|
WbrMtxcX+fI2FIPO2aJZdacgKxi7czhSZpftTCRLgGeZwWPz1Fu0y7F3CZ0uENM6
|
||||||
|
BVxWvhgFgnv/JUKC0JL13evxlsTJNlVDd0QOT2wyiXg7nhlXfFZYMjXkHRHL7DSP
|
||||||
|
XaM1OIrKC4dNgmCYy9Kg0k3mwshBEAN0LS+AzpeNUzmBi+DHj2IxwimGvUc97maB
|
||||||
|
T08xNm3f7ubMrzvUXFIElDBQxKysZUhFAOp6oHHjjpqtKwZ28S7NJM9ZWV/tyx+h
|
||||||
|
e2EBKR4d98xgFIOFwZsteWfjBlYcSqQhQGjaSa0W14Wn47a5NmyccOq99/p8B5e1
|
||||||
|
9MnMmxh43Xvi6Q6Nl3UYTpF5Q2c+2OPteagEXRviHJNaLSygRPM3AfXsM/326BPO
|
||||||
|
mNvkGqQlKpHAxYu1ggSHWbMU8WHmS5hERZ3X3/TuuFZ2rH0u+DtZBGzAFKwo26bQ
|
||||||
|
bxcLCQ/GpbrvDFLrYF6ORUgjhdiMDl6QO8zRTepaBVzw9vDM82CSG/bzsvImAJ5g
|
||||||
|
PG7WEaeTtxio3MxH4oDFAPf/wFbFC7xniPQWJxftHXs1/0mw8clmvi9n1f0KUqBx
|
||||||
|
pb51Yl8L/Nm2NSTR+uNhAoIBAQDxlyQ9CbVXd8rUWMrNWqSmd34RyiRDrZgggDsu
|
||||||
|
RGbEVRHF3kmhIplXm6xXTJoo1zwduEGVQUY/2MCMEbrhjlNk7CnEXzJesklI4qli
|
||||||
|
AX7xaKvI8iqJICAn1P6U60rDNNxT6LXt+ALHXCI17mSav/RfS+OY+lTcPRbIpRbH
|
||||||
|
7y141GGKJhVwmc3vPYw66sT7Pf+l95D6qA+tcwJx5tp7JapWJZ2f/ZJYK59lTA/l
|
||||||
|
0UkzrNmz5Mr0vibyDlQN3Qnc0pXtwPEelJgfcVA872HZahTnZ0WS1zO1rVeUB8wU
|
||||||
|
hGwVyDNJRNgu70tAZ0J2WkQF89pG9GQUX/77EgSkBHN5t2ORAoIBAQDiopWOQNF/
|
||||||
|
ttzXRA99QZtJ3DFkH/XcPKogEAx7vdutfpk4PlOOHbWeetIKpOIAppTBLWmO8cUK
|
||||||
|
3rCEQpVugRLf2RAxS7n9y+IhdLQMtXRJuYJHZHn5VcDd4Ac0bDPhvmCGSyGFBHXk
|
||||||
|
+Y8hVTq4Y5+0qgGODFVKN8hXfjvlwvePwVM+Q44IxHEDlZSvCxoOusviXLJEomvN
|
||||||
|
604aHDrmKaBIctxoeMucanZ+Na4J606LU8rSrT/in3itYyRtS945TsMKUWEZqo+o
|
||||||
|
bDTdVo+91Cufv4lorU0G3ukl+7UEoH0Lqm9iUpXFeBYj7y7Ygo/z2c9rCQntC2ft
|
||||||
|
/ra0J1Fn0FxLAoIBADx2iTlFfr8fWgH/HvJ6Jw8KhODK6HyPq60mqqkPsXCdoc8V
|
||||||
|
rPPJBvuoGF/Y6hQimgcOIEvMhFpiUv47Sbw9tJ1jhaiB8sdEc5bsM1w156Ffgu7N
|
||||||
|
vNuI0MNnSTfYE2P7jNDrQu0Fzxw58M3ylfcs52oaQiH9NNPR7ivVNXhgYc8FyEuc
|
||||||
|
8Gy38ZRYoQn1y8rdX2gYJ460FQhh6lC7aB699H2O+H4cJk4uzLu7Z5cq49ks/2dI
|
||||||
|
cYsDNBgMgfjeQyOjCKbyTOZMZi4oW96EQsb5B7ZKYF05wtVLRsnjka3o3mwtKLjD
|
||||||
|
pB9LAFhj/3xDZxbeStjLPWjkBZqsjcDG5GeoACECggEARlBlEC6CERq957fBCn6J
|
||||||
|
XGAJnuPflsXnjm0MQnQELQ7DINUNfWEwUQwQEKdZSxRjwI+DWYsfNCElKNOzowY+
|
||||||
|
wd6JjJHPEbPo47JejjbZ7mm0xsugoD//x5bTBWuwqRA0yFWU/70Ditf2lUPpJP4b
|
||||||
|
taStONIQwCcQbDzI/p7/ycUUO5QgBA5WdeM5rxlFq14/FWrnEC5IPioMIEOz7mbp
|
||||||
|
yLCCO5OGsG/DdaLX7VHpG4cSvUxtLrWFbl39Fj/coXETSCc5dgoZ6gowWJ+blyy1
|
||||||
|
oCl/y09BP6l3Moamgdn9Edp+FkZDG3IHhHyXzyqq2OAx3yZ9wuKwCwHk034DXq8h
|
||||||
|
gwKCAQEAi2lNjyrxUZjhsXsJ4cqED5wlmO8csXxs+gjkGPkU0bbyFaJFVJ9c/GFX
|
||||||
|
sUGSRNtcSNVlLHS7x8CWK6p71/l5Mz+90Yqf8mbStmcOb/U+lTluAI4GfcCLp53i
|
||||||
|
P/y9SH1y5NS8RPgFRv9GMam4OAQi98cnElrOHsFyLLKHU4LMaTX7S+Cks1+dXpvq
|
||||||
|
+NO0tCs86GnfH/dYILTkbquNEQGwsU4s0238+dumT1Ctv0kJ1YQNcOlVoj89h2Kq
|
||||||
|
OTVFSWi/tot47GNvMLckSKKnG0cclsujFHoSHryH/PfXAbI/0u//++cmvoyQUw+X
|
||||||
|
/cjHydhsWxZPc51A5G0iik/ehIQcOA==
|
||||||
|
-----END PRIVATE KEY-----
|
||||||
7
dune-project
Normal file
7
dune-project
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
(lang dune 2.9)
|
||||||
|
|
||||||
|
(name mte-unix)
|
||||||
|
|
||||||
|
(implicit_transitive_deps true)
|
||||||
|
|
||||||
|
;; Generated by mirage.v4.10.3
|
||||||
5
dune-workspace
Normal file
5
dune-workspace
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
(lang dune 2.9)
|
||||||
|
|
||||||
|
(context (default))
|
||||||
|
|
||||||
|
;; Generated by mirage.v4.10.3
|
||||||
5
src/dune
5
src/dune
|
|
@ -1,5 +1,4 @@
|
||||||
(library
|
(library
|
||||||
(wrapped false)
|
|
||||||
(name mte)
|
(name mte)
|
||||||
(public_name mte)
|
(wrapped false)
|
||||||
(libraries logs hxd.core hxd.string))
|
(libraries logs))
|
||||||
|
|
|
||||||
1
src/mte.ml
Normal file
1
src/mte.ml
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
let uuu = "uuu"
|
||||||
|
|
@ -5,8 +5,8 @@ type conn = Connect
|
||||||
|
|
||||||
let conn = typ Connect
|
let conn = typ Connect
|
||||||
|
|
||||||
let minipaf =
|
let mte =
|
||||||
main "Unikernel.Make"
|
main "Unikernel.Make" ~local_libs:[ "mte" ]
|
||||||
~packages:
|
~packages:
|
||||||
[
|
[
|
||||||
package "digestif"; package ~min:"0.0.9" "mimic-happy-eyeballs";
|
package "digestif"; package ~min:"0.0.9" "mimic-happy-eyeballs";
|
||||||
|
|
@ -27,8 +27,11 @@ let stackv4v6 = generic_stackv4v6 default_network
|
||||||
let tcpv4v6 = tcpv4v6_of_stackv4v6 stackv4v6
|
let tcpv4v6 = tcpv4v6_of_stackv4v6 stackv4v6
|
||||||
let he = generic_happy_eyeballs stackv4v6
|
let he = generic_happy_eyeballs stackv4v6
|
||||||
let dns = generic_dns_client stackv4v6 he
|
let dns = generic_dns_client stackv4v6 he
|
||||||
let certificates = crunch "data/tls/certificates"
|
|
||||||
let keys = crunch "data/tls/keys"
|
(* note: if crunch says that directory doesn't exists, it may be because
|
||||||
|
it's empty and you need to run gen_tls.sh *)
|
||||||
|
let certificates = crunch "../data/tls/certificates"
|
||||||
|
let keys = crunch "../data/tls/keys"
|
||||||
|
|
||||||
let conn =
|
let conn =
|
||||||
let happy_eyeballs = mimic_happy_eyeballs stackv4v6 he dns in
|
let happy_eyeballs = mimic_happy_eyeballs stackv4v6 he dns in
|
||||||
|
|
@ -38,5 +41,4 @@ let port = Runtime_arg.create ~pos:__POS__ "Unikernel.port"
|
||||||
let http_server = paf_server ~port tcpv4v6
|
let http_server = paf_server ~port tcpv4v6
|
||||||
|
|
||||||
let () =
|
let () =
|
||||||
register "minipaf"
|
register "mte" [ mte $ certificates $ keys $ tcpv4v6 $ conn $ http_server ]
|
||||||
[ minipaf $ certificates $ keys $ tcpv4v6 $ conn $ http_server ]
|
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,10 @@
|
||||||
open Rresult
|
open Rresult
|
||||||
open Lwt.Infix
|
open Lwt.Infix
|
||||||
open Cmdliner
|
open Cmdliner
|
||||||
open Mte
|
|
||||||
|
|
||||||
let port =
|
let port =
|
||||||
let doc = Arg.info ~doc:"Port of HTTP service." [ "p"; "port" ] in
|
let doc = Arg.info ~doc:"Port of HTTP service." [ "p"; "port" ] in
|
||||||
Arg.(value & opt int 8080 doc)
|
Arg.(value & opt int 3434 doc)
|
||||||
|
|
||||||
let use_tls =
|
let use_tls =
|
||||||
let doc =
|
let doc =
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue