Code Monkey home page Code Monkey logo

jool-docker's Introduction

jool-docker

jool as docker container.

Dependencies

Since jool needs a kernel module we need to prepare the host system. For this we need to meet following prerequisites on the host:

Setup

git clone ttps://github.com/FreifunkMD/jool-docker /opt/jool-docker
/opt/jool-docker
vi install.sh
./install.sh

The installation itself is as simple as changing the variable JOOL_VERSION in the install.sh file to ones desire (for current versions see here) and running bash install.sh as root. The script will install the kernel module and pull the docker image. If pulling fails for the specified jool version, it will try to build it instead.

Uninstall

docker stop jool-ffmd
docker rm jool-ffmd
docker image rm jool-ffmd

Run as root

modprobe -r jool
dkms uninstall jool/<VERSION>
dkms remove jool/<VERSION> --all
dkms status jool

jool-docker's People

Contributors

christf avatar jasper-ben avatar kwa5ir avatar penguineer avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Forkers

christf steini-

jool-docker's Issues

package dependency

hi,
i just wanted to setup a jool-container according the Readme-File, but it didn't went as smooth as expected.

The command line output from install.sh:
[...looked all fine so far but then...]

Jool-3.5.7/usr/stateless/
Jool-3.5.7/usr/stateless/.gitignore
Jool-3.5.7/usr/stateless/Makefile.am
Jool-3.5.7/usr/stateless/jool_siit.8
building and installing kernel module...

Creating symlink /var/lib/dkms/jool/3.5.7/source ->
                 /usr/src/jool-3.5.7

DKMS: add completed.

Kernel preparation unnecessary for this kernel.  Skipping...

Building module:
cleaning build area.....
make -j2 KERNELRELEASE=4.15.0-58-generic -C /lib/modules/4.15.0-58-generic/build SUBDIRS=/var/lib/dkms/jool/3.5.7/build/mod/stateful modules && make -C /lib/modules/4.15.0-58-generic/build SUBDIRS=/var/lib/dkms/jool/3.5.7/build/mod/stateless modules.........(bad exit status: 2)
ERROR (dkms apport): binary package for jool: 3.5.7 not found
Error! Bad return status for module build on kernel: 4.15.0-58-generic (x86_64)
Consult /var/lib/dkms/jool/3.5.7/build/make.log for more information.

Kernel preparation unnecessary for this kernel.  Skipping...

Building module:
cleaning build area....
make -j2 KERNELRELEASE=4.15.0-58-generic -C /lib/modules/4.15.0-58-generic/build SUBDIRS=/var/lib/dkms/jool/3.5.7/build/mod/stateful modules && make -C /lib/modules/4.15.0-58-generic/build SUBDIRS=/var/lib/dkms/jool/3.5.7/build/mod/stateless modules.......(bad exit status: 2)
ERROR (dkms apport): binary package for jool: 3.5.7 not found
Error! Bad return status for module build on kernel: 4.15.0-58-generic (x86_64)
Consult /var/lib/dkms/jool/3.5.7/build/make.log for more information.
modprobe: FATAL: Module jool not found in directory /lib/modules/4.15.0-58-generic
pulling docker container...
3.5.7: Pulling from jasperben/jool-docker
4fe2ade4980c: Pull complete 
369177fa017e: Pull complete 
d210619dbff2: Pull complete 
b26678ba3c16: Pull complete 
b34c6c4bf55b: Pull complete 
Digest: sha256:c6f64bc9ebe7b603074e677d222400f18af89a6135089980a04a48d653bc82e1
Status: Downloaded newer image for jasperben/jool-docker:3.5.7
docker.io/jasperben/jool-docker:3.5.7
clean up...
done!

So and after consulting the logfile, it tells this:
cat /var/lib/dkms/jool/3.5.7/build/make.log

DKMS make.log for jool-3.5.7 for kernel 4.15.0-58-generic (x86_64)
So 1. Sep 10:43:56 CEST 2019
make: Verzeichnis „/usr/src/linux-headers-4.15.0-58-generic“ wird betreten
Makefile:986: "Cannot use CONFIG_STACK_VALIDATION=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel"
  CC [M]  /var/lib/dkms/jool/3.5.7/build/mod/stateful/pool4/empty.o
  CC [M]  /var/lib/dkms/jool/3.5.7/build/mod/stateful/pool4/db.o
  CC [M]  /var/lib/dkms/jool/3.5.7/build/mod/stateful/pool4/rfc6056.o
  CC [M]  /var/lib/dkms/jool/3.5.7/build/mod/stateful/bib/db.o
  CC [M]  /var/lib/dkms/jool/3.5.7/build/mod/stateful/bib/entry.o
  CC [M]  /var/lib/dkms/jool/3.5.7/build/mod/stateful/bib/pkt_queue.o
  CC [M]  /var/lib/dkms/jool/3.5.7/build/mod/stateful/timer.o

[....Well, i thought let's look for the packets, maybe i forgot something...]
[... sorry for the german errors messages. It says there are dependacy issues, and i was unable to resolve them...]

ffa-experiment@ffaexperiment ~ $ sudo apt-cache search libelf-dev
libelf-dev - libelf1 development libraries and header files
ffa-experiment@ffaexperiment ~ $ sudo apt-get install libelf-dev
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.       
Statusinformationen werden eingelesen.... Fertig
Einige Pakete konnten nicht installiert werden. Das kann bedeuten, dass
Sie eine unmögliche Situation angefordert haben oder, wenn Sie die
Unstable-Distribution verwenden, dass einige erforderliche Pakete noch
nicht erstellt wurden oder Incoming noch nicht verlassen haben.
Die folgenden Informationen helfen Ihnen vielleicht, die Situation zu lösen:

Die folgenden Pakete haben unerfüllte Abhängigkeiten:
 libelf-dev : Hängt ab von: libelf1 (= 0.165-3ubuntu1.2) aber 0.170-0.4ubuntu0.1 soll installiert werden
E: Probleme können nicht korrigiert werden, Sie haben zurückgehaltene defekte Pakete.

i don't know what do now? Any Ideas?

Building 3.x kernel module failes on newer kernels

Trying to install to 3.x kernel module fails due to incompatibility with newer Linux kernels:

/var/lib/dkms/jool/3.5.7/build/mod/stateful/bib/db.c: In function ‘log_bib’:
/var/lib/dkms/jool/3.5.7/build/mod/stateful/bib/db.c:501:2: error: implicit declaration of function ‘do_gettimeofday’; did you mean ‘do_settimeofday64’? [-Werror=implicit-function-declaration]
  501 |  do_gettimeofday(&tval);
      |  ^~~~~~~~~~~~~~~
      |  do_settimeofday64
/var/lib/dkms/jool/3.5.7/build/mod/stateful/pool4/rfc6056.c: In function ‘rfc6056_f’:
/var/lib/dkms/jool/3.5.7/build/mod/stateful/pool4/rfc6056.c:100:6: error: ‘struct shash_desc’ has no member named ‘flags’
  100 |  desc->flags = 0;
      |      ^~
/var/lib/dkms/jool/3.5.7/build/mod/stateful/pool4/empty.c: In function ‘contains_addr’:
/var/lib/dkms/jool/3.5.7/build/mod/stateful/pool4/empty.c:20:3: error: implicit declaration of function ‘for_primary_ifa’ [-Werror=implicit-function-declaration]
   20 |   for_primary_ifa(in_dev) {
      |   ^~~~~~~~~~~~~~~
/var/lib/dkms/jool/3.5.7/build/mod/stateful/pool4/empty.c:20:26: error: expected ‘;’ before ‘{’ token
   20 |   for_primary_ifa(in_dev) {
      |                          ^~
      |                          ;
/var/lib/dkms/jool/3.5.7/build/mod/stateful/bib/db.c:502:2: error: implicit declaration of function ‘time_to_tm’; did you mean ‘time64_to_tm’? [-Werror=implicit-function-declaration]
  502 |  time_to_tm(tval.tv_sec, 0, &t);
      |  ^~~~~~~~~~
      |  time64_to_tm

Semi-related links:
NICMx/Jool#283
openwrt/packages#7176

How to build Jool Kernel-Module?

I replicated the used commands from install.sh, but i can't get it to build.

dkms build jool/4.0.5:

Kernel preparation unnecessary for this kernel.  Skipping...

Building module:
cleaning build area...(bad exit status: 2)
make -j1 KERNELRELEASE=4.19.0-8-amd64 -C /lib/modules/4.19.0-8-amd64/build SUBDIRS=/var/lib/dkms/jool/4.0.5.git.v4.0.5/build/src/mod/nat64 modules && make -C /lib/modules/4.19.0-8-amd64/build SUBDIRS=/var/lib/dkms/jool/4.0.5.git.v4.0.5/build/src/mod/siit modules...(bad exit status: 2)
Error! Bad return status for module build on kernel: 4.19.0-8-amd64 (x86_64)
Consult /var/lib/dkms/jool/4.0.5/build/make.log for more information.
root@gw00:/usr/src# cat /var/lib/dkms/jool/4.0.5/build/make.log
DKMS make.log for jool-4.0.5 for kernel 4.19.0-8-amd64 (x86_64)
Wed 20 May 2020 04:44:59 PM CEST
make: Entering directory '/usr/src/linux-headers-4.19.0-8-amd64'
/usr/src/linux-headers-4.19.0-8-common/scripts/Makefile.build:45: /var/lib/dkms/jool/4.0.5.git.v4.0.5/build/src/mod/nat64/Makefile: No such file or directory                                                     
make[3]: *** No rule to make target '/var/lib/dkms/jool/4.0.5.git.v4.0.5/build/src/mod/nat64/Makefile'.  Stop.                                                                                                    
make[2]: *** [/usr/src/linux-headers-4.19.0-8-common/Makefile:1537: _module_/var/lib/dkms/jool/4.0.5.git.v4.0.5/build/src/mod/nat64] Error 2                                                                      
make[1]: *** [Makefile:146: sub-make] Error 2
make: *** [Makefile:8: all] Error 2
make: Leaving directory '/usr/src/linux-headers-4.19.0-8-amd64'

‎Using the upstream guide, i could compile it just fine: https://github.com/NICMx/Jool/blob/master/docs/en/install.md#compilation-and-installation

But then dkms doesn't seem to be happy & is complaining about diff of modules.

Here is the code i used: https://github.com/FreifunkMD/ansible/blob/migration/roles/jool/tasks/main.yml#L32

//Edit:
building using install.sh works. so it must have something todo with that weird version number 4.0.5.git.v4.0.5. I checked out the git branch instead of using tar, but idk why/who generates this version number.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.