Files
clever-show/docs/en/image-building.md
2020-10-07 18:25:30 +03:00

63 lines
2.7 KiB
Markdown

# Building a modified image
Sometimes it is necessary to build an image with copter settings different from the release version of the image. There are several ways to do this.
## Building preparation
Install [Docker](https://www.docker.com):
```bash
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
```
## Local build with modified Clover settings
* Place the Clover configuration folders (`launch`, `map` and `camera_info`) in the `builder/clever-config` [folder](../../builder/clever-config) in the clever-show source directory.
* All files from the `launch` folder will be copied to the `/home/pi/catkin_ws/src/clever/clever/launch` directory in the built image.
* All files from the `map` folder will be copied to the `/home/pi/catkin_ws/src/clever/aruco_pose/map` directory in the built image.
* All files from the `camera_info` folder will be copied to the `/home/pi/catkin_ws/src/clever/clever/camera_info` directory in the built image.
* Build your image with Docker:
```bash
cd <source-dir>
sudo docker run --privileged -it --rm -v /dev:/dev -v $(pwd):/mnt goldarte/img-tool:v0.5
```
## Manual image customization
* Extract the file with the downloaded image, navigate to the directory with this image, and enter the image collector console using the command:
```bash
cd <image-dir
sudo docker run --privileged -it --rm -v /dev:/dev -v $(pwd):/mnt goldarte/img-tool:v0.5 img-chroot /mnt/<IMAGE>
```
where `<IMAGE>` is the name of the image file. In the opened terminal you can customize the image using standard programs (nano, git, cp, apt-get).
* You can transfer external files to an image using the command:
```bash
sudo docker run --privileged -it --rm -v /dev:/dev -v $(pwd):/mnt goldarte/img-tool:v0.5 img-chroot /mnt/<IMAGE> copy /mnt/<MOVE_FILE> <MOVE_TO>
```
where `<MOVE_FILE>` is the file to be moved to the image (location relative to the folder with the image, for example `.../builder/assets/clever-show.service`) and `<MOVE_TO>` is the path in the image where the file should be moved.
* If the image does not have enough space for all the necessary files, you can extend the image with the command:
```bash
sudo docker run --privileged -it --rm -v /dev:/dev -v $(pwd):/mnt goldarte/img-tool:v0.5 img-resize /mnt/<IMAGE> max <SIZE>
```
where `<SIZE>` is the size in bytes. For example, 5G would mean 5GB and 5M would mean 5MB.
* After extending the image, you can compress it to the minimum size + 10MB with the command
```bash
sudo docker run --privileged -it --rm -v /dev:/dev -v $(pwd):/mnt goldarte/img-tool:v0.5 img-resize /mnt/<IMAGE> min
```
## Builder scripts modification
The article on changing the image building and custom building scripts is available [here](https://clever.copterexpress.com/ru/image_building.html).