Compare commits
2 Commits
65ffd4fd25
...
d10e3c1b73
Author | SHA1 | Date |
---|---|---|
Jack Yu | d10e3c1b73 | |
Jack Yu | fee3beac4f |
|
@ -1,5 +1,2 @@
|
|||
*.tar.gz
|
||||
*.sif
|
||||
.docker_build
|
||||
overlay/
|
||||
shared/
|
||||
|
|
97
Dockerfile
97
Dockerfile
|
@ -1,97 +0,0 @@
|
|||
FROM ubuntu:22.04
|
||||
|
||||
ARG MAX_THREADS=1
|
||||
ARG WS_VER=3.4.0
|
||||
ARG MI_BRANCH=ubuntu22-py310
|
||||
ARG WIRESHARK_URL=http://www.mobileinsight.net/wireshark-${WS_VER}-rbc-dissector.tar.xz
|
||||
ADD 00-cpp_compat.patch /build/00-cpp_compat.patch
|
||||
|
||||
# Run apt update
|
||||
RUN set -ex; \
|
||||
export DEBIAN_FRONTEND=noninteractive; \
|
||||
apt-get update; \
|
||||
apt-get upgrade -y; \
|
||||
apt-get install -y \
|
||||
git \
|
||||
python3 \
|
||||
python3-pip \
|
||||
python3-wxgtk4.0 \
|
||||
python3-matplotlib \
|
||||
cmake \
|
||||
pkg-config \
|
||||
wget \
|
||||
libglib2.0-dev \
|
||||
bison \
|
||||
flex \
|
||||
libpcap-dev \
|
||||
libgcrypt-dev \
|
||||
qtbase5-dev \
|
||||
qtchooser \
|
||||
qt5-qmake \
|
||||
qtbase5-dev-tools \
|
||||
qttools5-dev \
|
||||
qtmultimedia5-dev \
|
||||
libqt5svg5-dev \
|
||||
libc-ares-dev \
|
||||
libsdl2-mixer-2.0-0 \
|
||||
libsdl2-image-2.0-0 \
|
||||
libsdl2-2.0-0;
|
||||
|
||||
# Download resources
|
||||
RUN set -ex; \
|
||||
mkdir -p /build; \
|
||||
cd /build; \
|
||||
wget "$WIRESHARK_URL" -nv -O "wireshark-$WS_VER.tar.xz"; \
|
||||
tar -xf "wireshark-$WS_VER.tar.xz"; \
|
||||
git clone "https://github.com/mobile-insight/mobileinsight-core.git"; \
|
||||
git -C mobileinsight-core checkout "$MI_BRANCH";
|
||||
|
||||
# Compile and install wireshark
|
||||
RUN set -ex; \
|
||||
cd "/build/wireshark-$WS_VER"; \
|
||||
patch epan/epan.h < /build/00-cpp_compat.patch; \
|
||||
cmake -DBUILD_wireshark=OFF .; \
|
||||
make -j "$MAX_THREADS"; \
|
||||
make install; \
|
||||
ldconfig;
|
||||
|
||||
# Compile and install Wireshark dissector
|
||||
Run set -ex; \
|
||||
cd /build/mobileinsight-core/ws_dissector; \
|
||||
g++ ws_dissector.cpp packet-aww.cpp -o ws_dissector \
|
||||
$(pkg-config --libs --cflags glib-2.0) \
|
||||
-I"/build/wireshark-$WS_VER" \
|
||||
-L"/usr/local/lib" \
|
||||
-lwireshark \
|
||||
-lwsutil \
|
||||
-lwiretap; \
|
||||
strip ws_dissector; \
|
||||
install -Dm 755 ws_dissector /usr/local/bin/ws_dissector;
|
||||
|
||||
# Compile and install MobileInsight
|
||||
Run set -ex; \
|
||||
cd /build/mobileinsight-core; \
|
||||
pip3 install pyserial; \
|
||||
python3 setup.py install;
|
||||
|
||||
# Install MobileInsight GUI
|
||||
Run set -ex; \
|
||||
cd /build/mobileinsight-core; \
|
||||
mkdir -p /usr/local/share/mobileinsight; \
|
||||
cp -r gui/* /usr/local/share/mobileinsight;\
|
||||
ln -s /usr/local/share/mobileinsight/mi-gui /usr/local/bin/mi-gui;
|
||||
|
||||
# Install examples
|
||||
Run set -ex; \
|
||||
cd /build/mobileinsight-core; \
|
||||
cp -r examples /opt/mobileinsight-examples;
|
||||
|
||||
# Link python3 to python
|
||||
Run set -ex; \
|
||||
cd /usr/bin; \
|
||||
ln -s python3 python;
|
||||
|
||||
# Cleanup
|
||||
Run set -ex; \
|
||||
apt-get autoclean -y; \
|
||||
rm -rf /build;
|
39
Makefile
39
Makefile
|
@ -1,44 +1,21 @@
|
|||
DOCKER ?= docker
|
||||
APPTAINER ?= apptainer
|
||||
APPTAINER ?= singularity
|
||||
OVERLAY_DIR ?= ./overlay
|
||||
SHARED_DIR ?= ./shared
|
||||
MAX_THREADS ?= $(shell grep -c processor /proc/cpuinfo)
|
||||
NUM_THREADS ?= $(shell grep -c processor /proc/cpuinfo)
|
||||
|
||||
UID := $(shell id -u)
|
||||
GID := $(shell id -g)
|
||||
|
||||
.DEFAULT_GOAL := .docker_build
|
||||
.DEFAULT_GOAL := mobileinsight.sif
|
||||
|
||||
.docker_build: Dockerfile
|
||||
"$(DOCKER)" build --build-arg "MAX_THREADS=$(MAX_THREADS)" -t mobileinsight .
|
||||
touch "$@"
|
||||
mobileinsight.sif: mobileinsight.def
|
||||
"$(APPTAINER)" build --build-arg="NUM_THREADS=$(NUM_THREADS)" "$@" "$<"
|
||||
|
||||
mobileinsight.tar.gz: .docker_build
|
||||
"$(DOCKER)" save mobileinsight:latest | gzip > "$@"
|
||||
|
||||
mobileinsight.sif: mobileinsight.def .docker_build
|
||||
"$(APPTAINER)" build "$@" "$<"
|
||||
|
||||
run: .docker_build
|
||||
@mkdir -p "$(SHARED_DIR)"
|
||||
@test -n "$(shell docker image ls -q mobileinsight)" \
|
||||
|| (echo Cannot find image mobileinsight:latest, has it been built yet? 1>&2 \
|
||||
&& false)
|
||||
@"$(DOCKER)" run --rm -it --privileged -v "$(SHARED_DIR):/mnt" \
|
||||
-e TERM -u root --entrypoint bash mobileinsight:latest
|
||||
|
||||
app-run: mobileinsight.sif
|
||||
run: mobileinsight.sif
|
||||
@mkdir -p "$(OVERLAY_DIR)"
|
||||
@lsmod | grep overlay > /dev/null || sudo modprobe overlay
|
||||
@$(APPTAINER) run --overlay "$(OVERLAY_DIR)" \
|
||||
-B "/run/user/$(UID)" mobileinsight.sif
|
||||
|
||||
clean:
|
||||
"$(DOCKER)" container prune
|
||||
"$(DOCKER)" image prune -a
|
||||
rm -f .docker_build mobileinsight.tar.gz mobileinsight.sif
|
||||
rm -f mobileinsight.sif $(OVERLAY_DIR)
|
||||
|
||||
clean-data:
|
||||
rm -rf $(OVERLAY_DIR) $(SHARED_DIR)
|
||||
|
||||
.PHONY: sc-run run clean clean-data
|
||||
.PHONY: run clean
|
||||
|
|
23
README.md
23
README.md
|
@ -1,13 +1,20 @@
|
|||
MobileInsight Apptainer
|
||||
=======================
|
||||
|
||||
Single launch binary for MobileInsight in a Ubuntu 22.04 portable container.
|
||||
Single launch binary for [MobileInsight](https://github.com/mobile-insight) in
|
||||
a Ubuntu 22.04 SIF portable container.
|
||||
|
||||
Dependencies
|
||||
------------
|
||||
|
||||
The host side only needs `apptainer` or `singularity` to function. A gui is
|
||||
needed to launch the log viewer.
|
||||
Either one of the following dependencies is needed to run or build SIF images:
|
||||
|
||||
- [Apptainer](https://apptainer.org/)
|
||||
- [Singularity](https://sylabs.io/singularity/)
|
||||
|
||||
To use the `make run` command, the overlay Linux kernel module must also be
|
||||
available on the system. This allows you to make changes to the SIF file using
|
||||
an overlay filesystem.
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
@ -25,13 +32,7 @@ $ ./mobileinsight.sif bash
|
|||
|
||||
Examples are stored in /opt/mobileinsight-examples.
|
||||
|
||||
Building
|
||||
--------
|
||||
|
||||
To build the apptainer, the following dependencies are needed on the host
|
||||
machine:
|
||||
|
||||
1. Apptainer or Singularity
|
||||
2. Docker
|
||||
Build
|
||||
-----
|
||||
|
||||
Run `make mobileinsight.sif` to build the apptainer image.
|
||||
|
|
|
@ -1,5 +1,90 @@
|
|||
BootStrap: docker-daemon
|
||||
From: mobileinsight:latest
|
||||
BootStrap: docker
|
||||
From: ubuntu:22.04
|
||||
|
||||
%arguments
|
||||
NUM_THREADS=1
|
||||
WS_VER=3.4.0
|
||||
MI_COMMIT=4b204e0
|
||||
|
||||
%files
|
||||
00-cpp_compat.patch /build/00-cpp_compat.patch
|
||||
|
||||
%post
|
||||
# Update and install dependencies
|
||||
mkdir -p /build
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
apt-get update
|
||||
apt-get upgrade -y
|
||||
apt-get install -y \
|
||||
git \
|
||||
python3 \
|
||||
python3-pip \
|
||||
python3-wxgtk4.0 \
|
||||
python3-matplotlib \
|
||||
cmake \
|
||||
pkg-config \
|
||||
wget \
|
||||
libglib2.0-dev \
|
||||
bison \
|
||||
flex \
|
||||
libpcap-dev \
|
||||
libgcrypt-dev \
|
||||
qtbase5-dev \
|
||||
qtchooser \
|
||||
qt5-qmake \
|
||||
qtbase5-dev-tools \
|
||||
qttools5-dev \
|
||||
qtmultimedia5-dev \
|
||||
libqt5svg5-dev \
|
||||
libc-ares-dev \
|
||||
libsdl2-mixer-2.0-0 \
|
||||
libsdl2-image-2.0-0 \
|
||||
libsdl2-2.0-0
|
||||
pip3 install pyserial
|
||||
|
||||
# Download resources
|
||||
cd /build
|
||||
wget "http://www.mobileinsight.net/wireshark-{{ WS_VER }}-rbc-dissector.tar.xz" -nv \
|
||||
-O "wireshark-{{ WS_VER }}.tar.xz"
|
||||
tar -xf "wireshark-{{ WS_VER }}.tar.xz"
|
||||
git clone "https://github.com/mobile-insight/mobileinsight-core.git"
|
||||
git -C mobileinsight-core checkout "{{ MI_COMMIT }}"
|
||||
|
||||
# Compile and install wireshark
|
||||
cd "/build/wireshark-{{ WS_VER }}"
|
||||
patch epan/epan.h < /build/00-cpp_compat.patch
|
||||
cmake -DBUILD_wireshark=OFF .
|
||||
make -j "{{ NUM_THREADS }}"
|
||||
make install
|
||||
ldconfig
|
||||
|
||||
# Compile and install Wireshark dissector
|
||||
cd /build/mobileinsight-core/ws_dissector
|
||||
g++ ws_dissector.cpp packet-aww.cpp -o ws_dissector \
|
||||
$(pkg-config --libs --cflags glib-2.0) \
|
||||
-I"/build/wireshark-{{ WS_VER }}" \
|
||||
-L"/usr/local/lib" \
|
||||
-lwireshark \
|
||||
-lwsutil \
|
||||
-lwiretap
|
||||
strip ws_dissector
|
||||
install -Dm 755 ws_dissector /usr/local/bin/ws_dissector
|
||||
|
||||
# Compile and install MobileInsight
|
||||
cd /build/mobileinsight-core
|
||||
python3 setup.py install
|
||||
mkdir -p /usr/local/share/mobileinsight
|
||||
cp -r gui/* /usr/local/share/mobileinsight
|
||||
ln -s /usr/local/share/mobileinsight/mi-gui /usr/local/bin/mi-gui
|
||||
cp -r examples /opt/mobileinsight-examples
|
||||
|
||||
# Link python3 to python
|
||||
cd /usr/bin
|
||||
ln -s python3 python
|
||||
|
||||
# Cleanup
|
||||
apt-get autoclean -y
|
||||
rm -rf /build
|
||||
|
||||
%runscript
|
||||
set -e
|
||||
|
@ -9,3 +94,4 @@ From: mobileinsight:latest
|
|||
else
|
||||
"$@"
|
||||
fi
|
||||
|
||||
|
|
Loading…
Reference in New Issue