From 3e8990f25a502dbc78e60208495b78206ad65f14 Mon Sep 17 00:00:00 2001 From: TolaMironcenko Date: Sat, 14 Mar 2026 05:40:12 +0700 Subject: [PATCH] Update README.md --- README.md | 167 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 94 insertions(+), 73 deletions(-) diff --git a/README.md b/README.md index 0520e6d..61427e6 100644 --- a/README.md +++ b/README.md @@ -1,112 +1,133 @@ # Bootloader Update Manager -A C-based web application for updating kernel, device-tree, and U-Boot environment files on Orange Pi Zero 2W. +Веб-приложение на C для обновления ядра, device-tree и U-Boot environment на Orange Pi Zero 2W. -## Features +## Возможности -- **Web Interface**: Modern, responsive UI for easy file management -- **Kernel Update**: Upload `Image.gz` to boot partition -- **Device-Tree Update**: Upload `sun50i-h618-orangepi-zero2w.dtb` -- **U-Boot Environment**: Upload `uboot.env` -- **extlinux.conf Editor**: View and edit boot configuration -- **Progress Bar**: Real-time upload progress tracking -- **Auto-mount**: Automatically mounts `/dev/mmcblk1p1` to `/media` -- **Large File Support**: Upload files up to 200MB +- **Веб-интерфейс**: Современный адаптивный UI для удобного управления +- **Обновление ядра**: Загрузка `Image.gz` в boot раздел +- **Обновление Device-Tree**: Загрузка `sun50i-h618-orangepi-zero2w.dtb` +- **U-Boot Environment**: Загрузка `uboot.env` +- **Редактор extlinux.conf**: Просмотр и редактирование конфигурации загрузчика +- **Индикатор прогресса**: Отображение прогресса загрузки в реальном времени +- **Авто-монтирование**: Автоматически монтирует `/dev/mmcblk1p1` в `/media` +- **Поддержка больших файлов**: Загрузка файлов до 200 MB +- **Перезагрузка системы**: Кнопка безопасной перезагрузки с корректным отмонтированием -## Requirements +## Структура проекта -- GCC compiler -- [Mongoose](https://mongoose.ws) - Embedded web server -- [cJSON](https://github.com/DaveGamble/cJSON) - JSON parser -- Root privileges (for mounting devices) - -### Installing Dependencies - -**Ubuntu/Debian:** -```bash -# Install mongoose (or build from source) -sudo apt-get install libmongoose-dev - -# Install cJSON -sudo apt-get install libcjson-dev +``` +. +├── main.c # Основной сервер (C + mongoose + cJSON) +├── index.html # HTML веб-интерфейса +├── style.css # Стили веб-интерфейса +├── app.js # Frontend JavaScript +├── Makefile # Конфигурация сборки +├── README.md # Документация +├── mongoose.h # Mongoose web server (v7.19) +├── mongoose.c # Mongoose web server (v7.19) +├── cJSON.h # JSON parser (v1.7.18) +├── cJSON.c # JSON parser (v1.7.18) +└── mongoose_config.h # Конфигурация mongoose ``` -**Build from source:** -```bash -# Mongoose -git clone https://github.com/cesanta/mongoose.git -cd mongoose && make && sudo make install +## Требования -# cJSON -git clone https://github.com/DaveGamble/cJSON.git -cd cJSON && mkdir build && cd build && cmake .. && make && sudo make install -``` +- GCC компилятор +- Библиотеки встроены в проект: + - [Mongoose](https://mongoose.ws) v7.19 - встроенный веб-сервер + - [cJSON](https://github.com/DaveGamble/cJSON) v1.7.18 - JSON парсер +- Права root (для монтирования устройств и перезагрузки) -## Building +## Сборка ```bash make ``` -## Running +## Запуск ```bash -sudo make run -# or sudo ./up ``` -The server will start on **http://localhost:8080** +Сервер запустится на **http://localhost:43243** + +## Веб-интерфейс + +### System Status +- Статус монтирования `/dev/mmcblk1p1` → `/media` +- Информация о устройстве + +### File Upload +Три вкладки для загрузки: +- **Kernel** → `/media/Image.gz` +- **Device-Tree** → `/media/sun50i-h618-orangepi-zero2w.dtb` +- **U-Boot Environment** → `/media/uboot.env` + +### extlinux.conf Editor +- Загрузка текущего `extlinux.conf` +- Редактирование в текстовом поле +- Сохранение изменений + +### System Control +- Кнопка **Reboot System** с подтверждением +- Безопасная перезагрузка: + - `sync()` - сброс буферов ФС + - `umount /media` - отмонтирование + - `shutdown -r now` - мягкая перезагрузка через finit ## API Endpoints -| Endpoint | Method | Description | -|----------|--------|-------------| -| `/api/upload` | POST | Upload files (kernel, dtb, uboot) | -| `/api/extlinux` | GET | Read extlinux.conf | -| `/api/extlinux` | POST | Write extlinux.conf | -| `/api/progress` | GET | Get upload progress | -| `/api/mount` | GET | Get mount status | +| Endpoint | Method | Описание | +|----------|--------|----------| +| `/api/upload` | POST | Загрузка файлов (kernel, dtb, uboot) | +| `/api/extlinux` | GET | Чтение extlinux.conf | +| `/api/extlinux` | POST | Запись extlinux.conf | +| `/api/progress` | GET | Статус загрузки | +| `/api/mount` | GET | Статус монтирования | +| `/api/reboot` | POST | Перезагрузка системы | -## Upload Parameters +## Параметры загрузки -For `/api/upload`: -- `type`: File type (`kernel`, `dtb`, or `uboot`) -- `file`: The file to upload +Для `/api/upload` (multipart/form-data): +- `type`: Тип файла (`kernel`, `dtb`, `uboot`) +- `file`: Загружаемый файл -## File Locations +## Расположение файлов -| Type | Destination File | -|------|------------------| -| Kernel | `/media/Image.gz` | +| Тип | Файл назначения | +|-----|-----------------| +| Ядро | `/media/Image.gz` | | Device-Tree | `/media/sun50i-h618-orangepi-zero2w.dtb` | | U-Boot Env | `/media/uboot.env` | -| Extlinux | `/media/extlinux.conf` | +| Extlinux | `/media/extlinux/extlinux.conf` | -## Project Structure +## Конфигурация -``` -. -├── main.c # Main application (C server) -├── index.html # Web interface HTML -├── style.css # Web interface styles -├── app.js # Frontend JavaScript -├── Makefile # Build configuration -└── README.md # This file +### mongoose_config.h +```c +#define MG_MAX_RECV_SIZE (256 * 1024 * 1024) // 256 MB лимит запроса +#define MG_IO_SIZE 131072 // 128 KB буфер ``` -## Screenshots +### Ограничения +- Максимальный размер файла: **200 MB** +- Порт сервера: **43243** -The web interface includes: -- System status panel showing mount state -- Tabbed upload interface for different file types -- Real-time progress bar during uploads -- Full-featured text editor for extlinux.conf +## Безопасность -## Security Notes +⚠️ **Предупреждение**: +- Приложение требует права **root** для монтирования и перезагрузки +- Используйте с осторожностью в production окружении +- Рекомендуется ограничить доступ к веб-интерфейсу -⚠️ **Warning**: This application requires root privileges to mount devices. Use with caution and ensure proper access controls in production environments. +## Зависимости -## License +Все зависимости встроены в проект: +- `mongoose.c/h` - веб-сервер (из репозитория Cesanta) +- `cJSON.c/h` - JSON парсер (из репозитория DaveGamble) + +## Лицензия MIT License