mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-06-03 21:33:39 +08:00
[docker] add option to access USB
- needs to run as priviliged container in order to access usb - "cd docker && make bash_usb" gives you a shell with USB access on the host
This commit is contained in:
@@ -8,6 +8,7 @@ help:
|
|||||||
@echo " 1. make pull - pull all pprz images"
|
@echo " 1. make pull - pull all pprz images"
|
||||||
@echo " 1. make clean - remove all pprz images"
|
@echo " 1. make clean - remove all pprz images"
|
||||||
@echo " 2. make bash - run bash on pprz-dev"
|
@echo " 2. make bash - run bash on pprz-dev"
|
||||||
|
@echo " 2. make bash_usb - run bash and enable USB"
|
||||||
@echo " 2. make paparazzi - run paparazzi center on pprz-dev"
|
@echo " 2. make paparazzi - run paparazzi center on pprz-dev"
|
||||||
@echo ""
|
@echo ""
|
||||||
|
|
||||||
@@ -26,5 +27,9 @@ clean:
|
|||||||
bash:
|
bash:
|
||||||
@bash run.sh -i -t flixr/pprz-dev bash
|
@bash run.sh -i -t flixr/pprz-dev bash
|
||||||
|
|
||||||
|
bash_usb:
|
||||||
|
@ENABLE_USB=1 bash ./run.sh -i -t flixr/pprz-dev bash
|
||||||
|
|
||||||
|
|
||||||
paparazzi:
|
paparazzi:
|
||||||
@bash run.sh -i -t flixr/pprz-dev ./paparazzi
|
@bash run.sh -i -t flixr/pprz-dev ./paparazzi
|
||||||
|
|||||||
@@ -11,10 +11,11 @@ ENV PULSE_SERVER /run/pulse/native
|
|||||||
|
|
||||||
# add basic user
|
# add basic user
|
||||||
ENV USERNAME pprz
|
ENV USERNAME pprz
|
||||||
|
ENV USERGROUPS sudo,dialout
|
||||||
RUN useradd -m $USERNAME && \
|
RUN useradd -m $USERNAME && \
|
||||||
echo "$USERNAME:$USERNAME" | chpasswd && \
|
echo "$USERNAME:$USERNAME" | chpasswd && \
|
||||||
usermod --shell /bin/bash $USERNAME && \
|
usermod --shell /bin/bash $USERNAME && \
|
||||||
usermod -aG sudo $USERNAME && \
|
usermod -aG $USERGROUPS $USERNAME && \
|
||||||
echo "$USERNAME ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/$USERNAME && \
|
echo "$USERNAME ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/$USERNAME && \
|
||||||
chmod 0440 /etc/sudoers.d/$USERNAME && \
|
chmod 0440 /etc/sudoers.d/$USERNAME && \
|
||||||
usermod --uid 1000 $USERNAME && \
|
usermod --uid 1000 $USERNAME && \
|
||||||
|
|||||||
+27
-15
@@ -4,10 +4,10 @@
|
|||||||
|
|
||||||
# if no arguments given, start with interactive terminal
|
# if no arguments given, start with interactive terminal
|
||||||
if test $# -lt 1; then
|
if test $# -lt 1; then
|
||||||
args="-t -i flixr/pprz-dev /sbin/my_init -- bash"
|
args="-t -i flixr/pprz-dev /sbin/my_init -- bash"
|
||||||
else
|
else
|
||||||
# Use this script with derived images, and pass your 'docker run' args
|
# Use this script with derived images, and pass your 'docker run' args
|
||||||
args="$@"
|
args="$@"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "$PAPARAZZI_HOME" ]; then
|
if [ -z "$PAPARAZZI_HOME" ]; then
|
||||||
@@ -26,19 +26,31 @@ XAUTH=/tmp/.docker.xauth
|
|||||||
touch $XAUTH
|
touch $XAUTH
|
||||||
xauth nlist $DISPLAY | sed -e 's/^..../ffff/' | xauth -f $XAUTH nmerge -
|
xauth nlist $DISPLAY | sed -e 's/^..../ffff/' | xauth -f $XAUTH nmerge -
|
||||||
|
|
||||||
|
# options to grant access to the Xserver
|
||||||
|
X_WINDOW_OPTS="--volume=$XSOCK:$XSOCK --volume=$XAUTH:$XAUTH --env=XAUTHORITY=${XAUTH} --env=DISPLAY=${DISPLAY}"
|
||||||
|
|
||||||
|
# pass audio to pulseaudio server on host
|
||||||
|
PULSE_AUDIO_OPTS="--volume=/run/user/${USER_UID}/pulse:/run/pulse"
|
||||||
|
|
||||||
|
# give the container access to USB, WARNING runs it as priviliged container!
|
||||||
|
# use it if ENABLE_USB variable is non-empty/zero
|
||||||
|
if [ -n "$ENABLE_USB" ]; then
|
||||||
|
echo "INFO: running as priviliged container to enable USB access!"
|
||||||
|
USB_OPTS="--privileged --volume=/dev/bus/usb:/dev/bus/usb"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# share the paparazzi directory and set it as working directory
|
||||||
|
SHARE_PAPARAZZI_HOME_OPTS="--volume=$PAPARAZZI_HOME:$PPRZ_HOME_CONTAINER \
|
||||||
|
--env=PAPARAZZI_HOME=$PPRZ_HOME_CONTAINER \
|
||||||
|
--env=PAPARAZZI_SRC=$PPRZ_HOME_CONTAINER \
|
||||||
|
-w $PPRZ_HOME_CONTAINER"
|
||||||
|
|
||||||
docker run \
|
docker run \
|
||||||
--rm \
|
${X_WINDOW_OPTS} \
|
||||||
--volume=/run/user/${USER_UID}/pulse:/run/pulse \
|
${PULSE_AUDIO_OPTS} \
|
||||||
--volume=$XSOCK:$XSOCK \
|
${USB_OPTS} \
|
||||||
--volume=$XAUTH:$XAUTH \
|
${SHARE_PAPARAZZI_HOME_OPTS} \
|
||||||
--env="XAUTHORITY=${XAUTH}" \
|
--rm $args
|
||||||
--env="DISPLAY=${DISPLAY}" \
|
|
||||||
--volume=$PAPARAZZI_HOME:$PPRZ_HOME_CONTAINER \
|
|
||||||
--env="PAPARAZZI_HOME=$PPRZ_HOME_CONTAINER" \
|
|
||||||
--env="PAPARAZZI_SRC=$PPRZ_HOME_CONTAINER" \
|
|
||||||
-u pprz \
|
|
||||||
-w $PPRZ_HOME_CONTAINER \
|
|
||||||
$args
|
|
||||||
|
|
||||||
# cleanup XAUTHORITY file again
|
# cleanup XAUTHORITY file again
|
||||||
rm -f $XAUTH
|
rm -f $XAUTH
|
||||||
|
|||||||
Reference in New Issue
Block a user