Files
up/README.md
T
2026-03-14 06:38:19 +07:00

141 lines
5.7 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`
- **U-Boot Binary**: Загрузка `u-boot-sunxi-with-spl.bin` с записью в:
- `/media/u-boot-sunxi-with-spl.bin` (файл)
- `/dev/mtd0` (SPI NOR flash)
- `/dev/mmcblk1` со смещением 8KB (SD карта, аналог `dd seek=8`)
- **Редактор extlinux.conf**: Просмотр и редактирование конфигурации загрузчика
- **Индикатор прогресса**: Отображение прогресса загрузки в реальном времени
- **Авто-монтирование**: Автоматически монтирует `/dev/mmcblk1p1` в `/media`
- **Поддержка больших файлов**: Загрузка файлов до 200 MB (до 1 MB для U-Boot Binary)
- **Перезагрузка системы**: Кнопка безопасной перезагрузки с корректным отмонтированием
- **Мониторинг температуры**: Отображение температуры CPU с цветовой индикацией
## Структура проекта
```
.
├── 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/temperature` | GET | Температура CPU |
| `/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` |
| U-Boot Binary | `/media/u-boot-sunxi-with-spl.bin` + `/dev/mtd0` + `/dev/mmcblk1` (+8KB offset) |
| 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