Parcourir la source

Add docker scripts to simplify setting up idevicerestore

Cameron Cross il y a 2 ans
Parent
commit
866b6b773c
5 fichiers modifiés avec 126 ajouts et 0 suppressions
  1. 9 0
      README.md
  2. 89 0
      docker/Dockerfile
  3. 8 0
      docker/build.sh
  4. 7 0
      docker/idevicerestore.sh
  5. 13 0
      docker/run.sh

+ 9 - 0
README.md

@@ -263,6 +263,15 @@ idevicerestore --help
 man idevicerestore
 ```
 
+### Docker
+
+Build the container with `build.sh` in the docker folder, which will build a
+docker container with the latest source versions of all the required libraries.
+
+Run the container with `run.sh --latest` in the docker folder,
+which will execute `usbmuxd` in the background, and then start `idevicerestore --latest`.
+Any arguments passed to `run.sh` will be passed in to `idevicerestore`.
+
 ## Contributing
 
 We welcome contributions from anyone and are grateful for every pull request!

+ 89 - 0
docker/Dockerfile

@@ -0,0 +1,89 @@
+FROM ubuntu:22.04
+
+ENV DEBIAN_FRONTEND="noninteractive"
+RUN apt-get update && apt-get install -y \
+    build-essential \
+    pkg-config \
+    checkinstall \
+    git \
+    autoconf \
+    automake \
+    libtool-bin \
+    libreadline-dev \
+    libusb-1.0-0-dev \
+    libcurl4-openssl-dev \
+    libssl-dev \
+    libzip-dev \
+    zlib1g-dev \
+    python3 \
+    udev
+
+RUN git clone https://github.com/libimobiledevice/libplist.git && \
+    cd libplist && \
+    ./autogen.sh && \
+    make && \
+    make install && \
+    cd .. && \
+    rm libplist -rf
+
+RUN git clone https://github.com/libimobiledevice/libtatsu.git && \
+    cd libtatsu && \
+    ./autogen.sh && \
+    make && \
+    make install && \
+    cd .. && \
+    rm libtatsu -rf
+
+RUN git clone https://github.com/libimobiledevice/libimobiledevice-glue.git && \
+    cd libimobiledevice-glue && \
+    ./autogen.sh && \
+    make && \
+    make install && \
+    cd .. && \
+    rm libimobiledevice-glue -rf
+
+RUN git clone https://github.com/libimobiledevice/libusbmuxd.git && \
+    cd libusbmuxd && \
+    ./autogen.sh && \
+    make && \
+    make install && \
+    cd .. && \
+    rm libusbmuxd -rf
+
+RUN git clone https://github.com/libimobiledevice/libimobiledevice.git && \
+    cd libimobiledevice && \
+    ./autogen.sh && \
+    make && \
+    make install && \
+    cd .. && \
+    rm libimobiledevice -rf
+
+RUN git clone https://github.com/libimobiledevice/libirecovery.git && \
+    cd libirecovery && \
+    ./autogen.sh && \
+    make && \
+    make install && \
+    cd .. && \
+    rm libirecovery -rf
+
+RUN git clone https://github.com/libimobiledevice/usbmuxd.git  && \
+    cd usbmuxd && \
+    ./autogen.sh && \
+    make && \
+    make install && \
+    cd .. && \
+    rm usbmuxd -rf
+
+RUN git clone https://github.com/libimobiledevice/idevicerestore.git && \
+    cd idevicerestore && \
+    ./autogen.sh && \
+    make && \
+    make install && \
+    cd .. && \
+    rm idevicerestore -rf
+
+RUN ldconfig
+WORKDIR /tmp
+COPY idevicerestore.sh /usr/sbin/idevicerestore.sh
+CMD idevicerestore.sh
+

+ 8 - 0
docker/build.sh

@@ -0,0 +1,8 @@
+#!/bin/bash
+set -e
+cd "$(dirname "$0")"
+
+docker build . -t idevicerestore-docker --no-cache
+
+echo "You can now use 'run.sh --latest' to run the restore."
+

+ 7 - 0
docker/idevicerestore.sh

@@ -0,0 +1,7 @@
+#!/bin/bash
+set -e
+
+usbmuxd &
+
+idevicerestore "$@"
+

+ 13 - 0
docker/run.sh

@@ -0,0 +1,13 @@
+#!/bin/bash
+set -e
+cd "$(dirname "$0")"
+
+if [[ -z $(docker images | grep idevicerestore-docker) ]]; then
+    echo "Container not built, you will need to build it with 'build.sh'"
+    exit -1
+fi
+
+docker rm --force idevicerestore || true
+
+docker run --name idevicerestore -it --privileged --net=host -v /dev:/dev -v /run/udev/control:/run/udev/control -v "$(pwd):/tmp" idevicerestore-docker idevicerestore.sh "$@"
+