Merge pull request 'Update README.md' (#1) from develop into main
Prepare Build and Testing executable binary / Prepare-Build-Testing-With-Make (push) Successful in 5s
Prepare Build and Testing executable binary / Prepare-Build-Testing-With-CMake (push) Successful in 9s
Prepare Build and Testing executable binary / Prepare-Build-Testing-With-Meson (push) Successful in 8s
Prepare Build and Testing executable binary / Prepare-Build-Testing-With-Make (push) Successful in 5s
Prepare Build and Testing executable binary / Prepare-Build-Testing-With-CMake (push) Successful in 9s
Prepare Build and Testing executable binary / Prepare-Build-Testing-With-Meson (push) Successful in 8s
Reviewed-on: https://gitea.home.com:3000/TolaMironcenko/up/pulls/1
This commit was merged in pull request #1.
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user