Files
up/README.md
T
wt 3e8990f25a
Prepare Build and Testing executable binary / Prepare-Build-Testing-With-Make (push) Successful in 6s
Prepare Build and Testing executable binary / Prepare-Build-Testing-With-CMake (push) Successful in 10s
Prepare Build and Testing executable binary / Prepare-Build-Testing-With-Meson (push) Successful in 8s
Update README.md
2026-03-14 05:40:12 +07:00

134 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Bootloader Update Manager
Веб-приложение на C для обновления ядра, device-tree и U-Boot environment на Orange Pi Zero 2W.
## Возможности
- **Веб-интерфейс**: Современный адаптивный UI для удобного управления
- **Обновление ядра**: Загрузка `Image.gz` в boot раздел
- **Обновление Device-Tree**: Загрузка `sun50i-h618-orangepi-zero2w.dtb`
- **U-Boot Environment**: Загрузка `uboot.env`
- **Редактор extlinux.conf**: Просмотр и редактирование конфигурации загрузчика
- **Индикатор прогресса**: Отображение прогресса загрузки в реальном времени
- **Авто-монтирование**: Автоматически монтирует `/dev/mmcblk1p1` в `/media`
- **Поддержка больших файлов**: Загрузка файлов до 200 MB
- **Перезагрузка системы**: Кнопка безопасной перезагрузки с корректным отмонтированием
## Структура проекта
```
.
├── 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
```
## Требования
- GCC компилятор
- Библиотеки встроены в проект:
- [Mongoose](https://mongoose.ws) v7.19 - встроенный веб-сервер
- [cJSON](https://github.com/DaveGamble/cJSON) v1.7.18 - JSON парсер
- Права root (для монтирования устройств и перезагрузки)
## Сборка
```bash
make
```
## Запуск
```bash
sudo ./up
```
Сервер запустится на **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 | Описание |
|----------|--------|----------|
| `/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 | Перезагрузка системы |
## Параметры загрузки
Для `/api/upload` (multipart/form-data):
- `type`: Тип файла (`kernel`, `dtb`, `uboot`)
- `file`: Загружаемый файл
## Расположение файлов
| Тип | Файл назначения |
|-----|-----------------|
| Ядро | `/media/Image.gz` |
| Device-Tree | `/media/sun50i-h618-orangepi-zero2w.dtb` |
| U-Boot Env | `/media/uboot.env` |
| Extlinux | `/media/extlinux/extlinux.conf` |
## Конфигурация
### mongoose_config.h
```c
#define MG_MAX_RECV_SIZE (256 * 1024 * 1024) // 256 MB лимит запроса
#define MG_IO_SIZE 131072 // 128 KB буфер
```
### Ограничения
- Максимальный размер файла: **200 MB**
- Порт сервера: **43243**
## Безопасность
⚠️ **Предупреждение**:
- Приложение требует права **root** для монтирования и перезагрузки
- Используйте с осторожностью в production окружении
- Рекомендуется ограничить доступ к веб-интерфейсу
## Зависимости
Все зависимости встроены в проект:
- `mongoose.c/h` - веб-сервер (из репозитория Cesanta)
- `cJSON.c/h` - JSON парсер (из репозитория DaveGamble)
## Лицензия
MIT License